Esquema de firma digital
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 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 incluye 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
La siguiente es una descripción simplificada de EdDSA, ignorando los detalles de codificación de números 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 finito sobre potencia prima impar ;
- de curva elíptica sobre cuyo grupo de puntos -racionales tiene orden , donde es un primo grande y se llama cofactor;
- de punto base con orden ; y
- de función hash criptográfica con salidas de bits, donde los elementos de y los puntos de la curva se pueden representar mediante cadenas de bits.
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 las elecciones 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 aproximadamente adiciones de curvas antes de que pueda calcular un logaritmo discreto, [5] por lo que debe ser lo suficientemente grande para que esto sea inviable, y típicamente se toma para exceder 2 200 . [6]
La elección de está limitada por la elección de , ya que por el teorema de Hasse , no puede diferir de en más de . La función hash normalmente se modela como un oráculo aleatorio en 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 en bits.
- Verificación de firma
- Una firma EdDSA en un mensaje por clave pública es el par , codificado en bits, de un punto de curva y un entero que satisface la siguiente ecuación de verificación, donde denota concatenación :
- Clave privada
- Una clave privada de EdDSA es una cadena de bits que debe elegirse de manera uniforme y aleatoria. La clave pública correspondiente es , donde son los bits menos significativos de interpretados como un entero en formato little-endian .
- Firma
- La firma de un mensaje se calcula de manera determinista como donde para , y Esto satisface la ecuación de verificación
Ed25519
Ed25519 es el esquema de firma EdDSA que utiliza SHA-512 (SHA-2) y Curve25519 [2] donde
- es la curva de Edwards torcida
- y
- es el único punto en cuya coordenada está y cuya 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 birracionalmente 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 Nehalem / Westmere x86-64 . La verificación se puede realizar en lotes de 64 firmas para un rendimiento aún mayor. Ed25519 está pensado para proporcionar una resistencia a ataques comparable a los cifrados simétricos de 128 bits de calidad . [8]
Las claves públicas tienen una longitud de 256 bits y las firmas tienen una longitud de 512 bits. [9]
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 para mitigar ataques de canal lateral .
Al igual que con 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, y si el generador de números aleatorios falla y es predecible al crear una firma, la firma puede filtrar la clave privada, como sucedió con la clave de firma de actualización de firmware de Sony PlayStation 3. [10] [11] [12] [13]
Por el contrario, EdDSA elige el nonce de manera 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 crear firmas, y no existe peligro de que un generador de números aleatorios defectuoso utilizado para crear una firma revele la clave privada. [2] : 8
Inconsistencias en la estandarización y la implementación
Cabe señalar que existen dos esfuerzos de estandarización para EdDSA: uno de IETF, un RFC 8032 informativo y uno de NIST como parte de FIPS 186-5. [14] Se han analizado las diferencias entre los estándares, [15] [16] y hay vectores de prueba disponibles. [17]
Software
Entre los usos más destacados de Ed25519 se incluyen OpenSSH , [18] GnuPG [19] y varias alternativas, y la herramienta signify de OpenBSD . [20] El uso de Ed25519 (y Ed448) en el protocolo SSH se ha estandarizado. [21] En 2023, la versión final del estándar FIPS 186-5 incluyó el determinista Ed25519 como un esquema de firma aprobado. [14]
Ed448
Ed448 es el esquema de firma EdDSA que utiliza SHAKE256 y Curve448 definidos en RFC 8032. También ha sido aprobado en la versión final del estándar FIPS 186-5. [14]
Referencias
- ^ abcd 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 . Consultado el 11 de julio de 2022 .
- ^ abcdefg Bernstein, Daniel J. ; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "Firmas de alta seguridad y alta velocidad" (PDF) . Journal of Cryptographic Engineering . 2 (2): 77–89. doi : 10.1007/s13389-012-0027-1 . S2CID 945254.
- ^ "Software". 2015-06-11 . Consultado el 2016-10-07 .
El software Ed25519 es de dominio público.
- ^ ab 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 publicaciones electrónicas de criptología de la IACR. 2011/003 . Consultado el 14 de noviembre de 2016 .
- ^ Bernstein, Daniel J.; Lange, Tanja. "ECDLP Security: 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.). Adición 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. págs. 29–50. doi : 10.1007/978-3-540-76900-2_3 . ISBN 978-3-540-76899-9.Señor 2565722 .
- ^ Bernstein, Daniel J. (22 de enero de 2017). "Ed25519: firmas de alta seguridad y alta velocidad" . Consultado el 27 de septiembre de 2019.
Este sistema tiene un objetivo de seguridad de 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.
- ^ Bernstein, Daniel J. (22 de enero de 2017). «Ed25519: firmas de alta seguridad y alta velocidad» . Consultado el 1 de junio de 2020.
Las firmas ocupan 64 bytes. […] Las claves públicas consumen solo 32 bytes.
- ^ Johnston, Casey (30 de diciembre de 2010). "PS3 hackeada a través de una mala implementación de criptografía". Ars Technica . Consultado el 15 de noviembre de 2016 .
- ^ fail0verflow (2010-12-29). Console Hacking 2010: PS3 Epic Fail (PDF) . Chaos Communication Congress . Archivado desde el original (PDF) el 2018-10-26 . Consultado el 2016-11-15 .
{{cite conference}}
: CS1 maint: numeric names: authors list (link) - ^ "27.º Congreso de Comunicación del Caos: Hackeo de consolas 2010: Fallo épico de PS3" (PDF) . Consultado el 4 de agosto de 2019 .
- ^ Buchanan, Bill (12 de noviembre de 2018). "No jugar de forma aleatoria: los hackeos de criptomonedas de Sony PS3 y Bitcoin. Cuidado con esos generadores de números aleatorios". Medium . Archivado desde el original el 30 de noviembre de 2018 . Consultado el 11 de marzo de 2024 .
- ^ abc Moody, Dustin (3 de febrero de 2023). FIPS 186-5: Estándar de firma digital (DSS). NIST . doi :10.6028/NIST.FIPS.186-5. S2CID 256480883 . Consultado el 4 de marzo de 2023 .
- ^ Konstantinos Chalkias, Francois Garillot y Valeria Nikolaenko (1 de octubre de 2020). Cómo domesticar a los numerosos EdDSA. Conferencia de investigación sobre estandarización de la seguridad (SSR 2020) . Consultado el 15 de febrero de 2021 .
- ^ Jacqueline Brendel, Cas Cremers, Dennis Jackson y Mang Zhao (3 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 .
{{cite conference}}
: CS1 maint: multiple names: authors list (link) - ^ "ed25519-speccheck". GitHub . Consultado el 15 de febrero de 2021 .
- ^ "Cambios desde OpenSSH 6.4". 2014-01-03 . Consultado el 2016-10-07 .
- ^ "Novedades en GnuPG 2.1". 14 de julio de 2016. Consultado el 7 de octubre de 2016 .
- ^ "Cosas que usan Ed25519". 2016-10-06 . Consultado el 2016-10-07 .
- ^ Harris, B.; Velvindron, L. (febrero de 2020). Algoritmos de clave pública Ed25519 y Ed448 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 de noviembre de 2013). «DROPBEAR_2013.61test». Archivado desde el original el 5 de agosto de 2019. Consultado el 5 de agosto de 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 desde el original (PDF) el 20 de octubre de 2016. Consultado el 7 de octubre de 2016 .
- ^ Frank Denis. "Minisign: una herramienta muy sencilla para firmar archivos y verificar firmas" . Consultado el 7 de octubre de 2016 .
- ^ minisign-misc en GitHub
- ^ Frank Denis (29 de junio de 2016). «libsodium/ChangeLog». GitHub . Consultado el 7 de octubre de 2016 .
- ^ "CAMBIOS EN OpenSSL". 31 de julio de 2019. Archivado desde el original el 18 de mayo de 2018. Consultado el 5 de agosto de 2019 .
- ^ "python/ed25519.py: las subrutinas principales". 2011-07-06 . Consultado el 2016-10-07 .
- ^ "Software: Implementaciones alternativas". 2015-06-11 . Consultado el 2016-10-07 .
- ^ "eBACS: ECRYPT Benchmarking de sistemas criptográficos: SUPERCOP". 2016-09-10 . Consultado el 2016-10-07 .
- ^ "Biblioteca de cifrado Virgil Security para C: Library: Foundation". GitHub . Consultado el 4 de agosto de 2019 .
- ^ "Biblioteca SSL integrada wolfSSL (anteriormente CyaSSL)" . Consultado el 7 de octubre de 2016 .
Enlaces externos
- Página de inicio de Ed25519