Software Development

OpenPGP im Berufsalltag – Teil 6: E-Mail-Verschlüsselung auf Android mit K-9 Mail + OpenKeychain

Auch auf mobilen Endgeräten wie Tablets oder Smartphones muss man nicht auf OpenPGP verzichten. Aus der großen Masse an Android-Apps habe ich zwei herausgegriffen, die einen guten Funktionsumfang bieten und weit verbreitet sind: K-9 Mail und OpenKeychain. Wie man diese Kombi einrichtet und nutzt, erfahrt ihr in diesem Artikel.

Mail-Verschlüsselung


Schlüssel einrichten mit OpenKeychain

Als erstes brauchen wir einen OpenPGP-Client, der für Android taugt. Weil OpenKeychain recht ausgereift ist, einen guten Funktionsumfang hat und der empfohlene Client für K-9 Mail ist, werden wir diese App benutzen. Installieren kann man sie ganz einfach über den Google Play Store.

Als nächstes muss das eigene Schlüsselpaar eingerichtet werden. Sofern bereits eines auf dem PC vorhanden ist (siehe Teil 4), stellt sich die Frage: Wie gelangt das Schlüsselpaar auf das Mobilgerät? OpenKeychain bietet dazu verschiedene Möglichkeiten:

  • Existiert das Paar bereits auf einem anderen Mobilgerät, kann man es mit der Funktion "Secure Wifi Transfer" versuchen.
  • Öffentliche Schlüssel können natürlich über Schlüsselserver importiert werden. Alternativ kann man diese auch über QR-Codes austauschen, die OpenKeychain generiert.
  • Generell hat sich der Import von Dateien im Fall Desktop auf Mobil gut bewährt.

Man muss also die privaten Unterschlüssel in eine Datei exportieren, diese auf das Gerät kopieren und dann mit OpenKeychain importieren. Den Hauptschlüssel lassen wir aus Sicherheitsgründen zunächst aus dem Spiel.

Praktischerweise wurden entsprechende Exporte in Teil 4 bereits angelegt. Optional kann man die exportierten Dateien noch zusätzlich mit einem Passwort symmetrisch verschlüsseln. Dadurch wird ein eventuelles Abhören während des Kopiervorgangs unsinnig, was die Sicherheit erhöht. Wie diese optionale Verschlüsselung funktioniert, ist auf openkeychain.org beschrieben.

Um den privaten Unterschlüssel zu importieren, geht man wie folgt vor:

  • Die ID des Hauptschlüssels muss mit gpg -K gesucht werden. Diese, beispielsweise 8AE9426EA8A00B2E, muss man sich merken.

    key_id
  • Der Schlüssel wird nun exportiert.

    # Export private subkeys.
    gpg --export-secret-subkeys --armor 8AE9426EA8A00B2E > 8AE9426EA8A00B2E.sub_priv.asc
        
  • Die Datei kopiert man auf das mobile Gerät. Ein sicherer Kanal ist hier zu bevorzugen, beispielsweise ein USB-Kabel.
  • Nun öffnet man OpenKeychain und wählt „Import Key From File“.

    import_from_file-1
  • Sollte dieser Bildschirm nicht angezeigt werden, drückt man auf das +-Symbol unten rechts und wählt „Import from File“.
  • Im nächsten Bildschirm wählt man das Dateiordnersymbol oben rechts aus.

    select_file
  • Jetzt wählt man die Datei aus. Man erhält eine Bestätigung wie diese:

IMG_20180806_102557


Damit ist der Import abgeschlossen. Der Schlüssel wird als „Partially Stripped“ bezeichnet, was ein Hinweis auf den fehlenden Hauptschlüssel ist.

Vorsicht ist jedoch geboten: Die Schlüssel sind auf dem Gerät nur so sicher wie das Gerät selbst! Aus Sicherheitssicht ist es daher keine gute Idee, private Schlüssel auf dem Gerät zu speichern. Einerseits existieren sie dann doppelt (mobil und auf dem Desktop), andererseits sind sie den gleichen „mobilen Gefahren“ ausgesetzt wie der Rest des Geräts. Abhilfe schaffen hier sogenannte Security Tokens, mit denen wir uns im nächsten Teil beschäftigen werden.

