RFC 9380 - Hashing su curve ellittiche
- Stato: Informational
- Pubblicato: August 2023
- Stream: IRTF
- Errata: Nessun errata
Sommario
Questo documento specifica una serie di algoritmi per codificare o eseguire l'hashing di una stringa arbitraria su un punto di una curva ellittica. Questo documento è un prodotto del Crypto Forum Research Group (CFRG) nell'IRTF.
Stato di questo memorandum
Questo documento non è una specifica Internet Standards Track; è pubblicato a scopo informativo.
Questo documento è un prodotto della Internet Research Task Force (IRTF). L'IRTF pubblica i risultati delle attività di ricerca e sviluppo relative a Internet. Questi risultati potrebbero non essere adatti alla distribuzione. Questo RFC rappresenta il consenso del Crypto Forum Research Group della Internet Research Task Force (IRTF). I documenti approvati per la pubblicazione dall'IRSG non sono candidati per alcun livello di standard Internet; vedere la Sezione 2 della RFC 7841.
Informazioni sullo stato attuale di questo documento, eventuali errata e come fornire feedback su di esso possono essere ottenute su https://www.rfc-editor.org/info/rfc9380.
Avviso di copyright
Copyright (c) 2023 IETF Trust e le persone identificate come autori del documento. Tutti i diritti riservati.
Questo documento è soggetto al BCP 78 e alle disposizioni legali dell'IETF Trust relative ai documenti IETF (https://trustee.ietf.org/license-info) in vigore alla data di pubblicazione di questo documento. Si prega di esaminare attentamente questi documenti, in quanto descrivono i propri diritti e restrizioni rispetto a questo documento.
Indice
- Introduzione 1.1. Notazione dei requisiti
- Contesto 2.1. Curve ellittiche 2.2. Terminologia 2.2.1. Mappature 2.2.2. Codifiche 2.2.3. Codifiche a oracolo casuale 2.2.4. Serializzazione 2.2.5. Separazione dei domini
- Codifica di stringhe di byte su curve ellittiche 3.1. Requisiti di separazione dei domini
- Funzioni di utilità 4.1. La funzione sgn0
- Hashing su un campo finito 5.1. Considerazioni sull'efficienza nei campi di estensione 5.2. Implementazione di hash_to_field 5.3. expand_message 5.3.1. expand_message_xmd 5.3.2. expand_message_xof 5.3.3. Utilizzo di DST più lunghi di 255 byte 5.3.4. Definizione di altre varianti di expand_message
- Mappature deterministiche 6.1. Scelta di una funzione di mappatura 6.2. Interfaccia 6.3. Notazione 6.4. Segno del punto risultante 6.5. Casi eccezionali 6.6. Mappature per curve di Weierstrass 6.6.1. Metodo Shallue-van de Woestijne 6.6.2. Metodo Shallue-van de Woestijne-Ulas semplificato 6.6.3. SWU semplificato per AB == 0 6.7. Mappature per curve di Montgomery 6.7.1. Metodo Elligator 2 6.8. Mappature per curve Twisted Edwards 6.8.1. Mappe razionali da Montgomery a Twisted Edwards 6.8.2. Metodo Elligator 2
- Cancellazione del cofattore
- Suite per l'hashing 8.1. Implementazione di una suite Hash-to-Curve 8.2. Suite per NIST P-256 8.3. Suite per NIST P-384 8.4. Suite per NIST P-521 8.5. Suite per curve25519 e edwards25519 8.6. Suite per curve448 e edwards448 8.7. Suite per secp256k1 8.8. Suite per BLS12-381 8.8.1. BLS12-381 G1 8.8.2. BLS12-381 G2 8.9. Definizione di una nuova suite Hash-to-Curve 8.10. Convenzioni di denominazione degli ID suite
- Considerazioni IANA
- Considerazioni sulla sicurezza 10.1. Proprietà delle codifiche 10.2. Hashing delle password 10.3. Requisiti di tempo costante 10.4. encode_to_curve: Distribuzione dell'output e indifferenziabilità 10.5. Sicurezza di hash_to_field 10.6. Sicurezza di expand_message_xmd 10.7. Separazione dei domini per le varianti di expand_message 10.8. Livelli di sicurezza target
- Riferimenti 11.1. Riferimenti normativi 11.2. Riferimenti informativi Appendice A. Lavori correlati Appendice B. Hashing su ristretto255 Appendice C. Hashing su decaf448 Appendice D. Mappe razionali D.1. Mappatura generica da Montgomery a Twisted Edwards D.2. Mappatura da Weierstrass a Montgomery Appendice E. Mappe di isogenia per le suite E.1. Mappa di 3-isogenia per secp256k1 E.2. Mappa di 11-isogenia per BLS12-381 G1 E.3. Mappa di 3-isogenia per BLS12-381 G2 Appendice F. Implementazioni in linea retta di mappature deterministiche F.1. Metodo Shallue-van de Woestijne F.2. Metodo SWU semplificato F.2.1. Subroutine sqrt_ratio F.3. Metodo Elligator 2 Appendice G. Codice di esempio ottimizzato specifico per la curva G.1. Interfaccia e sistemi di coordinate proiettive 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. Curve di Montgomery con q = 3 (mod 4) G.2.6. Curve di Montgomery con q = 5 (mod 8) G.3. Cancellazione del cofattore per BLS12-381 G2 Appendice H. Script per la generazione dei parametri H.1. Ricerca di Z per la mappa Shallue-van de Woestijne H.2. Ricerca di Z per SWU semplificato H.3. Ricerca di Z per Elligator 2 Appendice I. Funzioni sqrt e is_square I.1. sqrt per q = 3 (mod 4) I.2. sqrt per q = 5 (mod 8) I.3. sqrt per q = 9 (mod 16) I.4. Algoritmo Tonelli-Shanks a tempo costante I.5. is_square per F = GF(p^2) Appendice J. Vettori di test della 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_ Appendice K. Vettori di test di espansione 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)