Security Enhancement Teil 1: E-Mail Verschlüsselung mit PGP

Im ersten Teil meiner SE-Reihe möchte ich auf die E-Mail Verschlüsselung eingehen. Mir ist zwar durchaus bewusst, dass dazu bereits einige HowTo's im Netz kursieren, die Begründungen zur Nutzung sind allerdings meist eher nur spärlich umschrieben. Außerdem gehört sowas einfach als Grundlage dazu.

Die Gründe für die Verwendung einer Verschlüsselung mögen vielfältig sein - nicht zuletzt finden sich sicher welche in meiner Einführung. Aber das soll in diesem Artikel nicht Thema sein. Viel mehr interessiert doch die Frage: Was ist PGP? Wie funktioniert es? Wie kann ich es benutzen?

Was ist PGP?

PGP ist ein Programm, welches zur Ver-/Entschlüsselung, sowie zum digitalen Unterschreiben von Daten dient. Es steckt eine recht interessante Entwicklungsgeschichte dahinter, auch nachzulesen bei Wikipedia.

Letztendlich findet bei PGP ein asymmetrisches Verfahren, ein sogenanntes Public-Key-Verfahren Anwendung. Man erzeugt hierbei einen privaten Schlüssel, welcher sich nur im Besitz von einem selbst befindet. Mit diesem lassen sich Dateien entschlüsseln und Dateien digital unterschreiben. Passend zu diesem privaten Schlüssel, erzeugt man auch einen öffentlichen Schlüssel, welchen man (wie der Name schon andeutet) öffentlich verteilt (dazu später mehr). Jeder kann mit diesem öffentlichen Schlüssel zwar Daten verschlüsseln. Aber nur die Person im Besitz des privaten Schlüssels kann dann die Daten wieder entschlüsseln.

Soweit, so gut. Aber woher weiß nun der Empfänger, dass es sich beim Absender auch tatsächlich um den vertrauenswürdigen Freund handelt? Schließlich kann ja jeder einfach mit dem öffentlichen Schlüssel eine E-Mail verschlüsseln. An dieser Stelle kommt dann die "digitale Unterschrift" mit ins Spiel. Hierbei wird der Vorgang umgedreht: Der Absender "unterschreibt" mit seinem privaten Schlüssel die E-Mail, welche versendet wird. Jeder kann die Echtheit dieser Unterschrift dann mit dem öffentlichen Schlüssel überprüfen. Darüber hinaus gilt die Unterschrift nur mit genau dieser E-Mail. Würde diese E-Mail verändert werden, wäre die Unterschrift nicht mehr passend und damit die Integrität der Daten gefährdet.

Hier das ganze noch einmal grafisch:

Verschlüsselter Austausch von E-Mails
Verschlüsselter Austausch von E-Mails

An diesem Beispiel sieht man einen Austausch einer verschlüsselten und signierten E-Mail zwischen Alice und Bob. Auch sieht man, dass mit dem eigenen privaten Schlüssel signiert (unterschrieben), aber mit dem öffentlichen Schlüssel des Gesprächspartners verschlüsselt wird.

Der Session-Key wird als Zwischenschritt generiert, weil damit die E-Mail symmetrisch verschlüsselt wird. Eine symmetrische Verschlüsselung ist schneller, als eine asymmetrische. Es wird also mit einem erzeugten Zufallsschlüssel (Session-Key) die eigentliche E-Mail verschlüsselt, und dann an die verschlüsselte E-Mail der mit dem öffentlichen Schlüssel verschlüsselte Session-Key angehangen.

Welche Gründe gibt es, die den Aufwand rechtfertigen?

Okay, betrachten wir die E-Mail einmal als digitales Äquivalent zu unserer analogen Briefpost.

Versenden wir einen Brief, so packen wir diesen für gewöhnlich in einen Briefumschlag, welcher zugeklebt wird. Dann geht dieser Brief zum Briefkasten, von dort aus geht er durch diverse Hände, bis der Postbote diesen letztendlich im Zielbriefkasten einwirft. Wird der Brief unterwegs geöffnet, fällt das in der Regeln auf, der Briefumschlag sieht manipuliert aus. Wurde der Briefumschlag sogar mit Hand beschriftet, wird es aufwändig bis sehr schwierig, das zu fälschen. Der Brief wird meistens dann auch noch von mir persönlich unterschrieben, was verifiziert, dass dieser Brief tatsächlich von mir kommt.

