Kryptographie 2: Asymmetrische Verschlüsselung bei E-Mails

Wenn einer einem eine E-Mail schreibt, kann so ziemlich jede Zwischenstation auf dem Weg vom Sender zum Empfänger mitlesen, was darin steht. Schlimmer noch, eventuell kann der sogar den Inhalt der Mail verändern. Deshalb dürfen wir Lehrer auch keine personenbezogenen Daten via E-Mail versenden, und deshalb ist E-Mail auch nicht als amtliches Kommunikationsmittel mit Behörden zugelassen.

Aus diesem Grund hat sich das Innenministerium schon vor einiger Zeit etwas einfallen lassen, das gerade beworben wird: Die De-Mail. Das ist eine Ergänzung zur herkömmlichen E-Mail, die unter anderem von der Telekom angeboten wird, und die das Innenministerium als Kommunikation akzeptieren will. Dabei wird die Kommunikation zwischen zwei zertifizierten De-Mail-Anbietern verschlüsselt. Zumindest standardmäßig wird die Nachricht aber vom Empfänger-Anbieter entschlüsselt und, uh, auf Schadsoftware untersucht, und dann wieder verschlüsselt weitergeleitet. Zwischendrin liegt die Nachricht also in entschlüsselter Form vor, und damit kann sie gelesen oder manipuliert werden. Das soll natürlich verboten sein, technisch bleibt es aber möglich. Zur Zeit gilt dieses Verfahren deshalb laut Gesetz als nicht sicher, weshalb laut Spiegel Online die Regierung das Gesetz ändern will. Auch weitere Kritikpunkte gibt es am De-Mail-Konzept.

Verschlüsselte E-Mails kann man aber bereits jetzt mit wenig Aufwand verschicken, ganz ohne zusätzliches De-Mail, ohne zusätzliche Kosten, und ganz ohne die Offenlegung der Nachricht auf dem Transport. Das geht zum Beispiel mit einem Plugin für Thunderbird, aber erst will ich erklären, wie das Verschlüsseln im Prinzip funktioniert.

1. Symmetrische Verschlüsselung

So kennt man das: Sender und Empfänger machen einen Schlüssel aus. Das kann ein komplizierter sein, mit Nachschlagen in einem Buch oder mit Schablonen, was man so aus Krimis kennt. Als Beispiel nehme ich hier einen ganz simplen, nämlich wieder die Verschiebung um 1 nach rechts: Aus „a“ wird „b“, aus „b“ wird „c“, aus „z“ wird „a“. So chiffrierte Nachrichten lassen sich leicht knacken, aber darum geht es hier erst einmal nicht. Der Empfänger entschlüsselt die Nachricht, indem er sie wieder in die Gegenrichtung verschiebt: Aus „b“ wird „a“, aus „c“ wird „b“, aus „a“ wird „z“.

Dieser Schlüssel besteht eigentlich aus zwei Teilen, der Verschiebung um 1 nach rechts, und der Verschiebung um 1 nach links. Mit dem einen verschlüsselt man, mit dem anderen entschlüsselt man. (Oder umgekehrt.) Wenn man den einen Teil kennt, kennt man automatisch auch den anderen Teil: Das heißt symmetrische Verschlüsselung. Man verschlüsselt den Nachrichtentext mit dem einen Schlüssel und entschlüsselt ihn dann mit dem symmetrischen Gegenstück:

krypto_schluessel2-text krypto_schluessel2-codierung krypto_schluessel2-decodierung
Der Klartext „text“. Dessen Verschlüsselung. Sieht dann so aus: „ufyu“. Der Originaltext ist geschickt verborgen. Wird in dieser Form übermittelt. Die Entschlüsselung der Verschlüsselung. Sieht dann wieder so aus: „text“.

Der Nachteil dieses symmetrischen Verfahrens: Der Sender muss den Schlüssel erst einmal auf sicherem Weg zum Empfänger bringen. Und dann muss dieser Schlüssel geheim gehalten werden. (Und außerdem darf der Schlüssel nicht so leicht zu knacken sein wie in meinem Beispiel, aber darum geht es hier nicht.)

2. Asymmetrische Verschlüsselung

Die wird zum Beispiel für E-Mail-Verschlüsselung benutzt. Als Benutzer lege ich mir für meine E-Mail-Adresse (etwa lehrerzimmer@herr-rau.de) ein Schlüsselpaar an, das ähnlich funktioniert wie oben:

krypto_schluessel3