Schlüssel mit Kontakten verknüpfen

OpenKeychainmacht (wie auch K-9 Mail) häufig Gebrauch von der Kontaktliste des Mobilgeräts, auf dem es läuft. Das kann die Handhabung stark vereinfachen. Öffentliche Schlüssel der Kommunikationspartner werden dann den Kontakten zugeordnet.

Weil das den Schutz personenbezogener Daten verringert, muss diese Funktionalität erst unter Burger-Menü links oben → Settings → Synchronization → Link keys to contacts aktiviert werden.


Öffentliche Schlüssel verwalten

Öffentliche Schlüssel lassen sich ganz bequem über + → Key Search finden. Die dabei benutzten Schlüsselserver kann man unter Burger-Menü links oben → Settings → Key Search → Manage OpenPGP keyservers einstellen. Auch über K-9 Mail könnte man diese Suche initiieren.


Öffentliche Schlüssel beglaubigen

Importierten öffentlichen Schlüsseln wird standardmäßig nicht vertraut. Möchte man das ändern, muss man diese Schlüssel bestätigen, d. h. mit einem Schlüssel, der die Eigenschaft „Certify“ besitzt, digital unterschreiben und damit beglaubigen.

Dazu verlangt OpenKeychain, dass man sich zunächst vergewissert, dass der zu signierende öffentliche Schlüssel tatsächlich der richtigen Person gehört. Dies soll über einen Vergleich der sogenannten Fingerprints geschehen, und dazu gibt es zwei Möglichkeiten:

  • Man benutzt den in OpenKeychain integrierten QR-Code-Mechanismus zum automatischen Vergleich der Fingerprints. Die Prints sind in den QR-Codes eingebettet. Voraussetzung ist allerdings, dass der Besitzer ebenfalls OpenKeychain benutzt.
  • Man benutzt die manuelle Fingerprint-Methode. Hat man in OpenKeychain einen öffentlichen Schlüssel ausgewählt, ruft man Burger-Menü rechts oben → Confirm with fingerprint auf. Der Fingerprint des Schlüssels ist überall gleich, unabhängig davon, ob der Besitzer OpenKeychain benutzt oder nicht. Mit gpg lässt er sich über gpg --fingerprint <SCHLÜSSEL-ID> anzeigen.

    gpg --fingerprint 0xEAFA5E6709F31765
    pub   rsa4096/0xEAFA5E6709F31765 2018-04-05 [C] [expires: 2019-04-05]
          Key fingerprint = 76EE 007A A847 7D08 537A  55EF EAFA 5E67 09F3 1765
    


confirm_key

Nachdem man die Fingerprints sorgfältig Zeichen für Zeichen verglichen hat, liefert ein Tap auf „Fingerprints match“ folgende Ansicht:

confirm_key_2

Ein Tap auf „Confirm key“ erstellt eine Beglaubigungssignatur, die nur lokal gespeichert wird. Möchte man diese auch über einen Keyserver veröffentlichen, muss man vorher den Haken bei „Publish certification on keyservers“ setzen.

Zum Beglaubigen benötigt man einen privaten Schlüssel mit der Eigenschaft „Certify“. Da wir aber in Teil 4 diesen Schlüssel aus Sicherheitsgründen aus dem Schlüsselbund entfernt haben, dürfte – nein: muss – die Beglaubigung fehlschlagen. Auch hier muss man zunächst, wie oben beschrieben, den Hauptschlüssel exportieren, die Datei kopieren und dann in OpenKeychain importieren, wobei man nach erfolgreichem Import die Option "Refresh Key" wählt, denn die Unterschlüssel sind ja bereits vorhanden.

Ich habe außerdem beobachtet, dass die Reihenfolge Hauptschlüssel --> Unterschlüssel zu Fehlern führen kann. Daher sollte man immer erst den Unterschlüssel und dann den Hauptschlüssel importieren.

Beglaubigungen von Schlüsseln sind komplett optional. Man muss also nicht ständig seinen Hauptschlüssel importieren, wenn man einen öffentlichen Schlüssel importiert. Aus Sicht des Web-Of-Trust, das die öffentlichen Schlüssel und deren Beglaubigungssignaturen aufspannen, ist das aber kontraproduktiv. Die Sicherheit wird durch Beglaubigungen definitiv erhöht.

