Passa al contenuto principale

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].