Wie helfen Lavalampen bei der Internetverschlüsselung?

Cloudflare macht aus Fotos von 100 Lavalampen zufällige Daten, die bei der SSL-Verschlüsselung verwendet werden.

Share facebook icon linkedin icon twitter icon email icon

Lavalampen-Verschlüsselung

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Erfahren, warum man für Verschlüsselungsschlüssel Zufallsdaten braucht
  • Erklären, warum Computer selbst keinen Zufall erzeugen können
  • Nachvollziehen, wie ein Computer aus zufälligen Eingabewerten zufällige Ausgabewerte generiert
  • Lernen, was ein kryptografischer Seed ist
  • Herausfinden, wie Lavalampen die Zufallsdaten für einen kryptografischen Seed erzeugen

Warum benutzt Cloudflare Lavalampen für Verschlüsselung?

Zufallswerte sind für sichere Verschlüsselung von höchster Bedeutung. Jeder neue Schlüssel, den ein Computer zum Verschlüsseln von Daten verwendet, muss wirklich zufällig sein, damit ein Angreifer den Schlüssel nicht ausknobeln und die Daten entschlüsseln kann. Computer sind jedoch darauf ausgelegt, aus einer Eingabe vorhersagbare logische Ausgaben zu machen. Sie sind nicht dafür vorgesehen, die zufälligen Werte zu erzeugen, die man für unvorhersehbare Verschlüsselungsschlüssel braucht.

Um die unvorhersehbaren, chaotischen Daten für starke Verschlüsselung zu erzeugen, braucht ein Computer eine Quelle von Zufallsdaten. Die „wirkliche Welt“ hat sich als hervorragende Quelle für Zufallswerte erwiesen, denn Ereignisse in der physischen Welt sind unvorhersehbar.

Wie man sich vorstellen kann, verhalten sich Lavalampen immer zufällig. Die „Lava“ in einer Lavalampe nimmt niemals zweimal dieselbe Form an. Deshalb ist die Beobachtung einer Gruppe von Lavalampen eine hervorragende Quelle für zufällige Daten.

Cloudflare Lava Lamp Wall

Um diese Daten zu sammeln, hat Cloudflare an einer Wand in der Lobby des Cloudflare-Hauptquartiers etwa 100 Lavalampen aufgestellt und eine Kamera auf die Lampen gerichtet. Die Kamera macht in regelmäßigen Abständen Fotos von den Lampen und überträgt die Bilder an Cloudflare-Server. Digitalbilder werden von Computern tatsächlich als Zahlenfolgen gespeichert. Jeder Bildpunkt hat einen Zahlenwert. Daher wird aus jedem Bild eine Folge völlig zufälliger Zahlen. Mit dieser Zahlenfolge können Cloudflare-Server dann sichere Verschlüsselungsschlüssel erzeugen.

Mithilfe von Lavalampen kann Cloudflare seinen Kunden also extrem starke (und ausreichend zufällige) SSL/TLS-Verschlüsselung bieten. Angesichts von über 25 Millionen Internetwebsites, die Cloudflare nutzen, ist das besonders wichtig.

Was bedeutet „zufällig“ im Sinne der Kryptographie?

In der Kryptographie bedeutet „zufällig“ nicht nur „statistisch zufällig“, sondern auch „unvorhersehbar“. Angenommen, jemand würfelt zwei Dutzend Mal mit einem einzelnen sechsseitigen Würfel und bekommt folgende Ergebnisse:

1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6

Statistisch gesehen ist diese Verteilung der Würfelwurfergebnisse zufällig. Für jede Zahl ist Wahrscheinlichkeit, gewürfelt zu werden, gleich hoch. Diese Zahlenfolge liegt also im Bereich des Möglichen.

Diese Folge ist aber nicht unvorhersehbar. Würde man diese Serie zur Verschlüsselung verwenden, so könnte ein Angreifer das Muster herausbekommen.

Warum ist echte Unvorhersehbarkeit für Verschlüsselung so wichtig?

Verschlüsselte Daten sollten aussehen wie völlig zufällige Daten, denn vorhersehbare Daten könnten erraten werden. Wenn sie ein Muster haben, wenn beispielsweise bestimmte Werte häufiger für die Verschlüsselung verwendet werden als andere oder wenn Werte immer wieder in einer bestimmten Reihenfolge auftauchen, kann man das Muster mit mathematischen Analysen erkennen. Ein Angreifer könnte den für die Verschlüsselung verwendeten Schlüssel dann viel leichter erraten. Wenn verschlüsselte Daten vorhersehbar sind, sind sie so gut wie kompromittiert.

Der Verschlüsselungsvorgang selbst ist vorhersehbar: Verschlüsselte Daten plus der richtige Schlüssel ergeben entschlüsselte Daten, und diese entschlüsselten Daten sind dieselben wie vor der Verschlüsselung. Die verwendeten Verschlüsselungsschlüssel müssen jedoch unvorhersehbar sein.

