¿Cómo se verificará que la clave pública de los servidores de WhatsApp pertenece a la persona que espero?

17

WhatsApp ha anunciado recientemente el cifrado de extremo a extremo en todas las comunicaciones. Si bien es un movimiento impresionante, todavía tengo un gran signo de interrogación abierto.

Los artículos y este documento técnico sugieren que la clave pública, una vez generada, se almacena en el servidor Cuando quiero hablar con otra persona, le pido al servidor de WhatsApp su clave pública y la uso para comunicarme. Ese mismo libro blanco dice esto acerca de la verificación clave:

  

Usuarios de WhatsApp   Adicionalmente tenemos la opción de verificar las claves de los demás usuarios.   Con quién se están comunicando para que puedan confirmar que   un tercero no autorizado (o WhatsApp) no ha iniciado una   El hombre en el ataque medio. Esto se puede hacer escaneando un código QR, o   comparando un número de 60 dígitos.

Oh, eso está bien, ¿cómo se generan esas cosas?

  

El código QR contiene:

     
  1. Una versión.
  2.   
  3. El identificador de usuario para ambas partes.
  4.   
  5. La clave de identidad pública de 32 bytes completa para ambas partes.
  6.   

Cuando cualquiera de los usuarios escanea el código QR del otro, las claves se comparan para garantizar que   lo que está en el código QR coincide con la clave de identidad como se recupera de la   servidor.

Pero ... esos son todos los detalles que el servidor conoce, y no requiere nada especial de la otra persona (no menciona que se haya firmado el QR). ¿Qué tal el número de 60 dígitos?

  

El número de 60 dígitos se calcula al concatenar los dos dígitos de 30 dígitos.   huellas dactilares numéricas para la clave de identidad de cada usuario. Para calcular un   Huella digital numérica de 30 dígitos:

     
  1. iteradamente SHA-512 hash la clave de identidad pública y el identificador de usuario 5200 veces.
  2.   
  3. Tome los primeros 30 bytes de la salida de hash final.
  4.   
  5. Divida el resultado de 30 bytes en seis porciones de 5 bytes.
  6.   
  7. Convierta cada fragmento de 5 bytes en 5 dígitos interpretando cada fragmento de 5 bytes como un entero sin signo big-endian y reduciéndolo a módulo   100000.
  8.   
  9. Concatene los seis grupos de cinco dígitos en treinta dígitos.
  10.   

Nuevamente, esos son detalles que el servidor puede calcular y presentar fácilmente como datos de verificación válidos.

¿Lo estoy entendiendo mal o no hay una manera real de verificar que la clave pública con la que estoy hablando pertenece a la persona que creo que es?

    
pregunta Madara Uchiha 05.04.2016 - 22:24
fuente

1 respuesta

3

Tanto el código QR como el número de 60 dígitos deben verificarse "fuera de banda", por ejemplo:

  • Decir el número en voz alta en una llamada telefónica
  • Reunirse en persona y escanear el código QR directamente desde el otro dispositivo
respondido por el copy 05.04.2016 - 23:24
fuente

Lea otras preguntas en las etiquetas