¿Cómo se puede garantizar que no se almacena un intercambio de clave inicial de Diffie-Hellman? [duplicar]

2

Es posible que me haya perdido partes del tecnicismo cuando se trata del estado inicial del intercambio de claves. Sin embargo, si no me equivoco, si el intercambio de claves inicial se realiza a través de un canal inseguro, ¿cómo podemos estar seguros de que este primer encuentro no es "interceptado"?

He leído a alguien decir aquí que es como tener una caja, cifrarla con una clave, enviar la caja, obligando al receptor a cifrarla con una clave y devolver la caja. El primer remitente luego retira su llave y devuelve la caja. Pero, ¿cómo puede uno quitar su clave de algo que otra persona ha cifrado nuevamente? ¿Cómo identificar lo que es tuyo?

    
pregunta Gjert G 28.11.2017 - 17:18
fuente

1 respuesta

2

La analogía del envío de la caja no es del todo precisa en ningún algoritmo de clave pública / privada. Solo es tan bueno como es algo que funcionaría en el mundo físico. Con eso fuera del camino, vamos al intercambio de claves Diffie-Hellman.

Diffie Hellman en realidad no intercambia claves, intercambia información para generar las claves. Sin embargo, solo intercambia parte de esta información, el resto lo guarda cada usuario. Vamos a verlo, llamaremos a nuestros usuarios Alice y Bob;):

  1. Alicia y Bob acuerdan usar un número primo como módulo p, y una base que es una raíz de módulo primitiva de p que es g. Estas propiedades matemáticas deben ser válidas para el problema de logaritmo discreto en el que se basan las matemáticas.
  2. Alicia y Bob eligen cada uno un entero que guardan para sí mismos, llamémoslos a y b, luego cada uno de ellos ejecuta el mismo cálculo en ese entero, primero calculan g a la potencia del número entero módulo p. Y se envían esto entre ellos.

      

    ga mod p
    g b mod p

  3. Ahora aquí está el bit inteligente, ninguno de los dos puede descubrir qué es el entero secreto del resto, pero si toman lo que obtuvieron del otro y lo elevan a su propio entero y calculan el módulo p de eso, ambos obtienen el mismo número S:

      

    (ga mod p)b mod p = gab mod p
    (g b mod p)a mod p = gba mod p

4) El número compartido ahora se usa para obtener alguna clave de cifrado para obtener más información.

Sin saber uno de esos enteros secretos, un atacante no puede generar el mismo número y, por lo tanto, la misma clave. El algoritmo de Schors en una computadora cuántica puede resolver el problema del logaritmo discreto para recuperar esos enteros secretos de los datos que se intercambiaron, pero más allá de eso o haciendo que Alice o la máquina de Bob los envíen (en cuyo caso puede hacer que envíen la clave derivada). , o los mensajes sin cifrar enviados / recibidos en su lugar).

Sin embargo, si esa información no proviene realmente de la otra parte, sino del propio atacante, entonces sin otras comprobaciones (para eso están los certificados SSL / TLS) el atacante puede descifrar, volver a cifrar y transmitir los datos.

    
respondido por el ewanm89 28.11.2017 - 18:22
fuente

Lea otras preguntas en las etiquetas