¿Por dónde pasan las imágenes que envías por Whatsapp antes de llegar a su destinatario?

Cada día millones de personas se comunican a través de la aplicación de mensajería para smartphones WhatsApp. A través de este servicio se pueden enviar mensajes de texto, imágenes, vídeos y otro tipo de archivos multimedia como mensajes de voz, emoticonos, stickers o GIFs. Pero, ¿por dónde pasan los mensajes que enviamos antes de llegar al receptor?

Por dónde pasan las fotos de whatsapp antes de llegar al destinatario.

Para entender cómo funciona, primero es importante conocer el contexto de WhatsApp. Esta plataforma apareció en 2010 como un servicio de mensajería instantánea para teléfonos inteligentes. Su objetivo principal es facilitar la comunicación directa entre las personas a través de sus smartphones

Se estima que, en 2019, WhatsApp tendría aproximadamente unos 2.000 millones de usuarios, lo que resultaría en billones de mensajes intercambiados al día, así como vídeos y fotos compartidas. ¿Cómo se produce este intercambio?

Primeramente, el envío de mensajes en WhatsApp se hace a través de una conexión muy liviana ya que no puede manejar la carga que supone la tecnología para enviar SMS. WhatsApp utiliza un servidor XMPP personalizado construido en Erlang para manejar el backend de mensajería.

Erlang es un lenguaje creado para escribir aplicaciones escalables que están diseñadas para soportar errores y utiliza una abstracción llamada “el modelo Actor”. Cada usuario o dispositivo está representado como un actor que es responsable de manejar la bandeja de entrada del usuario, cómo se serializa en el disco, los mensajes que envía y los mensajes que recibe

El servidor coordina a todos los usuarios que utilizan WhatsApp, ya que estos no se conectan entre sí, si no que se conectan con el servidor. Cuando compartimos un mensaje, se carga en un servidor HTTP a través de una conexión diferente a la propia. 

Después de una carga exitosa, este servidor devuelve un hash o ID único asociado a ese medio. Ese valor es el que se envía al servidor de WhatsApp. En el otro extremo funciona de manera inversa. El receptor recibe el valor hash y luego descarga los medios del servidor HTTP asociado a ese valor para recibir el mensaje.

Entender por dónde pasan los mensajes o imágenes que envías en WhatsApp antes de llegar a su destinatario puede parecer complicado a simple vista. A continuación, puedes conocer los pasos en detalle para entender un poco más del proceso. Es por eso que se exponen a continuación los pasos de dicho procedimiento.

1. A decide enviarle un mensaje/imagen a B

El teléfono de A establece una conexión con el servidor de WhatsApp y este identifica que dicha conexión viene del teléfono A. Cuando un cliente se conecta al servidor de WhatsApp, se crea un proceso (o hilo) con respecto a ese usuario.

Este proceso es responsable de manejar todas las operaciones relacionadas con ese cliente. Con cada proceso se asocia una cola que actúa como un búfer para ese proceso. Después de la creación del proceso, se crea una tabla en la base de datos para mantener el registro de PID (ID de proceso) y el cliente asociado.

Cuando abrimos Whatsapp en nuestro smartphone, nuestra aplicación envía un pulso al servidor cada 5 segundos y, con cada pulso, el tiempo visto por última vez se actualiza en la tabla. A medida que el cliente se desconecta, existe el último tiempo visto en el registro que se actualiza con el último impulso enviado antes de cerrar la aplicación.

2. El mensaje de A es enviado al servidor

WhatsApp utiliza el servidor Ejabberd (XMPP) que facilita la transferencia de mensajes instantáneos entre dos o más usuarios en tiempo real. Cuenta con una alta confiabilidad y sostenibilidad incluso durante tráfico pico. Esta es la razón por la cual los desarrolladores de WhatsApp eligieron Ejabberd.

Por otra parte, Erlang es el lenguaje de programación utilizado para codificar WhatsApp. La reestructuración del código y algunos cambios importantes se realizan en el servidor Ejabberd para lograr un rendimiento óptimo del servidor.

Además, Erlang es ágil para adaptarse a actualizaciones instantáneas y correcciones urgentes. Esto es lo que ayuda a WhatsApp a impulsar rápidamente los cambios a la implementación en vivo sin requerir reinicios.

Por otra parte, MnesiaDB es el encargado de manejar la tarea pesada de la gestión de bases de datos. Mnesia es un DBMS (Data Base Management System o Sistema de administración de base de datos) distribuido y multiusuario. Es el DB predeterminado de Erlang. Mnesia ayuda a lograr respuestas de solicitud más rápidas, mejorando así la eficiencia general.

Por último, FreeBSD es el sistema operativo sobre el que se construye WhatsApp. Para almacenar archivos multimedia, la aplicación utiliza el servidor web exclusivo YAWS. A medida que se envía el mensaje, este se pone en cola en el servidor y el mensaje de A espera hasta que B se conecte al servidor.

3. B se conecta al servidor

Una vez que el teléfono de B se conecta, el servidor le manda el mensaje cifrado que fue enviado. A medida que se entrega, A recibe una notificación con una doble marca de verificación cerca del mensaje. Después de la entrega, los mensajes se eliminan instantáneamente de la memoria del servidor.

