Eriks Blog

Meine Gedanken zu diesem und jenem …

Verschlüsselt endlich!

Warum verschlüsselt heute eigentlich niemand mehr? Als ich mit dem Internet anfing, war Verschlüsselung ein großes Thema und mit manchen Kontakten habe ich mir sogar verschlüsselt “Guten morgen!” gesagt. Und heute? Ich blicke auf meinen keyring und er ist erschreckend leer. Verschlüsselung scheint nur noch beim Internet-Shopping ein Thema zu sein. Dass Emails und andere Inhalte im Internet durchaus auch schützenswert wären, darauf kommt heute kaum noch jemand. Selbst Passwörter und Geschäftsgeheimnisse werden auf die Postkarte des Internets, die unverschlüsselte Email geschrieben. Dabei ist es heute doch so viel einfacher als damals. Und in Zeiten der Zensursula auch bei weitem notwendiger.

Verschlüsselung? Wie geht das?

Das Grundprinzip der Verschlüsselung ist ganz einfach. Wir haben einen geheimen Text (oder auch binären Inhalt; das ist vom Prinzip egal) und einen Schlüssel. Mit Hilfe des Schlüssels und einer Rechenvorschrift wird der geheime Text so verändert, dass er für jemanden ohne den passenden Schlüssel nicht mehr gelesen werden kann. Nehmen wir mal an, unser geheimer Text ist: “Das ist geheim”.

Das einfachste Verschlüsselungsverfahren ist ein Verfahren wie ROT13. ROT13 steht für rotate 13 und ist die einfache Vorschrift, jeden Buchstaben des Textes um 13 Stellen im Alphabet nach vorne zu verschieben. Kommt man beim Z an, so macht man beim A weiter. Aus unserem Text wird dann also “Qnf vfg trwrvz”. Das ist nicht auf Anhieb zu lesen. Ein kurzer neugieriger Blick reicht nicht mehr, um die Nachricht zu verstehen. Aber die Verschlüsselung ist nicht besonders gut. Jeder, der ein wenig Phantasie mitbringt, wird in relativ kurzer Zeit das Chiffrat entschlüsseln.

Also machen wir es dem Neugierigen ein wenig schwerer. Wir rotieren nicht jeden Buchstaben um 13, sondern erzeugen eine zufällige Zahlenfolge zwischen 1 und 25 und rotieren die Buchstaben um den jeweiligen Wert des Schlüssels. Die Zahlenfolge könnte z. B. 1, 5, 19, 6, 23 sein. Also rotieren wir folgendermaßen:

D a s   i s t   g e h e i m
1 5 19   6 23 1   5 19 6 23 1 5
E f l   o p u   l x n b j r

Das ist schon deutlich besser. Aber der Schlüssel ist recht kurz. Schon bei diesem kurzen Text mussten wir den Schlüssel mehr als zweimal wiederholen. Und auch unsere Rechenvorschrift ist noch zu einfach. Wir können das Verfahren also dadurch verbessern, dass wir einen längeren Schlüssel verwenden und die Rechenvorschrift z. B. so verändern: Beim ersten Zeichen wird addiert, beim zweiten Zeichen wird subtrahiert, beim dritten Zeichen wird multipliziert usw. Je mehr solcher Maßnahmen wir treffen, desto härter wird die Verschlüsselung.

Symetrische und asymetrische Verschlüsselung

Wir wissen nun, wie das Prinzip funktioniert. Also generieren wir einen zufälligen Schlüssel und geben ihn unserem Gesprächspartner. Wir verschlüsseln unsere Nachricht mit dem Schlüssel. Unser Gesprächspartner hat denselben Schlüssel und kennt die Rechenvorschrift und entschlüsselt das Chiffrat wieder. Das nennt man symetrische Verschlüsselung. Beide Seiten haben einen identischen Schlüssel mit dem sowohl ver- als auch entschlüsselt wird.

