¿Cómo se calcula el secreto maestro en el protocolo de cifrado utilizado por WhatsApp?

4

He leído el algoritmo detrás del cifrado de WhatsApp en este documento . No puedo entender cómo el iniciador calcula un secreto maestro.

  

El iniciador calcula un secreto maestro como:

master_secret = ECDH(Iinitiator, Srecipient) || ECDH(Einitiator, Irecipient) || ECDH(Einitiator, Srecipient) || ECDH(Einitiator, Orecipient).
     

Si no hay una clave previa de una sola vez, se omite el ECDH final.

    
pregunta Chinmoy Samanta 09.04.2018 - 14:02
fuente

2 respuestas

2

El ECDH() se refiere a Elliptic-curve Diffie-Hellman . Se menciona en el documento solo de forma indirecta al referirse al Protocolo de señal de Open Whisper Systems y Curve25519 . Este es un documento técnico enfocado comercialmente, por lo que realmente no pretende ingresar a las matemáticas.

La razón para usar 3–4 pares de claves Diffie-Hellman diferentes y concatenar ( || ) las operaciones es evitar que se usen claves privadas robadas para descifrar cualquier comunicación capturada previamente: las claves de mediano plazo y de una sola vez tienen cambió durante el tiempo, mientras que el par de claves a largo plazo demuestra que sigue siendo la misma persona. Debido a que todas estas claves son necesarias, también proporciona negabilidad plausible ; cualquier prueba de autenticidad de los mensajes descifrados se pierde cuando finaliza la conversación.

    
respondido por el Esa Jokinen 09.04.2018 - 16:21
fuente
1

Recapitulación rápida.

Parámetros generados por el iniciador :

1) Iniciador , Clave de identidad (par de llaves) del iniciador;

2) Einitiator , un par de llaves de curva elíptica efímera (es decir, temporal).

Parámetros generados por el destinatario :

3) Irecipient , la clave de identidad del destinatario (par de llaves);

4) Receptor , la clave previa firmada por el destinatario (par de llaves);

5) Orecipiente , la tecla previa (clave) única del destinatario.

ECDH (Ka, Kb) es el procedimiento Elliptic Curve Diffie Hellman entre dos partes, A con un par de llaves Ka y B con un par de llaves Kb.

|| es el operador de concatenación.

La fórmula

 master_secret = ECDH(Iinitiator, Srecipient) || ECDH(Einitiator, Irecipient) || ECDH(Einitiator, Srecipient) || ECDH(Einitiator, Orecipient)

significa que el protocolo ECDH se ejecuta cuatro veces, usando como par de llaves:

1) Iniciador y receptor;

2) Einiciador e Irecipiente;

3) Einiciador y receptor;

4) Einiciador y proveedor de información,

respectivamente. Como puede ver, cada vez que se usan dos pares de llaves, cada una de las cuales pertenece a una parte diferente, significa que todas esas operaciones ECDH(. , .) son válidas.

Cada una de estas operaciones genera un secreto compartido sin revelarlo directamente a nadie más que esté escuchando en el canal, gracias a las propiedades del protocolo Diffie-Hellman.

Los resultados se concatenan, formando así el secreto maestro.

    
respondido por el A. Darwin 09.04.2018 - 16:01
fuente

Lea otras preguntas en las etiquetas