Podríamos decir que la
criptografía es un arte derivado de la ciencia de las matemáticas, por eso los
criptoanalistas consiguen hacer magia aplicando la disciplina más exacta para resolver problemas que los
criptógrafos plantean. En el caso de hoy, como si un ejercicio práctico del libro de
Criptografía: Cifrado de las comunicaciones digitales, se puede ver cómo aplicar todo este conocimiento para
descifrar los mensajes que se envían usando
WhatsApp en una red que puede ser captura, como por ejemplo una red
WiFi.
![](http://2.bp.blogspot.com/-OR7rCwbje5s/Ueuhp_0E8VI/AAAAAAAAQtE/4nmj8ytsT0Q/s1600/whatsapp-sniffer.jpg) |
Figura 1: WhatsApp Sniffer |
Antaño se podían utilizar herramientas como
WhatsApp Sniffer, pero hace largo que dejaron de funcionar cuando los desarrolladores de
WhatsApp cambiaron el sistema de cifrado. A día de hoy, en lugar de utilizar
criptografía para el envío de mensajes basada den
SSL/TLS, siguen utilizando un algoritmo propio del que
Thijs Alkemade ha publicado dos "pequeñas debilidades" que pueden permitir descifrar las
conversaciones.
Negociación de la clave de cifrado de los mensajes
Para el proceso de autenticación de una cuenta dentro de los servidores de WhatsApp se usa un sistema basado en SASL/WAuth-1.
En este algoritmo el cliente envía su número de teléfono, el servidor
responde con un desafío que el cliente contesta con un mensaje derivado
de su contraseña en el sistema tras 20 iteraciones de PKBDF2 usando el desafío recibido como Salting y una función SHA1 de hashing.
De esa cadena que se genera los últimos 20 bytes serán utilizados como
clave de cifrado de los mensajes que se envían con el algoritmo
RC4 y como
MAC (
Message Authentication Code) utilizando para ello el algoritmo
HMAC-SHA1
Debilidad 1: Misma clave de cifrado para enviar y recibir mensajes
La debilidad radica en que si capturamos el Mensaje de entrada cifrado A y el Mensaje de salida cifrado A y se hace un XOR de ambos, entonces es equivalente a haber realizado un XOR del Mensaje de entrada en plano A con el Mensaje de salida en plano A, es decir. Es decir, se anulan las claves de cifrado utilizadas.
![](http://4.bp.blogspot.com/-SEGGwIXrpKg/UlOfi5G3-WI/AAAAAAAARgs/x_fVP7ch4y0/s400/WhatsApp_debilidad_1.png) |
Figura 2: Formula matemática que describe la debilidad 1 |
Con la idea de hacerlo más práctico, si se tienen los mensajes A cifrado y B cifrado, y se conoce el valor de A sin cifrar, entonces aplicando la fórmula anterior, será posible liberar B sin cifrar por medio de operaciones XOR.
O lo que es lo mismo, si se conocen las respuestas sin cifrar de
algunos mensajes de salida será posible obtener algunos mensajes sin
cifrar de la entrada, o al menos parte de ellos en función de los
tamaños, lo que ayudaría a poder predecir más partes de la conversación.
Debilidad 2: Protocolo HMAC sin número de secuencia
Esta segunda carencia se basa en que al no utilizar en el algoritmo
MAC un número de secuencia y al utilizar la misma clave
RC4 hace posible que un atacante en un esquema de
ataque de red basado en man in the middle pueda decidir que unos paquetes no se envían, hacer un
replay de los mismos o enviarlos directamente al emisor.
Prueba de concepto
![](http://4.bp.blogspot.com/-Q3-mYeW466g/UlOgXp_k_JI/AAAAAAAARg0/DbZxLrz6iMM/s640/WhatsApp_POC.png) |
Figura 3: Mensajes de entrada y salida de WhatsApp descifrados en la POC |
Por supuesto, utilizar esta información para conseguir una herramienta
funcional que descifre total o parcialmente las conversaciones por la
red y se convierta en la principal manera de
cómo espiar WhatsApp
será cuestión de poco tiempo, por lo que es probable que los
desarrolladores deban pensar otra vez en utilizar un algoritmo de
cifrado más robusto.
Mientras tanto, tal vez sea una buena idea ir guardando los ficheros .
pcap
de las comunicaciones emitidas por la red que en breve ser podrán
descifrar. Visto esto, si vas a enviar algo privado, tal vez no sea
buena idea hacerlo por
WhatsApp.
Fuente http://www.elladodelmal.com
De Chema Alonso