Zufall: woher die Schlüssel kommen
Denk an eine Zahl zwischen 1 und 10. Nicht laut, nur im Kopf. Du hast an 7 gedacht. Oder sonst an 3. Fast niemand nimmt 1 oder 10, und 7 kommt viel häufiger als das eine Mal von zehn, das du erwarten würdest. Menschen sind schlecht im Zufall, und das ist lustig. Computer sind es auch, und das ist es nicht: jedes Schloss im Rest dieser Seite hängt an einer einzigen Zahl, die niemand erraten können darf.
Wörter, die du gleich brauchst
- Schlüssel
- Die geheime Zahl, mit der du gleich Nachrichten abschließt. Zum ersten Mal benutzt du einen in Kapitel 5. Hier geht es nur um die Frage, woher diese Zahl kommt.
- Zufall
- Etwas, hinter dem keine Regel steckt. Würfle, und keine Rechnung der Welt bringt dich zum nächsten Wurf. Genau das willst du von einem Schlüssel.
- Pseudozufall
- Zufall, der nur so aussieht. Eine Formel spuckt Zahlen aus, die wild durcheinanderspringen, aber wer die Formel kennt, kennt sie alle im Voraus. „Pseudo“ ist Griechisch für „falsch“.
- Saat
- Die Zahl, mit der so eine Formel anfängt. Alles Weitere steht von dem Moment an fest. Gleiche Saat, gleiche Folge. Immer.
- Entropie
- Ein Maß dafür, wie viel es wirklich zu raten gibt, gezählt in Bit. Ein Münzwurf ist 1 Bit. Acht Münzwürfe sind 8 Bit, also 256 Möglichkeiten. Je mehr Bit, desto aussichtsloser wird Raten.
Eine Formel, die wie Zufall aussieht
So gut wie jede Programmiersprache hat einen Knopf, der „eine Zufallszahl“ verspricht. Meistens steckt dahinter etwas, das so aussieht:
nächste = (vorige × 1103515245 + 12345) mod 2147483648
Mehr ist es nicht. Nimm die vorige Zahl, multipliziere sie mit einer großen Zahl, zähl etwas dazu und behalte den Rest nach der Division durch 231. Die Ergebnisse springen in alle Richtungen und sehen ordentlich durchgemischt aus. Das sind sie auch, für ein Spiel oder eine Farbe auf dem Bildschirm.
Aber schau dir die Zeile noch einmal an. Da steht nichts drin, was du nicht weißt. Wer eine einzige Zahl aus der Folge sieht, setzt sie ein und hat die nächste.
Sag die nächste Zahl voraus
Alles passiert in deinem Browser. Es wird nichts an den Server geschickt.
- Klick auf Fünf Zahlen. Schau sie dir an und versuch selbst, die sechste zu finden. Das klappt nicht.
- Klick auf Sag die sechste voraus. Die Demo setzt die fünfte Zahl in die Formel ein und stellt ihre Vorhersage neben die echte Antwort.
- Klick auf Echter Zufall und dann wieder auf Sag die sechste voraus. Lies, was dann passiert.
Woher echter Zufall kommt
Ein Computer kann sich von allein nichts ausdenken. Was er kann, ist an
Dingen messen, die niemand nachspielt: wie viele Mikrosekunden zwischen zwei
deiner Tastenanschläge liegen, wie warm der Chip gerade ist, wann genau ein
Paket aus dem Netz ankommt. Das ist unordentliches, nicht wiederholbares
Rauschen. Das Betriebssystem häuft dieses Rauschen auf, rührt darin und gibt
dir Bytes daraus. Im Browser heißt dieser Hahn
crypto.getRandomValues(), und alles auf dieser Seite, was einen
Schlüssel erzeugt, benutzt ihn.
Der Unterschied zur Formel oben ist nicht, dass das eine besser gemischt wäre als das andere. Es ist, dass es beim Hahn keine Regel zum Einsetzen gibt.
Der Schlüssel aus der Uhr
Jetzt der Fehler, den Leute wirklich gemacht haben. Du willst einen Schlüssel, du hast eine Formel, und du brauchst eine Saat zum Anfangen. Was nimmst du? Etwas, das immer da und jedes Mal anders ist: die Uhr.
Das klingt vernünftig. Rechne mit. Ein Schlüssel von 128 Bit hat 340 282 366 920 938 463 463 374 607 431 768 211 456 Möglichkeiten. Kommt er aber aus der Uhr und weiß der Angreifer auf die Stunde genau, wann du ihn gemacht hast, bleiben 3600 Möglichkeiten übrig. Nicht 2128. Dreitausendsechshundert.
Knack einen Schlüssel aus der Uhr
Alles passiert in deinem Browser. Es wird nichts an den Server geschickt.
- Klick auf Schlüssel erzeugen. Die Demo wählt einen Moment aus der letzten Stunde und macht daraus 16 Bytes. Du siehst vier davon.
- Klick auf Such den Rest. Die Demo probiert jede Sekunde der letzten Stunde, bis die ersten vier Bytes passen.
- Schau, wie viele Versuche das gekostet hat, und vergleich das mit der 39-stelligen Zahl von oben.
Das ist zweimal wirklich passiert. 1995 säte Netscape, der Browser von damals, seine Schlüssel mit der Uhrzeit und der Nummer des laufenden Programms. Zwei Studenten in Berkeley, Ian Goldberg und David Wagner, brauchten weniger als eine Minute Rechenzeit. Und 2008 stellte sich heraus, dass zwei Jahre zuvor jemand aus der Debian-Fassung von OpenSSL die Zeile entfernt hatte, die das Rauschen zuführte. Übrig blieb die Nummer des Programms: 32 768 Möglichkeiten. Jeder Schlüssel, der in diesen zwei Jahren auf so einer Maschine entstand, musste weg. Die Mathematik war beide Male in Ordnung. Die Saat nicht.
Einen Schlüssel selbst würfeln
Für echten Zufall brauchst du keinen Computer. Ein Würfel tut es auch, und du kannst ausrechnen, wie oft du werfen musst. Jeder Wurf hat sechs Ausgänge, und sechs Möglichkeiten sind log2(6) = 2,585 Bit wert. Für 128 Bit brauchst du also 128 ÷ 2,585 ≈ 50 davon.
Fünfzig Würfe
Alles passiert in deinem Browser. Es wird nichts an den Server geschickt.
- Klick auf Würfeln und schau dem Zähler beim Sammeln zu.
- Klick ein paar Mal auf Zehnmal würfeln, bis du bei 128 Bit bist.
- Schau dir den Schlüssel an, der herauskommt. So einen hättest du wirklich mit einem Würfel auf Papier machen können, und in Kapitel 9.2 kommt er wieder vor.
Das ist nicht bloß eine Spielerei. Leute, die einen Schlüssel aufbewahren, an dem wirklich etwas hängt, würfeln ihn manchmal genau so, auf einem Rechner, der nie an einem Netz hing. Ein Würfel hat keinen Hersteller, dem du glauben musst.
Was du hier mitnimmst
| Woher die Zahl kommt | Gut für |
|---|---|
| Eine Formel mit einer Saat | Spiele, eine Playlist mischen, eine Farbe |
| Eine Formel, gesät mit der Uhr | nichts, woran ein Geheimnis hängt |
crypto.getRandomValues() | Schlüssel, Passwörter, alles auf dieser Seite |
| Ein Würfel, fünfzigmal | Schlüssel, und du musst niemandem glauben |
Ab dem nächsten Kapitel benutzen wir Schlüssel, und dann geht es darum, wie stark sie sind: 128 Bit, 256 Bit, Zahlen mit Dutzenden Stellen. Behalte dieses Kapitel im Hinterkopf. So eine Zahl ist genau so stark wie der Zufall, aus dem sie stammt, und kein Bit stärker.
Das ist Mathematik: Informationstheorie
Die Bits, die du beim Würfeln hast zusammenkommen sehen, heißen Entropie, und du rechnest sie mit einem Logarithmus aus: eine Wahl zwischen n gleich wahrscheinlichen Möglichkeiten ist log2(n) Bit wert. Deshalb zählt ein Münzwurf 1 und ein Würfel 2,585. Claude Shannon schrieb diese Formel 1948 auf, in einem einzigen Aufsatz, der das ganze Fach Informationstheorie eröffnete. Er dachte sie sich nicht für Geheimschrift aus, sondern für Telefonleitungen: wie viel kann man durch einen Draht drücken, bevor das Rauschen gewinnt? Ein Jahr später zeigte er, dass dasselbe Maß genau angibt, wann eine Verschlüsselung unknackbar ist. Dieses Ergebnis triffst du in Kapitel 9.2. Informationstheorie steckt heute in jedem Dateiformat, das packt, in jedem Foto, das du verschickst, und in der Frage, wie viel du eigentlich nicht weißt.