Wer sich nach den Nachrichten der letzten Zeit nicht etwas mehr mit sicherer Kommunikation auseinander setzen will, sollte gleich ins Eck gehen und sich schämen. Für alle, die hier bleiben dürfen, gibt’s wieder einen Tip von mir, wie man einfach und gratis die eigene Privatsphäre besser schützt.

Der beste Weg, Nachrichten sicher zu übertragen ist, sie am eigenen Gerät zu verschlüsseln und sie erst am Gerät des Empfängers zu entschlüsseln. So muss man sich nicht darauf verlassen, dass jedes Netzwerkgerät (oder sogar Kabel) vor fremdem Zugriff gefeit ist. Ausserdem hat man so die Möglichkeit, Verschlüsselung über Kanäle zu nutzen, die eigentlich gar keine sichere Kommunikation anbieten, wie einige Instant Messenger zum Beispiel.

Für Email gibt es dafür 2 gängige Methoden: GnuPG (bzw. PGP) und S/MIME. Wobei GnuPG ganz ohne zentrale Stelle auskommt, während S/MIME verbreiteter ist. Da immer sowohl Absender, als auch Empfänger die gleiche Technologie unterstützen müssen, werde ich vorerst auf Letzteres eingehen. So wüsste ich zum Beispiel gar keine Möglichkeit, wie man GnuPG auf iOS verwenden kann.

Kurz zum technischen Hintergrund: S/MIME verwendet Zertifikate zur sicheren Kommunikation, von denen jeder User 2 Teile hat: Ein öffentliches und ein privates Zertifikat. Das Öffentliche dient nur zum Verschlüsseln und Überprüfen von digitalen Signaturen und kann überall verbreitet werden, während das private Zertifikat zum Verschlüsseln und Signieren von Nachrichten dient und geheim gehalten werden muss.

Wer eine signierte Nachricht erhält, kann mit dem öffentlichen Zertifikat überprüfen, ob sie wirklich mit dem dazugehörigen privaten Zertifikat signiert wurde, was so allerdings noch keinen Wert bietet, da der Empfänger keine verlässliche Information über den Besitzer des zugehörigen privaten Zertifikats hat. Um nun die Echtheit zu bestätigen wird das öffentliche Zertifikat vor der Verwendung von einer Certification Authority (CA) signiert, nachdem diese die Identität des Besitzers des Zertifikats überprüft hat. Vertraut der Empfänger der CA, dass sie Identitäten richtig überprüft, kann er anhand der Signatur der CA auf dem öffentlichen Zertifikat des Absenders bestätigen, dass dieser wirklich der ist, der er zu sein vorgibt.

Darin liegt auch der Nachteil von S/MIME gegenüber GnuPG. Man muss wieder einer zentralen Stelle uneingeschränkt vertrauen, dass sie 1. Identitäten richtig überprüfen kann und 2. ihr eigenes Zertifikat sicher schützen kann, damit sich nicht jemand eine Signatur auf seinem Zertifikat erschleicht. Ausserdem verlangen viele CAs verhältnismässig viel Geld für eine Signatur auf dem eigenen Zertifikat.

Die Entscheidung, welcher CA man vertraut, wird einem in gewissem Rahmen einfach abgenommen, da jedes Emailprogramm und jeder Browser eine Liste von CAs mitbringt, denen automatisch vertraut wird. Befindet sich eine CA nicht in dieser Liste, gibt es eine der bekannten Zertifikatswarnungen, dass die Echtheit nicht überprüft werden kann, die je nach Gesinnung des Herstellers mal mehr, mal weniger klar macht, dass die CA einfach noch nicht bekannt ist. Gewisse Softwarehersteller gehen dabei gerne so weit, solche Zertifikate als per se unsicher zu bezeichnen. Ein schönes Beispiel für: “Dein Dienst bringt mir keinen Profit, also bist Du auch sicher nichts wert.” Glücklicherweise kann man aber selbst entscheiden, welcher CA man vertraut und die öffentlichen Rootzertifikate der CA in das eigene Emailprogramm / Browser / Zertifikatsspeicher des OS importieren oder wieder löschen.

Eine Alternative zu den kommerziellen CAs stellt eine selbst aufgebaute CA dar, wobei man dann bei der Kommunikation mit fremden Partnern nichts gewonnen hat, denn wieso sollte der Empfänger der CA mehr vertrauen als einem selbst signierten Zertifikat? Oder eine der CAs, die auf eine Community mit einem WebOfTrust setzen, um Identitäten zu überprüfen. Die wahrscheinlich bekannteste solche CA ist CAcert.

Der grösste Haken an CAcert ist derzeit noch, dass ihre öffentlichen root Zertifikate noch nicht in Browsern und Emailprogrammen integriert sind, was regelmässig zu den oben erwähnten Zertifikatswarnungen führt. Importiert man sie also nicht selbst, werden Emails, die via CAcert gesichert sind, normalerweise vom eigenen Emailprogramm als “Nicht sicher” markiert.

Übrigens gelten S/MIME Zertifikate immer nur für einen bestimmten, nicht verlängerbaren Zeitraum. Anders als GnuPG Schlüssel, werden die Schlüssel beim erneuten Signieren komplett neu erstellt, weshalb man auch aubgelaufene Zertifikate immer aufbewahren sollte, da man sonst Nachrichten, die mit diesen alten Zertifikaten geschützt waren, nicht mehr lesen kann!