Una pregunta que puede surgir al leer esto es si los mensajes o archivos dejan de ser privados al pasar por un servidor adicional al teléfono del destinatario.

La seguridad que ofrece Whatsapp desde 2016 es el cifrado E2EE, llamado extremo a extremo. Este sistema de comunicación debe asegurar que el emisor y receptor son los únicos que pueden leer lo que se ha enviado y que ningún tercero, ni siquiera la aplicación que lo implementa, lo puedan leer. Se podría decir que los mensajes están cerrados con una especie de «candado» y que solo los participantes en la conversación tienen la «llave» para leerla.

El cifrado de extremo a extremo de WhatsApp, para mayor protección, cifra los mensajes por separado. Es decir, todos los mensajes enviados tienen su propio candado y llave únicos. No se puede descifrar un mensaje del pasado con la «llave» del mensaje actual. Además, cuando el receptor recibe el mensaje, este se elimina del servidor de WhatsApp.

“The Signal” Open Whisper Systems desarrolló un protocolo que es opensource en cifrado de mensajes. Está orientado a una «sesión” que consiste en generar llaves, PreKeys, al momento de la instalación del servicio. Luego trabaja con un protocolo de establecimiento de claves llamado Diffie–Hellman (DH), combinado con el algoritmo Double Ratchet. Son un método de intercambio seguro de claves criptográficas que se inicia al momento de realizar la comunicación segura entre dos o más clientes en una «sesión» .

WhatsApp implementó este protocolo trabajado de la siguiente manera: hay un total de seis llaves. Tres de estas (Identity Key Pair, Signed Pre Key y One-Time Pre Key) son públicas y se almacenan en un servidor. Usan la primitiva Curve25519 para el cifrado de estas y generar una Master Secret que genera tres llaves de sesión (Root Key, Chain Key y Message Key).

Una vez establecida la «sesión» se puede comenzar a intercambiar mensajes, los cuales son protegidos por la llave Message Key, que usa un estándar de cifrado avanzado, AES256, en modo CBC (encadenamiento de bloque de cifrado) para cifrar/descifrar.

Desde que en 2016 WhatsApp implementó la privacidad de mensajes, la seguridad de sus clientes se ha visto aumentada, ya que se asegura que nadie más podrá ver el contenido compartido en su plataforma.

Si se envía una imagen y, posteriormente, es vista por terceros, no habrá sido por el sistema operativo, servidores ni complementos tecnológicos. La única manera de que una imagen enviada por WhatsApp sea vista por otras personas es porque el receptor o alguna persona con acceso al dispositivo móvil que contiene la imagen la compartió.

En la actualidad, según eMarketer (2019) los países que más utilizan WhatsApp en el Mundo son India, con 340 millones de usuarios activos, los cuales representan el 22.6% de todos los usuarios en el mundo. Le siguen Brasil, Estados Unidos, Indonesia, México, Rusia, Alemania, Italia, España y Ucrania. Por otro lado, hay países como China que no pueden utilizar WhatsApp.

Así pues, WhatsApp permite a las personas enviar y recibir mensajes (mensajes de texto, imágenes, videos, mensajes de voz y archivos) a través de un chat de dos personas o un chat grupal, así como hacer llamadas a todo el mundo. Esto se hace siempre protegiendo el contenido intercambiado y expandiéndose diariamente alrededor del mundo.

Si te ha interesado este artículo y quieres conocer sobre más temas del mundo digital, puedes visitar nuestros artículos sobre VPN Android, PureVPN y NordVPN.

Fuentes

  • Calcuword (2018) https://es.calcuworld.com/cuantos/cuantos-usuarios-tiene-whatsapp/
  • Flores, C., Nieto, P., Rojas, P., Villanueva, N. (2018). Comparación de protocolos en seguridad de
    mensajería instantánea – WhatsApp v/s Telegram. Universidad Tecnica Federico Santa Maria. Chile.
  • Kumar, S. (2019, Enero, 27). WhatsApp Engineering Inside 2 [Articulo de Blog]. Recuperado de
    https://medium.com/codingurukul/whatsapp-engineering-inside-2-bdd1ec354748
  • Kurian, R. (2014, Mayo, 25) How does messaging work in WhatsApp?. [Comentario en Blog].
    Recuperado de: https://www.quora.com/How-does-messaging-work-in-WhatsApp-Is-this-the-right- approach-for-communication-between-client-and-server-Is-the-client-always-connected-to-the- internet-when-waiting-for-a-response
  • Ramakrishnamurthy, R. (2017) How whatsapp works technically and how to build an app similar to it.
    [Articulo en pagina web]. Recuperado de https://blog.contus.com/how-whatsapp-works- technically-and-how-to-build-an-app-similar-to-it/
  • Unocero (2019, Septiembre, 13). Estos son los países donde más se utiliza WhatsApp. [Artículo de
    Pagina Web] Recuperado de: https://www.unocero.com/noticias/paises-que-mas-usan-whatsapp-en-
    el-mundo-2019/