
El intercambio de claves Diffie-Hellman ( DH ) [ nb 1 ] es un método matemático para generar de forma segura una clave criptográfica simétrica a través de un canal público y fue uno de los primeros protocolos concebidos por Ralph Merkle y nombrados en honor a Whitfield Diffie y Martin Hellman . [ 1 ] DH es uno de los primeros ejemplos prácticos de intercambio de clave pública implementados en el campo de la criptografía. Publicado en 1976 por Diffie y Hellman, este es el primer trabajo conocido públicamente que propuso la idea de una clave privada y una clave pública correspondiente.
Tradicionalmente, la comunicación cifrada segura entre dos partes requería que primero intercambiaran claves mediante algún medio físico seguro, como listas de claves en papel transportadas por un mensajero de confianza . El método de intercambio de claves Diffie-Hellman permite que dos partes que no se conocen previamente establezcan conjuntamente una clave secreta compartida a través de un canal inseguro . Esta clave se puede utilizar posteriormente para cifrar las comunicaciones subsiguientes mediante un cifrado de clave simétrica .
Diffie-Hellman se utiliza para proteger diversos servicios de Internet . Sin embargo, una investigación publicada en octubre de 2015 sugiere que los parámetros utilizados en muchas aplicaciones de Internet DH en ese momento no eran lo suficientemente robustos como para evitar ataques con recursos muy elevados, como los servicios de seguridad de algunos países. [ 2 ]
El esquema fue publicado por Whitfield Diffie y Martin Hellman en 1976, [ 3 ] pero en 1997 se reveló que James H. Ellis , [ 4 ] Clifford Cocks y Malcolm J. Williamson del GCHQ , la agencia británica de inteligencia de señales, habían demostrado previamente en 1969 [ 5 ] cómo se podía lograr la criptografía de clave pública. [ 6 ]
Aunque el intercambio de claves Diffie-Hellman es un protocolo de acuerdo de claves no autenticado , constituye la base de diversos protocolos autenticados y se utiliza para proporcionar confidencialidad directa en los modos efímeros de Transport Layer Security (conocidos como EDH o DHE, según el conjunto de cifrado). La confidencialidad directa se logra mediante el uso de claves efímeras: las claves privadas se descartan una vez completado el acuerdo de claves, lo que las protege de compromisos posteriores. Las claves efímeras son prácticas porque la creación de pares de claves públicas y privadas compatibles con el intercambio Diffie-Hellman es computacionalmente económica.
Poco después, este método fue seguido por el criptosistema RSA , una implementación de criptografía de clave pública que utiliza algoritmos asimétricos.
La patente estadounidense caducada 4200770 [ 7 ] de 1977 describe el algoritmo que ahora es de dominio público. Atribuye la invención a Hellman, Diffie y Merkle.
Nombre
En 2006, Hellman sugirió que el algoritmo se llamara intercambio de claves Diffie-Hellman-Merkle en reconocimiento a la contribución de Ralph Merkle a la invención de la criptografía de clave pública (Hellman, 2006), escribiendo:
El sistema... se conoce desde entonces como intercambio de claves Diffie-Hellman. Si bien este sistema fue descrito por primera vez en un artículo de Diffie y mío, se trata de un sistema de distribución de clave pública, un concepto desarrollado por Merkle, y por lo tanto debería llamarse «intercambio de claves Diffie-Hellman-Merkle» si se quiere asociar un nombre con él. Espero que esta pequeña plataforma pueda contribuir a reconocer la igual contribución de Merkle a la invención de la criptografía de clave pública. [ 8 ]
Descripción
Descripción general

