7.2.3. DSS Pseudo-random Number Generation (DSS Pseudo-Zufallszahlengenerierung)
7.2.3. DSS Pseudo-random Number Generation (DSS Pseudo-Zufallszahlengenerierung)
Anhang 3 des NIST Digital Signature Standard [DSS] bietet eine Methode zur Erzeugung einer Sequenz von Pseudo-Zufalls-160-Bit-Größen zur Verwendung als private Schlüssel oder dergleichen. Dies wurde durch Change Notice 1 [DSS_CN1] modifiziert, um den folgenden Algorithmus zur Generierung von Allzweck-Pseudo-Zufallszahlen zu erzeugen:
t = 0x 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
XKEY = initial seed
0
For j = 0 to ...
XVAL = ( XKEY + optional user input ) (Mod 2^512)
j
X = G( t, XVAL )
j
XKEY = ( 1 + XKEY + X ) (Mod 2^512)
j+1 j j
Die so erzeugten Größen X sind die Pseudo-Zufallssequenz von 160-Bit-Werten. Zwei Funktionen können für "G" oben verwendet werden. Jede erzeugt einen 160-Bit-Wert und nimmt zwei Argumente, einen 160-Bit-Wert und einen 512-Bit-Wert.
Die erste basiert auf SHA-1 und funktioniert, indem die 5 Verknüpfungsvariablen, bezeichnet mit H mit Indizes in der SHA-1-Spezifikation, auf das erste Argument geteilt durch Fünftel gesetzt werden. Dann werden die Schritte (a) bis (e) von Abschnitt 7 der NIST SHA-1-Spezifikation über das zweite Argument ausgeführt, als ob es ein 512-Bit-Datenblock wäre. Die Werte der Verknüpfungsvariable nach diesen Schritten werden dann verkettet, um die Ausgabe von G zu erzeugen [SHA*].
Als alternative Methode definierte NIST auch eine alternative G-Funktion basierend auf mehrfachen Anwendungen der DES-Verschlüsselungsfunktion [DSS].