E-Mails abhörsicher senden - mit GnuPG. Eine Einführung.

Schon mal über die Sicherheit Ihres E-Mail-Verkehrs nachgedacht? Nein? Sollten Sie aber.

Im Jahre 2013 wurde ein großer Abhörskandal aufgedeckt, der belegt, dass Regierungen großer Industrieländer, wie der USA, Großbritannien oder auch Deutschland großflächig das Internet abhören. Das betrifft sowohl das Browsen im Internet, die Nutzung sozialer Netzwerke wie Facebook oder Youtube, als auch Kommunikationswege wie Skype oder E-Mail.

Zumindest die Kommunikation via E-Mail aber kann von jedem selbst kontrolliert werden; liegt jedem in seiner Hand, hier gibt es Mittel und Wege dem Lauschangriff entgegenzuwirken.

Sie mögen sich sagen: ich habe nichts zu verbergen. Aber möchten Sie wirklich, dass irgendwelche Regierungsinstitutionen die ersten Bilder ihres Neugeborenen anschauen, wissen, wann, wo und mit wem Sie über Ihre privaten Probleme schreiben oder alle Kooperationspartner, Kunden und Geheimnisse ihrer Firma kennen? Wenn Sie sagen "Ja, das möchte ich": bitte, Sie können hier aufhören mit lesen.

Im anderen Fall: Gegen unerwünschtes Mitlesen von E-Mails kann man diese verschlüsseln. Das bedeutet: Ihre Nachrichten und ggf. deren Anhänge werden nicht mehr im Klartext übertragen, sondern chiffriert. Das Ganze erledigt eine Software, die sich GPG (GNU Privacy Guard; englisch für GNU-Privatsphärenschutz) nennt und funktioniert so:

Funktionsweise

Wen technische Details nicht interessieren, dem empfehlen wir bei "Anwendung" weiterzulesen.

symmetrische Verschlüsselung

Wann immer sie eine Mail an jemanden schreiben wird diese zunächst mit einem Schlüssel codiert (unlesbar gemacht). Dann wird die Nachricht über das Internet übertragen. Dabei können im Prinzip verschiedene Stellen die durchlaufenden Daten einsehen, aber da sie chiffriert sind sehen die nur Buchstabensalat. Beim Empfänger angekommen wird die Nachricht dann wieder decodiert (lesbar gemacht). Das funktioniert mit dem gleichen Schlüssel.

Beispiel:
Sie wollen den Text

Max Mustermann,

Gratulation zum Geburtstag!

versenden.

Ein einfaches Chiffreprogramm würde dann mit folgender Tabelle einen chiffrierten Text generieren:

original:   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ! , _
chiffriert: S R T H U Q V C P W I X ! O G N Y A _ M E Z F L , D K B J

Der chiffrierte Text liest sich dann so: !slJ!e mua!sooBJVuream msvK. Buchstabensalat.

Es sei an dieser Stelle angemerkt, dass dies nur ein einfaches Beispiel ist; GPG verwendet andere, WESENTLICH AUFWÄNDIGERE Chiffriermethoden!

Aber eins haben GPG und unser Beispiel gemeinsam: Der Empfänger braucht den Schlüssel, um den Text zu decodieren. Nun macht es keinen Sinn, den Schlüssel im Klartext zu senden, denn den könnte dann jeder mitlesen und die eigentliche Nachricht damit entschlüsseln. Man müsste also den Schlüssel verschlüsseln... Naja, da beißt sich die Katze in den Schwanz.

Was nun?

Man braucht eine Möglichkeit, dass beide Kommunikationsteilnehmer sich auf einen gemeinsamen Schlüssel einigen, ohne dass dieser Schlüssel von jemandem abgehört werden kann.

asymmetrische Verschlüsselung

Nehmen wir mal an, es gäbe 1 Milliarde verschiedene Übersetzungstabellen wie die oben dargestellte. Nehmen wir mal an, jeder hätte diese Tabellen, und ein und dieselbe Tabelle hat bei jedem die gleiche Nummer. Ein Mitleser müsste dann sehr sehr viele Tabellen durchprobieren, um den Text zu entschlüsseln. Der Empfänger jedoch braucht nur die Nummer der zu verwendenden Tabelle.

Man muss sich in diesem Beispiel also nur auf eine Tabellen-Nummer einigen. Und das geht mit dem sogenannten Diffie-Hellman-Schlüsselaustausch wie folgt.1

