EIN HELD DEN NIEMAND KENNT ABER ALLE NUTZEN

Wann warst du das letzte Mal bei deiner Bank, um deinen Kontostand zu überprüfen? Wenn es sich nicht zufällig ergeben hat und du unter 60 bist, ist das vermutlich eine Weile her. (Fast) Alle nutzen Onlinebanking.

Stell dir nun folgende Situation vor. Du stehst auf einem riesigen Platz voller Menschen. Du bist mitten drin. Es sind so viele Leute um dich herum, dass du Sie kaum zählen kannst. Eine Person von Ihnen ist deine Bank. Damit dir deine Bank deinen Kontostand verrät oder dich eine Überweisung tätigen lässt, musst du dich jetzt erst einmal authentifizieren. Du musst dein Passwort verraten. Du musst es laut genug rufen, damit deine Bank dich versteht. Aber wenn dich deine Bank versteht, dann verstehen dich auch alle anderen auf diesem Platz.

Auch wenn dies eine unrealistische Situation ist. So oder so ähnlich kann man es sich vorstellen, wenn du zu Hause die Webseite deiner Bank öffnest und dein Passwort eingibst. Dein Internetbrowser steht vor der Aufgabe, das Passwort laut genug in die Welt zu rufen, dass es bei deiner Bank ankommt, aber ohne dass es am Ende alle wissen.

In diesem Artikel geht es um eine Technik, die in unserem täglichen Leben essenziell geworden ist, ohne dass wir auch nur einen Hauch davon mitbekommen.

Wir alle wissen, dass unsere Daten verschlüsselt werden. Wie der Name schon vermuten lässt, benötigen wir für eine Verschlüsselung immer einen Schlüssel. Mit diesem können die zu übertragenen Daten sowohl ver- als auch entschlüsselt werden. Jedes Mal denselben Schlüssel zu nutzen ist wie im echten Leben, keine gute Idee. Deswegen wird bei jeder neuen verschlüsselten Übertragung im Internet auch ein neuer Schlüssel benutzt. Und hier ist bereits das Dilemma. Wenn wir jedes Mal einen neuen Schlüssel nutzen: Woher soll unser Gegenüber (in unserem Beispiel die Bank) wissen, welcher Schlüssel zum Entschlüsseln benötigt wird?

Um die eigentliche Verschlüsselung geht es hier also nicht. Es geht um eine Technik im Hintergrund, von der die meisten vermutlich noch nie gehört haben:

TLS – Die „Transport Layer Security“

Du nutzt TLS höchstwahrscheinlich Hunderte Male täglich. Alleine wenn du deinen Browser auf dem Handy öffnest, werden schon mehrere sogenannte TLS-Handshakes durchgeführt. Häufig wird TLS umgangssprachlich mit SSL verwechselt oder betitelt. TLS ist quasi die „bessere“ Weiterentwicklung und hat SSL größtenteils abgelöst. Die Aufgabe war aber die gleiche.

Übersetzt sorgt die Technik dafür, dass sich zwei Gegenüber, welche sich nur über einen unverschlüsselten Weg unterhalten können, auf einen gemeinsamen geheimen Schlüssel einigen können. Und das – wichtig – ohne dass jemand, der alles mithören kann, denn Schlüssel am Ende auch kennt.

