Intercambio de claves autenticado de Diffie Hellman

2

Parece que la versión de libro de texto de Diffie-Hellman es susceptible al ataque del hombre en el medio y el uso de firmas digitales podría evitar que ocurra este ataque.

Las firmas digitales podrían implementarse durante el intercambio de claves Diffie-Hellman de la siguiente manera

  1. Alice tiene un par de clave pública / privada (SKa, PKa).
  2. Bob tiene un par de clave pública / privada (SKb, PKb).
  3. Alice genera su clave secreta Ka usa su clave privada SKa para firmar (g ^ Ka) para producir Signature s (m)
  4. Alice usa la clave pública de Bob PKb para cifrar su clave secreta Ka.
  5. Alice envía a través de Ka y s (m) encriptados a Bob
  6. Bob usará su clave privada SKb para descifrar el Ka encriptado para obtener C y usará la clave pública de Alice PKa en s (m) para obtener D
  7. Bob se autentica asegurándose de que C == D

Tengo tres preguntas con respecto a esto

  1. ¿Es así como se realiza normalmente el intercambio autenticado de claves diffie-hellman usando firmas digitales? Si no, ¿cómo se hace normalmente?
  2. ¿Por qué nos molestamos con esta forma de intercambio de claves donde el remitente y el destinatario deben enviarse sus claves antes de usar la clave combinada cuando podemos simplemente cifrar la clave mediante la clave privada del remitente seguida de la clave pública del destinatario y enviarla? a la otra parte?
  3. ¿Existen fallas en mi implementación del intercambio de claves autenticado de Diffie-Hellman?
pregunta Computernerd 18.11.2014 - 13:12
fuente

1 respuesta

9

Su descripción es un poco confusa y parece ser incorrecta. En particular, vemos a Alice informando aquí la mitad de Diffie-Hellman gKA y luego procedemos a enviar ... su secreto Diffie-Hellman < em> K A para Bob, que no es en absoluto lo que debe hacer.

Llano Diffie-Hellman funciona de la siguiente manera:

  • Alice genera (al azar) su secreto KA y calcula gKA .
  • Bob genera (al azar) su secreto KB y calcula gKB .
  • Alice envía gKA a Bob.
  • Bob envía gKB a Alice.
  • Alice calcula (gKB)KA , usándola secreto KA y el valor enviado por Bob.
  • Bob calcula (gKA)KB , usando su secreto KB y el valor enviado por Alice.

Por la magia de las matemáticas, Alice y Bob terminan con el mismo valor, que es el secreto compartido que luego usan para cualquier criptografía que necesiten para comunicarse entre sí.

Para la variante autenticada , se realizan los mismos cálculos; pero Alice y Bob también poseen pares de claves asimétricas utilizables para firmas digitales , y las usan: Alice firma todo lo que envía a Bob , y Bob verifica esa firma (usando la clave pública de Alice). De manera similar, Bob firma lo que envía a Alice, y Alice verifica esa firma (usando la clave pública de Bob).

Tenga en cuenta que a ningún punto, Alicia le envía KA (él "DH secreto") a Bob en cualquier forma. Bob tampoco envía KB a Alice. Y no hay cifrado en ninguna parte . Puede encontrar muchos tutoriales que pretenden explicar las firmas digitales en términos de cifrado (generalmente como "cifrado con la clave privada"). Estas explicaciones son remanentes de épocas más antiguas (a finales de los años 70, de hecho, en la era del Disco original ) y, de hecho, son erróneas y muy confusas. Así que no pienses en esos términos. Las firmas son firmas, el cifrado es cifrado.

DH autenticado es lo que se hace, por ejemplo, en SSL / TLS con las suites de cifrado "DHE". También es lo que sucede en SSH (versión 2).

Hay dos razones principales para usar un Diffie-Hellman "efímero" ("efímero" porque Alice y Bob generan sus secretos DH KA y K B sobre la marcha):

  • Los pares de llaves "permanentes" que son propiedad de Alice y Bob pueden no ser aptos para otra cosa que no sean firmas. Una fuente de confusión (nuevamente) es que no hay un algoritmo un llamado RSA; hay al menos dos, uno para el cifrado y otro para las firmas, y parecen poder usar el mismo tipo de pares de claves. Sin embargo, incluso si se puede utilizar un par de claves RSA para el cifrado y las firmas, hay buenas razones para no hacerlo. También hay otros algoritmos de firma (por ejemplo, ECDSA) cuyas claves no se pueden usar (al menos no fácilmente) para el cifrado.

  • El uso de secretos efímeros de DH proporciona Secreto hacia adelante , lo cual es bueno. Es decir, las claves permanentes de Alice y Bob deben almacenarse en algún lugar; para que pudieran, potencialmente, ser robados después. Con el simple intercambio de claves basado en RSA (no DH, Alice encripta una clave de sesión aleatoria con la clave pública de Bob y Bob la desencripta), el ladrón de claves posteriores podría usarla para desencriptar una sesión pasada. Con el DH y las firmas, este problema no ocurre; incluso si las claves privadas de la firma de Alice y Bob se revelan después, sus comunicaciones anteriores no se pueden descifrar. Todo el concepto de secreto hacia adelante gira en torno a la idea de que los "secretos DH", que se generan sobre la marcha, se guardan solo en la RAM y se destruyen inmediatamente después de completar el intercambio de claves DH, son inmunes al robo posterior.

respondido por el Thomas Pornin 18.11.2014 - 17:36
fuente