stringtranslate.com

Educación DSA

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 elección: [4] : 1–2  [2] : 5–6  [1] : 5–7 

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 una curva elíptica relacionada con Curve25519 [2] donde

La curva de Edwards torcida se conoce como edwards25519 , [7] [1] y es biracionalmente equivalente a la curva de Montgomery conocida como Curve25519 . La equivalencia es [2] [7] [8]

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 . [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  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. [11] [12] [13] [14]

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. [15] Se han analizado las diferencias entre los estándares, [16] [17] y hay vectores de prueba disponibles. [18]

Software

Entre los usos más destacados 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ó el determinista Ed25519 como un esquema de firma aprobado. [15]

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 torcer) 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. ^ abcde 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 .
  2. ^ abcdefg 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.
  3. ^ "Software". 2015-06-11 . Consultado el 2016-10-07 . El software Ed25519 es de dominio público.
  4. ^ 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 .
  5. ^ 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 .
  6. ^ 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 .
  7. ^ ab Langley, A.; Hamburg, M.; Turner, S. (enero de 2016). Curvas elípticas para seguridad. IETF . doi : 10.17487/RFC7748 . ISSN  2070-1721. RFC 7748 . Consultado el 12 de noviembre de 2024 .
  8. ^ 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  .
  9. ^ 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.
  10. ^ 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.
  11. ^ 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 .
  12. ^ 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 .
  13. ^ "27.º Congreso de Comunicación del Caos: Hackeo de consolas 2010: Fallo épico de PS3" (PDF) . Consultado el 4 de agosto de 2019 .
  14. ^ 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 .
  15. ^ 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 .
  16. ^ Chalkias, Konstantinos; Garillot, Francois; Nikolaenko, Valeria (1 de octubre de 2020). Domando los numerosos EdDSA. Conferencia de investigación sobre estandarización de seguridad (SSR 2020) . Consultado el 15 de febrero de 2021 .
  17. ^ Brendel, Jacqueline; Cremers, Cas; Jackson, Dennis; Zhao, Mang (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 .
  18. ^ "ed25519-speccheck". GitHub . Consultado el 15 de febrero de 2021 .
  19. ^ "Cambios desde OpenSSH 6.4". 2014-01-03 . Consultado el 2016-10-07 .
  20. ^ "Novedades en GnuPG 2.1". 14 de julio de 2016. Consultado el 7 de octubre de 2016 .
  21. ^ "Cosas que usan Ed25519". 2016-10-06 . Consultado el 2016-10-07 .
  22. ^ 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 .
  23. ^ "Seguridad del sistema para watchOS" . Consultado el 7 de junio de 2021 .
  24. ^ 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 .
  25. ^ "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 .
  26. ^ Frank Denis. "Minisign: una herramienta muy sencilla para firmar archivos y verificar firmas" . Consultado el 7 de octubre de 2016 .
  27. ^ minisign-misc en GitHub
  28. ^ Frank Denis (29 de junio de 2016). «libsodium/ChangeLog». GitHub . Consultado el 7 de octubre de 2016 .
  29. ^ "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 .
  30. ^ "python/ed25519.py: las subrutinas principales". 2011-07-06 . Consultado el 2016-10-07 .
  31. ^ "Software: Implementaciones alternativas". 2015-06-11 . Consultado el 2016-10-07 .
  32. ^ "eBACS: ECRYPT Benchmarking de sistemas criptográficos: SUPERCOP". 2016-09-10 . Consultado el 2016-10-07 .
  33. ^ "Biblioteca de cifrado Virgil Security para C: Library: Foundation". GitHub . Consultado el 4 de agosto de 2019 .
  34. ^ "Biblioteca SSL integrada wolfSSL (anteriormente CyaSSL)" . Consultado el 7 de octubre de 2016 .

Enlaces externos