En criptografía de clave pública , el algoritmo de firma digital de curva de Edwards ( EdDSA ) es un esquema de firma digital que utiliza una variante de la firma de Schnorr basada en curvas de Edwards retorcidas . [ 1 ] Está diseñado para ser más rápido que los esquemas de firma digital existentes sin sacrificar la seguridad. Fue desarrollado por un equipo que incluía a Daniel J. Bernstein , Niels Duif, Tanja Lange , Peter Schwabe y Bo-Yin Yang . [ 2 ] La implementación de referencia es software de dominio público . [ 3 ]
Resumen
A continuación se presenta una descripción simplificada de EdDSA, omitiendo detalles sobre la codificación de enteros y puntos de curva como cadenas de bits; los detalles completos se encuentran en los artículos y RFC. [ 4 ] [ 2 ] [ 1 ]
Un esquema de firma EdDSA es una opción: [ 4 ] : 1–2 [ 2 ] : 5–6 [ 1 ] : 5–7
- de campo finitosobre potencia prima impar;
- de curva elípticaencimacuyo grupode-Los puntos racionales tienen orden, dóndees un número primo grande yse denomina cofactor;
- del punto basecon orden; y
- de función hash criptográficaconSalidas de bits, dondepara que los elementos dey puntos de curva ense puede representar mediante cadenas debits.
Estos parámetros son comunes a todos los usuarios del esquema de firma EdDSA. La seguridad del esquema de firma EdDSA depende críticamente de la elección de los parámetros, excepto por la elección arbitraria del punto base; por ejemplo, se espera que el algoritmo rho de Pollard para logaritmos tome aproximadamentesumas de curvas antes de que pueda calcular un logaritmo discreto, [ 5 ] asídebe ser lo suficientemente grande para que esto sea inviable, y normalmente se considera que supera los 2200. [ 6 ] La elección deestá limitado por la elección de, puesto que por el teorema de Hasse ,no puede diferir depor másLa función hashNormalmente se modela como un oráculo aleatorio en los análisis formales de la seguridad de EdDSA.
Dentro de un esquema de firma EdDSA,
- Clave pública
- Una clave pública EdDSA es un punto de curva., codificado enbits.
- Verificación de firma
- Una firma de EdDSA en un mensajemediante clave públicaes el par, codificado enbits, de un punto curvoy un número enteroque satisface la siguiente ecuación de verificación, dondedenota concatenación :
- Clave privada
- Una clave privada EdDSA es unacadena de bitsque debe elegirse uniformemente al azar. La clave pública correspondiente es, dóndees el menos significativotrozos deinterpretado como un entero en little-endian .
- Firma
- La firma en un mensajese calcula de forma determinista comodóndepara, yEsto satisface la ecuación de verificación.
Ed25519
Ed25519 es el esquema de firma EdDSA que utiliza SHA-512 (SHA-2) y una curva elíptica relacionada con Curve25519 [ 2 ] donde
- y
- es el punto único encuyoLa coordenada esy cuyoLa coordenada es positiva. "Positivo" se define en términos de codificación de bits:
- Las coordenadas "positivas" son coordenadas pares (el bit menos significativo se borra).
- Las coordenadas "negativas" son coordenadas impares (el bit menos significativo está activado).
- es SHA-512 , con.
La curva retorcida de Edwardsse conoce como edwards25519 , [ 7 ] [ 1 ] y es birracionalmente equivalente a la curva de Montgomery conocida como Curve25519 . La equivalencia es [ 2 ] [ 7 ] [ 8 ]
Actuación
El equipo original optimizó Ed25519 para la familia de procesadores x86-64 Nehalem / Westmere . La verificación se puede realizar en lotes de 64 firmas para un rendimiento aún mayor. Ed25519 está diseñado para proporcionar una resistencia a ataques comparable a la de los cifrados simétricos de 128 bits de alta calidad . [ 9 ]
Las claves públicas tienen una longitud de 256 bits y las firmas tienen una longitud de 512 bits. [ 10 ]
Codificación segura
Ed25519 está diseñado para evitar implementaciones que utilizan condiciones de bifurcación o índices de matriz que dependen de datos secretos, [ 2 ] : 2 [ 1 ] : 40 con el fin de mitigar los ataques de canal lateral .
Al igual que otros esquemas de firma basados en registros discretos, EdDSA utiliza un valor secreto llamado nonce, único para cada firma. En los esquemas de firma DSA y ECDSA , este nonce se genera tradicionalmente de forma aleatoria para cada firma; si el generador de números aleatorios se ve comprometido y se vuelve predecible al crear una firma, esta puede filtrar la clave privada, como ocurrió con la clave de firma de la actualización de firmware de Sony PlayStation 3. [ 11 ] [ 12 ] [ 13 ] [ 14 ]
En cambio, EdDSA elige el nonce de forma determinista como el hash de una parte de la clave privada y el mensaje. Por lo tanto, una vez generada una clave privada, EdDSA ya no necesita un generador de números aleatorios para realizar firmas, y no existe peligro de que un generador de números aleatorios defectuoso utilizado para realizar una firma revele la clave privada. [ 2 ] : 8
Inconsistencias en la estandarización y la implementación
Cabe señalar que existen dos iniciativas de estandarización para EdDSA: una del IETF, la RFC 8032 informativa , y otra del NIST, como parte de FIPS 186-5. [ 15 ] Se han analizado las diferencias entre los estándares, [ 16 ] [ 17 ] y se dispone de vectores de prueba. [ 18 ]
Software
Entre los usos notables de Ed25519 se incluyen OpenSSH , [ 19 ] GnuPG [ 20 ] y varias alternativas, y la herramienta signify de OpenBSD . [ 21 ] El uso de Ed25519 (y Ed448) en el protocolo SSH se ha estandarizado. [ 22 ] En 2023, la versión final del estándar FIPS 186-5 incluyó Ed25519 determinista como un esquema de firma aprobado. [ 15 ]
- Apple Watch y iPhone utilizan claves Ed25519 para la autenticación mutua IKEv2 [ 23 ].
- Botánica
- Cripto++
- Protocolo de criptomoneda CryptoNote
- Dropbear SSH [ 24 ]
- Implementación de EdDSA en I2Pd [ 25 ]
- Kit de desarrollo de Java 15
- Libgcrypt
- Minisign [ 26 ] y Minisign Miscellanea [ 27 ] para macOS
- NaCl / libsodio [ 28 ]
- OpenSSL 1.1.1 [ 29 ]
- Python - Una implementación alternativa lenta pero concisa, [ 30 ] no incluye protección contra ataques de canal lateral [ 31 ]
- Implementación de referencia de Supercop [ 32 ] ( lenguaje C con ensamblador en línea )
- Virgil PKI utiliza claves Ed25519 por defecto [ 33 ]
- wolfSSL [ 34 ]
Ed448
Ed448 es el esquema de firma EdDSA definido en RFC 8032 que utiliza la función hash SHAKE256 y la curva elíptica edwards448 , una curva de Edwards (sin torsión) relacionada con Curve448 en RFC 7748. Ed448 también ha sido aprobado en la versión final del estándar FIPS 186-5. [ 15 ]
Referencias
- 1 2 3 4 5 Josefsson, S.; Liusvaara, I. (enero de 2017). Algoritmo de firma digital de curva de Edwards (EdDSA) . IRTF . doi : 10.17487/RFC8032 . ISSN 2070-1721 . RFC 8032. Recuperado el 11 de julio de 2022 .
- 1 2 3 4 5 6 7 Bernstein, Daniel J .; Duif, Niels; Lange, Tanja ; Schwabe, Peter; Bo-Yin Yang (2012). "Firmas de alta velocidad y alta seguridad" (PDF) . Revista de ingeniería criptográfica . 2 (2): 77– 89. doi : 10.1007/s13389-012-0027-1 . S2CID 945254 .
- ↑ "Software" . 11/06/2015 . Consultado el 07/10/2016 .
El software Ed25519 es de dominio público.
- ^ Daniel J. Bernstein ; Simón Josefsson; Tanja Lange ; Peter Schwabe; Bo-Yin Yang (4 de julio de 2015). EdDSA para más curvas (PDF) (Informe técnico) . Consultado el 14 de noviembre de 2016 .
- ↑ Daniel J. Bernstein ; Tanja Lange ; Peter Schwabe (1 de enero de 2011). Sobre el uso correcto del mapa de negación en el método rho de Pollard (Informe técnico). Archivo de preimpresiones de criptología de la IACR. 2011/003 . Recuperado el 14 de noviembre de 2016 .
- ↑ Bernstein, Daniel J. ; Lange, Tanja . "Seguridad ECDLP: Rho" . SafeCurves: elección de curvas seguras para criptografía de curva elíptica . Recuperado el 16 de noviembre de 2016 .
- 1 2 Langley, A.; Hamburg, M.; Turner, S. (enero de 2016). Curvas elípticas para la seguridad . IETF . doi : 10.17487/RFC7748 . ISSN 2070-1721 . RFC 7748. Recuperado el 12 de noviembre de 2024 .
- ↑ Bernstein, Daniel J.; Lange , Tanja (2007). Kurosawa, Kaoru (ed.). Suma y duplicación más rápidas en curvas elípticas . Avances en criptología—ASIACRYPT. Lecture Notes in Computer Science. Vol. 4833. Berlín: Springer. pp. 29–50 . doi : 10.1007/978-3-540-76900-2_3 . ISBN 978-3-540-76899-9MR 2565722 .
- ↑ Bernstein, Daniel J. (22 de enero de 2017). "Ed25519: firmas de alta velocidad y alta seguridad" . Recuperado el 27 de septiembre de 2019.
Este sistema tiene un objetivo de seguridad de 2^128; romperlo tiene una dificultad similar a la de romper NIST P-256, RSA con claves de ~3000 bits, cifrados de bloques robustos de 128 bits, etc.
- ↑ Bernstein, Daniel J. (22 de enero de 2017). "Ed25519: firmas de alta velocidad y alta seguridad" . Consultado el 1 de junio de 2020.
Las firmas caben en 64 bytes. […] Las claves públicas consumen solo 32 bytes.
- ↑ Johnston, Casey (30 de diciembre de 2010). "PS3 hackeada mediante una mala implementación de criptografía" . Ars Technica . Consultado el 15 de noviembre de 2016 .
- ↑ fail0verflow (29/12/2010). Hacking de consolas 2010: Fracaso épico de PS3 (PDF) . Chaos Communication Congress . Archivado del original (PDF) el 26/10/2018 . Consultado el 15/11/2016 .
- ↑ "27º Congreso de Comunicación del Caos: Hacking de consolas 2010: Fracaso épico de PS3" (PDF) . Consultado el 4 de agosto de 2019 .
- ↑ Buchanan, Bill (12 de noviembre de 2018). "No jugando al azar: Los hackeos de criptomonedas de Sony PS3 y Bitcoin. Cuidado con los generadores de números aleatorios" . Medium . Archivado del original el 30 de noviembre de 2018. Consultado el 11 de marzo de 2024 .
- 1 2 3 Moody, Dustin (2023-02-03). FIPS 186-5: Estándar de firma digital (DSS) . NIST . doi : 10.6028/NIST.FIPS.186-5 . S2CID 256480883. Recuperado el 2023-03-04 .
- ↑ Chalkias, Konstantinos; Garillot, Francois; Nikolaenko, Valeria (2020-10-01). Domando los muchos EdDSA . Security Standardisation Research Conference (SSR 2020) . Recuperado el 2021-02-15 .
- ↑ Brendel, Jacqueline; Cremers, Cas ; Jackson, Dennis; Zhao, Mang (2020-07-03). La seguridad demostrable de ed25519: Teoría y práctica . Simposio IEEE sobre Seguridad y Privacidad (S&P 2021) . Recuperado el 15 de febrero de 2021 .
- ↑ "ed25519-speccheck" . GitHub . Consultado el 15 de febrero de 2021 .
- ↑ "Cambios desde OpenSSH 6.4" . 3 de enero de 2014. Consultado el 7 de octubre de 2016 .
- ↑ "Novedades de GnuPG 2.1" . 14 de julio de 2016. Consultado el 7 de octubre de 2016 .
- ↑ "Cosas que usan Ed25519" . 6 de octubre de 2016. Consultado el 7 de octubre de 2016 .
- ↑ Harris, B.; Velvindron, L. (febrero de 2020). Ed25519 y Ed448 Algoritmos de clave pública para el protocolo Secure Shell (SSH) . IETF . doi : 10.17487/RFC8709 . ISSN 2070-1721 . RFC 8709. Consultado el 11 de julio de 2022 .
- ↑ "Seguridad del sistema para watchOS" . Consultado el 7 de junio de 2021 .
- ↑ Matt Johnston (14-11-2013). "DROPBEAR_2013.61test" . Archivado del original el 05-08-2019 . Recuperado el 05-08-2019 .
- ↑ "Algoritmos heurísticos y computación distribuida" (PDF) . Èvrističeskie Algoritmy I Raspredelennye Vyčisleniâ (en ruso): 55– 56. 2015. ISSN 2311-8563 . Archivado del original (PDF) el 20 de octubre de 2016. Consultado el 7 de octubre de 2016 .
- ↑ Frank Denis. "Minisign: Una herramienta extremadamente sencilla para firmar archivos y verificar firmas" . Consultado el 7 de octubre de 2016 .
- ↑ minisign-misc en GitHub
- ↑ Frank Denis (29-06-2016). "libsodium/ChangeLog" . GitHub . Consultado el 07-10-2016 .
- ↑ "CAMBIOS EN OpenSSL" . 31 de julio de 2019. Archivado del original el 18 de mayo de 2018. Consultado el 5 de agosto de 2019 .
- ↑ "python/ed25519.py: las subrutinas principales" . 6 de julio de 2011. Consultado el 7 de octubre de 2016 .
- ↑ "Software: Implementaciones alternativas" . 11 de junio de 2015. Consultado el 7 de octubre de 2016 .
- ↑ "eBACS: ECRYPT Benchmarking de sistemas criptográficos: SUPERCOP" . 10 de septiembre de 2016. Consultado el 7 de octubre de 2016 .
- ↑ "Biblioteca criptográfica de seguridad Virgil para C: Biblioteca: Foundation" . GitHub . Consultado el 4 de agosto de 2019 .
- ↑ "wolfSSL Biblioteca SSL integrada (anteriormente CyaSSL)" . Consultado el 7 de octubre de 2016 .
Enlaces externos
- Página principal de Ed25519
- Criptografía de clave pública
- Criptografía de curva elíptica
- esquemas de firma digital
- Software de dominio público con código fuente