K-9 Mail einrichten

Zunächst ein kleiner Exkurs zu K-9: K9, gesprochen „Keynein“ in Anlehnung an „Canine“ (engl. für Hundeartige) ist ein Roboterhund, bekannt aus der englischen Kultserie Dr. Who. Logo und Name wurden für die App entsprechend entlehnt – ein typischer Nerd-Witz.

Für Android gibt es zwar viele E-Mail-Apps, allerdings nur wenige, die frei verfügbar sind, eine gute Usability haben und OpenPGP über eine Dritt-App (wie z. B. OpenKeychain) unterstützen. Von diesen wenigen habe ich mich für K-9 Mail entschieden, weil es weit verbreitet ist, eine aktive Community hat und gut funktioniert.

Installieren kann man es ebenfalls ganz einfach über den Google Play Store.

Beim ersten Aufruf muss man zunächst seinen E-Mail-Account einrichten. Leider gibt es hier nicht so eine schöne Datenbank wie bei Thunderbird. Also muss man darauf achten, Mailausgangs- und -eingangsserver korrekt einzustellen. Auf den Hilfeseiten des eigenen Mail-Providers gibt es dazu fast immer die notwendigen Informationen.

Verbindung zu OpenKeychain herstellen

Ist alles eingerichtet und funktioniert der Mailabruf- und -versand, muss man OpenKeychain sozusagen anflanschen. Das geht über Settings → (Global Settings) → Cryptography → OpenPGP-app. Das Settings-Menü erreicht man über das Burger-Menü (die drei vertikalen Punkte) rechts unten.

Es dürfte eine Auswahlliste erscheinen, in der OpenKeychain ausgewählt werden kann. Außerdem sollte man im gleichen Menü den Punkt „Show unencrypted signatures“ aktivieren. Das ermöglicht das Verifizieren und Erstellen von Signaturen auch ohne Verschlüsselung.

IMG_20180806_110815


Jetzt muss noch der für den erstellten Account zuständige Schlüssel ausgewählt werden. Dazu selektiert man den Account und klickt dann Burger-Menü rechts unten → Settings → Account settings → Cryptography → My Key → Use key. Falls die E-Mail-Adresse des Accounts nicht mit der User-ID eines privaten Schlüssels übereinstimmt, muss man den entsprechenden Schlüssel aus der Liste auswählen.

IMG_20180806_104018

Mails senden

Probieren wir es doch einmal aus. Ein Tap auf das Briefsymbol im unteren Bereich von K-9 öffnet den Bildschirm für eine neue E-Mail. Zunächst gibt man eine beliebige Empfängeradresse ein, wobei K-9 hier Gebrauch von den Kontakten des Gerätes machen kann. Es lohnt sich also, bei Kontakten die korrekten E-Mail-Adressen zu hinterlegen.

Verschlüsseln und Signieren

Wählt man einen Kontakt aus, den oder dessen E-Mail-Adresse OpenKeychain kennt – d. h. es befindet sich ein öffentlicher Schlüssel im Schlüsselring der App – erscheint oben rechts ein neues Symbol:

padlock_grey

Ein Tap darauf und das Symbol sollte grün werden:

padlock_green

Das bedeutet: Die Mail wird verschlüsselt und signiert gesendet. Der Rest funktioniert wie gewohnt. Das Symbol zur Verschlüsselung ist aber nur dann aktivierbar, wenn alle Empfänger in OpenKeychain bekannt sind. Sollte einer fehlen, muss dieser zunächst über OpenKeychain nachgepflegt werden.

Nur Signieren

Es ist auch möglich, eine Mail lediglich zu signieren, aber nicht zu verschlüsseln. In diesem Fall ist es egal, ob die Empfänger OpenKeychain bekannt sind, da für das Signieren nur der private Schlüssel des Senders benutzt wird.

Voraussetzung ist, dass man unter (Global) Settings → Cryptography den Punkt „Show unencrypted signatures“ aktiviert hat.

