Kryptographie für Einsteiger

Angesichts des unfassbaren Ausmaßes der Überwachung und der Untätigkeit unserer Regierung macht sich eine gewisse Resignation breit. Nur technisch versierte Menschen seien in der Lage, Kryptosysteme zu benutzen und verstehen könne das sonst auch niemand.

Dem möchte ich entgegentreten. Ja, viele Kryptotools sind leider nicht besonders benutzerfreundlich, da gibt es sicher noch Nachholbedarf. Dem Thema der konkret verfügbaren Anwendungen möchte ich mich in einem weiteren Post widmen; an dieser Stelle möchte ich ausschließlich auf die zugrunde liegenden Konzepte eingehen. Dabei richtet sich dieser Beitrag an Menschen, die nicht aus dem Informatik-Umfeld kommen und ich möchte auch keine maximale mathematische Korrektheit erreichen sondern vielmehr anschaulich die Prinzipien erklären und auf die wichtigsten Begriffe eingehen.

Kryptographie

Unter dem Begriff der Kryptographie versteht man generell alles, was sich mit dem technischen Schutz von Nachrichten vor unbefugtem Lesen oder Verändern befasst. Im Detail möchte ich hier nur auf die Techniken zur Geheimhaltung von Botschaften eingehen.

Grundsätzlich werden zwei große (technisch sehr unterschiedliche) Prinzipien unterschieden: die symmetrische und die asymmetrische Kryptographie.

Symmetrische Kryptographie

Die symmetrische Kryptographie ist das deutlich älterer der beiden Verfahren. Im Kern basiert es darauf, dass der Absender und der Empfänger einer verschlüsselten Nachricht ein gemeinsames Geheimnis kennen, dass es ihnen ermöglicht, das Chiffrat (den verschlüsselten Text) zu erzeugen bzw. wieder lesbar zu machen. Man kennt das von klassischen Beispielen wie harmlosen Briefen, bei denen jedes fünfte Wort eine neue (die eigentliche) Botschaft ergibt. Das gemeinsame Geheimnis (also der Schlüssel) ist das Wissen, dass man jedes fünfte Wort verwenden muss und den Rest verwerfen kann.

Ein anderes Verfahren, das bereits Julius Cäsar verwendet haben soll, basiert darauf, dass alle Buchstaben einer Nachricht jeweils durch andere Buchstaben ersetzt werden. So könnten (wie im klassischen Beispiel) alle Buchstaben um 3 Stellen im Alfabet verschoben sein: Aus dem A wird ein D, aus dem B ein E, etc. Der geheime Schlüssel entspricht in diesem Fall der Anzahl an Stellen, um die die Buchstaben verschoben wurden.

In den modernen symmetrischen Verfahren werden anstelle der eigentlichen Buchstaben die Bits (also 1en und 0en) der Nachrichten verwendet. Grundsätzlich wird in Computern jede Nachricht und jede Datei intern in einer langen Folge von 1 und 0 abgebildet. Wenn der Computer dann die Information enthält, dass eine gewisse Kette aus 1 und 0 einen Text bilden sollen, werden die Bits nach einer bestimmten Vorschrift (man spricht von der „Zeichenkodierung“; Beispiele dafür wären ASCII oder Unicode) wieder in Buchstaben umgewandelt (ASCII: 1000001 = A, 1000010 = B, 1011010 = Z). Diese Vorschrift ist standardisiert und allen bekannt, damit Nachrichten auch auf unterschiedlichen Computern immer gleich aussehen. Von den Computern verarbeitet und zwischen ihnen übertragen werden alle Nachrichten immer im Binärformat, also als Folge von Bits, von 1 und 0.

Zur Verschlüsselung von langen Bitfolgen (den Nachrichten) werden eine ganze Reihe von Techniken angwendet. Basierend auf dem geheimen Schlüssel (den der Sender und der Empfänger kennen müssen) werden Bits vertauscht, in ihrem Wert geändert und ähnliches. Wichtig ist dabei, dass all diese Vorgänge bei Kenntnis des Schlüssels rückgängig gemacht und ohne Kenntnis des Schlüssels überhaupt nicht nachvollzogen werden können. Andernfalls könnte die Nachricht viel zu einfach geknackt werden. Die Kryptographie ist hier eine extrem mathematische Disziplin wenn man die Sicherheit eines solchen Verfahrens bewerten möchte. Daher sollte man dies am besten den Krypto-Experten überlassen und auf diejenigen Verfahren vertrauen, die seit Jahren als sicher eingestuft werden.

