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.
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.
No hay comentarios:
Publicar un comentario