Aller au contenu principal

RFC 9380 - Hachage vers les courbes elliptiques

  • Statut: Informational
  • Publié: August 2023
  • Stream: IRTF
  • Errata: Pas d'errata

Résumé

Ce document spécifie un certain nombre d'algorithmes pour l'encodage ou le hachage d'une chaîne arbitraire vers un point sur une courbe elliptique. Ce document est un produit du Crypto Forum Research Group (CFRG) au sein de l'IRTF.

Statut de ce mémoire

Ce document n'est pas une spécification de la voie de normalisation Internet ; il est publié à titre informatif.

Ce document est un produit de l'Internet Research Task Force (IRTF). L'IRTF publie les résultats des activités de recherche et de développement liées à Internet. Ces résultats peuvent ne pas convenir au déploiement. Ce RFC représente le consensus du Crypto Forum Research Group de l'Internet Research Task Force (IRTF). Les documents approuvés pour publication par l'IRSG ne sont pas candidats à un niveau quelconque de norme Internet ; voir la section 2 du RFC 7841.

Des informations sur le statut actuel de ce document, les errata éventuels et la manière de fournir des commentaires à son sujet peuvent être obtenues à l'adresse https://www.rfc-editor.org/info/rfc9380.

Notice de droit d'auteur

Copyright (c) 2023 IETF Trust et les personnes identifiées comme auteurs du document. Tous droits réservés.