Bei einer normalen E-Mail ist das leider nicht so. Eine normale E-Mail gleicht eher einer Postkarte, die obendrein noch nicht einmal vom Absender unterschrieben ist: Jeder auf dem Weg vom Briefkasten A zu Briefkasten B kann ganz einfach lesen, was drauf/drin steht. Sogar der Inhalt könnte nach belieben einfach verfälscht werden. Oft ein Problem, handelt es sich doch durchaus auch schon mal um vertrauliche Informationen, welche via E-Mail versandt werden. Eine Verschlüsselung entspricht also nur der Benutzung eines Briefumschlags. Eine digitale Unterschrift dann den zusätzlichen Maßnahmen, Manipulationssicherheit zu gewährleisten. Auch ein zweiter Faktor sollte nicht außer acht gelassen werden: meist verbleiben die E-Mails beim Anbieter, auf dem Server. So kann der Anbieter (theoretisch) ebenfalls die E-Mails lesen und manipulieren. Das ist in etwa so, als würde man sich irgendwo einen Briefkasten mieten, wobei der Mieter einen Zweitschlüssel behält.

Man sieh also, Verschlüsselung von E-Mails sollte nicht als außerordentlicher elitärer Zusatz, sondern vielmehr als selbstverständlich betrachtet werden.

Das ganze sollte allerdings nicht mit SSL/TLS (HTTPS) verwechselt werden. Bleiben wir bei unserem Beispiel mit den Briefkästen, so könnte man das Mehr welches durch SSL erreicht wird, wie folgt ausdrücken: Mit SSL/TLS, handelt es sich bei unserem weiterhin um einen normalen Briefkasten, in welchem wir unsere Postkarte einwerfen. Ohne SSL/TLS wäre es so, als hätten wir einen Briefkasten aus Glas, in dem unsere Postkarte landen würde. Jeder, der zufällig auch noch in der Nähe ist, kann mit drauf gucken, wenn er will.

Okay, ich will so einen Schlüssel haben. Wie erstelle ich mir so einen?

Nun, da gibt es es unterschiedliche Software für, einige werde ich hier aufführen. Allen voran natürlich das Enigmail-Plugin von Thunderbird ist hier zu nennen, auf dessen Nutzung ich allerdings später noch genauer eingehen werde. Sonst gibt es noch:

Unter Windows z.B. GPG4Win

Unter der Linux-Distribution deiner Wahl steht dir direkt das Kommandozeilen-Tool gpg zur Verfügung - grafische Alternativen wie Seahorse oder KGpg werden aber meist vorgezogen.

Unter MAC OS X gibt es die GPG-Suite.

Mit solcher Software lassen sich eigene Schlüsselpaare erstellen und eigene und fremde Schlüssel verwalten. Die Dokumentation von GPG4Win z.B. ist auch sehr gut ausgebaut.

Aber wenn doch jeder sowas selbst machen kann, woher weiß ich dann, welcher Schlüssel jetzt tatsächlich wem gehört?

Ja, das ist natürlich richtig. Wie auch bei einem Brief, könnte jetzt jeder diesen unterschreiben und behaupten, es wäre die Unterschrift von Person X. Man muss also, wie auch bei richtigen Briefen, die Unterschrift verifizieren (in unserem Fall können wir direkt den ganzen Schlüssel verifizieren).

Das "Vertrauen" in den Schlüssel, lässt sich bei allen gängigen GPG-Programmen einstellen. Ich muss also zuvor überprüfen, ob der Schlüssel tatsächlich Person X gehört. Dazu gibt es unterschiedliche Möglichkeiten, welche auch unterschiedliche Vertraulichkeitsstufen rechtfertigen:

  • Ich treffe mich mit Person X real und dieser bestätigt mir, dass das sein Schlüssel ist. Jeder Schlüssel hat eine sogennante "Schlüsselkennung", welche nur ein paar Zeichen lang ist.
  • Jemand anderes erledigt das für mich. Es ist möglich, mit dem eigenen Schlüssel, den Schlüssel anderer Leute zu signieren. Ist ein Schlüssel z.B. von einem namhaften Mitarbeiter von heise.de signiert und vertraue ich heise.de, so kann ich davon ausgehen, dass der Schlüssel tatsächlich Person X gehört.

Das Verfahren wird auch gemeinhin als Web of Trust bezeichnet.

