Diffie-Hellman de curva elíptica ( ECDH ) es un protocolo de acuerdo de claves que permite a dos partes, cada una con un par de claves pública-privada de curva elíptica , establecer un secreto compartido a través de un canal inseguro . [1] [2] [3] Este secreto compartido puede usarse directamente como clave o para derivar otra clave . La clave, o la clave derivada, se puede utilizar para cifrar las comunicaciones posteriores mediante un cifrado de clave simétrica . Es una variante del protocolo Diffie-Hellman que utiliza criptografía de curva elíptica .
Protocolo de establecimiento de claves
El siguiente ejemplo ilustra cómo se establece una clave compartida. Suponga que Alice quiere establecer una clave compartida con Bob , pero el único canal disponible para ellos puede ser escuchado por un tercero. Inicialmente, los parámetros de dominio (es decir, en el caso principal o en el caso binario) deben acordarse. Además, cada parte debe tener un par de claves adecuado para la criptografía de curva elíptica, que consta de una clave privada. (un número entero seleccionado al azar en el intervalo ) y una clave pública representada por un punto (dónde , es decir, el resultado de sumar a sí mismo veces). Deja que el par de llaves de Alice sea y el par de claves de Bob sea . Cada parte debe conocer la clave pública de la otra parte antes de la ejecución del protocolo.
Alice calcula el punto . Bob calcula el punto. El secreto compartido es(la coordenada x del punto). La mayoría de los protocolos estandarizados basados en ECDH derivan una clave simétrica de utilizando alguna función de derivación de claves basada en hash.
El secreto compartido calculado por ambas partes es igual, porque .
La única información sobre su clave que Alice expone inicialmente es su clave pública. Por lo tanto, ninguna parte, incluida Alice, puede determinar la clave privada de Alice (Alice, por supuesto, lo sabe al haberla seleccionado), a menos que esa parte pueda resolver el problema del logaritmo discreto de la curva elíptica . La clave privada de Bob es igualmente segura. Ninguna otra parte que no sea Alice o Bob puede calcular el secreto compartido, a menos que esa parte pueda resolver el problema de la curva elíptica Diffie-Hellman .
Las claves públicas son estáticas (y de confianza, digamos a través de un certificado) o efímeras (también conocidas como ECDHE , donde la 'E' final significa "efímera"). Las claves efímeras son temporales y no necesariamente están autenticadas, por lo que si se desea la autenticación, las garantías de autenticidad deben obtenerse por otros medios. La autenticación es necesaria para evitar ataques man-in-the-middle . Si una de las claves públicas de Alice o Bob es estática, los ataques de intermediario se frustran. Las claves públicas estáticas no brindan secreto hacia adelante ni resistencia a la suplantación de clave comprometida, entre otras propiedades de seguridad avanzadas. Los titulares de claves privadas estáticas deben validar la otra clave pública y deben aplicar una función de derivación de clave segura al secreto compartido Diffie-Hellman sin procesar para evitar filtrar información sobre la clave privada estática. Para esquemas con otras propiedades de seguridad, consulte MQV .
Si Alice elige maliciosamente puntos de curva no válidos para su clave y Bob no valida que los puntos de Alice son parte del grupo seleccionado, ella puede recopilar suficientes residuos de la clave de Bob para derivar su clave privada. Se descubrió que varias bibliotecas TLS eran vulnerables a este ataque. [4]
Si bien el secreto compartido se puede utilizar directamente como clave, puede ser conveniente realizar un hash del secreto para eliminar los bits débiles debido al intercambio Diffie-Hellman.
Software
- Curve25519 es un conjunto popular de parámetros de la curva elíptica y la aplicación de referencia por Daniel J. Bernstein en C . También se encuentran disponibles enlaces e implementaciones alternativas.
- La aplicación de mensajería LINE ha utilizado el protocolo ECDH para su cifrado de extremo a extremo "Sellado de letras" de todos los mensajes enviados a través de dicha aplicación desde octubre de 2015. [5]
- Signal Protocol utiliza ECDH para obtener seguridad posterior al compromiso. Las implementaciones de este protocolo se encuentran en Signal , WhatsApp , Facebook Messenger y Skype .
Ver también
Referencias
- ^ NIST, publicación especial 800-56A, recomendación para esquemas de establecimiento de claves por pares que utilizan criptografía de logaritmo discreto , marzo de 2006.
- ^ Investigación de Certicom, Estándares para criptografía eficiente, SEC 1: Criptografía de curva elíptica , versión 2.0, 21 de mayo de 2009.
- ^ Criptografía de NSA Suite B, Guía de implementadores de Suite B para NIST SP 800-56A Archivado 2016-03-06 en Wayback Machine , 28 de julio de 2009.
- ^ Tibor Jager; Jorg Schwenk; Juraj Somorovsky (4 de septiembre de 2015). "Prácticos ataques de curvas no válidas en TLS-ECDH" (PDF) . Simposio Europeo de Investigación en Seguridad Informática (ESORICS'15) .
- ^ JI (13 de octubre de 2015). "Nueva generación de mensajería segura:" Sellado de letras " " . Blog de ingenieros de LINE . LINE Corporation . Consultado el 5 de febrero de 2018 .