Ce document est soumis au BCP 78 et aux dispositions légales du IETF Trust relatives aux documents IETF (https://trustee.ietf.org/license-info) en vigueur à la date de publication de ce document. Veuillez examiner ces documents attentivement, car ils décrivent vos droits et restrictions concernant ce document.

Table des matières

  1. Introduction 1.1. Notation des exigences
  2. Contexte 2.1. Courbes elliptiques 2.2. Terminologie 2.2.1. Mappages 2.2.2. Encodages 2.2.3. Encodages à oracle aléatoire 2.2.4. Sérialisation 2.2.5. Séparation de domaine
  3. Encodage de chaînes d'octets vers des courbes elliptiques 3.1. Exigences de séparation de domaine
  4. Fonctions utilitaires 4.1. La fonction sgn0
  5. Hachage vers un corps fini 5.1. Considérations d'efficacité dans les corps d'extension 5.2. Implémentation de hash_to_field 5.3. expand_message 5.3.1. expand_message_xmd 5.3.2. expand_message_xof 5.3.3. Utilisation de DST plus longs que 255 octets 5.3.4. Définition d'autres variantes de expand_message
  6. Mappages déterministes 6.1. Choix d'une fonction de mappage 6.2. Interface 6.3. Notation 6.4. Signe du point résultant 6.5. Cas exceptionnels 6.6. Mappages pour les courbes de Weierstrass 6.6.1. Méthode Shallue-van de Woestijne 6.6.2. Méthode simplifiée Shallue-van de Woestijne-Ulas 6.6.3. SWU simplifié pour AB == 0 6.7. Mappages pour les courbes de Montgomery 6.7.1. Méthode Elligator 2 6.8. Mappages pour les courbes d'Edwards tordues 6.8.1. Cartes rationnelles de Montgomery vers Edwards tordues 6.8.2. Méthode Elligator 2
  7. Effacement du cofacteur
  8. Suites pour le hachage 8.1. Implémentation d'une suite de hachage vers courbe 8.2. Suites pour NIST P-256 8.3. Suites pour NIST P-384 8.4. Suites pour NIST P-521 8.5. Suites pour curve25519 et edwards25519 8.6. Suites pour curve448 et edwards448 8.7. Suites pour secp256k1 8.8. Suites pour BLS12-381 8.8.1. BLS12-381 G1 8.8.2. BLS12-381 G2 8.9. Définition d'une nouvelle suite de hachage vers courbe 8.10. Conventions de nommage des ID de suite
  9. Considérations IANA
  10. Considérations de sécurité 10.1. Propriétés des encodages 10.2. Hachage de mots de passe 10.3. Exigences de temps constant 10.4. encode_to_curve : Distribution de sortie et indifférenciabilité 10.5. Sécurité de hash_to_field 10.6. Sécurité de expand_message_xmd 10.7. Séparation de domaine pour les variantes de expand_message 10.8. Niveaux de sécurité cibles
  11. Références 11.1. Références normatives 11.2. Références informatives Annexe A. Travaux connexes Annexe B. Hachage vers ristretto255 Annexe C. Hachage vers decaf448 Annexe D. Cartes rationnelles D.1. Mappage générique de Montgomery vers Edwards tordu D.2. Mappage de Weierstrass vers Montgomery Annexe E. Cartes d'isogénie pour les suites E.1. Carte de 3-isogénie pour secp256k1 E.2. Carte de 11-isogénie pour BLS12-381 G1 E.3. Carte de 3-isogénie pour BLS12-381 G2 Annexe F. Implémentations en ligne droite des mappages déterministes F.1. Méthode Shallue-van de Woestijne F.2. Méthode SWU simplifiée F.2.1. Sous-programme sqrt_ratio F.3. Méthode Elligator 2 Annexe G. Code exemple optimisé spécifique à la courbe G.1. Interface et systèmes de coordonnées projectives G.2. Elligator 2 G.2.1. curve25519 (q = 5 (mod 8), K = 1) G.2.2. edwards25519 G.2.3. curve448 (q = 3 (mod 4), K = 1) G.2.4. edwards448 G.2.5. Courbes de Montgomery avec q = 3 (mod 4) G.2.6. Courbes de Montgomery avec q = 5 (mod 8) G.3. Effacement du cofacteur pour BLS12-381 G2 Annexe H. Scripts pour la génération de paramètres H.1. Recherche de Z pour la carte Shallue-van de Woestijne H.2. Recherche de Z pour SWU simplifié H.3. Recherche de Z pour Elligator 2 Annexe I. Fonctions sqrt et is_square I.1. sqrt pour q = 3 (mod 4) I.2. sqrt pour q = 5 (mod 8) I.3. sqrt pour q = 9 (mod 16) I.4. Algorithme Tonelli-Shanks à temps constant I.5. is_square pour F = GF(p^2) Annexe J. Vecteurs de test de suite J.1. NIST P-256 J.1.1. P256_XMD:SHA-256_SSWU_RO_ J.1.2. P256_XMD:SHA-256_SSWU_NU_ J.2. NIST P-384 J.2.1. P384_XMD:SHA-384_SSWU_RO_ J.2.2. P384_XMD:SHA-384_SSWU_NU_ J.3. NIST P-521 J.3.1. P521_XMD:SHA-512_SSWU_RO_ J.3.2. P521_XMD:SHA-512_SSWU_NU_ J.4. curve25519 J.4.1. curve25519_XMD:SHA-512_ELL2_RO_ J.4.2. curve25519_XMD:SHA-512_ELL2_NU_ J.5. edwards25519 J.5.1. edwards25519_XMD:SHA-512_ELL2_RO_ J.5.2. edwards25519_XMD:SHA-512_ELL2_NU_ J.6. curve448 J.6.1. curve448_XOF:SHAKE256_ELL2_RO_ J.6.2. curve448_XOF:SHAKE256_ELL2_NU_ J.7. edwards448 J.7.1. edwards448_XOF:SHAKE256_ELL2_RO_ J.7.2. edwards448_XOF:SHAKE256_ELL2_NU_ J.8. secp256k1 J.8.1. secp256k1_XMD:SHA-256_SSWU_RO_ J.8.2. secp256k1_XMD:SHA-256_SSWU_NU_ J.9. BLS12-381 G1 J.9.1. BLS12381G1_XMD:SHA-256_SSWU_RO_ J.9.2. BLS12381G1_XMD:SHA-256_SSWU_NU_ J.10. BLS12-381 G2 J.10.1. BLS12381G2_XMD:SHA-256_SSWU_RO_ J.10.2. BLS12381G2_XMD:SHA-256_SSWU_NU_ Annexe K. Vecteurs de test d'expansion K.1. expand_message_xmd(SHA-256) K.2. expand_message_xmd(SHA-256) (Long DST) K.3. expand_message_xmd(SHA-512) K.4. expand_message_xof(SHAKE128) K.5. expand_message_xof(SHAKE128) (Long DST)