eMails verschlüsseln mit S/MIME

Bereits vor den Enthüllungen von Edward Snowden habe ich mich mit dem Thema "eMails verschlüsseln" beschäftigt. Seitdem bekannt ist wieviel die NSA (und nicht nur der amerikanische Geheimdienst) mitliest beschäftige ich mich verstärkt mit dem Thema Kryptographie. Nachfolgend eine kleine Anleitung, wie man mittels S/MIME seine Mails einfach verschlüsseln kann. Ich weiß nicht ob man damit wirklich die Geheimdienste aussperren kann. Auf jeden Fall beißt sich der gemeine Internetgauner daran die Zähne aus.

Zur Verschlüsselung gibt es zwei gängige Systeme. GPG und S/MIME. Natürlich sind diese beiden Systeme nicht kompatibel zueinander, obwohl ihre Funktionsweise recht ähnlich ist. Ich habe mich für S/MIME entschieden, da es zumindest aktuell keine Möglichkeit gibt GPG auf dem iPhone zu implementieren. 

Update (16. August 2014): Ich prüfe unter iOS das Tool IPGMAIL auf Alltagstauglichkeit. Damit kann man auch auf dem iPhone/iPad GPG verschlüsselte Mails erstellen bzw. lesen.

Grundsätzlich bestehen e-Mails nur aus Text. Zumindest ist das einmal die ursprüngliche Idee gewesen. Um Sonderzeichen (Umlaute), Formatierungen (Schriftart, Schriftgröße, Farbe) oder auch den Dateiversand zu ermöglichen wurde der MIME Standard (Multipurpose Internet Mail Extentions) eingeführt. Dieser wurde dann noch einmal als S/MIME (Secure MIME) erweitert.

 

Das Problem:

Eine e-Mail wird vom Absender an einen Server überreicht. Dieser Postausgangsserver übergibt die e-Mail über mehrere Computer an den Posteingangsserver des Empfängers. Dort kann der Empfänger sie lesen oder mit einem e-Mailprogramm (Outlook, Thunderbird, Apple Mail) abholen. Die e-Mail ist auf ihrer Reise durchs Netz vergleichbar mit einer herkömmlichen Postkarte. Jeder Knotenpunkt (Server) kann die Mail öffnen und lesen, ja sogar verändern. Die möglichen Szenarien kann sich jeder selber ausdenken. Viren und Trojaner werden an Mails angehangen. Vertrauliche Informationen werden ausgelesen und verbreitet. 

 

Die Lösung:

Wenn man die virtuelle Postkarte in einen versiegelten Briefumschlag steckt, erkennt der Empfänger sofort die Manipulation bzw. der "Internetbriefträger" kann die Postkarte nicht mehr lesen.

Wir könnten jetzt natürlich alle unsere Mails verschlüsseln, müssten aber jedem Empfänger ein eigenes Passwort zuweisen und dieses auf einem sicheren Weg übermitteln. Das ist jedoch unheimlich aufwändig und völlig praxisfern. Stattdessen nutzen wir das SSL System. Jetzt wird es leider ein wenig technisch...

 

SSL ganz kurz und schnell zusammengefasst:

Die SSL Verschlüsselung nutzt jeder von uns, wenn wir "HTTPS Seiten" besuchen (z.B. beim Onlinebanking, beim Amazoneinkauf etc. Stichwort: die grüne Adressleiste im Browser) Eine vertrauenswürdige Institution stellt dem Nutzer ein digitales Zertifikat aus. Diese Institution ist vertrauenswürdig weil unser Betriebssystem dieses Unternehmen kennt und ihm vertraut.

In diesem Zertifikat befinden sich ein öffentlicher und ein privater Schlüssel. Mit dem öffentlichen Schlüssel kann jeder beliebige Anwender seine Nachricht für den Nutzer verschlüsseln. Zum Entschlüsseln der Nachricht braucht man den privaten Schlüssel. Das Zertifikat wird bei jedem Empfang einer Mail bei der Institution überprüft. Wurde daran manipuliert erhält man eine Warnung. Das Zertifikat kann von der Institution (bei Missbrauch) oder vom Nutzer (bei Verlust oder Diebstahl des privaten Schlüssels) gesperrt werden.

Kleine aber wichtige Information am Rande. Das Schlüsselpaar wird nicht bei der Institution generiert oder gespeichert. Dies geschieht lokal auf Eurem Rechner. Nur ihr seid dafür verantwortlich die Schlüssel nicht zu verlieren.

