Loading AI tools
ein für die Kryptologie geeigneter Generator für Pseudozufallszahlen. Aus Wikipedia, der freien Enzyklopädie
Ein kryptographisch sicherer Zufallszahlengenerator (auch kryptographisch geeigneter Zufallszahlengenerator, bzw. englisch cryptographically secure pseudo-random number generator (CSPRNG)) ist ein für die Kryptologie geeigneter Generator für Pseudozufallszahlen. Solche Zufallszahlen werden in vielen Bereichen der Kryptologie benötigt, wie zum Beispiel bei:
Die Qualitätsanforderungen für die Zufälligkeit solcher Zahlen sind sehr unterschiedlich. Für Nonces genügt es, die Einmaligkeit der Zahl im Zufallsexperiment zu garantieren; für die Erstellung eines Hauptschlüssels oder sogar eines One-Time-Pads sind die Anforderungen an die Zahl ungleich höher. So bleibt ein One-Time-Pad in der Theorie nur unknackbar, wenn er aus natürlichen Zufallszahlen erstellt wurde.
Grundsätzlich sind für einen CSPRNG dieselben Voraussetzungen wie für einen normalen Pseudozufallszahlengenerator vonnöten, allerdings müssen für die Sicherheit noch einige zusätzliche Bedingungen erfüllt sein. Zum einen darf die von ihm erzeugte Zahlenfolge nicht von einer echten Zufallszahlenfolge unterscheidbar sein. Zum anderen darf es nicht möglich sein, anhand der Ausgabe des Generators auf seinen internen Zustand zu schließen, auch wenn die genaue Funktionsweise bekannt ist.
Das BSI spezifiziert Anforderungen an Zufallszahlengeneratoren zur Verwendung in Projekten der Bundesregierung in der technischen Richtlinie BSI TR-03116 und teilt diese in Funktionsklassen ein.[1] Im Wesentlichen werden dort physikalische echte (Klassen PTG.2, PTG.3) und nicht-physikalische echte Zufallszahlengeneratoren (Klasse NTG.1) von deterministischen bzw. pseudo Zufallszahlengeneratoren (Klassen DRG.2, DRG.3) unterschieden. Jene in den Klassen PTG.3 und NTG.1 verarbeiten die gewonnene Entropie wiederum mit einem deterministischen Zufallszahlengenerator der Klasse DRG.3 und sind somit als hybride Zufallszahlengeneratoren anzusehen. Die ehemaligen Klassen PTG.1 und DRG.1 finden seit 2022 keine Beachtung mehr.
Im Idealfall wird die Erstellung von Zufallszahlen durch eine nicht deterministische Entropiequelle gespeist. Das kann zum Beispiel ein hardwarebasierter Zufallsgenerator sein oder auch ein hybrider Generator. Für kryptologische Anwendungen sollten nicht-deterministische Generatoren verwendet werden, denn nur bei diesen kann garantiert werden, dass sie nicht reproduzierbar oder vorhersagbar sind.
Eine Herausforderung bei virtualisierten Umgebungen ist die Verfügbarkeit von Entropiequellen, mit denen Zufallszahlen von ausreichender Qualität für kryptographische Anwendungen bereitgestellt werden können. Prinzipiell ist in virtualisierten Umgebungen eine Entropieversorgung mit denselben Methoden wie auf physischen Maschinen möglich, allerdings gibt es Qualitätsunterschiede je nach verwendeter Entropiequelle. Ein mögliches Problem ist die Qualität der Zufallszahlen kurz nach dem Systemstart.[2]
In der Regel ist der Einsatz eines nichtdeterministischen Generators nicht möglich oder zu ineffizient. Dessen Datenstrom wäre auch nicht wiederholbar, was je nach Anwendung erforderlich sein kann. Darum nutzt man häufig einen deterministischen, kryptologisch sicheren Pseudozufallszahlengenerator. Ein solcher basiert entweder auf einem kryptographischen Primitiv wie einer Block- oder Stromverschlüsselung oder einer sicheren Hash-Funktion, oder auf mathematisch schwierigen, also nach aktuellem Kenntnisstand nicht in realistischer Zeit lösbaren Problemen.
Ein kryptographisches Primitiv, also eine Verschlüsselungs- oder Hashfunktion, wird entweder im Counter- oder im Output-Feedback-Modus betrieben. Hierbei darf es nicht möglich sein, den Anfangszustand des Generators herauszufinden. Den internen Zustand des Generators zu ermitteln, ist dann gleichbedeutend damit, das zugrundeliegende Primitiv selbst zu brechen.[3]
Der hierbei generierte Datenstrom ist kryptologisch sicher und pseudozufällig (soweit es auch das verwendete Primitiv garantiert). Generatoren, die auf bewährten Funktionen, wie z. B. AES oder SHA-1 basieren, bestehen alle gängigen statistischen Tests auf Zufälligkeit.[4]
Die Sicherheit des Blum-Blum-Shub-Generators beruht auf der Annahme, dass die Primfaktorzerlegung von natürlichen Zahlen ein schwieriges Problem ist, das nicht in Polynomialzeit gelöst werden kann.
In diesem US-Standard ist eine Test-Suite für CSPRNG aufgeführt. Dazu werden 20000 Ausgabebits verschiedenen statistischen Tests unterworfen:
Die Idee hinter diesem Test ist, dass es nicht möglich sein sollte, eine Zufallszahlenfolge signifikant zu komprimieren.
Umfangreiche Testsuite, u. a.:
Viele Designs von CSPRNGs wurden standardisiert und sind dokumentiert in:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.