El intercambio de claves Diffie-Hellman establece un secreto compartido entre dos partes que puede utilizarse para la comunicación segura y el intercambio de datos a través de una red pública. Una analogía ilustra el concepto de intercambio de claves públicas utilizando colores en lugar de números muy grandes:
El proceso comienza con Alice y Bob , quienes acuerdan públicamente un color inicial cualquiera que no necesita mantenerse en secreto. En este ejemplo, el color es amarillo. Cada persona también elige un color secreto que guarda para sí misma; en este caso, rojo y cian. La parte crucial del proceso consiste en que Alice y Bob mezclan su color secreto con el color que compartieron, obteniendo así mezclas de naranja-marrón y azul claro, respectivamente. Luego, intercambian públicamente las dos mezclas. Finalmente, cada uno mezcla el color que recibió de su compañero con su propio color privado. El resultado es una mezcla final (amarillo-marrón en este caso) idéntica a la mezcla final de su compañero.
Si un tercero escuchara la conversación, solo conocería el color común (amarillo) y los primeros colores mezclados (naranja-marrón y azul claro), pero le sería muy difícil descubrir el color secreto final (amarillo-marrón). Volviendo a la analogía con una conversación real usando números grandes en lugar de colores, esta determinación es computacionalmente costosa; es imposible calcularla en un tiempo razonable incluso para las supercomputadoras modernas .
Explicación criptográfica
La implementación más simple y original, [ 3 ] formalizada posteriormente como Diffie-Hellman de Campo Finito en RFC 7919, [ 9 ] del protocolo utiliza el grupo multiplicativo de enteros módulo p , donde p es primo y g es una raíz primitiva módulo p . Para protegerse contra posibles vulnerabilidades, se recomienda utilizar números primos de al menos 2048 bits de longitud. Esto aumenta la dificultad para un adversario que intente calcular el logaritmo discreto y comprometer el secreto compartido. Estos dos valores se eligen de esta manera para asegurar que el secreto compartido resultante pueda tomar cualquier valor de 1 a p − 1. Aquí hay un ejemplo del protocolo, con valores no secretos en azul y valores secretos en rojo .
- Alice y Bob acuerdan públicamente usar un módulo p = 23 y una base g = 5 (que es una raíz primitiva módulo 23).
- Alice elige un número entero secreto a = 4, luego le envía a Bob A = g a mod p
- A = 5 4 mod 23 = 4 (en este ejemplo, tanto A como a tienen el mismo valor 4, pero esto no suele ser así).
- Bob elige un número entero secreto b = 3, luego le envía a Alice B = g b mod p
- B = 5 3 mod 23 = 10
- Alice calcula s = B a mod p
- s =10 4 mod23= 18
- Bob calcula s = A b mod p
- s =4 3 mod23= 18
- Alice y Bob ahora comparten un secreto (el número 18).
Tanto Alice como Bob han llegado a los mismos valores porque bajo el módulo p ,
Más específicamente,
Solo a y b se mantienen en secreto. Todos los demás valores —p , g , g a mod p y g b mod p— se envían en texto plano. La solidez del esquema radica en que calcular g ab mod p = g ba mod p requiere muchísimo tiempo con cualquier algoritmo clásico conocido, solo conociendo p , g , g a mod p y g b mod p . Una función de este tipo, fácil de calcular pero difícil de invertir, se denomina función unidireccional . Una vez que Alice y Bob calculan el secreto compartido, pueden usarlo como clave de cifrado, conocida solo por ellos, para enviar mensajes a través del mismo canal de comunicación abierto.
Por supuesto, se necesitarían valores mucho mayores de a , b y p para que este ejemplo fuera seguro, ya que solo hay 23 resultados posibles de n mod 23. Sin embargo, si p es un primo de al menos 600 dígitos, entonces incluso las computadoras modernas más rápidas que utilizan el algoritmo más rápido conocido no pueden encontrar a dados solo g , p y g a mod p . Este problema se llama el problema del logaritmo discreto . [ 2 ] El cálculo de g a mod p se conoce como exponenciación modular y se puede realizar de manera eficiente incluso para números grandes. Nótese que g no tiene por qué ser grande en absoluto, y en la práctica suele ser un entero pequeño (como 2, 3, ...).
Tabla de confidencialidad
El siguiente gráfico muestra quién sabe qué, con los valores no secretos en azul y los secretos en rojo . En este caso, Eve es una espía : observa lo que se envían Alice y Bob, pero no altera el contenido de sus comunicaciones.
- g , base pública (raíz primitiva), conocida por Alice, Bob y Eve. g = 5
- p , módulo público (primo), conocido por Alice, Bob y Eve. p = 23
- a , la clave privada de Alice, conocida solo por Alice. a = 6
- b , la clave privada de Bob, conocida solo por Bob. b = 15
- A , la clave pública de Alice, conocida por Alice, Bob y Eve. A = g a mod p = 8
- B , la clave pública de Bob, conocida por Alice, Bob y Eve. B = g b mod p = 19
Ahora bien, s es la clave secreta compartida y la conocen tanto Alice como Bob, pero no Eve. Nótese que no le resulta útil a Eve calcular AB , que es igual a g a + b mod p .
Nota: Debe ser difícil para Alice descifrar la clave privada de Bob, o para Bob descifrar la clave privada de Alice. Si no es difícil para Alice descifrar la clave privada de Bob (o viceversa), entonces un espía, Eve , puede simplemente sustituir su propio par de claves pública/privada, insertar la clave pública de Bob en su clave privada, generar una clave secreta compartida falsa y descifrar la clave privada de Bob (y usarla para descifrar la clave secreta compartida). Eve puede intentar elegir un par de claves pública/privada que le facilite descifrar la clave privada de Bob.
Generalización a grupos cíclicos finitos
Aquí hay una descripción más general del protocolo: [ 10 ]
- Alice y Bob acuerdan un número natural n y un elemento generador g en el grupo cíclico finito G de orden n . (Esto suele hacerse mucho antes que el resto del protocolo; se supone que todos los atacantes conocen g y n ). El grupo G se escribe multiplicativamente.
- Alice elige un número natural aleatorio a tal que 1 < a < n , y envía el elemento g a de G a Bob.
- Bob elige un número natural aleatorio b con 1 < b < n , y envía el elemento g b de G a Alice.
- Alice calcula el elemento ( g b ) a = g ba de G.
- Bob calcula el elemento ( g a ) b = g ab de G.
Tanto Alice como Bob poseen ahora el elemento de grupo g ab = g ba , que puede servir como clave secreta compartida. El grupo G satisface la condición requerida para una comunicación segura siempre que no exista un algoritmo eficiente para determinar g ab dados g , g a y g b .
Por ejemplo, el protocolo Diffie-Hellman de curva elíptica es una variante que representa un elemento de G como un punto en una curva elíptica en lugar de como un entero módulo n. También se han propuesto variantes que utilizan curvas hiperelípticas . El intercambio de claves de isogenia supersingular es una variante de Diffie-Hellman que se diseñó para ser segura contra computadoras cuánticas , pero fue vulnerada en julio de 2022. [ 11 ]
Claves efímeras y/o estáticas
Las claves utilizadas pueden ser efímeras o estáticas (de larga duración), o incluso mixtas, lo que se conoce como DH semiestático. Estas variantes tienen propiedades diferentes y, por lo tanto, casos de uso distintos. Una descripción general de muchas variantes y algunos análisis se pueden encontrar, por ejemplo, en NIST SP 800-56A. [ 12 ] Una lista básica:
- efímero, efímero: Generalmente se usa para acuerdos clave. Proporciona secreto hacia adelante , pero no autenticidad .
- estático, estático: Generaría un secreto compartido a largo plazo. No proporciona confidencialidad directa, pero sí autenticidad implícita. Dado que las claves son estáticas, por ejemplo, no protegería contra ataques de repetición .
- Efímero, estático: Por ejemplo, se utiliza en el cifrado ElGamal o en el Esquema de Cifrado Integrado (IES) . Si se utiliza en el intercambio de claves, podría proporcionar autenticidad unilateral implícita (el lado efímero podría verificar la autenticidad del lado estático). No proporciona confidencialidad directa.
Es posible utilizar claves efímeras y estáticas en un mismo acuerdo de claves para proporcionar mayor seguridad, como se muestra, por ejemplo, en NIST SP 800-56A, pero también es posible combinarlas en un único intercambio de claves DH, que entonces se denomina triple DH (3-DH).
Triple Diffie–Hellman (3-DH)
En 1997, Simon Blake-Wilson, Don Johnson y Alfred Menezes propusieron una especie de triple DH, [ 13 ] que fue mejorada por C. Kudla y KG Paterson en 2005 [ 14 ] y se demostró que era segura.
Las claves secretas a largo plazo de Alice y Bob se denotan por a y b respectivamente, con claves públicas A y B , así como los pares de claves efímeras ( x , X ) y ( y , Y ). Entonces, el protocolo es:
Las claves públicas a largo plazo deben transferirse de alguna manera. Esto puede hacerse previamente en un canal separado y seguro, o bien las claves públicas pueden cifrarse mediante un acuerdo de clave parcial para preservar el anonimato. Para obtener más detalles, así como otras mejoras como la protección contra canales laterales o la confirmación explícita de claves , además de mensajes anticipados y autenticación de contraseñas adicional, consulte, por ejemplo, la patente estadounidense «Advanced modular handshake for key agreement and optional authentication». [ 15 ]
Diffie-Hellman triple extendido (X3DH)
X3DH se propuso inicialmente como parte del algoritmo Double Ratchet utilizado en el protocolo Signal . El protocolo ofrece confidencialidad directa y negabilidad criptográfica. Opera sobre una curva elíptica. [ 16 ]
El protocolo utiliza cinco claves públicas. Alice tiene una clave de identidad IK A y una clave efímera EK A. Bob tiene una clave de identidad IK B , una preclave firmada SPK B y una preclave de un solo uso OPK B. [ 16 ] Bob primero publica sus tres claves en un servidor, que Alice descarga y verifica la firma. Luego, Alice inicia el intercambio con Bob. [ 16 ] La OPK es opcional. [ 16 ]
Operación con más de dos partes
El acuerdo de clave Diffie-Hellman no se limita a negociar una clave compartida por solo dos participantes. Cualquier número de usuarios puede participar en un acuerdo realizando iteraciones del protocolo de acuerdo e intercambiando datos intermedios (que no necesitan mantenerse en secreto). Por ejemplo, Alice, Bob y Carol podrían participar en un acuerdo Diffie-Hellman de la siguiente manera, considerando todas las operaciones como módulo p :
- Las partes acuerdan los parámetros del algoritmo p y g .
- Las partes generan sus claves privadas, denominadas a , b y c .
- Alice calcula g mod p y se lo envía a Bob.
- Bob calcula ( g a ) b mod p = g ab mod p y se lo envía a Carol.
- Carol calcula ( g ab ) c mod p = g abc mod p y lo usa como su secreto.
- Bob calcula g b mod p y se lo envía a Carol.
- Carol calcula ( g b ) c mod p = g bc mod p y se lo envía a Alice.
- Alice calcula ( g bc ) a mod p = g bca mod p = g abc mod p y lo usa como su secreto.
- Carol calcula g c mod p y se lo envía a Alice.
- Alice calcula ( g c ) a mod p = g ca mod p y se lo envía a Bob.
- Bob calcula ( g ca ) b mod p = g cab mod p = g abc mod p y lo usa como su secreto.
Un espía ha podido ver g a mod p , g b mod p , g c mod p , g ab mod p , g ac mod p y g bc mod p , pero no puede usar ninguna combinación de estos para reproducir eficientemente g abc mod p .
Para extender este mecanismo a grupos más grandes, deben seguirse dos principios básicos:
- Partiendo de una clave "vacía" que consiste únicamente en g , el secreto se crea elevando el valor actual al exponente privado de cada participante una vez, en cualquier orden (la primera de estas exponenciaciones produce la clave pública del propio participante).
- Cualquier valor intermedio (con hasta N − 1 exponentes aplicados, donde N es el número de participantes en el grupo) puede revelarse públicamente, pero el valor final (con los N exponentes aplicados) constituye el secreto compartido y, por lo tanto, nunca debe revelarse públicamente. Así, cada usuario debe obtener su copia del secreto aplicando su propia clave privada al final (de lo contrario, el último colaborador no tendría forma de comunicar la clave final a su destinatario, ya que la habría convertido en el secreto que el grupo deseaba proteger).
Estos principios dejan abiertas diversas opciones para elegir el orden en que los participantes contribuyen a las claves. La solución más sencilla y obvia consiste en disponer a los N participantes en círculo y hacer que N claves roten alrededor del círculo, hasta que finalmente cada clave haya sido aportada por los N participantes (terminando con su propietario) y cada participante haya contribuido a N claves (terminando con la suya propia). Sin embargo, esto requiere que cada participante realice N exponenciaciones modulares.
Al elegir un orden más deseable y basándose en el hecho de que las claves se pueden duplicar, es posible reducir el número de exponenciaciones modulares realizadas por cada participante a log 2 ( N ) + 1 utilizando un enfoque de estilo divide y vencerás , que se presenta aquí para ocho participantes:
- Los participantes A, B, C y D realizan cada uno una exponenciación, obteniendo g abcd ; este valor se envía a E, F, G y H. A cambio, los participantes A, B, C y D reciben g efgh .
- Los participantes A y B realizan cada uno una exponenciación, obteniendo g efghab , que envían a C y D, mientras que C y D hacen lo mismo, obteniendo g efghcd , que envían a A y B.
- El participante A realiza una exponenciación, obteniendo g efghcda , que envía a B; de manera similar, B envía g efghcdb a A. C y D hacen lo mismo.
- El participante A realiza una exponenciación final, obteniendo el secreto g efghcdba = g abcdefgh , mientras que B hace lo mismo para obtener g efghcdab = g abcdefgh ; nuevamente, C y D hacen algo similar.
- Los participantes E a H realizan simultáneamente las mismas operaciones utilizando g abcd como punto de partida.
Una vez completada esta operación, todos los participantes poseerán el secreto g abcdefgh , pero cada participante habrá realizado solo cuatro exponenciaciones modulares, en lugar de las ocho que implicaría una disposición circular simple.
Consideraciones de seguridad y prácticas
El protocolo se considera seguro frente a intrusos si G y g se eligen adecuadamente. En particular, el orden del grupo G debe ser grande, especialmente si se utiliza el mismo grupo para grandes cantidades de tráfico. El intruso debe resolver el problema de Diffie-Hellman para obtener g ab . Actualmente, esto se considera difícil para grupos cuyo orden es suficientemente grande. Un algoritmo eficiente para resolver el problema del logaritmo discreto facilitaría el cálculo de a o b y la resolución del problema de Diffie-Hellman, lo que haría que este y muchos otros criptosistemas de clave pública fueran inseguros. Los campos de característica pequeña pueden ser menos seguros. [ 17 ]
El orden de G debe tener un factor primo grande para evitar el uso del algoritmo de Pohlig-Hellman para obtener a o b . Por esta razón, a veces se usa un primo de Sophie Germain q para calcular p = 2q + 1 , llamado primo seguro , ya que el orden de G es entonces solo divisible por 2 y q . A veces se elige g para generar el subgrupo de orden q de G , en lugar de G , de modo que el símbolo de Legendre de g a nunca revele el bit de orden bajo de a . Un protocolo que utiliza tal elección es, por ejemplo, IKEv2 . [ 18 ]
El generador g suele ser un número entero pequeño, como el 2. Debido a la autorreducción aleatoria del problema del logaritmo discreto, un g pequeño es igual de seguro que cualquier otro generador del mismo grupo.
Si Alice y Bob utilizan generadores de números aleatorios cuyos resultados no son completamente aleatorios y pueden predecirse hasta cierto punto, entonces es mucho más fácil espiar sus conversaciones.
En la descripción original, el intercambio Diffie-Hellman por sí solo no proporciona autenticación de las partes comunicantes y puede ser vulnerable a un ataque de intermediario (man-in-the-middle) . Mallory (una atacante activa que ejecuta el ataque de intermediario) puede establecer dos intercambios de claves distintos, uno con Alice y otro con Bob, haciéndose pasar por Alice ante Bob, y viceversa, lo que le permite descifrar y volver a cifrar los mensajes que se transmiten entre ellos. Cabe destacar que Mallory debe estar presente desde el principio y permanecer en el medio, descifrando y volviendo a cifrar activamente los mensajes cada vez que Alice y Bob se comunican. Si llega después de que se hayan generado las claves y la conversación cifrada entre Alice y Bob ya haya comenzado, el ataque no puede tener éxito. Si alguna vez está ausente, su presencia previa se revela a Alice y Bob. Sabrán que todas sus conversaciones privadas han sido interceptadas y descifradas por alguien en el canal. En la mayoría de los casos, esto no les ayudará a obtener la clave privada de Mallory, incluso si ella usó la misma clave para ambos intercambios.
Generalmente, se necesita un método para autenticar a las partes que se comunican entre sí para prevenir este tipo de ataques. En su lugar, se pueden utilizar variantes de Diffie-Hellman, como el protocolo STS , para evitar este tipo de ataques.
Ataque de denegación de servicio
Una CVE publicada en 2021 ( CVE-2002-20001 ) reveló un ataque de denegación de servicio (DoS) contra las variantes del protocolo que utilizan claves efímeras, llamado ataque D(HE)at. [ 19 ] El ataque explota que el intercambio de claves Diffie-Hellman permite a los atacantes enviar números arbitrarios que en realidad no son claves públicas, lo que desencadena costosos cálculos de exponenciación modular en el lado de la víctima. Otra publicación de CVE reveló que las implementaciones del intercambio de claves Diffie-Hellman pueden usar exponentes privados largos ( CVE-2022-40735 ) que posiblemente hacen que los cálculos de exponenciación modular sean innecesariamente costosos [ 20 ] o pueden verificar innecesariamente la clave pública de un par ( CVE-2024-41996 ) que tiene un requisito de recursos similar al cálculo de clave usando un exponente largo. [ 21 ] Un atacante puede explotar ambas vulnerabilidades juntas.
Ataques prácticos al tráfico de Internet
El algoritmo de criba de campos numéricos , que generalmente es el más efectivo para resolver el problema del logaritmo discreto , consta de cuatro pasos computacionales. Los tres primeros pasos solo dependen del orden del grupo G, no del número específico cuyo logaritmo finito se desea. [ 22 ] Resulta que gran parte del tráfico de Internet utiliza uno de un puñado de grupos que son de orden 1024 bits o menos. [ 2 ] Al precalcular los tres primeros pasos de la criba de campos numéricos para los grupos más comunes, un atacante solo necesita realizar el último paso, que es mucho menos costoso computacionalmente que los tres primeros pasos, para obtener un logaritmo específico. El ataque Logjam utilizó esta vulnerabilidad para comprometer una variedad de servicios de Internet que permitían el uso de grupos cuyo orden era un número primo de 512 bits, llamado grado de exportación . Los autores necesitaron varios miles de núcleos de CPU durante una semana para precalcular datos para un solo primo de 512 bits. Una vez hecho esto, los logaritmos individuales podían resolverse en aproximadamente un minuto utilizando dos CPU Intel Xeon de 18 núcleos. [ 2 ]
Según las estimaciones de los autores del ataque Logjam, el preprocesamiento, mucho más complejo, necesario para resolver el problema del logaritmo discreto para un número primo de 1024 bits costaría alrededor de 100 millones de dólares, una cifra que se encuentra dentro del presupuesto de una gran agencia de inteligencia nacional como la Agencia de Seguridad Nacional (NSA) de Estados Unidos. Los autores de Logjam especulan que el preprocesamiento contra números primos DH de 1024 bits, ampliamente reutilizados, es la base de las afirmaciones contenidas en documentos filtrados de la NSA, según las cuales esta agencia es capaz de descifrar gran parte de la criptografía actual. [ 2 ]
Para evitar estas vulnerabilidades, los autores de Logjam recomiendan el uso de criptografía de curva elíptica , para la cual no se conoce ningún ataque similar. En caso contrario, recomiendan que el orden, p , del grupo Diffie-Hellman sea de al menos 2048 bits. Estiman que el preprocesamiento requerido para un primo de 2048 bits es 10⁹ veces más difícil que para primos de 1024 bits. [ 2 ]
Seguridad frente a las computadoras cuánticas
Las computadoras cuánticas pueden romper esquemas criptográficos de clave pública, como RSA, DH de campo finito y protocolos de intercambio de claves DH de curva elíptica, utilizando el algoritmo de Shor para resolver el problema de factorización , el problema del logaritmo discreto y el problema de la búsqueda de periodos. En 2023 se propuso una variante post-cuántica del algoritmo Diffie-Hellman , que se basa en una combinación del protocolo CRYSTALS-Kyber resistente a la computación cuántica, así como del antiguo protocolo X25519 de curva elíptica .
Otros usos
Cifrado
Se han propuesto esquemas de cifrado de clave pública basados en el intercambio de claves Diffie-Hellman. El primero de estos esquemas es el cifrado ElGamal . Una variante más moderna es el Esquema de Cifrado Integrado .
Secreto hacia adelante
Los protocolos que garantizan el secreto hacia adelante generan nuevos pares de claves para cada sesión y los descartan al finalizar la misma. El intercambio de claves Diffie-Hellman es una opción frecuente para este tipo de protocolos debido a su rápida generación de claves.
Acuerdo de clave autenticada mediante contraseña
Cuando Alice y Bob comparten una contraseña, pueden usar un protocolo Diffie-Hellman con autenticación de clave pública (PK) para prevenir ataques de intermediario. Un método sencillo consiste en comparar el hash de la contraseña concatenada con la contraseña, calculado independientemente en ambos extremos del canal. Una característica de estos métodos es que un atacante solo puede probar una contraseña específica en cada iteración con la otra parte, por lo que el sistema ofrece una buena seguridad incluso con contraseñas relativamente débiles. Este enfoque se describe en la Recomendación X.1035 de la UIT-T , utilizada por el estándar de redes domésticas G.hn.
Un ejemplo de este tipo de protocolo es el protocolo de contraseña remota segura .
Clave pública
También es posible utilizar Diffie-Hellman como parte de una infraestructura de clave pública , lo que permite a Bob cifrar un mensaje de forma que solo Alice pueda descifrarlo, sin comunicación previa entre ellos, salvo que Bob tenga conocimiento de confianza de la clave pública de Alice. La clave pública de Alice esPara enviarle un mensaje, Bob elige una b al azar y luego se la envía a Alice.(sin cifrar) junto con el mensaje cifrado con clave simétricaSolo Alice puede determinar la clave simétrica y, por lo tanto, descifrar el mensaje, ya que solo ella posee la clave privada. Una clave pública compartida previamente también previene los ataques de intermediario.
En la práctica, Diffie-Hellman no se utiliza de esta manera, siendo RSA el algoritmo de clave pública dominante. Esto se debe principalmente a razones históricas y comerciales, concretamente a que RSA Security creó una autoridad de certificación para la firma de claves que posteriormente se convirtió en Verisign . Como se explicó anteriormente, Diffie-Hellman no puede utilizarse directamente para firmar certificados. Sin embargo, los algoritmos de firma ElGamal y DSA están matemáticamente relacionados con él, al igual que MQV , STS y el componente IKE del conjunto de protocolos IPsec para la seguridad de las comunicaciones del Protocolo de Internet .
Véase también
Notas
- ↑ Los sinónimos de intercambio de claves Diffie-Hellman incluyen:
- Intercambio de claves Diffie-Hellman-Merkle
- Acuerdo de claves Diffie-Hellman
- Diffie-Hellman, establecimiento clave
- Negociación de claves Diffie-Hellman
- Intercambio de claves exponencial
- Protocolo Diffie-Hellman
- Saludo de Diffie-Hellman
Referencias
- ↑ Merkle, Ralph C. (abril de 1978). «Comunicaciones seguras a través de canales inseguros». Communications of the ACM . 21 (4): 294– 299. CiteSeerX 10.1.1.364.5157 . doi : 10.1145/359460.359473 . S2CID 6967714.
Recibido en agosto de 1975; revisado en septiembre de 1977
. - 1 2 3 4 5 6 Adrian, David; et al. (octubre de 2015). "Secreto imperfecto hacia adelante: cómo falla Diffie-Hellman en la práctica" (PDF) . Archivado (PDF) del original el 6 de septiembre de 2015.
- 1 2 Diffie, Whitfield ; Hellman, Martin E. (noviembre de 1976). "Nuevas direcciones en criptografía" (PDF) . IEEE Transactions on Information Theory . 22 (6): 644– 654. Bibcode : 1976ITIT...22..644D . CiteSeerX 10.1.1.37.9720 . doi : 10.1109/TIT.1976.1055638 . Archivado (PDF) del original el 29 de noviembre de 2014.
- ↑ Ellis, JH (enero de 1970). "La posibilidad del cifrado digital no secreto" (PDF) . Informe de investigación del CESG . Archivado del original (PDF) el 30 de octubre de 2014. Consultado el 28 de agosto de 2015 .
- ↑ "La posibilidad de un cifrado digital secreto seguro" (PDF) . Archivado (PDF) del original el 16 de febrero de 2017. Consultado el 8 de julio de 2017 .
- ↑ "Trío del GCHQ reconocido por su papel clave en la seguridad de las compras en línea" . BBC News . 5 de octubre de 2010. Archivado del original el 10 de agosto de 2014. Consultado el 5 de agosto de 2014 .
- ↑ Patente estadounidense 4200770
- ↑ Hellman, Martin E. (mayo de 2002), "Una visión general de la criptografía de clave pública" (PDF) , IEEE Communications Magazine , 40 (5): 42–49 , Bibcode : 2002IComM..40e..42H , CiteSeerX 10.1.1.127.2652 , doi : 10.1109/MCOM.2002.1006971 , S2CID 9504647 , archivado (PDF) del original el 2 de abril de 2016
- ↑ Wong, David (2021). "Estándares de intercambio de claves". Criptografía en el mundo real . Manning. ISBN 9781617296710– vía Google Libros.
{{cite book}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Buchmann, Johannes A. (2013). Introducción a la criptografía (Segunda edición). Springer Science+Business Media. págs. 190–191 . ISBN 978-1-4419-9003-7.
- ↑ Castryck, Wouter; Decru, Thomas (abril de 2023). "Un ataque eficiente de recuperación de claves contra SIDH" (PDF) . Conferencia Internacional Anual sobre la Teoría y Aplicaciones de las Técnicas Criptográficas : 423–447 . Archivado del original (PDF) el 26 de septiembre de 2024.
- ↑ Barker, Elaine; Chen, Lily; Roginsky, Allen; Vassilev, Apostol; Davis, Richard (16 de abril de 2018). Recomendación para esquemas de establecimiento de claves por pares que utilizan criptografía de logaritmo discreto (Informe). Instituto Nacional de Estándares y Tecnología.
- ↑ Blake-Wilson, Simon; Johnson, Don; Menezes, Alfred (1997), "Protocolos de acuerdo de claves y su análisis de seguridad", Criptografía y codificación , Notas de clase en ciencias de la computación, vol. 1355, pp. 30–45 , CiteSeerX 10.1.1.25.387 , doi : 10.1007/BFb0024447 , ISBN 978-3-540-63927-5
- ↑ Kudla, Caroline; Paterson, Kenneth G. (2005). «Pruebas de seguridad modulares para protocolos de acuerdo de claves». En Roy, Bimal (ed.). Avances en criptología - ASIACRYPT 2005 (PDF) . Notas de clase en ciencias de la computación. Vol. 3788. Berlín, Heidelberg: Springer. pp. 549–565 . doi : 10.1007/11593447_30 . ISBN 978-3-540-32267-2.
- ↑ US11025421B2 , Fay, Bjorn, "Intercambio de claves modular avanzado para el acuerdo de claves y la autenticación opcional", emitido el 1 de junio de 2021
- 1 2 3 4 "Especificaciones >> El protocolo de acuerdo de clave X3DH" . Mensajero de señales .
- ↑ Barbulescu, Razvan; Gaudry, Pierrick; Joux, Antoine; Thomé, Emmanuel (2014). "Un algoritmo heurístico cuasipolinomial para el logaritmo discreto en campos finitos de característica pequeña" (PDF) . Avances en criptología – EUROCRYPT 2014. Actas de la 33.ª Conferencia Internacional Anual sobre la Teoría y Aplicaciones de las Técnicas Criptográficas. Lecture Notes in Computer Science. Vol. 8441. Copenhague, Dinamarca. pp. 1–16 . doi : 10.1007/978-3-642-55220-5_1 . ISBN 978-3-642-55220-5Archivado (PDF) del original el 22 de marzo de 2020 .
- ↑ "Protocolo de intercambio de claves de Internet (IKEv2) RFC 4306". Internet Engineeringrg/web/20150107073645/ http://www.ietf.org/rfc/rfc4306.txt .
- ↑ Pfeiffer, Szilárd; Tihanyi, Norbert (25 de diciembre de 2023). "D(HE)at: Un ataque práctico de denegación de servicio al intercambio de claves Diffie-Hellman de campo finito" . IEEE Access . 12 : 957–980 . doi : 10.1109/ACCESS.2023.3347422 . hdl : 10831/121503 .
- ↑ van Oorschot, PC; Wiener, MJ (1996). "Sobre el acuerdo de claves Diffie-Hellman con exponentes cortos" . Avances en criptología — EUROCRYPT '96 . Notas de clase en ciencias de la computación. Vol. 1070. Springer, Berlín, Heidelberg (publicado en 2001). págs. 332–343 . doi : 10.1007/3-540-68339-9_29 . ISBN 978-3-540-61186-8Archivado del original el 19 de febrero de 2023 .
- ↑ Elaine, Barker; Lily, Chen; Allen, Roginsky; Apostol, Vassilev; Richard, Davis (2018). "Recomendación para esquemas de establecimiento de claves por pares utilizando criptografía de logaritmo discreto" . Instituto Nacional de Estándares y Tecnología. doi : 10.6028/NIST.SP.800-56Ar3 .
- ↑ Whitfield Diffie, Paul C. Van Oorschot y Michael J. Wiener, «Autenticación e intercambio de claves autenticadas», en Designs, Codes and Cryptography, 2, 107–125 (1992), Sección 5.2, disponible como Apéndice B de la patente estadounidense 5,724,425.
Referencias generales
- Gollman, Dieter (2011). Seguridad informática (2.ª ed.). West Sussex, Inglaterra: John Wiley & Sons, Ltd. ISBN 978-0470741153.
- Williamson, Malcolm J. (21 de enero de 1974). Cifrado no secreto mediante un campo finito (PDF) (Informe técnico). Communications Electronics Security Group. Archivado (PDF) del original el 23 de marzo de 2017. Consultado el 22 de marzo de 2017 .
- Williamson, Malcolm J. (10 de agosto de 1976). Reflexiones sobre el cifrado no secreto más económico (PDF) (Informe técnico). Communications Electronics Security Group. Archivado (PDF) del original el 19 de julio de 2004. Consultado el 25 de agosto de 2015 .
- Historia del cifrado no secreto, por JH Ellis, 1987 (archivo PDF de 28 KB) ( versión HTML )
- Los primeros diez años de la criptografía de clave pública , Whitfield Diffie, Actas del IEEE, vol. 76, n.º 5, mayo de 1988, págs.: 560–577 (archivo PDF de 1,9 MB).
- Menezes, Alfred ; van Oorschot, Paul ; Vanstone, Scott (1997). Manual de criptografía aplicada. Boca Raton, Florida: CRC Press. ISBN 0-8493-8523-7( Disponible en línea )
- Singh, Simon (1999) El libro de códigos: la evolución del secreto desde María Estuardo hasta la criptografía cuántica. Nueva York: Doubleday ISBN 0-385-49531-5
- Introducción a la criptografía de clave pública. Martin E. Hellman, IEEE Communications Magazine, mayo de 2002, págs. 42-49. (Archivo PDF de 123 kB)
Enlaces externos
- Entrevista de historia oral con Martin Hellman , del Instituto Charles Babbage de la Universidad de Minnesota. El destacado experto en criptografía Martin Hellman analiza las circunstancias y los principios fundamentales de su invención de la criptografía de clave pública junto con sus colaboradores Whitfield Diffie y Ralph Merkle en la Universidad de Stanford a mediados de la década de 1970.
- RFC 2631 – Método de acuerdo de clave Diffie-Hellman . E. Rescorla. Junio de 1999.
- RFC 3526 – Grupos Diffie-Hellman exponenciales modulares (MODP) para el intercambio de claves de Internet (IKE) . T. Kivinen, M. Kojo, Seguridad de las comunicaciones SSH. Mayo de 2003.
- Protocolos de acuerdo clave
- Criptografía de clave pública