Implementaciones del protocolo de señal: ¿autenticación de clave de pub e inspeccionabilidad? (Allo, WhatsApp, FB messenger, Señal)

4

Una parte crítica del Protocolo de señal , utilizado por Google Allo, WhatsApp, Facebook Messenger y Signal, entre otros) Es una infraestructura de clave pública. Las claves públicas son necesarias para configurar las sesiones. Por lo que puedo ver, no especifica una manera de autenticar las claves. Es decir, cuando Alice establece una sesión con Bob, ¿cómo puede estar segura de que recibe su clave pública y la de nadie más?

En segundo lugar, suponiendo que la pregunta anterior tenga una respuesta satisfactoria, ¿podemos verificar qué sucede en el cable? Es decir, ¿puede Alice (tener acceso a sus claves privadas) examinar el protocolo en el cable, extraer la clave pública de Bob y autenticarla a mano (tomar una huella digital, llamar a Bob y pedirle que compare)?

Esto probablemente difiere por implementación, supongo. Para comenzar, no veo una respuesta en WhatsApp encriptación en general papel blanco . Entonces, ¿cómo se implementa esto?

En un contexto más amplio, la verdadera pregunta es, por supuesto, ¿hasta qué punto debemos confiar en las implementaciones, es decir, los proveedores de servicios? Honestamente, es extraño para mí que haya tanto alboroto por el cifrado de extremo a extremo de estos servicios; Me parece (¡NO un experto en el protocolo!) que es bastante fácil que los proveedores de servicios escuchen, si lo desean. Es posible que no quieran o intenten hacerlo, pero para quien la privacidad es lo suficientemente importante, sigue siendo una responsabilidad.

    
pregunta Evert Lammerts 12.10.2016 - 22:33
fuente

2 respuestas

2
  

Cuando Alice establece una sesión con Bob, ¿cómo puede estar segura de que recibe su clave pública y la de nadie más?

Actualmente no puede. (Una pregunta mejor hubiera sido: ¿cómo puede Alice estar segura de que el cliente usa la clave pública de Bob para configurar la sesión y no de un usuario malintencionado?) El documento de seguridad de WhatsApp dice:

Para la autenticación, los usuarios pueden comparar manualmente las huellas digitales de las claves públicas a través de un canal externo.

Hay dos problemas con esto:

  • Alice tiene que confiar en el cliente para generar la clave pública / huella digital / código QR. Puede ver el problema de confiar en el cliente para verificar que el cliente está usando las claves correctas.
  • Lo que nos lleva al segundo problema: incluso si Alice puede tomar la huella digital de la clave pública que el cliente almacena para Bob sin usar el cliente, entonces, ¿cómo puede estar segura de que el cliente usa la tecla esta cuando ella se comunica con Bob, en lugar de por ejemplo ¿Usando la clave pública de algún usuario malicioso? Lo que se necesita aquí es verificar el protocolo en el cable. El código de cliente cerrado tampoco facilita las cosas.
  

¿Podemos verificar qué sucede en el cable?

No que yo sepa. En el hilo Reddit relacionado con esta pregunta, un comentarista señala que hay mejor documentación para el Protocolo de la señal. se publicará pronto . Esperemos que esto ayude. Pero lo que realmente necesitamos para esto son instrucciones detalladas sobre la verificación del tráfico.

  

¿Hasta qué punto debemos confiar en las implementaciones, es decir, los proveedores de servicios?

En primer lugar, por lo que puedo ver, el protocolo de Señal incluye básicamente todo lo que se requiere de un protocolo de cifrado para configurar canales e2e seguros. Si el intercambio de claves se vuelve seguro, tenemos todos los ingredientes necesarios para la comunicación e2e.

Pero con las implementaciones actuales todavía no hemos llegado.

Entonces, como respuesta a esta pregunta, diría que deberíamos asumir que el secreto de nuestros mensajes de chat depende totalmente de la buena voluntad de los proveedores de servicios.

    
respondido por el Evert Lammerts 19.10.2016 - 15:21
fuente
0

En este momento, debemos confiar en que la implementación se ejecute en plataformas solo binarias y no hay una forma real de asegurarnos de que todo el cifrado, los certificados y la aleatoriedad se manejen correctamente dentro de estos sistemas "binarios entregados". Mi creencia es que lo que se crea en iOS o Android y otros, no se puede confiar y todo el cifrado de extremo a extremo es inútil porque la seguridad del punto final falla a lo grande. Debido 'incógnitas conocidas' dentro de estos sistemas operativos.

He estado contribuyendo al proyecto donde creamos un dispositivo de cifrado externo para usarlo con tu Apple o Android. Compilamos el kernel de Linux 4.8, las bibliotecas y el cifrado e2e (con PKI manejada por el usuario) desde el árbol de origen del 100% y reemplazamos la confianza con una implementación correcta y auditable. Esto, creo que es la única manera de acercarse a la respuesta a esta pregunta.

Ejecute su cifrado antes de que llegue a los teléfonos y las redes, un dominio totalmente no confiable.

    
respondido por el Trust does not create security 18.10.2016 - 19:30
fuente

Lea otras preguntas en las etiquetas