domingo, 19 de noviembre de 2017

WhatsApp E2E encryption



Después de ver la increíble charla de @raulsiles en la RootedCon, queda mucho más claro el funcionamiento del cifrado punto a punto de WhatsApp, que sacó en el mes de abril del año pasado. Podéis encontrar el paper en la web de WhatsApp, que, repito, se entiende infinitamente mejor después de la charla de Raúl.



Sin meternos mucho en los detalles técnicos, cabe destacar que el protocolo empleado para el cifrado es Signal, diseñado por Open Whisper Systems, y tiene dos partes bien diferenciadas:

  • X3DH: Extended Triple Diffie-Hellman, para el intercambio de claves por un canal inseguro entre dos usuarios que no se ven entre sí.
  • Double Ratchet ("doble carraca"): para la generación de claves por cada mensaje que se quiere enviar. WhatsApp reitera que las claves privadas están solamente en los dispositivos, por lo que ellos no tienen manera de descifrar el contenido de los mensajes que circulan por sus servidores.
Al ser una comunicación asíncrona, puede darse el caso de que el receptor no esté disponible cuando el emisor envía el mensaje. Los mensajes, junto con las claves, los hash, etc. se mantienen en el servidor, hasta que el receptor vuelva a estar en línea. En la charla se contempla el caso de qué podría ocurrir en este escenario, y además si el receptor ha vuelto a reinstalar la aplicación, o si ha cambiado de dispositivo (en estos casos se tienen que volver a generar las claves de sesión).

Si queréis entrar más a fondo en la parte de crypto, una buena fuente es la que menciona Raúl y muy conocida en el ámbito nacional, que no es otra que Criptored.

Espero que la disfrutéis ;)

No hay comentarios: