En criptografía , Curve25519 es una curva elíptica que ofrece 128 bits de seguridad ( tamaño de clave de 256 bits ) y está diseñada para su uso con el esquema de acuerdo de claves de curva elíptica Diffie-Hellman (ECDH). Es una de las curvas ECC más rápidas 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 Curve25519 original lo definió como una función Diffie-Hellman (DH). Desde entonces, Daniel J. Bernstein ha propuesto que se use el nombre Curve25519 para la curva subyacente y el nombre X25519 para la función DH. [4]
Propiedades matematicas
La curva utilizada es , una curva de Montgomery , sobre el campo primo definido por el número primo , y usa 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 la del grupo de curva elíptica. El uso de un subgrupo de primer orden evita montar un ataque de algoritmo de Pohlig-Hellman . [5]
El protocolo utiliza un punto elíptico comprimido (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 problemas potenciales de implementación. [7] Por diseño, es inmune a los ataques de tiempo y acepta cualquier cadena de 32 bytes como una clave pública válida y no requiere validar que un punto dado pertenece a la curva, o es generado por el punto base.
La curva es biracionalmente equivalente a una curva de Edwards retorcida utilizada en el esquema de firma Ed25519 [8] [9] . [10]
Historia
En 2005, Curve25519 fue lanzado por primera vez por Daniel J. Bernstein . [5]
En 2013, el interés comenzó a aumentar considerablemente cuando se descubrió que la NSA había implementado potencialmente una puerta trasera en Dual_EC_DRBG . [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 parte del cifrado en Internet (2013)
Desde 2013, Curve25519 se ha convertido en la alternativa de facto al P-256, y se utiliza en una amplia variedad de aplicaciones. [17] A partir de 2014, OpenSSH [18] utiliza por defecto ECDH basado en Curve25519 . El comportamiento del protocolo SSH general todavía se está estandarizando a partir de 2018. [19]
En 2017, 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 el gobierno federal de EE. UU. [20] Ambos se describen en "RFC 7748". [21] Un borrador de 2019 de "FIPS 186-5" confirma esta afirmación. [22]
En 2018, se modificó la especificación DKIM para permitir firmas con este algoritmo. [23]
También en 2018, RFC 8446 se publicó como el nuevo estándar Transport Layer Security v1.3 . Requiere soporte obligatorio para los algoritmos X25519 , Ed25519 , X448 y Ed448 . [24]
Bibliotecas
- Libgcrypt [25]
- libssh [18] [26]
- libssh2 (desde la versión 1.9.0)
- NaCl [27]
- GnuTLS [28]
- mbed TLS (anteriormente PolarSSL) [29]
- wolfSSL [30]
- Botan [31]
- SCanal [a] [32]
- Libodio [33]
- OpenSSL desde la versión 1.1.0 [34]
- LibreSSL [35]
- NaCl para Tcl: un puerto para el idioma Tcl. [36] [se necesita una fuente de terceros ]
- NSS desde la versión 3.28 [37]
- Cripto ++
- curve25519-dalek [38]
- Castillo hinchable [39]
Protocolos
- OMEMO , una extensión propuesta para XMPP (Jabber) [40]
- Cubierta segura
- Protocolo de señal
- Matriz (protocolo)
- Tox
- Zcash
- Transport Layer Security
- Wireguard
Aplicaciones
- Aplicación de Android Conversaciones [b]
- Cryptocat [41] [b]
- DNSCrypt [42]
- DNSCurve
- Dropbear [26] [43]
- Facebook Messenger [c] [d]
- Gajim a través del complemento [44] [b]
- GNUnet [45]
- GnuPG
- Google Allo [e] [d]
- I2P [46]
- IPFS [47]
- iOS [48]
- Monero [49]
- OpenBSD [f]
- OpenSSH [26] [g]
- Peerio [54]
- ProtonMail [55]
- PuTTY [56]
- Señal [d]
- Teléfono silencioso
- SmartFTP [26]
- SSHJ [26]
- SQRL [57]
- Mensajería instantánea Threema [58]
- TinySSH [26]
- TinyTERM [26]
- Tor [59]
- Viber [60]
- WhatsApp [d] [61]
- Cable
- WireGuard
Notas
- ^ A partir de Windows 10 (1607), Windows Server 2016
- ^ a b c A través del protocolo OMEMO
- ^ Solo en "conversaciones secretas"
- ^ a b c d A través del protocolo de señales
- ^ Solo en "modo incógnito"
- ^ Se utiliza para firmar comunicados y paquetes [50] [51]
- ^ Intercambio de claves exclusivo en OpenSSH 6.7 cuando se compila sin OpenSSL . [52] [53]
Referencias
- ^ Bernstein. "Patentes irrelevantes sobre criptografía de curva elíptica" . cr.yp.to . Consultado el 8 de febrero de 2016 .
- ^ 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".
- ^ "X25519" . Crypto ++ . 5 de marzo de 2019. Archivado desde el original el 29 de agosto de 2020 . Consultado el 29 de agosto de 2020 .
- ^ "[Cfrg] 25519 denominación" . Consultado el 25 de febrero de 2016 .
- ^ a b Bernstein, Daniel J. (2006). Yung, Moti; Dodis, Yevgeniy; Kiayias, Aggelos; et al. (eds.). Curve25519: Nuevos récords de velocidad Diffie-Hellman (PDF) . Criptografía de clave pública. Apuntes de conferencias en informática. 3958 . Nueva York: Springer. págs. 207–228. doi : 10.1007 / 11745853_14 . ISBN 978-3-540-33851-2. Señor 2423191 .
- ^ Lange, Tanja . "EFD / Genus-1 gran característica / coordenadas XZ para curvas de Montgomery" . Base de datos EFD / fórmulas explícitas . Consultado el 8 de febrero de 2016 .
- ^ "SafeCurves: Introducción" . safecurves.cr.yp.to . Consultado el 8 de febrero de 2016 .
- ^ Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin Yang (22 de enero de 2017). "Ed25519: firmas de alta seguridad de alta velocidad" . Consultado el 9 de noviembre de 2019 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin Yang (26 de septiembre de 2011). "Firmas de alta seguridad de alta velocidad" (PDF) . Consultado el 9 de noviembre de 2019 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ 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 .
- ^ Kelsey, John (mayo de 2014). "Dual EC en X9.82 y SP 800-90" (PDF) . Instituto Nacional de Estándares en Tecnología . Consultado el 2 de diciembre de 2018 .
- ^ Green, Matthew (14 de enero de 2015). "Algunas reflexiones sobre la ingeniería criptográfica: los muchos defectos de Dual_EC_DRBG" . blog.cryptographyengineering.com . Consultado el 20 de mayo de 2015 .
- ^ https://safecurves.cr.yp.to/
- ^ Maxwell, Gregory (8 de septiembre de 2013). "[Tor-talk] ¿Criptografía aprobada por el NIST en Tor?" . Consultado el 20 de mayo de 2015 .
- ^ "SafeCurves: rigidez" . safecurves.cr.yp.to . Consultado el 20 de mayo de 2015 .
- ^ "La NSA está rompiendo la mayoría del cifrado en Internet - Schneier sobre seguridad" . www.schneier.com . Consultado el 20 de mayo de 2015 .
- ^ "Cosas que usan Curve25519" . Consultado el 23 de diciembre de 2015 .
- ^ a b Adamantiadis, Aris (3 de noviembre de 2013). "¡OpenSSH presenta el intercambio de claves [email protected]!" . libssh.org . Consultado el 27 de diciembre de 2014 .
- ^ A. Adamantiadis; libssh; S. Josefsson; SJD AB; M. Baushke; Juniper Networks, Inc. (26 de junio de 2018). Método de intercambio de claves Secure Shell (SSH) utilizando Curve25519 y Curve448 . ID borrador-ietf-curdle-ssh-curves-08.
- ^ División de Seguridad Informática, Laboratorio de Tecnología de la Información (2017-10-31). "Planes de transición para esquemas de establecimiento clave | CSRC" . CSRC | NIST . Consultado el 4 de septiembre de 2019 .
- ^ RFC 7748. Obtenido de https://tools.ietf.org/html/rfc7748 .
- ^ FIPS 186-5. Obtenido de https://csrc.nist.gov/publications/detail/fips/186/5/draft .
- ^ John Levine (septiembre de 2018). Un nuevo método de firma criptográfica para el correo identificado con DomainKeys (DKIM) . IETF . doi : 10.17487 / RFC8463 . RFC 8463 .
- ^ 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 .
- ^ Werner Koch (15 de abril de 2016). "Anuncio de lanzamiento de Libgcrypt 1.7.0" . Consultado el 22 de abril de 2016 .
- ^ a b c d e f g Comparación de implementación SSH. "Comparación de métodos de intercambio de claves" . Consultado el 25 de febrero de 2016 .
- ^ "Introducción" . yp.to . Consultado el 11 de diciembre de 2014 .
- ^ "ortiga: curve25519.h Archivo de referencia - documentación de Doxygen | Fossies Dox" . fossies.org . Archivado desde el original el 20 de mayo de 2015 . Consultado el 19 de mayo de 2015 .
- ^ Limitado, BRAZO. "PolarSSL 1.3.3 lanzado - Actualizaciones técnicas - mbed TLS (anteriormente PolarSSL)" . tls.mbed.org . Consultado el 19 de mayo de 2015 .
- ^ "WolfSSL Embedded SSL / TLS Library - WolfSSL Products" .
- ^ "Botan: src / lib / pubkey / curve25519 / curve25519.cpp Archivo fuente" . botan.randombit.net .
- ^ Justinha. "TLS (Schannel SSP)" . docs.microsoft.com . Consultado el 15 de septiembre de 2017 .
- ^ Denis, Frank. "Introducción · libsodium" . libsodium.org .
- ^ Inc., Fundación OpenSSL. "OpenSSL" . www.openssl.org . Consultado el 24 de junio de 2016 .
- ^ "Agregue soporte para ECDHE con X25519. · Openbsd / src @ 0ad90c3" . GitHub .
- ^ "Wiki de Tclers - NaCl para Tcl" .
- ^ "Notas de la versión de NSS 3.28" . Consultado el 25 de julio de 2017 .
- ^ "Una implementación de pure-Rust de operaciones grupales en ristretto255 y Curve25519" . Consultado el 14 de abril de 2021 .
- ^ "Ed25519.java" . GitHub .
- ^ Straub, Andreas (25 de octubre de 2015). "Cifrado OMEMO" . conversaciones.im .
- ^ "Cryptocat - Seguridad" . crypto.cat . Archivado desde el original el 7 de abril de 2016 . Consultado el 24 de mayo de 2016 .
- ^ Frank Denis. "Especificación del protocolo DNSCrypt versión 2" . Archivado desde el original el 13 de agosto de 2015 . Consultado el 3 de marzo de 2016 .
- ^ Matt Johnston. "Dropbear SSH - Cambios" . Consultado el 25 de febrero de 2016 .
- ^ Bahtiar Gadimov; et al. "Complemento de Gajim para el cifrado de objetos y mensajes de varios extremos de OMEMO" . Consultado el 1 de octubre de 2016 .
- ^ "GNUnet 0.10.0" . gnunet.org . Consultado el 11 de diciembre de 2014 .
- ^ zzz (20 de septiembre de 2014). "Versión 0.9.15 - Blog" . Consultado el 20 de diciembre de 2014 .
- ^ "go-ipfs_keystore.go en el maestro" . Github.com.
- ^ "Guía de seguridad de iOS" (PDF) .
- ^ "MRL-0003 - Monero no es tan misterioso" (PDF) . getmonero.com . Archivado desde el original (PDF) el 2019-05-01 . Consultado el 5 de junio de 2018 .
- ^ Murenin, Constantine A. (19 de enero de 2014). Soulskill (ed.). "OpenBSD avanzando hacia paquetes firmados - basado en DJ Bernstein Crypto" . Slashdot . Consultado el 27 de diciembre de 2014 .
- ^ Murenin, Constantine A. (1 de mayo de 2014). timothy (ed.). "OpenBSD 5.5 lanzado" . Slashdot . Consultado el 27 de diciembre de 2014 .
- ^ Friedl, Markus (29 de abril de 2014). "ssh / kex.c # kexalgs" . Referencia cruzada BSD, OpenBSD src / usr.bin / . Consultado el 27 de diciembre de 2014 .
- ^ 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 .
- ^ "¿Cómo implementa Peerio el cifrado de extremo a extremo?" . Peerio .
- ^ "ProtonMail ahora ofrece criptografía de curva elíptica para seguridad avanzada y velocidades más rápidas" .
- ^ "Registro de cambios de PuTTY" . www.chiark.greenend.org.uk .
- ^ Steve Gibson (diciembre de 2019). "Documento técnico sobre criptografía SQRL" (PDF) .
- ^ "Documento técnico sobre criptografía de Threema" (PDF) .
- ^ Roger Dingledine y Nick Mathewson. "Especificaciones del protocolo de Tor - Blog" . Consultado el 20 de diciembre de 2014 .
- ^ "Descripción general del cifrado de Viber" . Viber. 3 de mayo de 2016 . Consultado el 24 de septiembre de 2016 .
- ^ 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 . Código bibliográfico : 2017arXiv170106817R . Cite journal requiere
|journal=
( ayuda )
enlaces externos
- Página web oficial