Damit Sie verstehen können, warum Unvorhersehbarkeit so wichtig ist, stellen Sie sich zwei Pokerspieler vor: Bob setzt immer, wenn er gute Karten hat, und passt (geht mit den Einsätzen anderer Spieler nicht mit), wenn er schlechte Karten hat. Alice hingegen mischt die Strategie für ihre Einsätze so, dass kein Muster erkennbar ist: Manchmal setzt sie, wenn sie gute Karten hat, manchmal begnügt sie sich damit, mit den Einsätzen anderer Spieler mitzugehen, und manchmal blufft sie sogar, macht also einen großen Einsatz, wenn sie schlechte Karten hat. Wenn Alice und Bob im gleichen Pokerturnier mitspielen, wird Alice viel weiter kommen als Bob, weil Bob zu vorhersehbar ist. Die Gegner merken schnell, wann Bob gute Karten hat, und reagieren entsprechend. Obwohl sie seine Karten nicht sehen können, können sie sein Blatt ungefähr einschätzen.

Ähnlich ist es bei verschlüsselten Inhalten. Auch wenn Angreifer die „Karten“, also die verschlüsselten Inhalte, die in einem Netzwerk übertragen werden, nicht sehen können, können sie sie erraten, wenn die Methode zur Verschleierung des Inhalts zu vorhersehbar ist.

Warum können Computer keine Zufallswerte erzeugen?

Computer arbeiten logisch. Ein Computerprogramm basiert auf Wenn-Dann-Anweisungen: Wenn bestimmte Bedingungen erfüllt sind, dann führe die angegebene Aktion aus. Bei einem Programm führt die gleiche Eingabe jedes Mal zur gleichen Ausgabe.

Das ist auch so beabsichtigt. Eine Eingabe sollte zu einer erwarteten Ausgabe führen, nicht zu einer unerwarteten. Stellen Sie sich das Chaos vor, wenn ein Drucker zufälligen Text drucken würde anstelle des Dokumenttexts, der an den Drucker gesendet wurde, oder wenn Smartphones eine andere Telefonnummer anrufen würden als die vom Benutzer eingegebene. Computer sind nur aufgrund ihrer (relativen) Zuverlässigkeit und Vorhersagbarkeit nützlich. Bei der Erzeugung sicherer Verschlüsselungsschlüssel ist diese Vorhersagbarkeit jedoch ein Nachteil.

Mit einigen Computerprogrammen kann man Zufall gut simulieren, für die Erzeugung von Verschlüsselungsschlüsseln jedoch nicht gut genug.

Wie kann man einem Computer zufällige Eingabewerte aus der richtigen Welt verschaffen, um zufällige Daten zu generieren?

Ein Softwareprogramm, das man als Pseudozufallszahlengenerator (PRNG) bezeichnet, kann aus einer unvorhersehbaren Eingabe unvorhersehbare Ausgaben generieren. Mit einem zufälligen Eingabewert kann ein PRNG theoretisch beliebig viele zufällige Ausgabewerte erzeugen.

Ein solcher Algorithmus heißt „pseudozufällig“ und nicht „zufällig“, weil die Ausgabewerte nicht wirklich völlig zufällig sind. Warum ist das so? Dafür gibt es zwei Hauptgründe:

  1. Wenn man zweimal hintereinander denselben Startwert (Seed) benutzt, liefert ein PRNG genau die gleichen Ergebnisse.
  2. Es ist schwer zu beweisen, ob die generierten Ergebnisse die ganze Zeit über völlig zufällig sind (wenn der PRNG unendlich lange weiterläuft).

Grund Nr. 2 führt dazu, dass der Algorithmus ständig neue zufällige Eingaben benötigt. Eine solche zufällige Eingabe bezeichnet man als „kryptografischen Seed“ (Startwert).

Was ist ein kryptografisch sicherer Pseudozufallszahlengenerator?

Ein kryptografisch sicherer Pseudozufallszahlengenerator (CSPRNG) ist ein PRNG, der strengere Standards erfüllt und deshalb für kryptografische Zwecke sicherer ist. Ein CSPRNG erfüllt zwei Anforderungen, die PRNGs möglicherweise nicht unbedingt erfüllen:

  1. Er muss bestimmte statistische Zufälligkeitstests bestehen, um die Unvorhersehbarkeit zu beweisen.
  2. Es muss für einen Angreifer unmöglich sein, die Ausgabewerte des CSPRNG vorherzusagen, selbst wenn er teilweise Zugriff auf das Programm hat.

Wie ein PRNG benötigt ein CSPRNG zufällige Daten (den kryptografischen Seed) als Startwert für die Erzeugung weiterer Zufallsdaten.

