stringtranslate.com

Curva25519

En criptografía , Curve25519 es una curva elíptica utilizada en criptografía de curva elíptica (ECC) que ofrece 128 bits de seguridad ( tamaño de clave de 256 bits ) y está diseñada para usarse con el esquema de acuerdo de claves de curva elíptica Diffie–Hellman (ECDH). Es una de las curvas más rápidas en ECC y no está cubierta por ninguna patente conocida. [1] La implementación de referencia es software de dominio público . [2] [3]

El artículo original Curve25519 la definía como una función Diffie–Hellman (DH). Daniel J. Bernstein propuso posteriormente que se utilizara el nombre Curve25519 para la curva subyacente y el nombre X25519 para la función DH. [4]

Propiedades matemáticas

La curva utilizada es , una curva de Montgomery , sobre el cuerpo primo definido por el número primo (de ahí el número "25519" en el nombre), y utiliza el punto base . Este punto genera un subgrupo cíclico cuyo orden es el primo . Este subgrupo tiene un cofactor de , lo que significa que el número de elementos en el subgrupo es el del grupo de curva elíptica. El uso de un subgrupo de orden primo evita montar un ataque de algoritmo de Pohlig-Hellman . [5]

El protocolo utiliza puntos elípticos comprimidos (solo coordenadas X ), por lo que permite un uso eficiente de la escalera de Montgomery para ECDH , utilizando solo coordenadas XZ . [6]

Curve25519 está construido de tal manera que evita muchos posibles problemas de implementación. [7]

La curva es biracionalmente equivalente a una curva de Edwards torcida utilizada en el esquema de firma Ed25519 [8] [9] . [10]

Historia

En 2005, Daniel J. Bernstein lanzó por primera vez Curve25519 . [5]

En 2013, el interés comenzó a aumentar considerablemente cuando se descubrió que la NSA había implementado potencialmente una puerta trasera en el algoritmo Dual_EC_DRBG basado en la curva P-256. [11] Aunque no están directamente relacionados, [12] aspectos sospechosos de las constantes de la curva P del NIST [13] llevaron a preocupaciones [14] de que la NSA había elegido valores que les daban una ventaja para romper el cifrado. [15] [16]

"Ya no confío en las constantes. Creo que la NSA las ha manipulado a través de sus relaciones con la industria".

—  Bruce Schneier , La NSA está rompiendo la mayoría de los sistemas de cifrado en Internet (2013)

Desde 2013, Curve25519 se ha convertido en la alternativa de facto a P-256, y se utiliza en una amplia variedad de aplicaciones. [17] A partir de 2014, OpenSSH [18] utiliza de forma predeterminada ECDH basado en Curve25519 y GnuPG agrega soporte para claves Ed25519 para firma y cifrado. [19] El uso de la curva se estandarizó finalmente tanto para el intercambio de claves como para la firma en 2020. [20] [21]

En 2017, el NIST anunció que Curve25519 y Curve448 se agregarían a la Publicación Especial 800-186, que especifica las curvas elípticas aprobadas para su uso por parte del Gobierno Federal de los EE. UU. [22] Ambas se describen en RFC 7748. [23] Un borrador de 2019 de "FIPS 186-5" señala la intención de permitir el uso de Ed25519 [24] para firmas digitales. La actualización de 2023 de la Publicación Especial 800-186 permite el uso de Curve25519. [25]

En 2018, se modificó la especificación DKIM para permitir firmas con este algoritmo. [26]

También en 2018, se publicó RFC 8446 como el nuevo estándar Transport Layer Security v1.3 . Recomienda compatibilidad con los algoritmos X25519 , Ed25519 , X448 y Ed448 . [27]

Bibliotecas

Protocolos

Aplicaciones

Notas

  1. ^ A partir de Windows 10 (1607), Windows Server 2016
  2. ^ abc A través del protocolo OMEMO
  3. ^ Solo en "conversaciones secretas"
  4. ^ abcd A través del protocolo de señal
  5. ^ Solo en "modo incógnito"
  6. ^ Se utiliza para firmar comunicados y paquetes [52] [53]
  7. ^ Intercambio de claves exclusivo en OpenSSH 6.7 cuando se compila sin OpenSSL . [54] [55]