Soviel zum (sehr) kurzen Überblick zu S/MIME. Wie ich mich kenne, wird’s dazu sicher noch geben, in Zukunft.

Jetzt aber zum eigentlichen Thema, dem Verwenden von S/MIME auf Android. Da das Besorgen eines S/MIME Zertifikats den Rahmen dieses(!) Artikels sprengen würde, gehe ich davon aus, dass ein von CAcert signiertes Zertifikat vorhanden ist. Alternativ kann die Anleitung natürlich auch mit jedem anderen gültigen Zertifikat durchgeführt werden. Eventuell ist das Rootzertifikat der CA ja schon in Djigzo vorhanden, wodurch der gesamte Import desselben weg fällt.

Ich hatte zum ersten Mal zur Zeit von Android 2.3.6 Kontakt mit diesem System und damals war der E-Mail Client (zumindest auf Samsung Galaxy Geräten) mehr oder weniger zum wegschmeissen. Ich bin deshalb auf K-9 Mail umgestiegen, das man schön mit anderen Apps erweitern kann und so auch Unterstützung für GnuPG und S/MIME nachrüstbar war. Auf allen neueren Geräten habe ich dann K-9 verwendet, ohne den nativen Client eines Blickes zu würdigen. Für S/MIME benutze ich Djigzo.

Djigzo, wie viele andere S/MIME fähige Clients, lässt das Verschicken von signierten und verschlüsselten Mails nur dann zu, wenn es selber der signierenden CA vertraut. Um das bei CAcert zu schaffen, holt man sich die Rootzertifikate (Class 1 und Class 3, Djigzo sollte mit PEM und DER Format gleichermassen klar kommen) und importiert sie in Djigzo. Dazu hilft es nicht, CAcert anzusurfen, das Zertifikat anzuklicken und gleich mit Djigzo zu öffnen – das geht nur mit persönlichen Zertifikaten, die man zum Verschlüsseln verwendet. Leider wird man darauf nicht hingewiesen, sondern kann ganz normal importieren und wundert sich dann, warum der CA noch immer nicht vertraut wird. Stattdessen lädt man die Rootzertifikate auf das Android Gerät und wählt dann in der Ansicht der Rootzertifikate “Importieren”.

djigzo

Danach kann man eigene Zertifikate und öffentliche Zertifikate von Kommunikationspartnern importieren. Entweder ebenfalls erst auf das Gerät legen und dann via Menü importieren, oder, hier geht das ja, z.B. von einem eigenen Webserver herunterladen. Dazu exportiert man die Zertifikate erst von einem Programm, in dem man sie bereits verwendet und schützt sie (das wird beim Export automatisch verlangt) mit einer ausreichend sicheren Passphrase.

Wenn alles geklappt hat, das Zertifikat importiert und der signierenden CA vertraut wird, belohnt das Djigzo mit einem grünen Häkchen.

netways-key

Im Gegensatz zu z.B. iOS kann man gleich mehrere Zertifikate in einer Datei importieren und auch mehrere Zertifikate für eine E-Mailadresse aktiv haben. Allerdings muss man in den Settings/Account settings/Select signer… erst festlegen, welches Zertifikat denn zum signieren benutzt werden soll.

Um jetzt sichere Emails zu verschicken, gibt man die eigenen Zugangsdaten zum Mailserver in Djigzo nochmal an (in den Settings, allerdings wird man beim ersten Öffnen gleich auf den entsprechenden Assistenten verwiesen) und verwendet danach die Funktion “Compose Message“. Empfängt man verschlüsselte Mails in K-9, erscheint das Mail leer mit einem Anhang namens “smime.p7m”. Den kann man in Djigzo öffnen, wo er dann gleich entschlüsselt wird.

Öffentliche Zertifikate, die der Kommunikationspartner ja zum Verschlüsseln braucht, verschickt man am Einfachsten, indem man ein signiertes Mail an den entsprechenden Partner sendet.

Übrigens verwendet Djigzo eine eigene Passphrase, die die eigenen Zertifikate schützt, selbst wenn jemand ins Android Gerät einbrechen sollte.

Zugegeben, die S/MIME Integration in iOS (wenn man die entsprechenden Zertifikate erstmal installiert hat, und damit leben kann, dass man nicht darauf aufmerksam gemacht wird, ob man verschlüsselt schickt oder nicht, geschweige denn, wählen könnte, ob) ist im Alltag komfortabler und die GnuPG Integration via APG in K-9 deutlich besser, aber die Lösung mit Djigzo ist durchaus praktikabel. Es gibt sicher noch andere Möglichkeiten, S/MIME auf Android zu verwenden, aber bisher bin ich recht gut damit gefahren. Da S/MIME Zertifikate nur immer für relativ überschaubare Zeiträume ausgestellt werden, erhält man auch bald Übung im Zertifikatshandling. 😉

Thomas Widhalm

Autor: Thomas Widhalm

Thomas war Systemadministrator an einer österreichischen Universität und da besonders für Linux und Unix zuständig. Seit 2013 möchte er aber lieber die große weite Welt sehen und hat sich deshalb dem Netways Consulting Team angeschlossen. Er möchte ausserdem möglichst weit verbreiten, wie und wie einfach man persönliche Kommunikation sicher verschlüsseln kann, damit nicht dauernd über fehlenden Datenschutz gejammert, sondern endlich was dagegen unternommen wird. Mittlerweile wird er zum logstash - Guy bei Netways und hält Schulungen und erstellt Schulungsunterlagen zu diesem faszinierenden Tool.