CSPRNG
aus Wikipedia, der freien Enzyklopädie
Die Artikel Pseudozufall, CSPRNG, Zufallszahlengenerator und Arithmetischer Zufallszahlengenerator überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Die Diskussion über diese Überschneidungen findet hier statt. Bitte äußere dich dort, bevor du den Baustein entfernst. Thornard, Diskussion, 00:41, 25. Feb. 2007 (CET) |
Ein 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 der Schlüsselgenerierung
- einmal genutzten Zahlen Nonces
- One-Time-Pads
- salts
Die Qualitätsanfoderungen 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.
Im Idealfall wird die Erstellung solcher Zufallszahlen durch andere zufällige Informationsquellen gespeist, was ein zum Beispiel ein hardwarebasierender Zufallsgenerator sein kann, aber auch nicht vorhersehbare Zustände in bestimmten Prozessen des Systems. Theoretisch ist es natürlich so, dass die Zufälligkeit einer aus solchen Intitaldaten generierten Zufallszahl nicht höher sein kann als die Ausgangswerte. Jedoch ist es manchmal notwendig, größere Mengen von Zufallszahlen zu generieren als aus diesen Quellen zu beziehen sind, in diesem Fall bedient man sich eines CSPRNG.
Grundsätzlich sind für einen CSPRNG die selben 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. Sie müssen zum einen statistische Kriterien erfüllen und zu anderen robust gegen einen Angreifer sein, der ihre Funktionalität kennt.
[Bearbeiten] Aufbau eines CSPRNG
Einen CSPRNG kann man mit verschiedenen Blockchiffrealgorithmen aufbauen. Ein Weg wäre es zum Beispiel einen sicheren Algorithmus im Zählermodus zu betreiben und nichts damit zu verschlüsseln. Problematisch ist es nur, wenn die verwendeten Intialwerte in die Hände eines Angreifers geraten. In diesem Fall ist die Sicherheit gebrochen.
Ein anderer Weg ist, es mathematisch komplexe Probleme zum Generieren der Zufallszahlen zu verwenden. Hier bietet sich zum Beispiel die Faktorisierung von Ganzzahlen an. Dies ermöglicht einen hohen Grad an Sicherheit. Die Algorithmen sind jedoch auch sehr langsam.
Weiterhin gibt es noch einige Designs, die in keine Kategorie passen und spezielle Pseudozufallszahlen generieren. Ein Beispiel hierfür ist der ISAAC für den es zur Zeit keinen bekannten erfolgreichen Angriff gibt.
[Bearbeiten] Standards
Viele Designs von CSPRNGs wurden standardisiert und sind dokumentiert in:
- FIPS 186-2
- ANSI X9.17-1985 Appendix C
- ANSI X9.31-1998 Appendix A.2.4
- ANSI X9.62-1998 Annex A.4
[Bearbeiten] Weblinks
- Referenz für CSPRNG (englisch)