Der Vorteil ist, dass das, sofern gute Verfahren verwendet werden, sehr sicher ist. Ein gravierender Nachteil ist aber, dass ich für jeden Partner einen eigenen geheimen Schlüssel benötige. Viel einfacher wäre es, wenn ich für alle Partner denselben Schlüssel verwenden könnte. Aus diesem Gedanken heraus wurde die asymetrische Verschlüsselung erfunden.

Bei dieser Art der Verschlüsselung wird ein Schlüsselpaar erzeugt. Ein öffentlicher und ein privater Schlüssel. Der öffentliche Schlüssel dient nur zum Verschlüsseln. Der private Schlüssel dient nur zum Entschlüsseln. Der private Schlüssel ist durch ein Passwort vor nicht authorisierter Benutzung geschützt. Den öffentlichen Schlüssel kann jeder benutzen. Habe ich also den öffentlichen Schlüssel einer Person, so kann ich die Nachricht so verschlüsseln, dass nur diese Person sie entziffern kann. Dazu brauche ich die Person noch nicht einmal zu kennen. Ich kann mir den Schlüssel z. B. von einem Schlüsselserver herunterladen.

Heutige Verschlüsselungsverfahren arbeiten mit einer Mischung aus asymetrischer und symetrischer Verschlüsselung. Die eigentliche Nachricht wird symetrisch mit einem Sitzungsschlüssel verschlüsselt, der der Nachricht vorangestellt asymetrisch verschlüsselt wurde. Das erhöht die Sicherheit erheblich.

Wann ist die Verschlüsselung sicher?

Keine Verschlüsselung ist 100%ig sicher. Irgendwann kann jedes Chiffrat entschlüsselt werden. Die Frage ist nur wann. Bei ROT13 geht das recht schnell mit ein wenig Nachdenken. Je komplizierter ein Verfahren und je länger der Schlüssel ist, desto länger dauert es und desto mehr Chiffrat benötige ich, um Rückschlüsse auf den Schlüssel ziehen zu können. Also können wir ein Verfahren dann als sicher bezeichnen, wenn zum Zeitpunkt der Entschlüsselung die verschlüsselte Nachricht wertlos geworden ist. Wenn ein Verfahren so gut ist, dass es etwa 200 Jahre dauern würde, eine Email zu entschlüsseln, dann ist das sicher. Heutige Verfahren erreichen diese Sicherheit, sofern die Schlüssel komlipiziert genug sind.

Warum sind Verfahren mit Sitzungsschlüssel sicherer?

Wie gerade gesagt benötigt man umso mehr Chiffrat, je stärker eine Verschlüsselung ist, um den Schlüssel zu erraten. Der logische Schluss daraus ist, je weniger Text ich mit einem Schlüssel chiffriere, desto schwerer mache ich es einem Angreifer. Das Beste wäre also, dass ich einen Schlüssel nur einmal für einen Text benutze und dann wegwerfe. Das ist die Idee, die hinter dem Sitzungsschlüssel steckt.

Der Sitzungsschlüssel wird zu Beginn der Kommunikation erzeugt und dem Gegenüber mitgeteilt. Damit nun nicht jeder den Sitzungsschlüssel kennt, muss der natürlich auch verschlüsselt werden. Das geschieht mit Hilfe einer asymetrischen Verschlüsselung. Ist die Kommunikation abgeschlossen, dann wird der Sitzungsschlüssel ungültig.

Neben der kurzen Lebensdauer hat dieses Verfahren noch weitere Vorteile, die die Schlüssel sicherer machen. Der erste ist, dass das symetrische Schlüssel sehr lang und vollständig zufällig sein kann. Anders als bei Passwörtern muss sich diesen Schlüssel kein Mensch merken. Es kann also eine vollständig zufällige Zeichenkette aus 1.024, 2048 oder noch mehr Zeichen sein.

Ein weiterer Vorteil ist, das nur diese Zeichenkette mit dem öffentlichen Schlüssel verschlüsselt wird. Selbst wenn ich nun den öffentlichen Schlüssel und tausende verschlüsselte symetrische Schlüssel hätte, so könnte ich doch keine Rückschlüsse ziehen, da der verschlüsselte Text selbst keinerlei Sinn ergibt. Es ist eben nicht eine Zeichenkette wie “Das ist geheim” die Grundlage des Chiffrats, sondern eine wie “=ucrathespuFun #c2uxuxe? haquyUcacru dravachustes_z4 buch ayUgu?puTr”.