Wie die Nachrichten selbst, so sind auch die symmetrischen geheimen Schlüssel eine lange Bitfolge. Übliche Längen sind heute beispielsweise 128 oder 256 Bit. Je größer die Schlüssellänge eines verwendeten Systems ist, desto mehr unterschiedliche Schlüssel kann es geben. Ein Schlüssel der Länge 128 Bit besteht aus einer Folge aus 128 1en und 0en. An jeder Stelle kann entweder eine 1 oder eine 0 stehen; es gibt also je zwei unterschiedliche Möglichkeiten. Um die Gesamtzahl an unterschiedlichen Schlüssseln zu ermitteln, muss man nun für jede Stelle eine 2 multiplizieren: 2*2*2*2….*2. Bei 128 Stellen macht das genau 128 2er oder, mathematischer ausgedrückt eine Anzahl von 2 hoch 128 Möglichkeiten. Das sind 340282366920938463463374607431768211456 unterschiedliche Möglichkeiten! Bei einer Schlüssellänge von 256 Bit gibt es sogar 1157920892373161954235709850086879078532699846656405640394575840079 13129639936 unterschiedliche Schlüssel.

Diese unvorstellbar großen Zahlen sind in der heutigen Zeit jedoch notwendig, da die verfügbare Rechenleistung ständig zunimmt. Das Moorsche Gesetz geht davon aus, dass sich die Rechenleistung alle zwei Jahre verdoppelt. Der aktuell schnellste Supercomputer (Tianhe-2) kann beinahe 34000000000000000 Rechenschritte pro Sekunde (FLOPS) ausführen. Möchte man verhindern, dass die Nachricht von einem Computer einfach durch Ausprobieren geknackt wird, muss man also verdammt große Zahlen verwenden.

Dieser superschnelle Computer würde nach vorsichtigen Schätzungen etwa 400000000000000000 (400 Millionen Milliarden)  Jahre benötigen, um eine mit einem 128 Bit-Schlüssel verschlüsselte AES-Nachricht zu knacken (AES – Advanced Encryption Standard – ist das verbreitetste symmetrische Kryptoverfahren). Man kann also relativ unbesorgt sein, dass diese Nachrichten absolut sicher verschlüsselt sind. Nachrichtenmeldungen, dass irgendwelche Geheimdienste solche Verschlüsselungen mit Supercomputern knacken können, kann man für die nächsten Jahre getrost ignorieren).

Doch kein Mensch ist in der Lage, sich einen Schlüssel aus 128 Bits zu merken oder so einen Schlüssel tatsächlich zufällig zu erzeugen. Also verwendet man sehr oft ein Passwort, das ein Benutzer frei wählen und auch an seinen Kommunikationspartner weitergeben kann, um daraus dann einen 128-Bit-Schlüssel abzuleiten. Kennt man das Passwort, kennt man auch den Schlüssel. Das ist der Schwachpunkt in vielen Systemen, daher ist es notwendig, sehr gute Passwörter zu wählen, die nicht erraten werden können und auch nicht in Wörterbüchern stehen. Supercomputer, die so eine Verschlüsselung brechen sollen, setzen eher an dieser Stelle an: Sie probieren alle möglichen Passwörter, die man sich als Mensch merken kann, durch, da das viel weniger sind, als es mögliche Schlüssel gibt.

Leider hat dieses an sich tolle und sichere symmetrische Prinzip eine weitere ganz große Schwäche: Möchte eine Person A an eine andere Person B eine Nachricht schicken, müssen die beiden zuerst einmal auf einem sicheren Weg ein Geheimnis – einen symmetrischen Schlüssel – vereinbaren. Das ist total umständlich und überhaupt nicht praktikabel. Wie sollte sich Edward Snowden erst einmal mit Glenn Greenwald treffen und einen Schlüssel vereinbaren, bevor sie geheime Nachrichten austauschen können?

Um dieses Problem zu lösen, wurden die asymmetrischen Kryptoverfahren entwickelt.

Asymmetrische Kryptographie

Asymmetrische Kryptosysteme funktionieren fundamental anders als symmetrische. Am anschaulichsten lässt sich so ein System mit einer Art Briefkasten vergleichen, in den jeder etwas hineinwerfen kann aber nur der Eigentümer (der Empfänger der Nachrichten) kann ihn öffnen und die Botschaften entnehmen (lesen).

Technisch realisiert wird das durch mathematisch sehr komplexe Verfahren, über die ein sog. Schlüsselpaar erzeugt wird. Dieses Schlüsselpaar besteht aus einem privaten und einem öffentlichen Schlüssel. Den öffentlichen Schlüssel kann man (wie der Name schon nahelegt) einfach veröffentlichen und er darf jedem Menschen bekannt sein. Mit Hilfe dieses Schlüssels kann man Nachrichten ausschließlich verschlüsseln. Ist eine Nachricht einmal mit einem öffentlichen Schlüssel verschlüsselt, dann kann sie nur noch mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden. Dieser private Schlüssel muss also geheim gehalten und sicher aufbewahrt werden und darf niemals herausgegeben werden.

Der große Vorteil dieses Verfahrens ist, dass man vor der Kommunikation keine Geheimnisse austauschen muss. Man kann stattdessen einfach den öffentlichen Schlüssel auf einen Schlüsselserver, der wie eine Art Telefonbuch funktioniert, hochladen und damit jedermann zur Verfügung stellen. Möchte jemand eine geheime Nachricht an eine bestimmte Person verschicken, dann muss er nur in dem öffentlichen Verzeichnis nachschlagen und den dort hinterlegten öffentlichen Schlüssel dieser Person zur Verschlüsselung der Nachricht verwenden. Anschließend kann er sicher sein, dass nur der Empfänger in der Lage ist, die Nachricht wieder zu entschlüsseln.

