Da ich gerade dabei bin für meine Kollegen eine Dokumentation zum Thema zu schreiben, will ich sie auch euch nicht vorenthalten
Signatur und Verschlüsselung von Mails mit (Open)PGP/GnuPG oder S/MIME
Zur Verschlüsselung von eMails haben sich zwei Verfahren etabliert. Das eine ist PG (Privacy Guard) basierend auf dem (mittlerweile) kostenpflichtigen PGP von Phil Zimmermann von 1991 und der freien Implementierung GnuPG oder GPG und Secure/Multipurpose Internet Mail Extensions (S/MIME), welches als Internet Standard im Oktober 1995 im RFC 1847 beschrieben wurde.
Die Secure/Multipurpose Internet Mail Extensions (S/MIME) stellen Merkmale für die Authentifizierung, Integrität und Vertraulichkeit für Messaging-Applikationen bereit. S/MIME ist nicht auf Mail beschränkt und kann von anderen S/MIME-konformen Transportmechanismen genutzt werden wie beispielsweise HTTP.
Bei beiden Verfahren werden Nachrichten an einen Empfänger mit seinem öffentlichen Schlüssel verschlüsselt und können dann ausschließlich durch den privaten Schlüssel des Empfängers entschlüsselt werden. Dieses Verfahren wird auch asymmetrische Verschlüsselung genannt, da Sender und Empfänger zwei unterschiedliche Schlüssel verwenden.
Zertifikate werden nicht zur Verschlüsselung verwendet! Sie dienen ausschließlich der Bestätigung einer Identität und dem Schlüsselpaar, das sich im Besitz des Inhabers der Identität befindet und kommen bei S/MIME zum Einsatz.
Digitale Zertifikate sind in der analogen Welt mit einem Pass vergleichbar.
Durch Verwendung von PG oder S/MIME kann sicher gestellt werde, dass
- die Mail von einer bestimmten Person versendet wurde
- der Inhalt nicht verändert wurde
- die Mail wirklich verschickt wurde
Mit der Verschlüsselung ist zudem der Inhalt gegen Veränderung geschützt.
Es ist also bereits das Signieren der Mail sinnvoll!
Privacy Guard (PG)
Das Verfahren als solches ist frei. Es gibt allerdings eine kommerzielle Version (PGP), die einigen Kompfort bietet. So gibt es auch Lösungen für Firmen in Form von Servern, die automatisch alle aus- und eingehenden Mails ver- und entschlüsseln. Darauf werde ich aber hier nicht eingehen.
Bei PG wird eine Software (z.B. GnuPG) benötigt. Während der Installation wird der Benutzer aufgefordert, ein Schlüsselpaar zu erzeugen (bestehend aus öffentlichem und privatem Schlüssel). Der öffentliche Schlüssel kann (muss aber nicht) auf einem Schlüsselserver veröffentlicht werden.
Der öffentliche Schlüssel kann und soll verbreitet werden, der private Schlüssel muss gehütet werden wie der eigene Augapfel!
Das Vertrauen zu einem öffentlichen Schlüssel basiert auf dessen Signaturen. Alice vertraut Bob und Carol vertraut Alice, dann vertraut Carol auch Bob und so weiter...
Jeder kann jeden Schlüssel signieren und damit bestätigen. Es gibt verschiedene Vertrauensstufen. Wenn ich den Eigentümer persönlich kenne, kann ich dem Schlüssel mehr vertauen, als wenn ich ihn nur per Mail bekommen habe.
Aber erst wenn ein Schlüssel von einer "offiziellen" Stelle, wie etwa heise.de, signiert wurde, kann auch ein Dritter dem PG Schlüssel vertrauen.
Wenn der öffentliche Schlüssel über einen Schlüsselserver verteilt wurde, kann ich ihn mir von dort holen und direkt eine verschlüsselte Mail an den Empfänger schicken. Ich muss ihn also nicht erst nach seinem Schlüssel fragen.
Ein Nachteil des Verteilen über Schlüsselserver ist die öffentliche Preisgabe der im Schlüssel hinterlegten Mail Adresse und die damit verbundene Spam Gefahr...
Es ist mit einigem Aufwand möglich, eine falsche Identität mit PG aufzubauen. Angenommen ich bekomme eine signierte Mail von
[email protected] und der Schlüsel ist von
[email protected] signiert, kann ich dem dann vertrauen? Hat jemand den Buchstabendreher im Domaennamen bemerkt?
Wenn der öffentliche Schlüssel bekannt ist, kann eine Mail verschlüsselt verschickt werden. Dabei ist zu beachten, dass der Inhalt auch mit dem eigenen Schlüssel verschlüsselt wird, um sie später selbst auch noch lesen zu können. Es reicht aus, im An:, Cc:, oder Bcc: Feld eine Mail-Adresse anzugeben. Die Software sucht automatisch den passenden Schlüssel. Wird kein Schlüssel gefunden, frägt z.B. PGP nach, ob die Mail unverschlüsselt verschickt werden soll.
Secure/Multipurpose Internet Mail Extensions (S/MIME)
Jeder einigermaßen aktuelle Mail Client bietet Unterstützung für S/MIME. Für den privaten Bereich gibt es bei einigen Anbietern kostenlose Zertifikate. Auf der Seite des Anbieters wird ein Zertifikat beantragt, dabei wird vom Browser automatisch ein Schlüsselpaar generiert. Der öffentliche Schlüssel wird dann vom Anbieter mit einem Zertifikat bestätigt. Der private Schlüssel verläßt niemals den Rechner. Bei Thawte wird nur die Mail-Adress im Zertifikat hinterlegt und bestätigt. Erst durch einen so genannten Notar (Web of Trust, w-o-t), der persönlich getroffen werden muss, wird auch der Name bestätigt. Der w-o-t Notar muss dazu den Ausweis sehen.
Soll dem Zertifikat vertraut werden, muss das Mail Programm alle Zertifikate der ausstellenden Instanz kennen und auch vertrauen..
Diese Zertifizierungs Kette (Certification Chain) ist für offizielle Aussteller im Betriebssystem (BS) hinterlegt. Wenn nicht, muss sie wie im Falle von web.de von Hand importiert und ihr vertraut werden.
Die verschiedenen Zertifikate ergeben sich durch die Infrastruktur des Anbieters. Es gibt ein so genanntes Root-Zertifikat, das zu einer Certification Authority (CA) gehört, die ausschließlich Sub-CAs signiert. Eine dieser Sub-CAs kann dann zum signieren von Mail Zertifikaten oder einer weitere Sub-Sub-CA für freie Mail Zertifikate genutzt werden. Somit muss dem BS das Root-, Sub- und Sub-Sub-Zertifikat bekannt sein.
Auf dieser Kette wird das Vertrauen zu einem User Zertifikat aufgebaut. Das BS (also ich) vertraut der Root- und den Sub-CAs. Die Sub-CA vertraut dem User, da sie ja das Zertifikat ausgestellt hat; somit vertraue auch ich dem User. Es ist also sehr wichtig, nicht unbedarft Root- und/oder Sub-CA Zertifikaten zu vertrauen!
Ein Zertifikat kann für verschiedene Zwecke vorgesehen sein. So kann nicht mit jedem Zertifikat eine Sub-CA signiert werden oder kann nicht zum Unterschreiben von Dokumenten verwendet werden. Des weiteren enthält ein Zertifkat einen Link zur Datenschutzerklärung des Ausstellers und zu einer Revocation List, in der alle zurückgezogenen (nicht mehr gültigen) Zertifikate stehen, Angaben zum Inhaber, Gültigkeitsdauer und natürlich den öffentlichen Schlüssel des Schlüsselpaares.
Es kann nun im Mail Programm eingestellt werden, dass alle ausgehenden Mails automatisch signiert werden. Somit sieht jeder Empfänger sofort in seinem Mail Programm, dass es sich um eine signierte Mail handelt. Jeder kann damit etwas anfangen, da ja so gut wie alle Mail Programme mit Zertifikaten umgehen können. Jetzt hat der Empfänger automatisch das Zertifikat (und den öffentlichen Schlüssel) des Absenders gespeichert.
Soll jetzt eine Mail verschlüsselt versendet werden, muss der Absender den öffentlichen Schlüssel und das Zertifikat besitzen. Während dem Senden der Mail wird das Gültigkeitsdatum überprüft und kontrolliert, ob des Zertifikate zurückgezogen wurde. Sollte eines der Prüfungen negativ ausfallen, wird der Absender darüber informiert. Im allgemeinen kann die Mail aber trotzdem versendet werden. Möglicherweise ist das Zertifikat abgelaufen (ich habe halt nicht das Neueste), der öffentliche Schlüssel aber noch in Benutzung.
Die Mail wird nun mit dem öffentlichen Schlüssel des Empfängers und des Absenders wie bei PG verschlüsselt.
Ein weiteres Einsatzgebiet von Zertifikaten ist die Identifikation von Web Servern. Bei der Verbindung vom Browser zum Server zeigt der Server sein Zertifikat vor. Der Browser überprüft nun, ob die Daten wie Hostname, Gültigkeitsdatum und Aussteller stimmen und ob das Zertifikat zurückgezogen wurde. Wenn alles in Ordnung ist, wird dies im Browser mit einem Schloss Symbol oder bei Firefox sogar durch eine gelb hinterlegte URI angezeigt.
Zur verschlüsselten Übertragung ist das Zertifikat gar nicht so wichtig. Bei der Mail Verschlüsselung wird ja das asymmetrische Verfahren mit öffentlichem und privaten Schlüssel verwendet. Es ist extrem sicher, aber auch recht rechenintensiv. Die symmetrische Verschlüsselung verwendet nur einen Schlüssel auf beiden Seiten, ist bedeutend weniger rechenintensiv, genauso sicher, aber sehr angreifbar bei der Schlüssel Übermittlung. Da beide Seiten den gleichen Schlüssel benötigen, muss ein sicherer Weg zur Übermittlung gefunden werden. Und hier kommt wieder die asymmetrische Verschlüsselung zum Einsatz!
Der Browser erzeugt einen symmetrischen Schlüssel der nur für diese Verbindung benutzt wird. Zum übermitteln des symmetrischen Schlüssels an den Server verwendet der Browser den im Zertifikat des Servers hinterlegten öffentlichen Schlüssel und verschlüsselt ihn damit. Der Server hat den passenden privaten Schlüssel um den symmetrischen Schlüssel zu entpacken. Die folgende sichere Kommunikation wird ab dann mit dem symmetrischen Schlüssel durchgeführt. Nach der Beendigung der Verbindung wird der symmetrische Schlüssel verworfen.
Genauso kann das Zertifikat dazu benutzt werden, den Nutzer am Server (zum Beispiel einer Bank) zu identifizieren. Dazu überprüft der Server das Zertifikat des Nutzers auf Gültigkeit und gewährt gegebenenfalls den Zugang.
Ein weiterer Vorteil ist die Art der Speicherung des privaten Schlüssels (und nur der ist schützenswert). Er kann nicht nur im Schlüsselbund gespeichert werden, sondern auch auf einer Chipkarte. Es gibt keine Möglichkeit, den Schlüssel von der Chipkarte zu kopieren. Somit ist es nur dann möglich, eine Mail zu lesen oder einen Zugang zu bekommen, wenn man im Besitz der Karte ist.
Um bei Verlust der Karte weiterhin Sicherheit zu gewährleisten, ist der private Schlüssel noch durch ein Passwort gesichert. Bei Schlüssel im Schlüsselbund wird kein Passwort verwendet, da der Schlüsselbund mit dem Login- oder einem anderen Passwort gesichert ist.
Links:
http://de.wikipedia.org/wiki/Pretty_Good_Privacy
http://de.wikipedia.org/wiki/S/MIME
http://de.wikipedia.org/wiki/Digitales_Zertifikat
Buchemfehlung:
PKI e-security implementieren, ISBN 9783826607813