13Jul
Computer generieren Zufallszahlen für alles von Kryptographie über Videospiele bis hin zu Glücksspielen. Es gibt zwei Kategorien von Zufallszahlen - "echte" Zufallszahlen und Pseudozufallszahlen - und der Unterschied ist wichtig für die Sicherheit von Verschlüsselungssystemen.
Computer können echte Zufallszahlen generieren, indem sie externe Daten wie Mausbewegungen oder Lüftergeräusche beobachten, die nicht vorhersehbar sind, und daraus Daten erzeugen. Dies wird als Entropie bezeichnet. In anderen Fällen erzeugen sie "Pseudozufallszahlen", indem sie einen Algorithmus verwenden, so dass die Ergebnisse zufällig erscheinen, auch wenn dies nicht der Fall ist.
Dieses Thema ist in letzter Zeit umstrittener geworden. Viele Leute bezweifeln, dass Intels eingebauter Hardware-Zufallszahlengenerator-Chip vertrauenswürdig ist. Um zu verstehen, warum es nicht vertrauenswürdig ist, müssen Sie verstehen, wie Zufallszahlen überhaupt geniert werden und wofür sie verwendet werden.
Welche Zufallszahlen werden für
verwendet? Zufallszahlen werden seit vielen tausend Jahren verwendet. Ob es darum geht, eine Münze zu werfen oder einen Würfel zu werfen, das Ziel besteht darin, das Endergebnis einer zufälligen Chance zu überlassen. Zufallszahlengeneratoren in einem Computer sind ähnlich - sie sind ein Versuch, ein unvorhersehbares, zufälliges Ergebnis zu erzielen.
Zufallszahlengeneratoren sind für viele verschiedene Zwecke nützlich. Neben offensichtlichen Anwendungen wie dem Erzeugen von Zufallszahlen für Glücksspiele oder dem Erzeugen unvorhersehbarer Ergebnisse in einem Computerspiel ist die Zufälligkeit für die Kryptographie wichtig.
-Kryptographie erfordert Nummern, die Angreifer nicht erraten können. Wir können nicht immer und immer wieder dieselben Nummern verwenden. Wir wollen diese Zahlen auf eine unvorhersehbare Art und Weise erzeugen, damit Angreifer sie nicht erraten können. Diese Zufallszahlen sind für die sichere Verschlüsselung unerlässlich, unabhängig davon, ob Sie Ihre eigenen Dateien verschlüsseln oder einfach eine HTTPS -Website im Internet verwenden.
Wahre Zufallszahlen
Sie wundern sich vielleicht, wie ein Computer tatsächlich eine Zufallszahl erzeugen kann. Woher kommt diese "Zufälligkeit"?Wenn es nur ein Stück Computercode ist, ist es nicht möglich, dass die Zahlen, die der Computer generiert, vorhersehbar sind?
Im Allgemeinen gruppieren wir die Zufallszahlen, die von Computern generiert werden, in zwei Typen, je nachdem, wie sie generiert werden: "Wahre" Zufallszahlen und Pseudozufallszahlen.
Um eine "echte" Zufallszahl zu erzeugen, misst der Computer eine Art von physikalischem Phänomen, das außerhalb des Computers stattfindet. Zum Beispiel könnte der Computer den radioaktiven Zerfall eines Atoms messen. Nach der Quantentheorie gibt es keine Möglichkeit, sicher zu wissen, wann radioaktiver Zerfall auftreten wird, also ist dies im Wesentlichen "reine Zufälligkeit" aus dem Universum. Ein Angreifer würde nicht vorhersagen können, wann radioaktiver Zerfall auftreten würde, so dass er den Zufallswert nicht kennen würde.
Für ein alltägliches Beispiel könnte der Computer auf atmosphärisches Rauschen zurückgreifen oder einfach die genaue Zeit verwenden, in der Sie Tasten auf Ihrer Tastatur als Quelle für unvorhersehbare Daten oder Entropie drücken. Beispielsweise könnte Ihr Computer bemerken, dass Sie nach genau 14:34:23:23 Sekunden nach 14:00 Uhr eine Taste gedrückt haben. Greifen Sie genügend Zeit für diese Tastenbetätigungen und Sie haben eine Quelle der Entropie, die Sie verwenden können, um eine "echte" Zufallszahl zu erzeugenNummer. Sie sind keine vorhersehbare Maschine, daher kann ein Angreifer den genauen Zeitpunkt nicht erraten, wenn Sie diese Tasten drücken. Das zufällige /dev/-Gerät unter Linux, das Zufallszahlen erzeugt, "blockiert" und gibt kein Ergebnis zurück, bis es genug Entropie gesammelt hat, um eine wirklich zufällige Zahl zurückzugeben.
Pseudozufallszahlen
Pseudozufallszahlen sind eine Alternative zu "echten" Zufallszahlen. Ein Computer könnte einen Startwert und einen Algorithmus verwenden, um Zahlen zu erzeugen, die zufällig erscheinen, aber tatsächlich vorhersagbar sind. Der Computer sammelt keine zufälligen Daten aus der Umgebung.
Dies ist nicht unbedingt eine schlechte Sache in jeder Situation. Wenn Sie beispielsweise ein Videospiel spielen, spielt es keine Rolle, ob die Ereignisse in diesem Spiel durch "echte" Zufallszahlen oder Pseudozufallszahlen verursacht werden. Auf der anderen Seite, wenn Sie Verschlüsselung verwenden, möchten Sie keine Pseudozufallszahlen verwenden, die ein Angreifer erraten könnte.
Nehmen wir an, ein Angreifer kennt den Algorithmus und den Startwert, den ein Pseudozufallszahlengenerator verwendet. Angenommen, ein Verschlüsselungsalgorithmus erhält eine Pseudozufallszahl aus diesem Algorithmus und generiert daraus einen Verschlüsselungsschlüssel, ohne zusätzliche Zufälligkeit 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 durchbrochen wird.
Der NSA und der Hardware-Zufallszahlengenerator von Intel
Um den Entwicklern die Entwicklung sicherer Zufallszahlen zu erleichtern, enthalten die Intel-Chips einen hardwarebasierten Zufallszahlengenerator namens RdRand. Dieser Chip verwendet eine Entropiequelle auf dem Prozessor und stellt der Software Zufallszahlen zur Verfügung, wenn die Software sie anfordert.
Das Problem hier ist, dass der Zufallszahlengenerator im Wesentlichen eine Blackbox ist und wir nicht wissen, was in ihm vor sich geht. Wenn RdRand eine NSA-Hintertür enthielt, wäre die Regierung in der Lage, Verschlüsselungsschlüssel zu knacken, die nur mit Daten erzeugt wurden, die von diesem Zufallszahlengenerator geliefert wurden.
Dies ist ein ernstes Problem. Im Dezember 2013 entfernten die FreeBSD-Entwickler die Unterstützung für die direkte Verwendung von RdRand als Quelle der Zufälligkeit und sagten, dass sie ihm nicht vertrauen könnten.[Quelle] Die Ausgabe des RdRand-Geräts würde in einen anderen Algorithmus eingespeist werden, der zusätzliche Entropie hinzufügt, wodurch sichergestellt wird, dass alle Hintertüren im Zufallszahlengenerator keine Rolle spielen. Linux arbeitete bereits auf diese Weise, indem es die zufälligen Daten, die von RdRand kamen, weiter zufallsgenerierte, so dass es selbst bei einer Hintertür nicht vorhersehbar wäre.[Quelle] In einer kürzlichen AMA( "Ask Me Anything") auf Reddit hat Intel CEO Brian Krzanich keine Fragen zu diesen Bedenken beantwortet.[Quelle]
Natürlich ist das wahrscheinlich nicht nur ein Problem mit Intel-Chips. Die Entwickler von FreeBSD haben Via's Chips auch namentlich genannt. Diese Kontroverse zeigt, warum das Erzeugen von Zufallszahlen, die wirklich zufällig und nicht vorhersagbar sind, so wichtig ist.
Um "echte" Zufallszahlen zu generieren, sammeln Zufallszahlengeneratoren "Entropie" oder scheinbar zufällige Daten aus der physischen Welt um sie herum. Für Zufallszahlen, die nicht wirklich müssen zufällig sein, können sie nur einen Algorithmus und einen Startwert verwenden.
Bildnachweis: rekre89 auf Flickr, Lisa Brewster auf Flickr, Ryan Somma auf Flickr, huangjiahui auf Flickr