Beide Teilnehmer erzeugen je zwei verschiedene Schlüssel:

  • einen privaten, der jeweils geheim gehalten wird
  • einen öffentlichen, welcher jedem mitgeteilt werden kann
Unser privater Schlüssel p ist eine Zufallszahl, z.B. p=8

Unser öffentlicher Schlüssel o kann dann wie folgt berechnet werden:

o = 7p mod 11
  = 7⁸ mod 11
  = 5764801 mod 11
  = 9
Max Mustermanns privater Schlüssel m ist eine Zufallszahl, z.B. m = 6

Max' öffentlicher Schlüssel s wird wie folgt berechnet:

s = 7m mod 11      [*]
  = 7⁶ mod 11
  = 117649 mod 11
  = 4

Diese Schlüssel werden dann ausgetauscht, d.h. Max Mustermann verrät mir s=4 und ich verrate ihm o=9.

Man selbst berechnet dann mittels des eigenen geheimen Schlüssels p=8 und Max' öffentlichem Schlüssel s=4 den Wert
n = sp mod 11 = 4⁸ mod 11 = 65536 mod 11 = 9.2

Max berechnet auf die gleiche Weise aus unserem öffentlichen Schlüssel und seinem privaten Schlüssel den Wert
n = om mod 11 = 9⁶ mod 11 = 531441 mod 11 = 9.2

Wie man sieht, erhält man selbst den gleichen Wert wie Max. Dieser gemeinsame Schlüssel n ist nun die Nummer der zu verwendenden Verschlüsselungstabelle für die Chiffrierung.

D.h. für die Textübertragung wird eine symmetrische Verschlüsselung mit dem Schlüssel 9 auf beiden Seiten verwendet, dieser Schlüssel selbst wurde aber mittels asymmetrischer Verschlüsselung ausgehandelt. Asymmetrisch nennt man das deshalb, weil nur verschiedene öffentliche Schlüssel ausgetauscht werden.3

Hier nennt man [*] den öffentlichen Schlüssel von Max Mustermann. Öffentlich deshalb, weil Max diesen Schlüssel jedem mitteilen kann, der ihm Mails schicken will. Mit diesem Schlüssel ist es nicht möglich den Chiffrierschlüssel n=9 zu bestimmen, wenn man keinen der privaten Schlüssel kennt. Max kann deshalb den öffentlichen Schlüssel s auch einfach auf einen sogenannten Schlüsselserver hochladen4.

Das ist ein zentrales Verzeichnis, bei dem jeder seine öffentlichen Schlüssel preisgeben kann. Das ist kein Sicherheitsproblem, da mit dem öffentlichen Schlüssel die Nachrichten nur chiffriert, aber nicht dechiffriert werden können. Für das dechiffrieren braucht Max seinen privaten Schlüssel, den er geheim hält und den nur er kennt.

Es sei wiederum angemerkt, dass dies nur ein Beispiel zur Demonstration des Prinzips ist. RSA und GPG arbeiten weder mit solch einfachen Tabellen und Schlüsseln, noch mit kleinen Zahlen. Moderne Kryptosysteme verwenden wesentlich komplexere Verfahren, die sich zunutze machen, dass man zwei ellenlange Primzahlen zwar einfach multiplizieren kann, aber wenn man nur das Ergebnis dieser Multiplikation kennt, nicht einfach auf die ursprünglichen Primzahlen rückschließen kann.

Anwendung

Natürlich möchte niemand seine Mails händisch so verschlüsseln. Das ist auch gar nicht nötig, denn für viele Mailprogramme gibt es Plugins (Ergänzungspakete), die diese Aufgabe übernehmen. Man muss diese lediglich installieren, mindestens ein Schlüsselpaar erzeugen und den öffentlichen Schlüssel öffentlich machen.

Dies sei im Folgenden am Beispiel vom E-Mail-Program "Thunderbird" mit dem Plugin "Enigmail" erläutert. Es gibt ähnliche Plugins auch für andere Mailprogramme. Wer Outlook hat, kann darauf wohl auch verzichten, da Microsoft ganz tief mit in der Scheiße steckt und beim Abhören mitgemacht hat. Und da nützt es auch nichts, die Mails zum Senden zu verschlüsseln, wenn sie schon beim Schreiben mitgelesen werden.

Thunderbird

Thunderbird ist ein (quelloffenes) E-Mail-Programm von Mozilla. Man kann Thunderbird kostenlos aus dem Internet herunterladen und installieren. Das Gleiche gilt für das Plugin "Enigmail", welches man für die Verschlüsselung braucht. Im Folgenden gehen wir davon aus, dass Thunderbird inklusive mindestens einer E-Mail-Adresse fertig eingerichtet wurde.