Referencias

  1. ^ Bernstein. "Patentes irrelevantes sobre criptografía de curva elíptica". cr.yp.to . Consultado el 8 de febrero de 2016 .
  2. ^ Una función Diffie-Hellman de última generación de Daniel J. Bernstein "Mi biblioteca curve25519 calcula la función Curve25519 a muy alta velocidad. La biblioteca es de dominio público".
  3. ^ "X25519". Crypto++ . 5 de marzo de 2019. Archivado desde el original el 29 de agosto de 2020 . Consultado el 3 de febrero de 2023 .
  4. ^ "[Cfrg] 25519 naming" . Consultado el 25 de febrero de 2016 .
  5. ^ ab Bernstein, Daniel J. (2006). "Curve25519: Nuevos récords de velocidad de Diffie-Hellman" (PDF) . En Yung, Moti; Dodis, Yevgeniy; Kiayias, Aggelos; et al. (eds.). Criptografía de clave pública - PKC 2006. Criptografía de clave pública. Apuntes de clase en informática. Vol. 3958. Nueva York: Springer. págs. 207–228. doi : 10.1007/11745853_14 . ISBN . 978-3-540-33851-2.Señor 2423191  .
  6. ^ Lange, Tanja . «EFD/Genus-1 large-characteristic/XZ coordenadas para curvas de Montgomery». Base de datos de fórmulas explícitas/EFD . Consultado el 8 de febrero de 2016 .
  7. ^ Bernstein, Daniel J.; Lange, Tanja (22 de enero de 2017). "SafeCurves: Introducción". SafeCurves: elección de curvas seguras para criptografía de curva elíptica . Consultado el 8 de febrero de 2016 .
  8. ^ Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Yang, Bo-Yin (22 de enero de 2017). "Ed25519: firmas de alta seguridad y alta velocidad" . Consultado el 9 de noviembre de 2019 .
  9. ^ Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Yang, Bo-Yin (26 de septiembre de 2011). "Firmas de alta velocidad y alta seguridad" (PDF) . Consultado el 9 de noviembre de 2019 .
  10. ^ Bernstein, Daniel J. ; Lange, Tanja (2007). "Adición y duplicación más rápidas en curvas elípticas". En Kurosawa, Kaoru (ed.). Avances en criptología – ASIACRYPT 2007 . Avances en criptología—ASIACRYPT. Apuntes de clase en informática. 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  .
  11. ^ Kelsey, John (mayo de 2014). "EC dual en X9.82 y SP 800-90" (PDF) . Instituto Nacional de Estándares en Tecnología . Consultado el 2 de diciembre de 2018 .
  12. ^ Green, Matthew (14 de enero de 2015). "Algunas reflexiones sobre ingeniería criptográfica: los numerosos defectos de Dual_EC_DRBG". blog.cryptographyengineering.com . Consultado el 20 de mayo de 2015 .
  13. ^ "SafeCurves: Introducción".
  14. ^ Maxwell, Gregory (8 de septiembre de 2013). "[tor-talk] ¿El NIST aprobó el cifrado en Tor?" . Consultado el 20 de mayo de 2015 .
  15. ^ "SafeCurves: Rigidez". safecurves.cr.yp.to . Consultado el 20 de mayo de 2015 .
  16. ^ "La NSA está rompiendo la mayoría de los sistemas de cifrado en Internet - Schneier on Security" (Schneier sobre seguridad). www.schneier.com . Consultado el 20 de mayo de 2015 .
  17. ^ "Cosas que usan Curve25519" . Consultado el 23 de diciembre de 2015 .
  18. ^ ab Adamantiadis, Aris (3 de noviembre de 2013). "OpenSSH presenta el intercambio de claves [email protected]". libssh.org . Consultado el 27 de diciembre de 2014 .
  19. ^ "GnuPG - Novedades de la versión 2.1". Agosto de 2021.
  20. ^ A. Adamantiadis; libssh; S. Josefsson; SJD AB; M. Baushke; Juniper Networks, Inc. (febrero de 2020). Método de intercambio de claves Secure Shell (SSH) utilizando Curve25519 y Curve448. doi : 10.17487/RFC8731 . RFC 8731.
  21. ^ B. Harris; L. Velvindron (febrero de 2020). Algoritmos de clave pública Ed25519 y Ed448 para el protocolo Secure Shell (SSH). doi : 10.17487/RFC8709 . RFC 8709.
  22. ^ "Planes de transición para los esquemas de establecimientos clave". Instituto Nacional de Normas y Tecnología . 2017-10-31. Archivado desde el original el 2018-03-11 . Consultado el 2019-09-04 .
  23. ^ RFC 7748. Recuperado de rfc:7748.
  24. ^ Regenscheid, Andrew (31 de octubre de 2019). "FIPS PUB 186-5". Instituto Nacional de Normas y Tecnología (borrador retirado). doi :10.6028/NIST.FIPS.186-5-draft. S2CID  241055751.
  25. ^ "Recomendaciones para la criptografía basada en logaritmos discretos" (PDF) .
  26. ^ John Levine (septiembre de 2018). Un nuevo método de firma criptográfica para correo identificado con claves de dominio (DKIM). IETF . doi : 10.17487/RFC8463 . RFC 8463.
  27. ^ E Rescorla (septiembre de 2018). Protocolo de seguridad de la capa de transporte (TLS) versión 1.3. IETF . doi : 10.17487/RFC8446 . RFC 8446.
  28. ^ Werner Koch (15 de abril de 2016). «Anuncio de lanzamiento de Libgcrypt 1.7.0» . Consultado el 22 de abril de 2016 .
  29. ^ abcdefg Comparación de implementaciones de SSH. "Comparación de métodos de intercambio de claves" . Consultado el 25 de febrero de 2016 .
  30. ^ "Introducción". yp.to . Consultado el 11 de diciembre de 2014 .
  31. ^ "Referencia de archivo de nettle: curve25519.h". Fossies (documentación de doxygen). Archivado desde el original el 20 de mayo de 2015. Consultado el 19 de mayo de 2015 .
  32. ^ Limitado, ARM. "Lanzamiento de PolarSSL 1.3.3 - Actualizaciones técnicas - mbed TLS (anteriormente PolarSSL)". tls.mbed.org . Consultado el 19 de mayo de 2015 . {{cite web}}: |last=tiene nombre genérico ( ayuda )
  33. ^ "Biblioteca SSL/TLS integrada wolfSSL | Productos – wolfSSL".
  34. ^ "Botan: src/lib/pubkey/curve25519/curve25519.cpp Archivo fuente". botan.randombit.net .
  35. ^ Justinha. "TLS (Schannel SSP)". docs.microsoft.com . Consultado el 15 de septiembre de 2017 .
  36. ^ Denis, Frank. "Introducción · libsodium". libsodium.org .
  37. ^ "Notas de la versión de la serie OpenSSL 1.1.0". OpenSSL Foundation . Archivado desde el original el 2018-03-17 . Consultado el 2016-06-24 .
  38. ^ "Añadir compatibilidad con ECDHE con X25519. · openbsd/src@0ad90c3". GitHub .
  39. ^ "Notas de la versión NSS 3.28". Archivado desde el original el 9 de diciembre de 2017 . Consultado el 25 de julio de 2017 .
  40. ^ "Una implementación puramente Rust de operaciones grupales en ristretto255 y Curve25519". GitHub . Consultado el 14 de abril de 2021 .
  41. ^ "Ed25519.java". GitHub . 13 de octubre de 2021.
  42. ^ Straub, Andreas (25 de octubre de 2015). "Encriptación OMEMO". conversations.im .
  43. ^ "Cryptocat - Seguridad". crypto.cat . Archivado desde el original el 7 de abril de 2016 . Consultado el 24 de mayo de 2016 .
  44. ^ Frank Denis. «Especificación del protocolo DNSCrypt versión 2». GitHub . Archivado desde el original el 13 de agosto de 2015. Consultado el 3 de marzo de 2016 .
  45. ^ Matt Johnston. "Dropbear SSH - Cambios" . Consultado el 25 de febrero de 2016 .
  46. ^ Bahtiar Gadimov; et al. "Complemento Gajim para el cifrado de objetos y mensajes multiextremo de OMEMO". GitHub . Consultado el 1 de octubre de 2016 .
  47. ^ "GNUnet 0.10.0". gnunet.org . Archivado desde el original el 9 de diciembre de 2017 . Consultado el 11 de diciembre de 2014 .
  48. ^ zzz (20 de septiembre de 2014). «Lanzamiento de la versión 0.9.15: blog» . Consultado el 20 de diciembre de 2014 .
  49. ^ "go-ipfs_keystore.go en master". Github.com. 30 de marzo de 2022.
  50. ^ "Seguridad de la plataforma Apple". Soporte técnico de Apple .
  51. ^ "MRL-0003 - Monero no es tan misterioso" (PDF) . getmonero.com . Archivado desde el original (PDF) el 2019-05-01 . Consultado el 2018-06-05 .
  52. ^ Murenin, Constantine A. (19 de enero de 2014). Soulskill (ed.). "OpenBSD avanza hacia paquetes firmados, basados ​​en DJ Bernstein Crypto". Slashdot . Consultado el 27 de diciembre de 2014 .
  53. ^ Murenin, Constantine A. (1 de mayo de 2014). timothy (ed.). "OpenBSD 5.5 Released". Slashdot . Consultado el 27 de diciembre de 2014 .
  54. ^ Friedl, Markus (29 de abril de 2014). "ssh/kex.c#kexalgs". Referencia cruzada de BSD, OpenBSD src/usr.bin/ . Consultado el 27 de diciembre de 2014 .
  55. ^ Murenin, Constantine A. (30 de abril de 2014). Soulskill (ed.). "OpenSSH ya no tiene que depender de OpenSSL". Slashdot . Consultado el 26 de diciembre de 2014 .
  56. ^ "¿Cómo implementa Peerio el cifrado de extremo a extremo?". Peerio . Archivado desde el original el 2017-12-09 . Consultado el 2015-11-04 .
  57. ^ "Proton Mail ahora ofrece criptografía de curva elíptica para una seguridad avanzada y velocidades más rápidas". 25 de abril de 2019.
  58. ^ "Registro de cambios de PuTTY". www.chiark.greenend.org.uk .
  59. ^ Steve Gibson (diciembre de 2019). "Documento técnico sobre criptografía SQRL" (PDF) .
  60. ^ "Libro blanco sobre criptografía Threema" (PDF) .
  61. ^ Roger Dingledine y Nick Mathewson. "Especificaciones del protocolo Tor - Blog" . Consultado el 20 de diciembre de 2014 .
  62. ^ "Descripción general del cifrado de Viber". Viber. 3 de mayo de 2016. Consultado el 24 de septiembre de 2016 .
  63. ^ Nidhi Rastogi; James Hendler (24 de enero de 2017). "Seguridad de WhatsApp y papel de los metadatos en la preservación de la privacidad". arXiv : 1701.06817 [cs.CR].

Enlaces externos