Seite wählen

S/MIME Emailsicherheit auf Android

von | Jul 5, 2013 | Security

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
Thomas Widhalm
Manager Operations

Pronomina: er/ihm. Anrede: "Hey, Du" oder wenn's ganz förmlich sein muss "Herr". Thomas war Systemadministrator an einer österreichischen Universität und da besonders für Linux und Unix zuständig. Seit 2013 ist er bei der NETWAYS. Zuerst als Consultant, jetzt als Leiter vom Operations Team der NETWAYS Professional Services, das unter anderem zuständig ist für Support und Betriebsunterstützung. Nebenbei hat er sich noch auf alles mögliche rund um den Elastic Stack spezialisiert, schreibt und hält Schulungen und macht auch noch das eine oder andere Consulting zum Thema. Privat begeistert er sich für Outdoorausrüstung und Tarnmuster, was ihm schon mal schiefe Blicke einbringt...

9 Kommentare

  1. Joerg Moellenkamp

    Traust Du dem Verschlüsselungsverfahren oder genauer gesagt der Implementation des Verschlüsselungsverfahrens?

    Antworten
    • Thomas Widhalm

      Erstmal Danke für Dein Kommentar!
      Ich für meinen Teil traue dem Verschlüsselungsverfahren auf jeden Fall und der Implementierung in Djigzo auch weitestgehend. Wenn ich besonders brisante Daten zu verschicken hätte, würde ich vielleicht überlegen, ob ich das darüber schicke, wobei das eher daran liegt, dass ich Sorge hätte, dass z.B. das Smartphone gestohlen wird und es so vielleicht eher angreifbar wird. Trotz zusätzlicher Passphrase am Schlüsselspeicher.
      Geht es Dir dabei eher um generelle Vorsicht oder hast Du einen bestimmten Grund besonders Djigzo und Android zu misstrauen?

      Antworten
  2. Roland Moriz

    Interessanter Artikel auch für nicht Android-Nutzer 🙂
    Ich glaube auch, dass wir eine breite Verschlüsselung nur mit S/MIME erreichen und nicht mit gpg. Im „Verborgenen“, also dem Enterprise und der Verwaltung, ist S/MIME längst vorhanden, zumindest Infrastrukturen und Keymanagement.
    Unter https://gist.github.com/rmoriz/5945400 habe ich angefangen sowohl eine Liste der Mail-Clients mit S/MIME-Unterstützung als auch eine Liste von Unternehmen, Hochschulen und Behörden zu erstellen.
    Man sieht, dass S/MIME sehr verbreitet ist. Wahrscheinlich fällt es vielen Mitarbeitern nicht auf, weil die Systeme zentral konfiguriert werden und sich Mailversand/Empfang volltransparent halten.

    Antworten
    • Thomas Widhalm

      Danke für Dein Kommentar!
      Ich musste mich leider aufgrund von Platz und vor allem Zeit erstmal auf eine Anleitung für eine Lösung unter Android entscheiden, aber eventuell werde ich weitere nachreichen.
      Ich halte nach wie vor GnuPG für die bessere Lösung, da mir der Zwang zur zentralen Stelle einfach nicht behagt. Wenn ich dann daran denke, dass Zertifikate auch der Bequemlichkeit halber in zentralen Verzeichnisdiensten abgelegt werden, macht mich das noch etwas misstrauischer. Und genau darüber sollte sichere Verschlüsselung natürlich erhaben sein. Deshalb sollte man immer überlegen, in welchem Rahmen man einer CA vertrau, das aber dann auch wirklich tun. 🙂
      Bisher bin ich erschreckend wenig Institutionen begegnet, die irgendeine Art von Emailsicherheit verwenden, selbst, wenn die selber etwas Ähnliches für Kunden anbieten. Selbst wenn S/MIME dort offiziell unterstützt wird, wird es wohl von Mitarbeitern oft sehr schleppend angenommen. Da liegt das Problem wohl daran, dass sich zwar einige Unternehmen die Infrastruktur aufbauen, aber dann nicht ausreichend an die eigenen Mitarbeiter kommunizieren oder die Verwendung verlangen. Vor allem bei der Kommunikation nach aussen ist insb. die digitale Signatur ein Thema, da viele Empfänger überhaupt nichts damit anzufangen wissen und viele Clients sie auch nicht gleich auswerten, sondern als Attachment darstellen. Da steigt der Supportaufwand gleich mal beträchtlich an.
      Vielen Dank für den Link auf die Liste. Die werde ich sicherlich verfolgen, wobei ich eine kleine Änderung habe: K-9 unterstützt S/MIME nur in Zusammenhang mit Djigzo und nicht nativ.

      Antworten
  3. Gernot

    Du schreibst:
    Ü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, …
    Leider ist die verbreitete Meinung, das müsste so sein. Die Alternative ist, einen Certificate Signing Request (mit Public Key) zu schicken und die CA bestätigt diesen. Dann bleibt der Schlüssel gleich. Das Zertifikat kostet z.B. bei a-trust EUR 240 pro Jahr und gibt es nur Signieren von Software.
    Ich habe daher meine eigene CA, zertifiziere kostenlos für meine Partner und verlängere auch deren Schlüssel. Sie dürfen auch keys selber erstellen.
    Du schreinbst:
    … denn wieso sollte der Empfänger der CA mehr vertrauen als einem selbst signierten Zertifikat?
    Meinen Partner vertraue ich, weil ich sie kenne, nicht weil eine amerikanische Firma behauptet hat, denen kannst Du vertrauen.
    Ich vertraue der amerikanische Firma allerdings weniger, wenn sie die Schlüssel der Kommunikationspartner hat und seit dem Patriots Act sowieso jeder US-Bundesbehörde rausrücken muss.
    Gernot

    Antworten
  4. Helmut

    Wer *ernsthaft* unterwegs via Android verschlüsseln will, nutzt R2Mail2. Die Vollversion kostet keine 5 Euro. Dafür hat man dann aber einen Mail-Client, der nativ PGP und S/MIME wie ein Desktop-Client beherrscht!
    S/MIME mit K-9 und DJIGZO ist die reinste Frickelei. Das ewige Eingeben des PW nervt total. Dann wird auch nicht die Betreffzeile automatisch mit übernommen. Das nervt noch mehr. Und damit beim Empfänger nicht nur die Mail-Adresse angezeigt wird, muss man auch erst mal wissen, was man da eingibt. Für ernsthaftes S/MIME ist das nichts, vom geschäftlichen Bereich ganz zu schweigen.
    PGP mit K-9 und APG funktioniert da ein wenig besser. Aber auch hier gibt es einen krassen Kritikpunkt: wenn man die eigenen verschickten Mails (damit man sie später selber noch lesen kann) zusätzlich mit seinem eigenen Schlüssel verschlüsselt, wird die Mail *zuerst* mit dem Schlüssel des Absenders verschlüsselt – und dann erst mit dem Schlüssel des Empfängers. Die PGP-Standardprogramme auf dem Desktop machen das genau andersrum und das aus gutem Grund: denn dann muss der Empfänger nicht jedes Mal auf „Abbrechen“ klicken, wenn er aufgefordert wird, das Passwort des Senders einzugeben (das er natürlich nicht hat). Ein Schönheitsfehler, der aber unter Android mitlerweile leider ein Running Gag ist.
    Der einzige Client unter Android, bei dem alles so funktioniert wie es soll ,ist R2Mail2. Einfach mal ausprobieren.

    Antworten
    • Thomas Widhalm

      Vielen Dank für den Hinweis auf R2Mail2. Ich werde mir das Tool ansehen und nochmal hier berichten.

      Antworten
  5. Dirk

    ne, das Djigzo app ist NICHT alltagsfaehig. Ich habe es zum laufen gekriegt … aber ich moechte schon ein Email App was mehrere Emailaccounts verwalten kann UND S/Mime faehig ist. Auf meinen Ios Geraeten, wunderbar und easy .. nur leider auf Android eine Qual. Habe auch K-9 und APG, nur kann ich den mit Firefox generierten Schluessel nicht in APG importieren. Da kann sich Android wirklich was von IOS abkucken !!

    Antworten
  6. Alex

    Mein Gott ist das umständlich! Android ist offenbar noch immer ein Bastler-System. In iOS integriert sich das ganz einfach im mitgelieferten Email-Client – einfach Zertifikat (.pfx, was ciphermail, wie Djingzo jetzt heißt, übrigens nicht kennt) per Email an sich selbst schicken, den Anhang im Email-Client des iOS Gerätes öffnen und auf „Installieren“ clicken. Fertig. Ab sofort kann man verschlüsselte Emails direkt im Mail-Client lesen – ohne den umständlichen Umweg über eine Dritt-App. Wieso kriegt das die Android-gemeinde nicht hin?

    Antworten

Trackbacks/Pingbacks

  1. Lesestoff: Dezember 2013 und Vormonate mit 132 Artikeln | Webanhalter - […] S/MIME Emailsicherheit auf Android: Wer sich nach den Nachrichten der letzten Zeit nicht etwas mehr mit sicherer Kommunikation auseinander…

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Security

NWS – Unsere Infrastruktur und SLAs

Es gab wahrhaftig schon mal einfachere Zeiten: Zuerst bringt die Corona-Pandemie das öffentliche Leben über Jahre hinweg zum Erliegen und treibt die Leute in die Isolation. Zugegeben: uns als Hosting Provider kam der durch das Homeoffice gestiegene Bedarf an...

DockerCon 2022: Wie geht Containersecurity?

Buzzwords wie Software Supply Chain, Container Security Scanning oder Software Bill of Materials (SBOM) sind in den vergangenen zwei Jahren vermehrt in aller Munde, nicht zuletzt aufgrund des anhaltenden Trends zur Containerisierung vormals monolithischer Anwendungen...