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 torcidas . [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]
General | |
---|---|
Diseñadores | Daniel J. Bernstein , Niels Duif, Tanja Lange , Peter Schwabe, Bo-Yin Yang, et al. |
Publicado por primera vez | 26 de septiembre de 2011 |
Detalle | |
Estructura | Criptografía de curva elíptica |
Resumen
La siguiente es una descripción simplificada de EdDSA, ignorando detalles de codificación de enteros y puntos de curva como cadenas de bits; los detalles completos están en los documentos y RFC. [4] [2] [1]
Un esquema de firma EdDSA es una opción:
- de campo finito sobre un poder primo impar ;
- de curva elíptica encima cuyo grupo de -los puntos racionales tienen orden, dónde es una prima grande y se llama cofactor;
- del punto base Con orden ; y
- de la función hash criptográfica con -salidas de bits, donde para que los elementos de y puntos de curva en puede ser representado por cadenas de bits.
Estos parámetros son comunes a todos los usuarios del esquema de firmas EdDSA. La seguridad del esquema de firma de EdDSA depende críticamente de las opciones de parámetros, excepto por la elección arbitraria del punto base; por ejemplo, se espera que el algoritmo rho de Pollard para logaritmos tome aproximadamenteadiciones de curvas antes de que pueda calcular un logaritmo discreto, [5] por lo quedebe ser lo suficientemente grande como para que esto sea factible, y típicamente se toma para exceder 2 200 . [6] La elección de está limitado por la elección de , ya que por el teorema de Hasse , no puede diferir de por más de . La función hashnormalmente se modela como un oráculo aleatorio en los análisis formales de la seguridad de EdDSA. En la variante HashEdDSA, una función hash adicional resistente a colisiones es necesario.
Dentro de un esquema de firma EdDSA,
- Llave pública
- Una clave pública EdDSA es un punto de curva , codificado en bits.
- Firma
- Una firma de EdDSA en un mensaje por clave pública es el par , codificado en bits, de un punto de curva y un entero satisfaciendo la siguiente ecuación de verificación. denota concatenación .
- Llave privada
- Una clave privada de EdDSA es una cadena de bits que debe elegirse uniformemente al azar. La clave pública correspondiente es , dónde es el menos significativo pedazos de interpretado como un número entero en little-endian. La firma en un mensaje es dónde por , y Esto satisface la ecuación de verificación:
Ed25519
Ed25519 es el esquema de firma EdDSA que usa SHA-512 (SHA-2) y Curve25519 [2] donde
- y
- es el único punto en cuyo coordinar es y de quien la coordenada es positiva.
"positivo" se define en términos de codificación de bits:- Las coordenadas "positivas" son coordenadas pares (se borra el bit menos significativo)
- Las coordenadas "negativas" son coordenadas impares (se establece el bit menos significativo)
- es SHA-512 , con.
La curva es biracionalmente equivalente a la curva de Montgomery conocida como Curve25519 . La equivalencia es [2] [7]
Actuación
El equipo original ha optimizado 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á destinado a proporcionar una resistencia a los ataques comparable a los cifrados simétricos de calidad de 128 bits . [8] Las claves públicas tienen 256 bits y las firmas 512 bits. [9]
Codificación segura
Como características de seguridad, Ed25519 no usa operaciones de sucursal ni pasos de indexación de arreglos que dependen de datos secretos, para derrotar muchos ataques de canal lateral .
Al igual que otros esquemas de firma basados en registros discretos, EdDSA usa un valor secreto llamado nonce único para cada firma. En los esquemas de firma DSA y ECDSA , este nonce se genera tradicionalmente al azar para cada firma, y si el generador de números aleatorios alguna vez se rompe y es predecible al hacer una firma, la firma puede filtrar la clave privada, como sucedió con el firmware de Sony PlayStation 3. actualizar la clave de firma. [10] [11] [12] Por el contrario, 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 que se genera una clave privada, EdDSA ya no necesita un generador de números aleatorios para realizar firmas, y no hay peligro de que un generador de números aleatorios roto utilizado para hacer una firma revele la clave privada.
Incoherencias de estandarización e implementación
Tenga en cuenta que hay dos esfuerzos de estandarización para EdDSA, uno de IETF, un RFC 8032 informativo y otro de NIST como parte de FIPS 186-5 (2019). [13] Se han analizado las diferencias entre los estándares, [14] [15] y se dispone de vectores de prueba. [dieciséis]
Software
Los usos notables de Ed25519 incluyen OpenSSH , [17] GnuPG [18] y varias alternativas, y la herramienta signify de OpenBSD . [19] Se está estandarizando el uso de Ed25519 en el protocolo SSH. [20] En 2019, una versión preliminar del estándar FIPS 186-5 incluía el Ed25519 determinista como un esquema de firma aprobado. [21]
- Implementación de referencia SUPERCOP [22] ( lenguaje C con ensamblador en línea )
- Una implementación alternativa lenta pero concisa, [23] no incluye protección contra ataques de canal lateral [24] ( Python )
- NaCl / libsodio [25]
- CryptoNote criptomoneda protocolo
- wolfSSL [26]
- I2Pd tiene su propia implementación de EdDSA [27]
- Minisign [28] y Minisign Miscellanea [29] para macOS
- Virgil PKI usa claves Ed25519 de forma predeterminada [30]
- Apple Watch y iPhone usan claves Ed25519 para la autenticación IKEv2 entre sí [31]
- Botan
- Dropbear SSH desde 2013.61test [32]
- OpenSSL 1.1.1 [33]
- Libgcrypt
- Kit de desarrollo de Java 15
Ed448
Ed448 es el esquema de firma EdDSA que utiliza SHA-3 y Curve448 definido en RFC 8032 . También ha sido aprobado en el borrador de la norma FIPS 186-5. [21]
Referencias
- ^ a b Josefsson, S .; Liusvaara, I. (enero de 2017). Algoritmo de firma digital Edwards-Curve (EdDSA) . Grupo de trabajo de ingeniería de Internet . doi : 10.17487 / RFC8032 . ISSN 2070-1721 . RFC 8032 . Consultado el 31 de julio de 2017 .
- ^ a b c d Bernstein, Daniel J .; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "Firmas de alta seguridad de alta velocidad" (PDF) . Revista de Ingeniería Criptográfica . 2 (2): 77–89. doi : 10.1007 / s13389-012-0027-1 . S2CID 945254 .
- ^ "Software" . 2015-06-11 . Consultado el 7 de octubre de 2016 .
El software Ed25519 es de dominio público.
- ^ Daniel J. Bernstein; Simon 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 ePrint de criptología IACR. 2011/003 . Consultado el 14 de noviembre de 2016 .
- ^ Daniel J. Bernstein; Tanja Lange. "Seguridad ECDLP: Rho" . SafeCurves: elección de curvas seguras para criptografía de curva elíptica . Consultado el 16 de noviembre de 2016 .
- ^ 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. Apuntes de conferencias en informática. 4833 . Berlín: Springer. págs. 29–50. doi : 10.1007 / 978-3-540-76900-2_3 . ISBN 978-3-540-76899-9. Señor 2565722 .
- ^ Daniel J. Bernstein (22 de enero de 2017). "Ed25519: firmas de alta seguridad de alta velocidad" . Consultado el 27 de septiembre de 2019 .
Este sistema tiene un objetivo de seguridad 2 ^ 128; romperlo tiene una dificultad similar a romper NIST P-256, RSA con claves de ~ 3000 bits, cifrados de bloque fuertes de 128 bits, etc.
- ^ Daniel J. Bernstein (22 de enero de 2017). "Ed25519: firmas de alta seguridad de alta velocidad" . 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 pirateado a través de una mala implementación de criptografía" . Ars Technica . Consultado el 15 de noviembre de 2016 .
- ^ fail0verflow (29 de diciembre de 2010). Console Hacking 2010: PS3 Epic Fail (PDF) . Congreso de Comunicación del Caos . Archivado desde el original (PDF) el 26 de octubre de 2018 . Consultado el 15 de noviembre de 2016 .
- ^ "27th Chaos Communication Congress: Console Hacking 2010: PS3 Epic Fail" (PDF) . Consultado el 4 de agosto de 2019 .
- ^ "FIPS 186-5: Estándar de firma digital (DSS)" . Consultado el 15 de febrero de 2021 .
- ^ Konstantinos Chalkias, Francois Garillot y Valeria Nikolaenko (2020-10-01). Domando a los muchos EdDSA . Conferencia de investigación de estandarización de seguridad (SSR 2020) . Consultado el 15 de febrero de 2021 .
- ^ Jacqueline Brendel, Cas Cremers, Dennis Jackson y Mang Zhao (03 de julio de 2020). La seguridad demostrable de ed25519: teoría y práctica . Simposio IEEE sobre seguridad y privacidad (S&P 2021) . Consultado el 15 de febrero de 2021 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ "ed25519-speccheck" . Consultado el 15 de febrero de 2021 .
- ^ "Cambios desde OpenSSH 6.4" . 2014-01-03 . Consultado el 7 de octubre de 2016 .
- ^ "Novedades de GnuPG 2.1" . 2016-07-14 . Consultado el 7 de octubre de 2016 .
- ^ "Cosas que usan Ed25519" . 2016-10-06 . Consultado el 7 de octubre de 2016 .
- ^ B. Harris; L. Velvindron; Hackers.mu (3 de febrero de 2018). Algoritmo de clave pública Ed25519 para el protocolo Secure Shell (SSH) . ID borrador-ietf-curdle-ssh-ed25519-02.
- ^ a b "FIPS 186-5 (Borrador): Estándar de firma digital (DSS)" . NIST . Octubre de 2019 . Consultado el 23 de julio de 2020 .
- ^ "eBACS: ECRYPT Benchmarking de sistemas criptográficos: SUPERCOP" . 2016-09-10 . Consultado el 7 de octubre de 2016 .
- ^ "python / ed25519.py: las subrutinas principales" . 2011-07-06 . Consultado el 7 de octubre de 2016 .
- ^ "Software: implementaciones alternativas" . 2015-06-11 . Consultado el 7 de octubre de 2016 .
- ^ Frank Denis (29 de junio de 2016). "libsodium / ChangeLog" . Consultado el 7 de octubre de 2016 .
- ^ "WolfSSL Embedded SSL Library (anteriormente CyaSSL)" . Consultado el 7 de octubre de 2016 .
- ^ "Algoritmos heurísticos y computación distribuida" (PDF) . Èvrističeskie Algoritmy I Raspredelennye Vyčisleniâ (en ruso): 55–56. 2015. ISSN 2311-8563 . Archivado desde el original (PDF) el 20 de octubre de 2016 . Consultado el 7 de octubre de 2016 .
- ^ Frank Denis. "Minisign: una herramienta muy simple para firmar archivos y verificar firmas" . Consultado el 7 de octubre de 2016 .
- ^ minisign-misc en GitHub
- ^ "Biblioteca de cifrado de seguridad de Virgil para C: Biblioteca: Fundación" . Consultado el 4 de agosto de 2019 .
- ^ "Seguridad del sistema para watchOS" . Consultado el 7 de junio de 2021 .
- ^ Matt Johnston (14 de noviembre de 2013). "DROPBEAR_2013.61test" .
- ^ "CAMBIOS DE OpenSSL" . 31 de julio de 2019.
enlaces externos
- Página de inicio de ed25519