Aller au contenu principal

3.3. Alternate Description (Description alternative)

3.3. Alternate Description (Description alternative)

Le processus décrit dans la section précédente est en fait dérivé du générateur de nombres pseudo-aléatoires "HMAC_DRBG", décrit dans [SP800-90A] et dans l'Annexe D de [X9.62]. En utilisant la terminologie de [SP800-90A], la génération de k peut être décrite comme suit:

a. Instancier HMAC_DRBG en utilisant HMAC, paramétré avec la même fonction de hachage H que celle utilisée pour traiter le message à signer. Les paramètres d'instanciation sont:

requested_instantiation_security_strength
Définir ce paramètre sur n'importe quelle valeur que l'implémentation HMAC_DRBG acceptera lorsque H est utilisée comme fonction de hachage de base.

prediction_resistance_flag
Définir ce paramètre sur "false".

personalization_string
Définir ce paramètre sur "Null" (la séquence de bits vide).

entropy_input
Utiliser int2octets(x) comme chaîne d'entropie.

nonce
Utiliser bits2octets(H(m)) comme nonce.

Notez que les deux derniers paramètres ne sont pas des paramètres de la fonction d'instanciation HMAC_DRBG elle-même; au contraire, ces valeurs sont demandées depuis la fonction interne Get_entropy_input pendant l'instanciation. Pour (EC)DSA déterministe, nous voulons que HMAC_DRBG fonctionne avec la chaîne d'entropie et le nonce que nous spécifions, sans accéder à une source d'entropie réelle.

b. Générer une valeur candidate pour k en demandant qlen bits à HMAC_DRBG et en convertissant les bits résultants en un entier à l'aide de la transformation bits2int. Répéter cette étape jusqu'à obtenir une valeur qui n'est pas nulle, inférieure à q et appropriée pour (EC)DSA (voir Section 3.4).

Notez que nous instancions une nouvelle instance HMAC_DRBG pour chaque processus de génération de signature. Il n'y a pas de "chaîne de personnalisation" ni d'"entrée supplémentaire" lors de la génération de bits. La fonction de réensemencement de HMAC_DRBG n'est jamais appelée, ni en externe ni en conséquence du traitement interne de HMAC_DRBG.

Comme indiqué ci-dessus, nous utilisons l'encodage de la clé privée comme "chaîne d'entropie" et le message haché (tronqué et étendu par bits2octets) comme "nonce". Dans HMAC_DRBG, la chaîne d'entropie et le nonce sont simplement concaténés dans la graine initiale; ainsi, la division entre "entropie" et "nonce" est assez arbitraire. L'utilisation de qlen bits pour chacun devrait être compatible avec la plupart des exigences d'entrée des implémentations HMAC_DRBG.