Verschlüsselung der Emails in der Praxis

Das klingt alles sehr kompliziert. Das ist es auch. Aber stört uns das? Nein. Heutige Software ist in der Bedienung so einfach geworden, dass nichts mehr dagegen spricht, die private Kommunikation auch privat zu führen. Mussten früher die Texte noch kompliziert über die Zwischenablage oder die Kommandozeile verschlüsselt werden, so kann heute jedes gute Emailprogramm mit Verschlüsselungssoftware umgehen. Ein kleiner Mausklick mehr und ab und an das Passwort eingeben, ist alles, was wir tun müssen.

Software

Wollen wir verschlüsseln, so brauchen wir als erstes eine geeignete Software. Diese Software sollte einige Voraussetzungen erfüllen. Die erste ist, dass sie nicht schwer zu beschaffen sein darf. Nicht, weil wir zu faul sind, gute Software zu suchen, sondern weil unsere Partner diese Software auch benötigen. Also sollte sie möglichst frei erhältlich sein.

Die Software sollte Open Source sein. Bei Sicherheitssoftware sollte man auf diesen Punkt auf jeden Fall achten. Wir wollen, dass unsere Nachrichten auch wirklich vor jedem unbefugten Zugriff geschützt sind. Kennen wir aber den Quellcode nicht, so können wir nicht sicher sein, dass in der Software keine Hintertür eingebaut ist. Nur wenn der Quellcode vollständig bekannt ist, können wir uns sicher sein, dass die Software nur das tut, was sie soll.

Die Software sollte einen hohen Verbreitungsgrad haben. Was nützt uns die beste Software, wenn kein anderer sie benutzt?

Für die Software sollte es Schlüsselserver geben, über die die öffentlichen Schlüssel verteilt werden können. Wir wollen ja nicht jedesmal nachfragen müssen, ob es einen Schlüssel gibt und wo wir ihn bekommen.

Es sollte ein Vertrauensmodell geben. Laden wir uns einen Schlüssel herunter, dann haben wir ein Problem. Ist der Schlüssel wirklich echt? Oder hat ihn jemand hochgeladen, der nur vorgibt, derjenige zu sein, mit dem wir sprechen wollen? Das Problem können wir nur lösen, indem wir jemanden hinzuziehen, den wir kennen und dem wir vertrauen.

Natürlich sollte die Software auch dem Stand der Technik entsprechen und moderne, ausgereifte Verfahren anwenden.

Eine Software, die all diese Voraussetzugen erfüllt ist GnuPG. GnuPG ist Teil des Projektes Pretty Good Privacy, übersetzt in etwa “ziemlich gute Privatsphäre”. Die Verfahren dieses Projektes sind allgemein als sicher anerkannt. Die Verbreitung ist relativ hoch.

Die Kette des Vertrauens

Das, was die Software wirklich interessant macht, ist ihr Vertrauensmodell. Andere Software setzt auf Zertifizierungsstellen, die meist gegen Gebühr Schlüssel unterzeichnen. GnuPG setzt auf die Benutzer selbst. Sie setzt darauf, dass die Benutzer eine Chain of Trust, eine Kette des Vertrauens bilden.

Fangen wir an mit Hans und Peter. Beide kennen sich persönlich und treffen sich öfter. Also können sie ihre Schlüssel direkt austauschen. Der vertrauenswürdige Dritte ist nicht notwendig. Also unterzeichnen beide den Schlüssel des jeweiligen anderen und laden die Schlüssel wieder auf den Server hoch. Auf dem Schlüssel von Peter steht jetzt also der Vermerk: “Hans vertraut diesem Schlüssel”.

