Aller au contenu principal

5.2.5 Key Generation (Génération de clés)

5.2.5 Key Generation (Génération de clés)

La clé privée est de 57 octets (456 bits, correspondant à b) de données aléatoires cryptographiquement sûres. Voir [RFC4086] pour une discussion sur l'aléa.

La clé publique de 57 octets est générée par les étapes suivantes :

  1. Hacher la clé privée de 57 octets avec SHAKE256(x, 114), en stockant le digest dans un tampon de 114 octets noté h. Seuls les 57 octets inférieurs sont utilisés pour générer la clé publique.

  2. Élaguer le tampon : les deux bits de poids faible du premier octet sont effacés, les huit bits du dernier octet sont effacés, et le bit de poids fort de l'avant-dernier octet est mis à 1.

  3. Interpréter le tampon comme l'entier little-endian, formant un scalaire secret s. Effectuer la multiplication scalaire à base fixe [s]B.

  4. La clé publique A est l'encodage du point [s]B. D'abord encoder la coordonnée y (dans l'intervalle 0 <= y < p) comme une chaîne little-endian de 57 octets. Le bit de poids fort du dernier octet est toujours zéro. Pour former l'encodage du point [s]B, copier le bit de poids faible de la coordonnée x dans le bit de poids fort du dernier octet. Le résultat est la clé publique.