Ansonsten gibt es natürlich noch ganz allgemein andere Möglichkeiten, an solches Vertrauen zu kommen:

  • Drucke den Fingerprint deines Schlüssels auf eine Visitenkarte und verteile diese persönlich.
  • Veranstalte mit deinen Freunden eine Key-Sign-Party.
  • ...oder nehme an einer öffentlichen Teil.

Ich will so ein Teil haben! Zeig mir, wie es geht.

Die Schritt-für-Schritt Anleitung mit Enigmail. Keine Sorge, die Einrichtung ist mittlerweile idiotensicher einfach. Ich habe mir hier für ein relativ verbreitetes Plugin, für ein auf vielen Plattformen verfügbares Stück Software (den E-Mail Client Thunderbird) entschieden. Voraussetzung ist ein installiertes Thunderbird und ein eingerichtetes E-Mail Konto.

Öffnet man Thunderbird, so öffnet man zunächst den Add-On-Manager wie im Bild dargestellt:

Add-On Manager öffnen

Anschließend gibt man im Suchfeld oben rechts "enigmail" ein, worauf hin das gewünschte Plugin erscheint:

snapshot13

Man installiert das Plugin und startet Thunderbird neu. Nach dem Neustart von Thunderbird poppt auch prompt Der Einrichtungsassistent von Enigmail auf:

snapshot14

Man wählt als nächstes den "Anfänger-Modus" aus. Damit werden automatisch ein privater und dazu passender öffentlicher Schlüssel erzeugt. Im nächsten Dialog fragt sich der Einrichtungsassistent allerdings zunächst ein Passwort:

snapshot15

Das Passwort dient als Schutz für den privaten Schlüssel: Es wäre ja fatal, würde doch Jemand an den privaten Schlüssel kommen und ihn einfach so benutzen können. Der private Schlüssel ist selbst noch einmal verschlüsselt, mit der gewählten Passphrase. Selbst, wenn also Jemand an den privaten Schlüssel kommt, kann er ihn nicht so ohne weiteres benutzen: Er benötigt dann noch zusätzlich das gewählte Passwort. Das Passwort sollte nicht zu einfach sein, aber auch nicht so kompliziert, dass man es sich aufschreiben muss.

Ok, ich habe mir so ein Schlüsselpaar erstellt. Wie verteile ich jetzt am besten den öffentlichen Schlüssel?

Sei kreativ!

  • Über einen USB-Stick, dann ist auch direkt verifiziert, dass es deiner ist.
  • Stell ihn auf deine Webseite.
  • Lade ihn auf einem Key-Server hoch.

Ich würde das ganze gerne einmal testen.

Dann schreib mir eine verschlüsselte E-Mail. Im Impressum findest du meinen Schlüssel.

Ja, aber wie kann ich denn jetzt mit meinem erstellten Schlüsselpaar meine E-Mails mit Thunderbird unterschreiben / verschlüsseln?

Entweder, man geht über die Konto-Einstellungen -> OpenPGP und setzt dort "Standardmässig verschlüsseln / unterschreiben", oder man wählt einfach beim Schreiben der E-Mail aus, ob verschlüsselt, oder unterschrieben werden soll:

E-Mail Verschlüsselung

Gibt es das auch für mein Smartphone?

Ja. Es ist nicht unüblich, seine E-Mails gleichzeitig auch auf dem Smartphone von unterwegs abzurufen. Da wäre es natürlich von Vorteil, wenn man auch die wichtigen, verschlüsselten E-Mails lesen könnte. Ich selbst habe kein iOS-Device, daher kann ich nur auf einen anderen Blog verweisen. In jedem Fall muss der erstellte private Schlüssel aber exportiert und auf dem Smartphone gespeichert werden. Der genaue Vorgang ist hier von der PGP-Software und dem verwendeten Smartphone abhängig, diesen kann ich also hier nicht genau im Detail erläutern.

Hat man den Schlüssel auf sein Smartphone kopiert, so kann man sich z.B. unter Android OpenKeychain installieren und dort den exportierten Schlüssel importieren. Anschließend lässt sich OpenKeychain sehr gut in K9-Mail integrieren. Dies kann man für die einzelnen Mailkonten unter Kontoeinstellungen -> Kryptografie erledigen.

K9-Mail Verschlüsslung

Dieser Beitrag ist Teil einer Artikelserie:

  1. Security Enhancement Teil 1: E-Mail Verschlüsselung mit PGP (13. Februar 2016)
  2. Security Enhancement: Vorwort (2. Februar 2016)

Schreibe einen Kommentar