Dadurch, dass die immer paarweise existierenden Schlüssel bestimmte Eigenschaften aufweisen müssen (sie müssen ja auf eine ganz bestimmte Art zusammenpassen), kann nicht jede beliebige Bitfolge als Schlüssel (wie bei symmetrischen Verfahren) verwendet werden. Die Schlüssellängen bei asymmetrischen Verfahren sind daher etwa um den Faktor 10 länger; möchte man eine vergleichbare Sicherheit haben wie symmetrische Schlüssel der Länge 128 Bit, dann verwendet man meist 1024 Bit bei asymmetrischen Systemen. Andere übliche Schlüssellängen sind heute 2048 und 4096 Bit. Auch diese müssen natürlich mit der Zeit immer größer werden um die steigenden Rechenleistung zu berücksichtigen.

Die größte Gefahr, die bei asymmetrischen Verfahren droht, besteht darin, versehentlich den falschen öffentlichen Schlüssel zur Verschlüsselung einer Nachricht zu verwenden. Da alle Schlüssel nur aus Bitfolgen bestehen, sieht man ihnen natürlich nicht ohne Weiteres an, wem sie gehören. Möchte jemand eine Nachricht, die von A zu B gesendet wird, mitlesen, dann kann er versuchen, A einen anderen öffentlichen Schlüssel als den von B unterzuschieben. Gelingt es ihm etwa, dass A seinen eigenen öffentlichen Schlüssel benutzt, so kann er die Nachricht natürlich entschlüsseln, da er natürlich auch über den entsprechenden privaten Schlüssel verfügen kann. Anschließend könnte er die Nachricht mit dem öffentlichen Schlüssel von B wieder verschlüsseln und an B schicken. A und B können in diesem Fall nicht bemerken, dass ihre Nachricht zwischendurch gelesen wurde. Man spricht hier von einem „Man-in-the-Middle-Angriff“.

Man muss also immer genau darauf achten, dass man auch tatsächlich den richtigen Schlüssel des Empfängers benutzt, wenn man eine verschlüsselte Nachricht schicken möchte. Um dies sicherzustellen gibt es einige Techniken, auf die ich jedoch an dieser Stelle nicht eingehen möchte.

Doch es gibt noch eine weitere Schwierigkeit bei der Verwendung von asymmetrischer Kryptographie: Da eine Nachricht gezielt für einen Empfänger mit dessen öffentlichen Schlüssel verschlüsselt wird, ist es unmöglich, eine Nachricht gleichzeitig an mehrere Personen zu schicken. Denn nur jeweils einer ist in Besitz des korrekten privaten Schlüssels, um die Nachricht wieder lesbar zu machen. Dies, und noch zwei Performance-Eigenschaften der asymmetrischen Verfahren führte zu der Konzeption von hybriden Kryptosystemen.

Hybride Kryptographie

Ein hybrides Kryptosystem ist ganz einfach eine Kombination von symmetrischen und asymmetrischen Verfahren. Der Sender einer Nachricht denkt sich einfach einen zufälligen symmetrischen Schlüssel aus (z.B. 128 Bit AES) und verschlüsselt die Nachicht damit. Diesen geheimen Schlüssel verschlüsselt er nun in einem zweiten Schritt mit dem öffentlichen asymmetrischen Schlüssel des Empfängers.

Die Nachricht ist nun symmetrisch verschlüsselt und kann nur bei Kenntnis des geheimen Schlüssels wieder entschlüsselt werden. Der geheime Schlüssel wiederum ist asymmetrisch für den Empfänger verschlüsselt und kann nur mit dessen privaten Schlüssel wiederhergestellt werden. Somit können nun beide Teile – die verschlüsselte Nachricht und der verschlüsselte Schlüssel – an den Empfänger gesandt werden.

Möchte man eine Nachricht an mehrere Empfänger schicken, so muss man den geheimen symmetrischen Schlüssel nur einfach für alle Empfänger je einmal mit dem entsprechenden öffentlichen Schlüssel verschlüsseln. Jeder der Empfänger kann also das für ihn bestimmte Chiffrat mit seinem privaten Schlüssel entschlüsseln und mit dem vorgefundenen geheimen symmetrischen Schlüssel anschließend die Nachricht. Die asymmetrischen Chiffrate, die den geheimen Schlüssel für die anderen Empfänger enthalten, bleiben verschlüsselt und können einfach verworfen werden.

Praktisch alle heute eingesetzten asymmetrischen Verfahren sind in Wahrheit hybride Systeme, da sie gegenüber rein asymmetrischen Verfahren keinerlei Nachteile, sondern nur Vorteile mit sich bringen. Welche benutzbaren Werkzeuge zur Erzeugung von verschlüsselten Nachrichten heute verfügbar sind, werde ich in einem weiteren Blogeintrag in der nächsten Zeit betrachten.

Schreibe einen Kommentar

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