Hans hat eine Freundin namens Claudia. Claudia hat auch den öffentlichen Schlüssel von Hans. Nun lädt sie sich den Schlüssel von Peter herunter. Sie sieht, dass Hans diesem Schlüssel voll vertraut. Weil sie nun aber Hans voll vertraut, unterzeichnet sie den Schlüssel wieder und lädt ihn wieder hoch. Nun steht auf dem Schlüssel auch “Claudia vertraut diesem Schlüssel.” Nun kann die Freundin Claudias Birte den Schlüssel herunterladen und ihm wieder vertrauen. Machen alle mit, so vertraut jeder jedem Schlüssel, da sich die Kette des Vertrauens bei genügend großer Menge immer schließt.

Wie soll das gehen? Es gibt so viele Menschen auf der Welt. Wie soll sich dann diese Kette immer schließen? Ganz einfach, die Wege sind kürzer als man denkt. Ein kurzer Ausflug in die Chaostheorie. Die Menschheit ist ein chaotisches Netz ebenso wie das Internet. Spricht man bei solchen Netzen vom Durchschnitt, so ist damit die durchschnittliche Anzahl an Netzknoten (Hops) gemeint, die durchlaufen werden müssen, um von einem beliebigen Punkt des Netzes zu einem anderen beliebigen Punkt zu gelangen. Irgendwo habe ich mal gelesen, dass der Durchschnitt der Menschheit sieben beträgt. Eine erstaunlich kleine Zahl. Das glaubst Du nicht. Wieviele Hops brauchst Du wohl von diesem Artikel zu z. B. dem Präsidenten der Vereinigten Staaten oder dem chinesischen Regierungschef? Es sind vier.

Der erste Hop ist der Artikel selbst bzw. sein Autor. Ich bin mit einer Kubanerin verheiratet, die das Vergnügen hatte, Fidel Castro persönlich kennenzulernen. Meine Frau wäre also der zweite Hop und Fidel Castro der dritte. Nun kennen sowohl Barack Obama als auch Wen Jiabao mit Sicherheit jemanden, der schon einmal Fidel Castro begegnet ist. Dieser Jemand wäre der vierte Hop. Die Welt ist klein. Wievielen Menschen begegne ich pro Jahr? Sicherlich einigen hundert Teilnehmern, dann noch die Kunden, Freunde, Bekannte … Wenn ich all denen meinen Schlüssel gegeben und ihre auch unterzeichnet hätte, wie lang wäre dann wohl meine Kette des Vertrauens?

Installieren und Schlüssel erzeugen

Screenshot von Kpgp unter KDE 3.5

Screenshot von Kpgp unter KDE 3.5

Die Software ist unter jedem gängigen Betriebssystem schnell istalliert. Sie kommt mittlerweile mit einer grafischen Oberfläche daher, die einem die ersten Schritte und die Verwaltung der Schlüssel erheblich vereinfacht. Hier z. B. die Oberfläche von Kpgp unter KDE 3.5. Während der Installation aber auch danach können Schlüsselpaare erzeugt werden, die an eine Emailadresse gebunden werden. Diese Schlüssel können dann auch unter zuhilfenahme der Software schnell auf einen Schlüsselserver übertragen werden. Auch das unterzeichnen fremder Schlüssel ist kein Problem und mit wenigen Klicks erledigt.

Emailprogramm einrichten

Kmail - Kryptografieeinstellungen

Kmail - Kryptografieeinstellungen

Nun muss nur noch dem Emailprogramm mitgeteilt werden, dass es die Verschlüsselungssoftware benutzen soll. Auch das ist in der Regel kein Problem. Im Bild ist die Einrichtung unter Kmail KDE 3.5 dargestellt. Zwei kurze Einträge beim Konto und noch einer, der dem Programm mitteilt, welche Software benutzt werden soll. Das war’s.

Jetzt muss nur noch die Kette des Vertrauens aufgebaut werden. Dann können wir endlich ohne Staat und Zertifizierungsstellen miteinander sicher und geschützt kommunizieren und Zensursula ärgert sich. Verschlüsselt endlich!

Liebe Grüße

Erik

Copyright © 2010 by: Eriks Blog • Template by: BlogPimp • Lizenz: Creative Commons BY-NC-SA.