Zur Erzeugung von Verschlüsselungsschlüsseln für die SSL/TLS-Verschlüsselung verwendet Cloudflare einen CSPRNG, bei dem die von den Lavalampen gesammelten Daten Bestandteil des kryptografischen Seeds sind.

Was ist ein kryptografischer Seed?

Ein kryptografischer Seed ist ein Datenwert, den ein CSPRNG als Ausgangswert für die Erzeugung von Zufallsdaten nutzt. Obwohl ein CSPRNG theoretisch aus einem einzelnen kryptografischen Seed unendlich viele Zufallsausgaben erzeugen könnte, ist es weitaus sicherer, den kryptografischen Seed regelmäßig zu erneuern. Ein Angreifer könnte den anfänglichen kryptografischen Seed kompromittieren – und wie Sie wissen, erzeugt ein CSPRNG mit demselben Startwert wieder genau dieselben Ausgabewerte. Der Angreifer könnte die zufälligen Ausgabewerte also duplizieren. Außerdem kann selbst bei einem gründlich getesteten CSPRNG nicht garantiert werden, dass es beliebig lange unvorhersehbare Ergebnisse liefert.

Mit den Lavalampen steht Cloudflare ständig eine Quelle für neue kryptografische Seed-Daten zur Verfügung. Jedes Bild von den Lampen ist anders, womit es zu einer anderen zufälligen Zahlenfolge führt, die als Startwert verwendet werden kann.

Sind die Lavalampen die einzige Quelle für den kryptografischen Seed?

Viele Betriebssysteme haben eigene Quellen für Zufallsdaten, die als kryptografische Seeds verwendet werden können, z. B. Benutzeraktionen (Mausbewegungen, Eingabe auf einer Tastatur usw.), obwohl diese Daten relativ langsam abgerufen werden. Cloudflare mischt die Zufallsdaten von den Lavalampen mit Daten, die auf zwei verschiedenen Computern vom Linux-Betriebssystem erzeugt wurden. Dadurch kann die Entropie beim Erstellen kryptografischer Seeds für die SSL/TLS-Verschlüsselung maximiert werden.

Was ist Entropie?

Im Allgemeinen bedeutet „Entropie“ Unordnung oder Chaos. Aber in der Kryptografie hat Entropie eine spezifische Bedeutung: Unvorhersehbarkeit. Kryptografen können tatsächlich die Anzahl der Entropiebits und damit die Entropie eines bestimmten Datensatzes messen. Deshalb wird die Wand mit den Lavalampen bei Cloudflare auch als „Wand der Entropie“ bezeichnet.

Was passiert, wenn sich jemand vor die Lavalampen stellt?

Da sich die Lavalampenwand in der viel besuchten Lobby der Cloudflare-Zentrale befindet, geschieht dies ständig. Leute betreten und verlassen die Lobby, gehen vorbei oder bleiben stehen und unterhalten sich vor den Lampen. Solche Hindernisse werden zum Bestandteil der zufälligen Kamerabilder. Personen, die der Kamera teilweise die Sicht auf die Lavalampen verdecken, tragen also tatsächlich zur Entropie bei.

Was passiert, wenn jemand die Kamera ausschaltet oder beschädigt?

Für solche Fälle hat Cloudflare noch zwei weitere Quellen für Zufallsdaten aus dem Linux-Betriebssystem auf Cloudflare-Servern. Darüber hinaus ist die Kamera für Cloudflare leicht physisch zugänglich, denn sie befindet sich in einem Raum, der Cloudflare gehört. Cloudflare kann sie also bei Bedarf schnell wieder einschalten oder austauschen.

Gibt es so eine Lavalampenwand in jeder Cloudflare-Niederlassung?

Die beiden anderen Cloudflare-Hauptbüros befinden sich in London und Singapur. Jedes Büro hat seine eigene Methode zur Erzeugung von Zufallsdaten aus Eingabewerten aus der wirklichen Welt. Im Londoner Büro wird ein Doppelpendelsystem fotografiert (ein Pendel, das an einem Pendel hängt und dessen Bewegungen mathematisch unvorhersehbar sind). Im Büro in Singapur wird der radioaktive Zerfall eines Urankügelchens gemessen (eine so geringe Menge, dass sie harmlos ist).

Ist Cloudflare das erste Unternehmen, das Lavalampen zur Verschlüsselung verwendet?

Erstaunlicherweise nicht. Ein Unternehmen namens Silicon Graphics hat 1996 ein ähnliches System namens „Lavarand“ entwickelt, dessen Patent inzwischen allerdings abgelaufen ist.

Mehr über die Lavalampenwand bei Cloudflare können Sie in diesen beiden Blogbeiträgen nachlesen:

Auf dieser Seite können Sie erfahren, wie man die kostenlose SSL-Verschlüsselung von Cloudflare einsetzt.