Mailverschlüsselung
Ein Großteil der Privat- und Geschäftskommunikation erfolgt schon lange über E-Mail. Die Technologien, die E-Mail ermöglichen sind jedoch aus einer Zeit, zu der Sicherheit und Authentizität keine große Rolle gespielt haben, da nur ein sehr eingeschränkter Teilnehmerkreis überhaupt die Möglichkeit hatte, digital über vernetzte Computer zu kommunizieren. Heute ist das zum Glück anders, die Technologie ist allerdings die gleiche geblieben. E-Mail Kommunikation erfolgt eigentlich über das Simple Mail Transfer Protocol (SMTP) [1, 2, 3], das an sich keine Authentizität und insbesondre keine Verschlüsselung der übertragenen Daten vorsieht. Die Authentifizierung (z.B. Eingabe von Benutzername und Passwort) erfolgt gegenüber dem Server des Mail-Anbieters (GMX, web.de, googlemail, hotmail etc.) oder Firmenlokalen Mail-Server, etwa beim Abrufen der Mailbox mit POP-3 [4, 5] oder IMAP [6, 7]. Die Authentifizierung des Benutzers erfolgt also nur gegenüber dem ausgehenden Mail-Server, nicht gegenüber dem Empfänger einer versendeten Nachricht. SMTP erlaubt das versenden von Mail unter jeder beliebigen (konformen) Absender-Adresse – was sich Spam-Bots und Phisher zu Nutze machen.
Die Authentizität einer Mail lässt sich durch eine kryptographische Signatur feststellen.
SMTP verwendet desweiteren Klartext. Das heißt, es ist möglich, jede Mail-Kommunikation im Internet mit zu lesen. (Natürlich müsste man dafür alle Kommunikation abhören, aber es ist sonst kein weitere Aufwand notwendig.) Die Pfade, die eine Mail durch das Internet nimmt, sind nicht bestimmt, man kann also nicht vorhersehen, “wer” (sprich welche Netzwerkknoten) den Inhalt der Mail zu sehen bekommen könnte. Wäre der Inhalt kodiert, erfordert das Lesen des Inhalts einen deutlich höheren Aufwand.
Die Vertraulichkeit einer Mail lässt sich durch eine kryptographische Verschlüsselung sicherstellen.
Verschlüsseln und Signieren
Nachdem das “warum” geklärt ist, folgt ein wenig zum “wie” (Vorsicht! enthält Theorie – aber keine Mathematik!). Verschlüsselung ist an sich recht alt: im alten Römischen Reich und auch schon bei den Azteken wurden Nachrichten verschlüsselt übermittelt. Mit den Rechenmaschinen (Computer) die uns heute zur Verfügung stehen, lassen sich solche Verschlüsslungen wie der Caesar-Code [8] leicht knacken. Aktuelle Verschlüsslungalgorithmen sind komplizierter und rechenintensiver, besonders wollte man eine verschlüsselte Nachricht ohne Kenntnis des Schlüssels entschlüsseln (Kryptoanalyse [9]).
Es gibt drei verschiedene Möglichkeiten eine Nachricht zu verschlüsseln (unabhängig der einzelnen Verschlüsselungsalgorithmen): Symmetrische [10] und Asymmetrische [11] Verschlüsselung sowie “Einweg”-Verschlüsselung (Hashwert) [12]. Symmetrische Verschlüsselung ist einfach beschrieben: Es existiert ein geheimer Schlüssel (z.B. ein Passwort) mit dem nach einem Verschlüsselungsalgorithmus die Nachricht verfälscht und dadurch unleserlich wird (Schlüsseltext). Wendet man den selben Schlüssel auf die verschlüsselte Nachricht an, erschein wieder die ursprüngliche Nachricht (Klartext).
Asymmetrische (Public-Key)Verschlüsselung ist etwas komplizierter, da es hierbei ein Schlüsselpaar gibt, das aus einem öffentlichen und einem privaten (geheimen) Schlüssel besteht. Asymmetrisch ist es deshalb, da der öffentliche Schlüssel entschlüsseln kann, was der mit dem privaten Schlüssel verschlüsselt wurde und der private Schlüssel entschlüsseln kann, was mit dem öffentlichen Schlüssel verschlüsselt wurde. Zu viele Schlüssel?
An sich ganz einfach: Alice will Bob eine verschlüsselte Nachricht zukommen lassen. Alice kennt Bobs öffentlichen Schlüssel (schließlich ist dieser ja öffentlich und soll auch bekannt sein). Alice verschlüsselt also die Nachricht mit Bobs öffentlichem Schlüssel und überträgt sie an Bob. Da Bobs privater Schlüssel geheim ist und nur Bob ihn Besitzt, kann auch nur er die verschlüsselte Nachricht entschlüsseln.
Hashfunktionen berechnen aus einer Nachricht einen (relativ) kurzen Wert. Dieser Hashwert ist für die selbe Nachricht, mit der selben Hashfunktion berechnet, immer gleich. Aus dem Hashwert läßt sich umgekehrt aber nicht (oder nur sehr schwer) die eigentliche Nachricht berechnen. Deshalb sind Hashfunktionen Einweg-Funktionen. Sie werden eingesetzt, um die Unverändertheit einer Nachricht zu überprüfen. Der Sender berechnet den Hashwert der Nachricht und teilt ihn dem Empfänger (auf einem anderen Weg als die Nachricht) mit, der Empfänger berechnet den Hashwert der Nachricht erneut und überprüft, ob die beiden Hashwerte übereinstimmen.
Digitale Signaturen entstehen durch die Kombination von Hashfunktionen mit asymmetrischer Verschlüsselung. Will Alice sicherstellen, dass die Nachricht an Bob unverändert ankommt, fügt Alice eine digitale Signatur über die Nachricht an. Bob kann damit überprüfen, ob die Nachricht während der Übertragung verändert wurde und ob die Nachricht auch wirklich von Alice kommt.
Alice generiert einen Hashwert ihrer Nachricht. Diesen Hashwert verschlüsselt sie mit ihrem privaten Schlüssel. Die Nachricht und den verschlüsselten Hashwert übermittelt sie an Bob. Bob entschlüsselt den Hashwert mit Alices öffentlichem Schlüssel. Dann generiert auch er den Hashwert über die Nachricht. Stimmt der von Bob generierte Hashwert mit dem entschlüsselten Hashwert überein, ist die Nachricht unverfälscht und Bob kann sicher sein, dass die Nachricht von Alice kam.
E-Mail Verschlüsselung mit Thunderbird/EnigMail/GnuPG
Die Theorie klingt kompliziert? Muss es in der Praxis gar nicht sein. Mit EnigMail [14] gibt es für den Mail Client Thunderbird [13] ein relativ einfach zu benutzendes Plug-in, das die Public-Key Ver- und Entschlüsselung übernimmt.
Notwendige Komponenten
Notwendig sind dafür natürlich Thunderbird und Enigmail, aber auch GnuPG [15]. GnuPG ist eine Open Source Implementierung des OpenPGP Standards [16]. Alle Komponenten gibt es sowohl für Linux/Unix als auch für Windows. Im Folgenden wird die Installation und Benutzung unter Windows beschrieben.
Die Installation ist einfach: Für GnuPG gibt es mit Gpg4win [17] eine Windows Installationsroutine die GnuPG samt ein paar Erweiterungen (graphisches Key Management) installiert. Thunderbird hat auch seinen eigenen Installer. Installieren von Enigmail erfolgt über den Thunderbird Dialog Tools > Add-ons, in dem sich die heruntergeladene EnigMail-Plug-in Datei über den „install“-Button einbinden läßt. Vor der Installation von EnigMail sollte GnuPG bereits installiert sein.
Nach der Installation des EnigMail Plug-ins besitzt Thunderbird ein weiteres Menü: OpenPGP über das die Konfiguration, die Schlüsselverwaltung und auch ein Konfigurationsassistent verfügbar sind. Im Folgenden wird dieser jedoch nicht benutzt, sondern die Schlüssel für die Identitäten “von Hand” erzeugt.
Key-Generierung
Über den Menüpunkt OpenPGP > Key Management wird die Schlüsselverwaltung gestartet. Hier sind alle öffentlichen und privaten Schlüssel aufgeführt, die sich im GPG-Schlüsselbund (sammlung aller Schlüssel) des Benutzers befinden. Über Generate > New Key Pair kann ein neues Schlüsselpaar für eine bestehende Identität (also, ein in Thunderbird eingerichtetes E-Mail Konto) erstellt werden.
Es gilt den E-Mail Account / User ID auszuwählen (wenn mehrere existieren) für den das Schlüsselpaar erzeugt werden soll. Mit einem Haken kann festgelegt werden, dass OpenPGP für diesen Account aktiviert werden soll. Das Passwort sollte auf jeden Fall sicher sein¹, darf aber nicht vergessen werden! Es gibt keine Möglichkeit, den Schlüssel weiter zu nutzen, oder das Passwort wieder herzustellen, sollte das Passwort vergessen worden sein! Eine Beschränkung der Gültigkeit des Schlüssels dient der Sicherstellung der kryptographischen Aktualität: Eine Verschlüsselungsstärke die heute als ausreichend erachtet wird, kann in kommenden Jahren durch die beschleunigte Entwicklung der Rechenleistung schon nicht mehr genügen. Eine beschränkte Gültigkeit verhindert, dass der Schlüssel nach Ablauf der Gültigkeit weiter verwendet wird. (Diese kann erneuert werden, bzw. es können dafür Unterschlüssel hinzugefügt werden.)
Über den Reiter Advanced läßt sich die der Verschlüsselungsalgorithmus und die Stärke (Bit-Länge) einstellen. In der Regel gilt: je höher die Bit-Länge des Schlüssels, desto sicherer aber auch desto langsamer die Ver- und Entschlüßlung. Ein Klick auf Generate startet die Erzeugung des Schlüssels. Dies kann etwas Zeit in Anspruch nehmen.
Anschließend bietet EnigMail an, ein Widerrufszertifikat zu erzeugen. Dies ist sinnvoll für den Fall, dass der Schlüssel komprimittiert, verlorengegangen oder das Passwort vergessen wurde. Mit einem Widerrufszertifikat kann man den Nutzern des Schlüssels mitteilen, dass dieser vom Besitzer als ungültig erachtet wird. Dieses Zertifikat sollte jedoch sehr sorgfältig aufbewahrt werden – jeder andere kann damit den Schlüssel widerrufen, da dafür kein Passwort notwendig ist.
Um ein Widerrufszertifikat erzeugen zu können, ist die eingabe des Passwortes notwendig. Mit GnuPG 2.0 übernimmt die Passwortauthentifizierung ein Hintergrundprogramm (Agent) und nicht Enigmail oder Thunderbird. Dies stellt sicher, dass nur GnuPG die Passworte erfährt. Diese Authentifizierung des Benutzers wird immer wieder notwendig sein – sei es beim ändern des Schlüssels, lesen von verschlüsselten Nachrichten oder signieren und verschlüsseln.
Anschließend ist der neu generierte Schlüssel in der Schlüsselverwaltung sichtbar. Ein Doppelklick bietet mehr Informationen und Einstellungsmöglichkeiten für den Schlüssel. Hier läßt sich einem Schlüssel eine weitere E-Mail Adresse (Identität) hinzufügen, das Passwort ändern, erneut ein Widerrufszertifikat erzeugen und den Schlüssel widerrufen. Die wichtigsten Informationen die man hier herauslesen kann, sind im folgenden Screenshot rot unterlegt: Die KeyID und der Fingerabdruck des Schlüssels. Anhand dieser beiden Zeichenketten kann man einen Schlüssel eindeutig identifizieren. Bekommt man einen öffentlichen Schlüssel von einem Kommunikationspartner, sollte man den Fingerabdruck der zur Verschlüsselung verwendeten Schlüssel mit dem Kommunikationspartner abgleichen – am besten über Telefon oder persönlich, auf jeden Fall aber über einen anderen Kanal, als über den der Schlüssel übermittelt wurde. Warum? Jemand könnte einen “falschen” Schlüssel in die Kommunikation eingeschleust haben.
Zu Beachten sei…
Der private Schlüssel muss privat bleiben. Geht der private Schlüssel verloren, muss das Schlüsselpaar als komprimittiert (“gehackt”) angesehen werden. Dafür gibt es dann das Widerrufszertifikat.
Ein Backup des Schlüsselpaares ist unerläßlich – dieses muss jedoch sicher aufbewahrt werden. Die Schlüssel kann man im Schlüsselmanagement über File > Export Keys to File exportieren. Auch für das Widerrufszertifikat sollte ein Backup erfolgen.
Das Passwort sollte stark¹ sein und muss -natürlich- geheim bleiben. Wird das Passwort vergessen, bleibt nur noch das Widerrufszertifikat um den Schlüssel als ungültig zu markieren. Dennoch: Wenn Passworte aufgeschrieben werden, dann müssen sie so sicher verwahrt werden wie auch das Backup. Und: Passwort nie mit dem Schlüssel zusammen speichern!
Verschlüsselte und signierte E-Mail versenden
Jetzt wo die Vorarbeit geleistet ist, kommen wir endlich dazu das zu tun, was wir eigentlich wollten: verschlüsselte E-Mails zu versenden. Was brauchen wir nochmals dazu? Richtig: einen öffentlichen Schlüssel von unserem Kommunikationspartner! Diesen können wir über das Schlüsselmanagement (OpenPGP > Key Management) importieren. Entweder über einen Keyserver² (Keyserver > Search for Keys) oder von einer Datei (File > Import Keys From File).
Damit eine E-Mail von einem Account, für den OpenPGP aktiviert ist, auch verschlüsselt versandt wird, kann entweder über das OpenPGP Menü beim Verfassen der E-Mail Sign Message (für eine Digitale Signatur) und/oder Encrypt Message (zur Verschlüsselung) ausgewählt werden oder in der Statusleiste unten rechts auf den Stift und den Schlüssel geklickt werden. Ist für den Empfänger ein öffentlicher Schlüssel in der Schlüsselverwaltung enthalten, wird die E-Mail mit diesem und dem öffentlichen Schlüssel des Senders (damit man selbst die Nachricht später noch lesen kann) verschlüsselt.
Nachdem der Empfänger sein Passwort für seinen privaten Schlüssel eingegeben hat, kann er die Nachricht, die mit seinem öffentlichen Schlüssel verschlüsselt wurde entschlüsseln und lesen. Das grüne Feld informiert darüber, dass die Signatur des Senders korrekt war.
Mit zwei E-Mail Accounts, bei gleichen oder verschiedenen Anbietern, kann man das problemlos “an sich selbst” einmal ausprobieren. Einfach beide Accounts in Thunderbird einrichten, für jeden ein Schlüsselpaar erzeugen und einfach ausprobieren – so kann nichts kaputt, nichts verloren gehen. Wenn man sich sicherer ist, kann man seinen öffentlichen Schlüssel auf die Welt loslassen – indem man ihn auf einen Keyserver² hochlädt oder anderweitig (über seine Webseite) bekannt macht.
_______________________________________
¹ Ein starkes Passwort besteht aus mindestens 8 Zeichen die Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen enthalten sollten – und das ohne ein Wort zu ergeben, das in irgendeinem Wörterbuch steht. Klingt schrecklich – wie soll man sich das nur merken? Recht einfach: Man bildet zum Beispiel einen Satz, den man sich leicht merken kann und nimmt von den Worten den jeweils ersten Buchstaben. Enthält der Satz auch noch Zahlen – umso besser. Beispiel: Massive Squad ist ein toller Blog für komiche Leute! ergibt: MSi1tBfkL!
² Ein Keyserver [18] ist ein Dienst im Internet, über den öffentliche Schlüssel bezogen werden und veröffentlicht werden können. Die meisten Keyserver vernetzen sich untereinander und übernehemen die Schlüsseldaten voneinander. Dies hat den Vorteil, dass jeder zugriff auf die öffentlichen Schlüssel seiner Kommunikationspartner hat. Allerdings kann einem Schlüsselserver der öffentliche Schlüssel nicht entzogen werden. Es gibt nur die Möglichkeit den Schlüssel (verändert) erneut hochzuladen. Läuft die Gültigkeit eines Schlüssels aus, kann er mit einem erneuerten Unterschlüssel erneut hochgeladen werden, was sich wieder über alle (zumindest viele) Schlüsselserver weiterpropagiert. Das selbe geschieht mit einem Widerrufszertifikat, das einen Schlüssel als ungültig markiert. Alternativ zu Schlüsselservern kann man natürlich seinen öffentlichen Schlüssel auf andere Weise bekannt machen – aber auch hier kann der Schlüssel nicht von allen Stellen die ihn bezogen haben gelöscht werden.
Quellen
[1] Wikipedia: SMTP http://de.wikipedia.org/wiki/SMTP
[2] IETF: RFC821 http://tools.ietf.org/html/rfc821
[3] IETF: RFC5321 http://tools.ietf.org/html/rfc5321
[4] Wikipedia: POP3 http://de.wikipedia.org/wiki/Post_Office_Protocol
[5] IETF: RFC1939 http://tools.ietf.org/html/rfc1939
[6] Wikipedia: IMAP http://de.wikipedia.org/wiki/Internet_Message_Access_Protocol
[7] IETF: RFC3501 http://tools.ietf.org/html/rfc3501
[8] Wikipedia: Verschiebechiffre http://de.wikipedia.org/wiki/C%C3%A4sar_Code
[9] Wikipedia: Kryptoanalyse http://de.wikipedia.org/wiki/Kryptoanalyse
[10] Wikipedia: Symmetrisches Kryptosystem http://de.wikipedia.org/wiki/Symmetrisches_Kryptosystem
[11] Wikipedia: Asymmetrisches Kryptosystem http://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem
[12] Wikipedia: Hash-Funktion http://de.wikipedia.org/wiki/Hash-Funktion
[13] Mozilla Messaging: Thunderbird http://www.mozillamessaging.com
[14] The EnigMail Project http://enigmail.mozdev.org/
[15] GnuPG http://www.gnupg.org/
[16] Wikipedia: OpenPGP http://de.wikipedia.org/wiki/OpenPGP
[17] Gpg4win http://www.gpg4win.org/
[18] Wikipedia: Schlüsselserver http://de.wikipedia.org/wiki/Schl%C3%BCsselserver
am 14. April 2010 um 21:39 Uhr.
Hi, netter Post aber wie adde ich den denn zu meinen RSS Feeds? Bin ich zu bloed?
am 16. April 2010 um 13:41 Uhr.
Hallo Henning,
für den Post alleine haben wir kein RSS. Du kannst die Kommentare zu dem Post als RSS abonnieren:
http://massive-squad.de/2009/12/mailverschlusselung/feed/ (Link im Autorenteil)
oder für unseren ganzen Blog:
http://massive-squad.de/feed/ (Link auf der Hauptseite)