Ich mag folgenden Vergleich sehr gerne: Der öffentliche Schlüssel funktioniert wie ein Vorhängeschloss. Man verteilt es an seine Freunde. Diese können das Schloss schließen. Zum Öffnen braucht man aber den passenden (privaten) Schlüssel. Diesen sollte man natürlich nicht verlieren oder aus der Hand geben.

 

Genug der Theorie:

Jetzt muss der Nutzer nur noch seinen öffentlichen Schlüssel (das Vorhängeschloss) an alle Empfänger in seinem Adressbuch schicken. Dies geschieht bei S/MIME vollautomatisch. An jede Mail wird der öffentliche Schlüssel angehangen. Dieser Schritt heißt bei S/MIME "signieren". 

Wenn der Empfänger auf diese e-Mail antwortet sendet er dem Nutzer auch seinen öffentlichen Schlüssel. Nun, da beide Kommunikationspartner ihre Schlüssel getauscht haben, wird der e-Mailverkehr zwischen den Beiden codiert und ohne den privaten Schlüssel sieht man nur noch kryptische Zeichenfolgen.

 

Ein Beispiel:

Marie und Peter beantragen bei der vertrauenswürdigen Institution ihrer Wahl (es muss nicht dieselbe sein) jeweils ein Zertifikat und binden es in ihr jeweiliges e-Mailprogramm ein. Marie sendet Peter eine signierte Mail. An diese Mail hängt das Programm automatisch Maries öffentlichen Schlüssel an. Wenn Peter diese Mail öffnet, wird Maries öffentlicher Schlüssel in seinem Mailprogramm eingebunden. Peter antwortet auf diese Mail und auf Maries Rechner wird auch Peters öffentlicher Schlüssel eingebunden. 

Die nächste Mail von Marie wird mit Peters öffentlichem Schlüssel verschlüsselt und kann nur noch mit Peters privatem Schlüssel geöffnet werden. Unerwünschte Mitleser sind nun ausgesperrt.

Zunächst muss man sich bei einer vertrauenswürdigen Institution ein entsprechendes Zertifikat besorgen. Ich habe nun schon mehrfach die "vertrauenswürdigen Institutionen" erwähnt. Es gibt tatsächlich Unternehmen, die ihr Geld damit verdienen SSL-Zertifikate zu verkaufen. Im Internet werden an vielen Stellen diese Zertifikate verwendet. Jedes Mal wenn ihr eine https:// Seite aufruft (beim Shoppen, Onlinebanking, etc.) steckt dahinter ein SSL-Zertifikat einer vertrauenswürdigen Institution. Diese Unternehmen gelten als vertrauenswürdig, weil Euer Betriebsystem bzw. der Hersteller des Systems den Zertifikaten dieser Unternehmen vertraut. Der Preis eines Zertifikats orientiert sich immer an den Sicherheitsanforderungen die an das Zertifikat gestellt werden.

Die gute Nachricht: Für S/MIME benötigen wir das einfachste aller Zertifikate und dieses ist bei vielen Anbietern kostenlos!

Beim Zertifikatsanbieter registriert man sich mit der e-Mailadresse für die man ein SSL-Zertifikat haben möchte. Man erhält daraufhin eine Mail mit einem Link. Mit diesem Link überprüft der Anbieter ob man tatsächlich Inhaber dieser Adresse ist bzw. ob die Adresse real existiert. Danach kann man das Zertifikat runterladen. Es gilt im Normalfall ein Jahr lang und verfällt dann automatisch. Wie es nach dem Verfall des Zertifikats weitergeht, werde ich berichten.

Update:

Ich habe eine Hinweisemail erhalten und konnte mir einfach ein neues Zertifikat erstellen. Das alte Zertifikat wurde nicht verlängert. Wichtig! Das alte Zertifikat müsst ihr behalten, wenn ihr noch alte, verschlüsselte Mails habt. Ansonsten lassen sich diese nicht mehr öffnen.

Diese beiden Anbieter habe ich ausprobiert:

Es gibt natürlich noch andere Anbieter. Die Wahl des Unternehmens bleibt Euch überlassen. Es gibt keine Kompatibilitätsprobleme.

Bei Comodo erhält man beim Download des Zertifikats eine Datei namens "CollectCCC.p7s". Mag sein, dass diese Datei bei Euch auch sofort ausgeführt wird. Ich habe diese Funktion in meinem Browser deaktiviert und muss sie manuell starten.

Unter Mac OS X öffnet sich die "Schlüsselbundverwaltung" und ich finde im Bereich "Meine Zertifikate" ein gültiges Zertifikat mit der angegebenen e-Mailadresse.

In Apple Mail sind nun keine weiteren Einstellungen mehr nötig. Wenn man eine neue e-Mail schreiben möchte, sieht man auf der rechten Seite diese beiden Symbole (hier in den Zuständen deaktiviert/signieren/verschlüsseln):

 

