lunes, 21 de mayo de 2018

¿Cómo funciona el cifrado de Whatsapp en un chat?

No me voy a detener a explicar la criptografía detrás de los mensajes que se envían por los chats de Whatsapp, solamente hablaré sobre cómo podemos comprobar y entender qué está pasando a nivel de red cuando recibes y abres un chat de Whatsapp con un mesaje unread. Es algo que podéis comprobar vosotros mismos y con el que podréis entender mejor cómo funciona la comunicación mediante TCP y cómo compruebas que tus mensajes están siendo cifrados.


Para hacer esta prueba, yo esperé a que en mis chats de Whatsapp, la situación se normalizase y no recibiese muchos Whatsapps. Cuando esto ocurrió, le pedí a mi novia que me enviase un mensaje.


Para esto, lo que vamos a hacer será realizar en primer lugar un ping a web.whatsapp.com para conocer la IP de Whatsapp y poder buscarlo así en Wireshark por IP y no perder mucho tiempo con otros paquetes que no nos interesan para esta prueba.


Una vez que conocemos la IP, abrimos Wireshark y le pedimos a alguien que nos envíe un mensaje-en mi caso ha sido mi novia-. Da igual el mensaje, yo en este caso le dije a mi novia que me enviase la palabra "Delimiter", que es como comienzas los procedimientos en Bases de Datos.

A continuación buscamos por IP en Wireshark. Es importante que veamos primero los paquetes que nos llegan cuando aún no he abierto el chat de Whatsapp. Son , y todos en TCP y TLS en su versión 1.2 para cifrar la comunicación.


Si nos fijamos en el primer paquete de todos, el que se cifra mediante TLS/SSL, se genera en, como es lógico en la capa de Aplicación del modelo TCP/IP, cifrándose con el Secure Sockets Layer {SSL}. Aquí, es mi equipo el que solicita a Whatsapp si hay alguna novedad en mis chats. Whatsapp le responderá a continuación.


Analizando el segundo paquete, que también está siendo cifrado con TLS/SSL y si nos vamos al apartado de Secure Sockets Layer-que es la parte interesante- vemos la versión del cifrado TLS y que los datos de la Aplicación están siendo cifrados. Aquí estaría cifrando el "X está escribiendo", algo que no sabemos con certeza, pero que podemos deducir de los siguientes mensajes. Aquí es ahora Whatsapp quien contesta al cliente, ya que el anterior paquete pidió si había algo nuevo para él, y Whatsapp le responde que X está escribiendo.


El tercer paquete es un mensaje TCP con un ACK de mi equipo confirmando a Whatsapp que ha recibido su mensaje anterior. Vemos que el destino es el puerto 443, que es el puerto de HTTPS.


Ahora, abramos de nuevo Wireshark para ver qué ocurre cuando yo abro un chat de Whatsapp con un mensaje que era enread.

Esta vez son 8 paquetes. Es una captura muy similar a la anterior, solo que los datos que se han enviado {el mensaje "delimiter"} está en el último paquete TLSv1.2. Esto lo sabemos por mera lógica y porque también es el paquete de mayor extensión entre todos los paquetes TLS.


Vemos que el Secure Socket Layer cifra el mensaje que he recibido y posteriormente mi equipo confirma, mediante un paquete TCP con un ACK, que ha recibido correctamente el paquete.

Así es como se entiende el cifrado de Whatsapp de clave privada, por lo que en casos como los que conté en Muerte a Google, donde los mensajes enviados a través del asistente de Google se almacena en texto claro en MyActivity para que cualquiera que robe tu cuenta tenga acceso a los mensajes que envías. No es justificable que Google actúe así cuando Whatsapp está realizando este cifrado y todos los usuarios hemos firmado que queríamos ese cifrado cuando se actualizó Whatsapp incorporando el cifrado extremo a extremo. Google se ha saltado esta medida de seguridad, algo que no se debería permitir y lo que demuestra , una vez más, la necesidad de cambiar a otros buscadores que sí se preocupen por tu privacidad.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...