Aller au contenu principal

7.2.3. DSS Pseudo-random Number Generation (Génération de nombres pseudo-aléatoires DSS)

7.2.3. DSS Pseudo-random Number Generation (Génération de nombres pseudo-aléatoires DSS)

L'Annexe 3 du NIST Digital Signature Standard [DSS] fournit une méthode de production d'une séquence de quantités pseudo-aléatoires de 160 bits pour une utilisation comme clés privées ou similaires. Cela a été modifié par Change Notice 1 [DSS_CN1] pour produire l'algorithme suivant pour générer des nombres pseudo-aléatoires à usage général:

     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

Les quantités X ainsi produites sont la séquence pseudo-aléatoire de valeurs de 160 bits. Deux fonctions peuvent être utilisées pour "G" ci-dessus. Chacune produit une valeur de 160 bits et prend deux arguments, une valeur de 160 bits et une valeur de 512 bits.

La première est basée sur SHA-1 et fonctionne en définissant les 5 variables de liaison, notées H avec des indices dans la spécification SHA-1, au premier argument divisé en cinquièmes. Ensuite, les étapes (a) à (e) de la section 7 de la spécification NIST SHA-1 sont exécutées sur le second argument comme s'il s'agissait d'un bloc de données de 512 bits. Les valeurs de la variable de liaison après ces étapes sont ensuite concaténées pour produire la sortie de G [SHA*].

Comme méthode alternative, NIST a également défini une fonction G alternative basée sur des applications multiples de la fonction de chiffrement DES [DSS].