RFC 9380 - Hashing auf elliptische Kurven
- Status: Informational
- Veröffentlicht: August 2023
- Stream: IRTF
- Errata: Keine Errata
Zusammenfassung
Dieses Dokument spezifiziert eine Reihe von Algorithmen zur Kodierung oder zum Hashing einer beliebigen Zeichenfolge auf einen Punkt auf einer elliptischen Kurve. Dieses Dokument ist ein Produkt der Crypto Forum Research Group (CFRG) der IRTF.
Status dieses Memos
Dieses Dokument ist keine Spezifikation im Internet Standards Track; es wird zu Informationszwecken veröffentlicht.
Dieses Dokument ist ein Produkt der Internet Research Task Force (IRTF). Die IRTF veröffentlicht die Ergebnisse internetbezogener Forschungs- und Entwicklungsaktivitäten. Diese Ergebnisse sind möglicherweise nicht für den Einsatz geeignet. Dieser RFC repräsentiert den Konsens der Crypto Forum Research Group der Internet Research Task Force (IRTF). Dokumente, die von der IRSG zur Veröffentlichung genehmigt wurden, sind keine Kandidaten für irgendeine Stufe des Internet-Standards; siehe Abschnitt 2 von RFC 7841.
Informationen über den aktuellen Status dieses Dokuments, etwaige Errata und Möglichkeiten, Feedback dazu zu geben, erhalten Sie unter https://www.rfc-editor.org/info/rfc9380.
Urheberrechtshinweis
Copyright (c) 2023 IETF Trust und die als Dokumentautoren identifizierten Personen. Alle Rechte vorbehalten.
Dieses Dokument unterliegt BCP 78 und den gesetzlichen Bestimmungen des IETF Trust in Bezug auf IETF-Dokumente (https://trustee.ietf.org/license-info), die zum Zeitpunkt der Veröffentlichung dieses Dokuments gelten. Bitte lesen Sie diese Dokumente sorgfältig durch, da sie Ihre Rechte und Einschränkungen in Bezug auf dieses Dokument beschreiben.
Inhaltsverzeichnis
- Einführung 1.1. Anforderungsnotation
- Hintergrund 2.1. Elliptische Kurven 2.2. Terminologie 2.2.1. Abbildungen 2.2.2. Kodierungen 2.2.3. Zufallsorakel-Kodierungen 2.2.4. Serialisierung 2.2.5. Domänentrennung
- Kodierung von Byte-Strings auf elliptische Kurven 3.1. Anforderungen an die Domänentrennung
- Hilfsfunktionen 4.1. Die sgn0-Funktion
- Hashing auf ein endliches Feld 5.1. Effizienzüberlegungen in Erweiterungsfeldern 5.2. hash_to_field-Implementierung 5.3. expand_message 5.3.1. expand_message_xmd 5.3.2. expand_message_xof 5.3.3. Verwendung von DSTs länger als 255 Bytes 5.3.4. Definition anderer expand_message-Varianten
- Deterministische Abbildungen 6.1. Wahl einer Abbildungsfunktion 6.2. Schnittstelle 6.3. Notation 6.4. Vorzeichen des resultierenden Punktes 6.5. Ausnahmefälle 6.6. Abbildungen für Weierstrass-Kurven 6.6.1. Shallue-van de Woestijne-Methode 6.6.2. Vereinfachte Shallue-van de Woestijne-Ulas-Methode 6.6.3. Vereinfachtes SWU für AB == 0 6.7. Abbildungen für Montgomery-Kurven 6.7.1. Elligator 2-Methode 6.8. Abbildungen für Twisted Edwards-Kurven 6.8.1. Rationale Abbildungen von Montgomery auf Twisted Edwards 6.8.2. Elligator 2-Methode
- Bereinigung des Kofaktors
- Suites für Hashing 8.1. Implementierung einer Hash-to-Curve-Suite 8.2. Suites für NIST P-256 8.3. Suites für NIST P-384 8.4. Suites für NIST P-521 8.5. Suites für curve25519 und edwards25519 8.6. Suites für curve448 und edwards448 8.7. Suites für secp256k1 8.8. Suites für BLS12-381 8.8.1. BLS12-381 G1 8.8.2. BLS12-381 G2 8.9. Definition einer neuen Hash-to-Curve-Suite 8.10. Konventionen für Suite-ID-Namen
- IANA-Überlegungen
- Sicherheitsüberlegungen 10.1. Eigenschaften von Kodierungen 10.2. Hashing von Passwörtern 10.3. Anforderungen an konstante Zeit 10.4. encode_to_curve: Ausgabeverteilung und Ununterscheidbarkeit 10.5. hash_to_field-Sicherheit 10.6. expand_message_xmd-Sicherheit 10.7. Domänentrennung für expand_message-Varianten 10.8. Zielsicherheitsstufen
- Referenzen 11.1. Normative Referenzen 11.2. Informative Referenzen Anhang A. Verwandte Arbeiten Anhang B. Hashing auf ristretto255 Anhang C. Hashing auf decaf448 Anhang D. Rationale Abbildungen D.1. Generische Abbildung von Montgomery auf Twisted Edwards D.2. Abbildung von Weierstrass auf Montgomery Anhang E. Isogenie-Abbildungen für Suites E.1. 3-Isogenie-Abbildung für secp256k1 E.2. 11-Isogenie-Abbildung für BLS12-381 G1 E.3. 3-Isogenie-Abbildung für BLS12-381 G2 Anhang F. Straight-Line-Implementierungen deterministischer Abbildungen F.1. Shallue-van de Woestijne-Methode F.2. Vereinfachte SWU-Methode F.2.1. sqrt_ratio-Unterprogramm F.3. Elligator 2-Methode Anhang G. Kurvenspezifischer optimierter Beispielcode G.1. Schnittstelle und projektive Koordinatensysteme 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. Montgomery-Kurven mit q = 3 (mod 4) G.2.6. Montgomery-Kurven mit q = 5 (mod 8) G.3. Kofaktor-Bereinigung für BLS12-381 G2 Anhang H. Skripte zur Parametergenerierung H.1. Suche nach Z für die Shallue-van de Woestijne-Abbildung H.2. Suche nach Z für vereinfachtes SWU H.3. Suche nach Z für Elligator 2 Anhang I. sqrt- und is_square-Funktionen I.1. sqrt für q = 3 (mod 4) I.2. sqrt für q = 5 (mod 8) I.3. sqrt für q = 9 (mod 16) I.4. Tonelli-Shanks-Algorithmus mit konstanter Zeit I.5. is_square für F = GF(p^2) Anhang J. Suite-Testvektoren 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_ Anhang K. Testvektoren erweitern 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)