miércoles, 5 de febrero de 2014

MTProto. Protocolo de Telegram.

Telegram, la alternativa a Whatsapp. Estamos en pleno debate de lo que es seguro y lo que no. Pues bien, hoy intentaré explicar la forma de trabajar de esta aplicación de mensajería instantanea.

Comenzaremos con entender lo que es MTProto. MTProto, significa Mobile Protocol. Supongamos, que queremos escribimos un mensaje. Nuestros paquetes se dividen en varias partes, como cualquier protocolo.

  • Salt: 64 bits aleatorios, que se cambian en cada petición al servidor. Se evitan ataques reply.
  • Session_id: 64 bits generados por el cliente, para identificar entre diferentes instancias. La sesión, en conjunto con la clave identificadora, forman una instancia de la aplicación.
  • Payload. Cabecera de 24 bytes, que conforman una clave identificadora de 8 bytes y una clave de mensaje de 16 bytes. Después de esta cabecera biene el mensaje encriptado. Todo el payload, es chequeado por el receptor.
  • Padding: bytes de relleno.
Algoritmo de encriptacion de Telegram


El message_key es generado por el algoritmo SHA-1. El auth_key de 2048 bits y el message_key de 128 bits, son usados para calcular una clave AES de 256 bits y un Initalization Vector (las famosas IV) (aes-IV) de 256 bits. Con todo ello se encripta nuestro mensaje a enviar.