Einrichtung von Enigmail

Enigmail bekommt man hier. Herunterladen, Thunderbird öffnen, auf "Extras" > "Add-Ons" gehen, "Add-On aus Datei installieren" und dann die heruntergeladene XPI-Datei wählen.

Windows-Nutzer brauchen zusätzlich ein Verschlüsselungsprogramm wie GPG4Win oder GnuPG5.) (Kann auch hier nachgelesen werden)

Nach einem Neustart von Thunderbird ist GPG-Verschlüsselung mittels Enigmail verfügbar.

Nun geht man im Thunderbird-Menü auf "OpenPGP" und dann auf "Schlüssel verwalten". Hier sieht man erstmal nichts, man muss nun im Fenster-Menü auf "Erzeugen" > "Neues Schlüsselpaar" gehen.

Man wählt nun oben eine E-Mail-Adresse aus, für welche dieses Schlüsselpaar verwendet werden soll. (Weitere Adressen können dem Schlüssel später hinzugefügt werden) Nach der Erzeugung der Schlüssel wird das Schlüsselpaar im Verwaltungsfenster fett angezeigt. Klickt man mit der rechten Maustaste darauf, hat man die Option den öffentlichen Schlüssel "Auf Schlüsselserver hochladen..."4 - damit ermöglicht man anderen Leuten E-Mails zu verschlüsseln, die an einen gesendet werden.

Nutzung

Bekommt man eine Nachricht, die mit dem freigegebenen öffentlichen Schlüssel chiffriert wurde, wird diese automatisch durch Enigmail mittels des privaten Schlüssels dechiffriert. Will man selbst eine verschlüsselte Nachricht schreiben, braucht man zunächst den öffentlichen Schlüssel des Empfängers. Den kann man entweder direkt von diesem anfragen (kann ja unverschlüsselt gesendet werden!), oder man holt ihn sich vom Schlüsselserver, falls der Empfänger ihn dort publiziert hat. Dies ist nur einmalig nötig!

Um z.B. eine Nachricht an max.mustermann@beispiel.de zu schreiben, geht man also wie folgt vor:

  1. Nach dem Verfassen der Nachricht und Eingabe des Empfängers max.mustermann@beispiel.de klickt man auf "OpenPGP" im Menü, und wählt "Nachricht verschlüsseln".
  2. Nun klickt man auf "Senden". Hat man bereits den öffentlichen Schlüssel von Max in seinem Bestand, so wird die Nachricht chiffriert und versendet.
  3. Hat man den öffentlichen Schlüssel noch nicht, so öffnet sich ein Fenster mit dem Titel "OpenPGP-Schlüssel auswählen".
  4. Hier klickt man auf Fehlende Schlüssel herunterladen, bestätigt einen der Schlüsselserver (z.B. den vorausgewählten) und wählt dann den entsprechenden Schlüssel vom Server. Nach Auswahl und Bestätigung wird der Schlüssel importiert, die Nachricht verschlüsselt und gesendet.

Fertig!

Viel Spaß mit der verschlüsselten Kommunikation!

Disclaimer

Keine der hier gegebenen Informationen erhebt den Anspruch auf Richtigkeit oder Vollständigkeit. Etwaige Fehler oder Hinweise können dem Autor mitgeteilt werden. Es wird keine Haftung übernommen für Probleme, die aus dieser Anleitung resultieren.


  1. Man beachte, dass das bei RSA noch etwas anders gelöst ist. Hier wird lediglich gezeigt, dass sich beide auf einen gemeinsamen Schlüssel einigen können, ohne dass ein Lauschangriff diesen (einfach) herausfinden kann. ↩︎

  2. Hierbei ist mod 11 die Modulo- oder Restfunktion. D.h. 117649 mod 11 bedeutet: Der Rest, der bei 117649 : 11 übrig bleibt. ↩︎ ↩︎

  3. Bei GPG und RSA ist das ein klein wenig anders: Auch hier wird für die Übertragung der eigentlichen Nachricht eine symmetrische Verschlüsselung verwendet. Allerdings wird der Schlüssel dafür nicht von beiden Seiten ausgehandelt, sondern durch eine etwas abgewandelte Berechnung nur vom Sender. ↩︎

  4. Davon wird mittlerweile abgeraten: blog.fefe.de/?q=Keyserver ↩︎ ↩︎

  5. Danke für den Hinweis an den Gast-Kommentar-Autor ↩︎

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.