Kryptographisch sicherer Zufallszahlengenerator

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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:

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, nur dass für die Sicherheit noch einige zusätzliche Bedingungen erfüllt sein müssen. Die von ihm erzeugte Zahlenfolge sollte für einen Beobachter nicht von einer echten Zufallszahlenfolge unterscheidbar sein. Außerdem soll es nicht möglich sein, anhand der Ausgabe des Generators auf seinen internen Zustand zu schließen, auch wenn die genaue Funktionsweise bekannt ist.

Nichtdeterministische CSRNG[Bearbeiten]

Im Idealfall wird die Erstellung von Zufallszahlen durch eine nichtdeterministische 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.

Deterministische CS(P)RNG[Bearbeiten]

In der Regel ist der Einsatz eines nichtdeterministischen Generators nicht möglich oder zu langsam. In diesem Fall greift man auf einen deterministischen, kryptologisch sicheren Pseudozufallszahlengenerator zurück. Kryptologisch sichere Pseudozufallszahlengeneratoren basieren entweder auf einem kryptographischen Primitiv wie einer Block- oder Stromverschlüsselung oder einer sicheren Hash-Funktion, oder auf mathematisch harten Problemen.

Auf kryptographischen Primitiven basierende Generatoren[Bearbeiten]

Eine Verschlüsselungs- oder Hash-Funktion kann im sog. Counter- oder Output-Feedback-Modus betrieben werden. Hierbei ist kritisch, dass es nicht möglich ist den Anfangszustand herauszufinden. Den internen Zustand des Generators zu ermitteln, ist dann gleichbedeutend damit, die Verschlüsselung selbst zu brechen.[1]

Die hierbei generierte Zahl ist kryptologisch sicher und pseudozufällig (soweit es auch die verwendete Funktion garantiert). Generatoren, die auf bewährten Funktionen, wie z. B. AES oder SHA-1, basieren, bestehen alle gängigen statistischen Tests auf Zufälligkeit.[2]

Auf zahlentheoretischen Problemen basierende Generatoren[Bearbeiten]

Die Sicherheit des Blum-Blum-Shub-Generators beruht auf der Annahme, dass die Faktorisierung von Ganzzahlen ein schwieriges Problem ist, das nicht in Polynomialzeit gelöst werden kann.

Tests auf Zufälligkeit[Bearbeiten]

Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.

FIPS 140[Bearbeiten]

In diesem Standard ist eine Test-Suite für CSPRNG aufgeführt. Dazu werden 20000 Ausgabebits verschiedenen statistischen Tests unterworfen:

Maurer’s Universal Test[Bearbeiten]

Die Idee hinter diesem Test ist, dass es nicht möglich sein sollte, eine Zufallszahlenfolge signifikant zu komprimieren.

Marsaglias Diehard Testsuite[Bearbeiten]

Umfangreiche Testsuite, u. a.:

Birthday Spacings Test (Geburtstagsabstände)
wählt zufällige Punkte auf einem Intervall. Diese sollten Poisson-verteilt sein. Das Prinzip des Tests ist verwandt dem Geburtstagsparadox.
Overlapping Permutations (überlappende Permutationen)
untersucht jeweils fünf aufeinanderfolgende (Integer-)Zahlen auf Gleichverteilung. Diese können 5!=120 verschiedene Anordnungen haben, die gleich wahrscheinlich sind.
Binary Rank Test (binärer Rangtest)
bildet aus den Bits der zu testenden Zahlenfolge zufällige Matrizen, berechnet deren Ränge. Darauf wird ein Chi-Quadrat-Test angewandt.
Bitstream Test (Bitfolgen-Test)
betrachtet die zu testende Zahlenfolge als Bitfolgen aus jeweils 20-Bit-„Worten“, die sich überlappen. Es gibt 221 sich überlappende 20-Bit-Worte und 220 mögliche 20-Bit-Worte. Der Test zählt die fehlenden 20-Bit-Worte. Diese sollten annähernd normalverteilt sein.
Count-The-1s Test (Zähle die Einsen)
untersucht Bytefolgen. Er zählt die „1“-Bits in den Bytefolgen und vergleicht die erhaltenen Werte mit den statistisch zu erwartenden Werten.
Parking Lot Test (Parkplatztest)
platziert zufällig Einheitskreise in ein 100x100-Quadrat. Die Anzahl der n=12000 „geparkten“ Kreise sollte einer Normalverteilung folgen.
Minimum Distance Test (Minimaler Abstand)
platziert n=8000 Punkte in ein 10000x10000-Punkte-Quadrat. Dann wird der kleinste Abstand zwischen den Punktepaaren bestimmt. Der Quadrat dieser Abstände sollte exponentialverteilt sein.
3D Spheres Test (3D-Kugel-Test)
platziert zufällig n=4000 Punkte in einen Würfel der Kantenlänge 1000. Danach wird um jeden Punkt eine Kugel mit dem Radius (Mittelpunkt, Punkt mit minimalem Abstand) gebildet. Das kleinste Kugelvolumen sollte einer Exponential-Verteilung folgen.
Runs Test
entnimmt n Kugeln aus einer Urne mit zwei verschiedenen Kugelsorten. Gleichfarbige nacheinanderfolgend gezogene Kugeln werden zu einem Zug („Run“) zusammengefasst. Die Anzahl der übriggebliebenen Züge soll der einer echten Zufallsziehung zur gegebenen Länge n entsprechen.
Craps Test
wendet eine Teststatistik auf 200000 Craps-Spiele an

Standards[Bearbeiten]

Viele Designs von CSPRNGs wurden standardisiert und sind dokumentiert in:

  • FIPS 186-2 (veraltet)[3]
  • ANSI X9.17-1985 Appendix C
  • ANSI X9.31-1998 Appendix A.2.4
  • ANSI X9.62-1998 Annex A.4

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. NIST 800-20 (PDF; 3,1 MB)
  2. Pierre L'Ecuyer, Richard Simard: TestU01 Paper
  3.  National Institute of Standards and Technology: Digital Signature Standard (DSS) (= Federal Information Processing Standards. Nr. 186-2). 2000, Appendix 3. Random Number Generation for the DSA (http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf (Version vom 18. Mai 2009 im Internet Archive)Vorlage:Webarchiv/Wartung/Linktext_fehlt).

Literatur[Bearbeiten]

  • Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone: Handbook of Applied Cryptography. CRC Press, Boca Raton FL u. a. 1997, ISBN 0-8493-8523-7 (CRC Press Series on Discrete Mathematics and its Applications), Kapitel 5.

Weblinks[Bearbeiten]