Wie Computer Zufallszahlen erzeugen
Computer generieren Zufallszahlen für alles, von Kryptographie über Videospiele und Glücksspiele. Es gibt zwei Kategorien von Zufallszahlen - „echte“ Zufallszahlen und Pseudozufallszahlen. Der Unterschied ist für die Sicherheit von Verschlüsselungssystemen wichtig.
Computer können echte Zufallszahlen generieren, indem sie einige externe Daten beobachten, beispielsweise Mausbewegungen oder Lüftergeräusche, die nicht vorhersehbar sind, und Daten daraus erstellen. Dies wird als Entropie bezeichnet. In anderen Fällen erzeugen sie mithilfe eines Algorithmus "Pseudozufallszahlen", sodass die Ergebnisse zufällig erscheinen, auch wenn dies nicht der Fall ist.
Dieses Thema ist in letzter Zeit kontroverser geworden. Viele fragen sich, ob der integrierte Zufallszahlengeneratorchip von Intel vertrauenswürdig ist. Um zu verstehen, warum es möglicherweise nicht vertrauenswürdig ist, müssen Sie verstehen, wie Zufallszahlen überhaupt erstellt werden und wofür sie verwendet werden.
Für welche Zufallszahlen werden verwendet
Zufallszahlen werden seit vielen tausend Jahren verwendet. Ob beim Münzwurf oder beim Würfeln, das Ziel ist es, das Endergebnis einer zufälligen Chance zu überlassen. Zufallszahlengeneratoren in einem Computer sind ähnlich - sie versuchen, ein unvorhersehbares, zufälliges Ergebnis zu erzielen.
Zufallszahlengeneratoren sind für viele verschiedene Zwecke nützlich. Abgesehen von offensichtlichen Anwendungen wie der Erzeugung von Zufallszahlen zum Zwecke des Glücksspiels oder der Erzeugung unvorhersehbarer Ergebnisse in einem Computerspiel, ist die Zufälligkeit für die Kryptographie wichtig.
Kryptographie erfordert Zahlen, die Angreifer nicht erraten können. Wir können nicht immer dieselben Zahlen verwenden. Wir möchten diese Zahlen auf eine unvorhersehbare Weise generieren, damit Angreifer sie nicht erraten können. Diese Zufallszahlen sind für eine sichere Verschlüsselung unerlässlich, unabhängig davon, ob Sie Ihre eigenen Dateien verschlüsseln oder nur eine HTTPS-Website im Internet verwenden.
Echte Zufallszahlen
Sie fragen sich vielleicht, wie ein Computer tatsächlich eine Zufallszahl erzeugen kann. Woher kommt diese "Zufälligkeit"? Wenn es sich nur um einen Computercode handelt, ist es nicht möglich, dass die vom Computer generierten Zahlen vorhersehbar sind?
Generell gruppieren wir die Zufallszahlen, die Computer generieren, in zwei Arten, je nachdem, wie sie generiert werden: „Echte“ Zufallszahlen und Pseudozufallszahlen.
Um eine „echte“ Zufallszahl zu erzeugen, misst der Computer ein physikalisches Phänomen, das außerhalb des Computers auftritt. Zum Beispiel könnte der Computer den radioaktiven Zerfall eines Atoms messen. Laut der Quantentheorie gibt es keine Möglichkeit, genau zu wissen, wann radioaktiver Zerfall eintritt, daher handelt es sich im Wesentlichen um "reine Zufälligkeit" aus dem Universum. Ein Angreifer könnte nicht vorhersagen, wann ein radioaktiver Zerfall eintreten würde, so dass er den Zufallswert nicht kennen würde.
Bei einem alltäglicheren Beispiel könnte der Computer auf atmosphärische Geräusche angewiesen sein oder einfach die genaue Zeit verwenden, zu der Sie die Tasten auf Ihrer Tastatur drücken, um unvorhersehbare Daten oder Entropie zu erzeugen. Ihr Computer könnte zum Beispiel feststellen, dass Sie eine Taste genau um 0.23423523 Sekunden nach 14.00 Uhr gedrückt haben. Wenn Sie sich genügend Zeit für diese Tastendrücke nehmen, haben Sie eine Entropiequelle, die Sie zum Erzeugen einer „echten“ Zufallszahl verwenden können Nummer. Sie sind keine vorhersagbare Maschine, daher kann ein Angreifer den genauen Zeitpunkt beim Drücken dieser Tasten nicht erraten. Das / dev / random-Gerät unter Linux, das Zufallszahlen generiert, "blockiert" und gibt kein Ergebnis zurück, bis es genug Entropie sammelt, um eine echte Zufallszahl zurückzugeben.
Pseudozufallszahlen
Pseudozufallszahlen sind eine Alternative zu „echten“ Zufallszahlen. Ein Computer kann einen Startwert und einen Algorithmus verwenden, um Zahlen zu generieren, die zufällig erscheinen, tatsächlich aber vorhersehbar sind. Der Computer erfasst keine zufälligen Daten aus der Umgebung.
Das ist nicht unbedingt eine schlechte Sache in jeder Situation. Wenn Sie beispielsweise ein Videospiel spielen, spielt es keine Rolle, ob die Ereignisse, die in diesem Spiel auftreten, von „echten“ Zufallszahlen oder Pseudozufallszahlen bestimmt werden. Wenn Sie hingegen Verschlüsselung verwenden, möchten Sie keine Pseudozufallszahlen verwenden, die ein Angreifer erraten könnte.
Angenommen, ein Angreifer kennt den Algorithmus und den Startwert, den ein Pseudozufallszahlengenerator verwendet. Nehmen wir an, ein Verschlüsselungsalgorithmus erhält von diesem Algorithmus eine Pseudozufallszahl, mit der er einen Verschlüsselungsschlüssel generiert, ohne zusätzliche Zufälligkeiten hinzuzufügen. Wenn ein Angreifer genug weiß, könnte er rückwärts arbeiten und die Pseudozufallszahl bestimmen, die der Verschlüsselungsalgorithmus in diesem Fall gewählt haben muss, wodurch die Verschlüsselung gebrochen wird.
Der NSA und Intels Hardware-Zufallszahlengenerator
Um den Entwicklern die Arbeit zu erleichtern und um sichere Zufallszahlen zu erzeugen, verfügen Intel-Chips über einen hardwarebasierten Zufallszahlengenerator, den sogenannten RdRand. Dieser Chip verwendet eine Entropiequelle auf dem Prozessor und liefert der Software Zufallszahlen, wenn die Software sie anfordert.
Das Problem hier ist, dass der Zufallszahlengenerator im Wesentlichen eine Blackbox ist und wir nicht wissen, was in ihm vorgeht. Wenn RdRand eine NSA-Hintertür enthielt, wäre die Regierung in der Lage, Verschlüsselungsschlüssel zu brechen, die nur mit den von diesem Zufallszahlengenerator gelieferten Daten erzeugt wurden.
Dies ist ein ernstes Anliegen. Im Dezember 2013 haben die Entwickler von FreeBSD die Unterstützung für die direkte Verwendung von RdRand als Zufallsquelle gestrichen, da sie nicht vertrauen konnten. [Quelle] Die Ausgabe des RdRand-Geräts würde in einen anderen Algorithmus eingespeist, der zusätzliche Entropie hinzufügt, um sicherzustellen, dass keine Hintertüren im Zufallszahlengenerator eine Rolle spielen. Linux hat bereits auf diese Weise funktioniert und die zufälligen Daten, die von RdRand kommen, weiter randomisiert, so dass es selbst bei einer Hintertür nicht vorhersehbar ist. [Quelle] In einer kürzlich veröffentlichten AMA ("Ask Me Anything") zu Reddit beantwortete Intel-Chef Brian Krzanich keine Fragen zu diesen Bedenken. [Quelle]
Natürlich ist dies wahrscheinlich nicht nur ein Problem mit Intel-Chips. Die Entwickler von FreeBSD riefen die Chips von Via ebenfalls mit Namen auf. Diese Kontroverse zeigt, warum das Erzeugen von Zufallszahlen, die wirklich zufällig und nicht vorhersehbar sind, so wichtig ist.
Um „echte“ Zufallszahlen zu erzeugen, sammeln Zufallszahlengeneratoren „Entropie“ oder scheinbar zufällige Daten aus der physischen Welt um sie herum. Für Zufallszahlen, die das nicht tun Ja wirklich müssen zufällig sein, sie können nur einen Algorithmus und einen Startwert verwenden.
Bildnachweis: rekre89 auf Flickr, Lisa Brewster auf Flickr, Ryan Somma auf Flickr, huangjiahui auf Flickr