Auch hier besteht der Schlüssel aus zwei Teilen. Der eine Teil ist öffentlich (public). Den veröffentliche ich auf meiner Webseite (etwa 0x78549FB2), sende ihn an öffentlich einsehbare Verzeichnisse, schicke ihn meinen Freunden. Der andere Teil des Schlüssel ist privat. Den veröffentliche ich nirgendwo, den kenne nur ich. Ganz wichtig: wer einen Teil des Schlüssels, insbesondere den öffentlichen, hat, kann von diesem aus nicht auf den anderen schließen. Das ist grundlegend anders als beim symmetrischen Verfahren, wo ja letztlich die beiden Teile des Schlüssels ziemlich ähnlich sind. Wie das geht, und wieso man den privaten Schlüssel nicht so leicht knackt, selbst wenn man Klartext, codierten Text und öffentlichen Schlüssel dazu hat, ist ein anderes Thema.

Wenn jetzt A eine Nachricht an B schicken will, und zwar so verschlüsselt, dass sie außer B niemand sonst lesen kann, dann geht das so:

krypto_verschluesselung
krypto_verschluesselung2

A verschlüsselt den Text mit dem öffentlichen Schlüssel des Empfängers. Das kann er, weil der Schlüssel öffentlich ist. Damit ist der Originaltext erst einmal verborgen. Das Paket schickt A dann an B. Der wendet seinen privaten Schlüssel darauf an und löst den Originaltext wieder heraus.

Allerdings könnte diese Mail immer noch von irgend jemandem geschickt worden sein, nicht unbedingt von A. Manchmal möchte man aber nicht nur den Inhalt verschlüsseln, sondern auch dem Empfänger versichern können, dass die Mail wirklich von der Adresse kommt, von der sie zu kommen vorgibt. Das geht ebenfalls mit dem Schlüsselpaar, nur eben andersherum:

krypto_authentifizierung
krypto_authentifizierung2

A verschlüsselt den Text mit seinem eigenen privaten Schlüssel. Das kann er, weil er den ja selber verwaltet. Das Paket schickt A dann an B. Der wendet den öffentlichen Schlüssel des Senders darauf kann (das kann er, weil der ja öffentlich ist) und entpackt so die Nachricht. Wenn die Mail nicht von A kam, hilft einem der ganze öffentliche Schlüssel von A nichts, der Paketinhalt wird nicht zu öffnen sein.

Man kann natürlich auch beides gleichzeitig tun, eine Mail signieren und ihren Inhalt verschlüsseln.

Der Vorteil dieses Vorgehens: (1) Das ganze Verfahren ist öffentlich und damit überprüfbar. (2) Ich kann jemandem eine Nachricht schicken, ohne dass der Empfänger erst auf einem zu findenden Weg einen Schlüssel von mir bekommen muss. (3) Der einzige, der etwas geheim halten muss, bin ich selber, nämlich meinen privaten Schlüssel.

Fußnote 1: Aus Effizienzgründen wird beim Signieren (zur Authentifizierung) häufig nicht die ganze Mail verschlüsselt, sondern nur deren Hashwert.
Fußnote 2: Aus Effizienzgründen wird beim Verschlüsseln oft die Nachricht mit einem herkömmlichen, spontan erzeugten symmetrischen Schlüssel verschlüsselt. Dieser wird dann asymmetrisch verschlüsselt und zusammen mit der symmetrisch verschlüsselten Nachricht verschickt, worauf der Empfänger den symmetrischen Schlüssel auspacken und anwenden kann.
Fußnote 3: Der private Schlüssel ist ebenso wie der dazu gehörende öffentliche Schlüssel eine Funktion. Wenn ich beide nacheinander auf einen Text anwende, und nur dann, kommt wieder der Text heraus, und zwar egal, in welcher Reihenfolge ich die Funktionen angewendet habe. Beim Verschlüsseln der Nachricht verschlüsselt man zuerst mit dem öffentlichen Schlüssel (des Empfängers) und entschlüsselt mit dem privaten Schlüssel; beim Authentifizieren der Nachricht verschlüsselt man zuerst mit dem privaten Schlüssel (des Senders) und entschlüsselt mit dem anderen.

Anwendung:

Wenn ich mir das Thunderbird-Add-on „Enigmail“ installiere, kann ich mir so ein Schlüsselpaar generieren lassen. Das Add-on benutzt seinerseits die Software GnuPG, die dem Verschlüsselungsstandard OpenPGP entspricht. Den privaten Schlüssel merkt sich Thunderbird, den öffentlichen verteilt es an bestimmte dafür zuständige Server.

Woher weiß man, dass sich hinter lehrerzimmer@herr-rau.de wirklich Herr Rau befindet? Damit hat diese Verschlüsselung erst mal nichts zu tun, obwohl es Zertifizierungsmöglichkeiten gibt. Woher weiß man, dass der öffentliche Schlüssel, den man in meinem Impressum herunterladen kann, nicht gehackt und ersetzt worden ist durch den öffentlichen Schlüssel eines Angreifers? Weiß man gar nicht. Aber das ist eine andere Geschichte. Wer sicher gehen will, ruft mich an fragt. :-)

Tagged: Tags

Schreibe einen Kommentar

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