Auf unser Beispiel bezogen: Du musst dich mit deiner Bank auf dem riesigen Platz voller Menschen auf einen Schlüssel einigen und das während alle, die vor Ort sind, euer Gespräch mithören können. Aber am Ende dürft nur Ihr zwei den echten Schlüssel kennen. Das ist ziemlich wichtig, da es unglaublich viele Möglichkeiten gibt, eine unverschlüsselte Internetverbindung mitzulesen. Wenn du in einem offenen WLAN im Café bist, kann theoretisch jede Person in deiner Umgebung alles mitlesen, was dein Smartphone oder Laptop unverschlüsselt sendet. Dafür muss die Person nicht einmal im gleichen WLAN sein. Dahinter kommt der Router. Wem auch immer der Router gehört, die Person kann mitlesen. Und hier hört es noch lange nicht auf. Wir sind ja noch gar nicht „richtig“ im Internet. Dahinter kommt der Provider des Internetanschlusses. Unverschlüsseltes Mitlesen? Kein Problem. Deine Daten werden nun über verschiedene Verbindungsknoten im Internet übertragen und alles, was auf diesem Weg liegt, erhält deine Daten und kann sie mitlesen. Bis zu deiner Bank ist es ein weiter Weg.

Hier kommt nun TLS ins Spiel. Ein geniales Verfahren, um einen geheimen Schlüssel über eine öffentliche, von potenziell allen einsehbare Verbindung auszutauschen. Sobald der TLS Vorgang abgeschlossen ist und die eigentlichen Daten gesendet werden, übernimmt ein anderes Verschlüsselungsverfahren, welches den eigentlichen Datenaustausch mithilfe des von TLS erzeugten Schlüssels übernimmt.

Warum?
Wenn wir etwas verschlüsseln möchten, ist es sehr schnell und sicher eine synchrone Verschlüsselungsmethode wie AES256 zu nutzen. Wenn AES256 richtig genutzt wird, gilt es mit der heutigen Technik als praktisch „unknackbar“. Es gibt 2256 mögliche Schlüssel. Das ist eine Zahl mit 72 Stellen:

Anzahl mögliche verschiedene Schlüssel:
115.792.089.237.316.195.423.570.985.008.687.907.853.
269.984.665.640.564.039.457.584.007.913.129.639.936

Es gibt mehr mögliche Schlüssel als Atome im gesamten Universum. Mit einem dieser möglichen Schlüssel werden die Daten verschlüsselt. Der Haken: Genau so schnell wie wir die Daten mit dem richtigen Schlüssel selbst entschlüsseln können, bekommt das auch jeder andere hin. Diesen also sicher zu erzeugen, dass niemand anderes außer uns und unserem gewünschten Verbindungspartner den Schlüssel kennt, übernimmt TLS.

An dieser Stelle schon mal ein provisorisches „Sorry“ an alle Mathematiker, die das hier lesen. Für euch eine kurze Triggerwarnung: Alles ist stark vereinfacht dargestellt, es werden Begriffe benutzt, die vermutlich keine Mathematiker*in sagen würde und es werden Teile des Verfahrens zum besseren Verständnis gekürzt oder weggelassen.

Zu Beginn erfolgt eine kurze Abstimmung unter den zwei Verbindungsteilnehmern. Man tauscht sich kurz über die jeweils unterstützten Verschlüsselungsarten und Versionen aus und einigt sich dann auf ein gemeinsam genutztes Verfahren.

In unserem Beispiel geht der Internetbrowser von deinem Smartphone zu dem Server deiner Bank und informiert diesen darüber, dass du eine verschlüsselte Verbindung aufbauen möchtest. Dabei sendet dein Gerät eine Liste mit unterstützten Verschlüsselungsmethoden mit. Dies ist wichtig, da TLS und Co. in unterschiedlichen Versionen existieren und natürlich beide Teilnehmer die gleiche Verschlüsselung unterstützen und nutzen müssen.
Der Server erhält diese Infos und entscheidet, welche Version für die Verbindung genutzt wird. Jetzt beginnt der eigentliche Part, bei dem der geheime gemeinsame Schlüssel erzeugt wird: 

Die Diffie-Hellman Methode.

Der Server entscheidet sich für zwei Zahlen und teilt diese deinem Smartphone mit.

Eine der beiden Zahlen ist eine Primzahl. Die zweite ist eine Zufallszahl. Beide werden unverschlüsselt an dein Smartphone übertragen, sodass der Server und dein Smartphone die gleichen Zahlen als Basis nutzen.