Links ist das Symbol für die Verschlüsselung und rechts das Symbol für die Signatur. Den Button für die Verschlüsselung kann man nicht manuell aktivieren. Sobald für den Empfänger einer e-Mail ein Zertifikat (öffentlicher Schlüssel) vorliegt aktiviert sich die Verschlüsselung automatisch. 

Der rechte Button aktiviert die Signatur der Mail. Wenn eine Mail signiert wird, wird der Mail der öffentliche Schlüssel und eine Prüfsumme des Inhaltes angehangen. Anhand der Prüfsumme werden Manipulationen der Mail erkannt. 

Ich habe die Signatur immer aktiviert, auch wenn der Empfänger von S/MIME noch nie etwas gehört hat. Vielleicht wecke ich ja Interesse.

Thunderbird benutzt nicht die Mac OS X Schlüsselbundverwaltung sondern benutzt einen eigenen Zertifikatsspeicher. Deshalb muss dort erst das Zertifikat importiert werden. Leider kann man nicht die P7S Datei vom Download benutzen. Zunächst muss das Zertifikat aus der Schlüsselbundverwaltung exportiert werden.

Unter "Programme" > "Dienstprogramme" findet Ihr die "Schlüsselbundverwaltung". Im Bereich "Meine Zertifikate" das Zertifikat für die e-Mailadresse auswählen und mit einem Rechtsklick auf exportieren.

Jetzt einen Speicherplatz auswählen und einen Dateinamen eingeben. 

Nun muss für das Zertifikat ein Kennwort vergeben werden, damit bei einem Entwenden der Datei kein Unbefugter Euren privaten Schlüssel importieren kann.

Als Nächstes erwartet die Schlüsselbundverwaltung noch Euer OS X Benutzerpasswort und nun wird die Zertifikatsdatei angelegt.

Bei Thunderbird muss das Zertifikat manuell eingebunden werden. Dies geschieht unter "Extras" > "Kontoeinstellungen". Im e-Mailaccount auf "S/MIME Sicherheit" gehen, dann öffnet sich dieses Fenster

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zunächst unten links auf "Zertifikate verwalten", dann auf "Importieren" klicken. Nun das vorhin exportierte Zertifikat auswählen und das Zertifikatspasswort eingeben.

Im Bereich "Digitale Unterschrift" das Zertifikat auswählen. Thunderbird fragt ob dasselbe Zertifikat auch zur Verschlüsselung genutzt werden soll. Ja, das soll es.

Wenn jede Mail signiert werden soll, den Haken bei "Nachrichten digital unterschreiben (als Standard)" setzen.

Im Bereich "Verschlüsselung" kann man sich noch entscheiden ob die Verschlüsselung von Mails deaktiviert oder notwendig ist. Bei deaktivierter Verschlüsselung muss man sie manuell für jede Mail aktivieren, wenn man ein Zertifikat des Empfängers besitzt. Das finde ich völlig unpraktikabel. Die Einstellungsoption "Notwendig" ist für mich persönlich genauso unsinnig. Sie verhindert den unverschlüsselten Mailversand. Eine automatische Verschlüsselung wie bei Apple Mail ist mit Boardmitteln von Thunderbird nicht möglich. Dafür gibt es aber ein Add-on.

Wir stellen also die Verschlüsselung auf "Nie" und installieren das Add-On "Encrypt if possible". Sobald für die Empfänger einer e-Mail ein Zertifikat vorliegt wird sie automatisch verschlüsselt.

Unter Windows ist es auch nicht viel schwieriger. Nachdem man das Zertifikat beantragt hat, klickt man auf der Website des Anbieters auf "Installieren". das Zertifikat (und die beiden Schlüssel) werden nun im Zertifikatsspeicher Eures Browsers (in meinem Fall Firefox) abgelegt.

In den "Einstellungen" > "Erweitert" gibt es den Reiter "Zertifikate"

 

 

 

 

 

 

 

 

 

 

Mit einem Klick auf "Zertifikate anzeigen" kommt man in den Zertifikatmanager. Dort findet Ihr im Reiter "Ihre Zertifikate" das neue S/MIME Schlüsselpaar.

Nun muss das Zertifikat exportiert werden. Anwählen und dann auf "Sichern" klicken. Jetzt wählt man den Speicherort und den Dateinamen für die Zertifikatsdatei. Danach darf man diese Datei wieder mit einem Passwort schützen.

 

Jetzt muss das Zertifikat in Thunderbird eingebunden werden. Diese Schritte sind in der Mac und der Windows Version identisch.