Jetzt kann man beim Erstellen einer neuen Mail über Burger-Menü oben rechts → Enable PGP Sign-Only Signaturen ohne Verschlüsselung für diese Mail aktivieren. Dadurch erscheint ein weiteres Symbol:

haken

Der blaue Haken bedeutet: Sign-only-Modus aktiv. Die Mail wird signiert, aber nicht verschlüsselt. Die Kombination verschlüsselt, aber nicht signiert, ist in K-9 Mail nicht vorgesehen. Auch ein nachträgliches Aktivieren der Verschlüsselung funktioniert im Sign-only-Modus nicht. Dazu muss dieser erst deaktiviert werden. Dann lässt sich die Verschlüsselung aktivieren.

Mails empfangen

Der Empfang verschlüsselter oder signierter Mails ist etwas komfortabler gelöst als deren Versand, weil hier die Integration mit OpenKeychain stärker ist.

K-9-Sicherheitsskala und -Icons

Zunächst kommt es darauf an, ob eine Mail (nur) signiert, oder (auch) verschlüsselt ist. K-9 zeigt auch hier die bekannten Symbole an: den Haken für Signaturen und ein Schloss für die Verschlüsselung (und Signatur).

Zusätzlich werden neben diesen bekannten Symbolen noch drei Punkte angezeigt, die eine Art Sicherheitsskala von wenig Sicherheit (unten) bis zu hoher Sicherheit (oben) symbolisieren. Jede Sicherheitsstufe korrespondiert außerdem mit einer entsprechenden Farbe. Insgesamt soll damit der Grad der Sicherheit auf einen Blick erkennbar sein. Es erfordert allerdings etwas Übung. Um den Überblick zu behalten, habe ich eine Tabelle erstellt:

  Signiert Verschlüsselt Anmerkung
frage_black Öffentlicher Schlüssel des Senders fehlt.
padlock_black ? Privater Schlüssel des Empfängers fehlt / Entschlüsselungsfehler.
haken_rot Signatur fehlerhaft.
haken_orange Signatur korrekt, Senderschlüssel fehlt vertrauen.
padlock_orange Korrekte Signatur, erfolgreich entschlüsselt, Senderschlüssel fehlt vertrauen.
haken_blue Korrekte Signatur mit vertrauensvollem Schlüssel.
padlock_green_dots Korrekte Signatur mit vertrauensvollem Schlüssel. Korrekte Entschlüsselung.


Normalerweise wird man also die orangefarbenen Icons sehen, da öffentlichen Schlüsseln standardmäßig nicht vertraut wird.

Ein Tap auf das Icon enthüllt die Sicherheitsinformationen des Senders. Ist das Icon schwarz, d. h. es fehlt ein entsprechender Schlüssel, leitet K-9 Mail automatisch zu einer Schlüsselsuche via Keyserver weiter.

Wird der entsprechende Schlüssel erfolgreich gefunden und importiert, gelangt man zurück zur Nachricht. Möglicherweise ändert sich das Icon aber trotzdem nicht. In diesem Fall muss man zurück zur Listenansicht des Ordners und die Maildetails erneut laden.

Ausblick

Vor allem auf mobilen Endgeräten erkennt man, wie umständlich, kompromissreich und teilweise auch riskant eine möglichst einfache Anwendung von OpenPGP sein kann. Das zugrundeliegende Problem ist meiner Meinung nach vor allem, dass man die Schlüssel nicht wie echte Schlüssel einfach mitnehmen kann.

Im nächsten Teil der Serie werde ich daher anhand des Yubikey NEO zeigen, wie man mit Hilfe von sogenannten PGP-SmartCards genau dies erreichen und damit einige Nachteile wettmachen kann.

Und wer noch einmal in die vorherigen Teile der Serie schauen möchte, klickt sich einfach durch:

Teil 1: OpenPGP – Was ist das?
Teil 2: Bevor es los geht
Teil 3: Installieren und einrichten
Teil 4: Schlüssel generieren
Teil 5: Thunderbird + Enigmail

 

    
Über Jan Mosig

Jan Mosig arbeitet für die itemis AG am Standort Leipzig. Er beschäftigt sich mit Problemen im Projektalltag und setzt zu deren Lösung auf technische Softwarequalität, Agile und Mut zur Veränderung.