7.2.3. DSS Pseudo-random Number Generation (Generazione di Numeri Pseudo-casuali DSS)
7.2.3. DSS Pseudo-random Number Generation (Generazione di Numeri Pseudo-casuali DSS)
L'Appendice 3 del NIST Digital Signature Standard [DSS] fornisce un metodo per produrre una sequenza di quantità pseudo-casuali a 160 bit da usare come chiavi private o simili. Questo è stato modificato da Change Notice 1 [DSS_CN1] per produrre il seguente algoritmo per generare numeri pseudo-casuali di scopo generale:
t = 0x 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
XKEY = seed iniziale
0
For j = 0 to ...
XVAL = ( XKEY + input utente opzionale ) (Mod 2^512)
j
X = G( t, XVAL )
j
XKEY = ( 1 + XKEY + X ) (Mod 2^512)
j+1 j j
Le quantità X così prodotte sono la sequenza pseudo-casuale di valori a 160 bit. Due funzioni possono essere usate per "G" sopra. Ciascuna produce un valore a 160 bit e prende due argomenti, un valore a 160 bit e un valore a 512 bit.
La prima è basata su SHA-1 e funziona impostando le 5 variabili di collegamento, denotate H con pedici nella specifica SHA-1, al primo argomento diviso in quinti. Quindi i passi (a) attraverso (e) della sezione 7 della specifica NIST SHA-1 vengono eseguiti sul secondo argomento come se fosse un blocco di dati a 512 bit. I valori della variabile di collegamento dopo quei passi vengono quindi concatenati per produrre l'output di G [SHA*].
Come metodo alternativo, NIST ha anche definito una funzione G alternativa basata su applicazioni multiple della funzione di cifratura DES [DSS].