Beispiel

Primzahl: 13
Zufallszahl: 4

In echt werden hier viel größere Zahlen genutzt. Gerne auch mit mehreren hundert Stellen. Für unser Beispiel reichen aber die Kleinen.

Jetzt generiert jeder der beiden Verbindungsteilnehmer eine eigene Zufallszahl aus. Diese wird unter allen Umständen geheim gehalten und niemals übermittelt.

Geheime Zufallszahl Smartphone: 3
Geheime Zufallszahl deiner Bank: 5

Mit diesen Zahlen führen nun beide Teilnehmer die gleiche Berechnung durch und erzeugen damit einen sogenannten öffentlichen Schlüssel.

Die Rechenoperation ist eine Restwertberechnung (Modulo). Dafür wird zuerst die gemeinsame öffentliche Zufallszahl mit der jeweils eigenen geheimen Zufallszahl potenziert. Auf das Ergebnis wird der Restwert mit der öffentlichen Primzahl gebildet:

Smartphone rechnet: 63 mod 13 = 8
Bankserver rechnet: 65 mod 13 = 2

Die Ergebnisse (8 und 2) sind die jeweiligen öffentlichen Schlüssel. Dieser wird nun dem jeweils anderen Teilnehmer unverschlüsselt zugeschickt. Selbst wenn die unverschlüsselte Verbindung von einer fremden Person mitgelesen werden würde und diese Person das Ergebnis der beiden Rechnungen, die Primzahl und die öffentliche Zufallszahl mitlesen kann, so ist es für diese Person unmöglich, daraus eine der beiden geheimen Zufallszahlen zu errechnen. Es gibt unendlich mögliche Kombinationen aus Modulo Rechnungen, die die Zahlen 8 oder 2 ergeben.

Jetzt folgt ein letzter Schritt. Beide Teilnehmer führen die gleiche Rechnung erneut aus. Als Basiswert wird diesmal aber nicht die gemeinsame öffentliche Zahl genutzt, sondern das Ergebnis des jeweils anderen:

Smartphone rechnet: 23 mod 13 = 8
Bankserver rechnet: 85 mod 13 = 8

Beide Teilnehmer kommen dabei auf das gleiche Ergebnis: unser geheimer Schlüssel. Dadurch, dass nach der ersten Rechnung das Ergebnis ausgetauscht wurden, haben beide quasi die „selbe“ Rechnung ausgeführt, nur in getauschter Reihenfolge. Beide zuvor gewählten geheimen Zufallszahlen sind in beiden Endergebnissen gleich vertreten, wodurch das Ergebnis gleich ist.

In echt ist das etwas komplizierter. Ich habe mich zur besseren Veranschaulichung für das Beispiel mit Primzahlen entschieden. Mittlerweile wurde Diffie-Hellman von Elliptic Curve Diffie-Hellman Ephemeral abgelöst und wird ab TLS 1.3 quasi ausschließlich genutzt. Hier werden die Zufallszahlen durch endliche Kurven abgelöst (die Primzahl definiert die Feldgröße) und es wird ein gemeinsamer Punkt auf der Kurve berechnet, welcher am Ende den Schlüssel bildet.

Das hat den Vorteil, dass es noch sicherer ist und die Berechnung viel schneller funktioniert.

Das Ganze ist in echt viel komplexer und es sind einige weitere Schritte notwendig, um die Verbindung abzusichern.

Damit ist die Aufgabe für TLS abgeschlossen. Der Vorgang dauert oft nur einige Millisekunden (oft unter 50 ms). Sobald der Schlüssel fertig erstellt ist, übergibt TLS diesen an die Verschlüsselungstechnik, welche die eigentlichen Daten wie dein Onlinebankingpasswort verschlüsseln soll.


Beitrag veröffentlicht

in

,

von

Kommentare

Schreibe einen Kommentar

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