PDF de programación - Telegram: sorteando el protocolo de autenticación

Imágen de pdf Telegram: sorteando el protocolo de autenticación

Telegram: sorteando el protocolo de autenticacióngráfica de visualizaciones

Publicado el 11 de Diciembre del 2018
611 visualizaciones desde el 11 de Diciembre del 2018
1,8 MB
24 paginas
Creado hace 10a (07/05/2014)
TELEGRAM – Sorteando el protocolo de autenticación



1




AUTOR
Jesús Díaz Vico



Versión

V1
V1.1

Fecha
28/04/2014
07/05/2014



COORDINACIÓN
Deepak Daswani Daswani

Daniel Fírvida Pereira



CONTROL DE VERSIONES

Primera versión publicada.
Actualizaciones en Aptdo. 1, 5 y Apéndice A.

Descripción

La presente publicación pertenece a INTECO (Instituto Nacional de Tecnologías de la Comunicación) y está bajo una licencia
Reconocimiento-No comercial 3.0 España de Creative Commons. Por esta razón está permitido copiar, distribuir y comunicar
públicamente esta obra bajo las condiciones siguientes:

TELEGRAM


Reconocimiento. El contenido de este informe se puede reproducir total o parcialmente por terceros, citando su
procedencia y haciendo referencia expresa tanto a INTECO o INTECO-CERT como a su sitio web: http://www.inteco.es . Dicho
reconocimiento no podrá en ningún caso sugerir que INTECO presta apoyo a dicho tercero o apoya el uso que hace de su obra.




su uso no tenga fines comerciales.



Uso No Comercial. El material original y los trabajos derivados pueden ser distribuidos, copiados y exhibidos mientras

Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones
puede no aplicarse si se obtiene el permiso de INTECO-CERT como titular de los derechos de autor. Texto completo de la
licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/es/

TELEGRAM – Sorteando el protocolo de autenticación



2

INDICE

1

2

3

4

INTRODUCCIÓN



LA TEORÍA: PROTOCOLO Y EXPLOTACIÓN
2.1
2.2

Flujo del protocolo de autenticación/autorización
Flujo del ataque



LA PRÁTICA: POC UTILIZANDO CLI
3.1

Código fuente



CONSECUENCIAS
4.1
4.2
4.3

Viabilidad del ataque

Consideraciones adicionales
Clientes de Telegram



5

CONCLUSIÓN



APÉNDICE A. CRONOGRAMA



4


5

5

7


10

17


18

19

20

20


22


24


TELEGRAM – Sorteando el protocolo de autenticación



3



1 INTRODUCCIÓN

Telegram1 es la nueva alternativa a Whatsapp, lanzada a mediados de agosto de
2013. La principal novedad: combina una experiencia de usuario sencilla con un mayor
grado de seguridad que sus competidores. Además, sus protocolos de
comunicaciones2 (desarrollo propio) son libres y la API3 para interactuar con sus
servidores es abierta, de la misma forma que el código de su cliente oficial4

.

Esto facilita enormemente el desarrollo de aplicaciones de terceros, además de
fomentarlo. De hecho, aparte de la aplicación oficial, disponible para Android e iOS,
distintas, para
desde la web de Telegram se enlazan 6
diversos dispositivos y entornos: Linux, Windows, Mac, en fase beta, y otras siete en
fase pre-alpha.

aplicaciones no oficiales5

Esta estrategia sigue al pie de la letra los famosos
, que
básicamente establecen que la seguridad de un sistema debe recaer únicamente en la
clave utilizada, y en ningún caso en mantener secreto el sistema en sí mismo.

principios de Kerckhoffs6

No obstante, en el presente documento se verá que esto tiene importantes
implicaciones en lo que se refiere al diseño del sistema, ya que hay que tener en
cuenta la facilidad del adversario en manipularlo. En concreto, el mecanismo de
autenticación de Telegram presenta debilidades que lo hacen vulnerable en este
aspecto, permitiendo que un atacante obtenga acceso total a la cuenta de su(s)
víctima(s), pasando totalmente desapercibido, si consigue hacer que ésta instale un
cliente levemente manipulado y que, a todos los efectos, se comporta como un cliente
legítimo.

Este estudio demuestra la seguridad que aporta la utilización de las aplicaciones
oficiales de Telegram frente a las amenazas que pueden suponer para los usuarios
aplicaciones maliciosas que se aprovechen de los mecanismos de autenticación
diseñados por Telegram.



1 https://telegram.org
2 https://core.telegram.org/mtproto
3 https://core.telegram.org/api
4 https://telegram.org/source
5 https://telegram.org/apps
6 http://en.wikipedia.org/wiki/Kerckhoffs%27_Principle



TELEGRAM – Sorteando el protocolo de autenticación



4



2 LA TEORÍA: PROTOCOLO Y EXPLOTACIÓN

En esta sección se repasa el protocolo utilizado por Telegram al instalar un cliente
nuevo en un dispositivo. Mediante este protocolo se negocia una clave compartida
entre el servidor y el cliente, que se usará a partir de entonces para cifrar las
comunicaciones entre ambos.
Una vez explicado el protocolo, se detalla a nivel teórico cómo un atacante puede
sortear dicha autenticación mediante un ataque de tipo Man-in-the-Middle.

2.1 FLUJO DEL PROTOCOLO DE AUTENTICACIÓN/AUTORIZACIÓN

Cuando un usuario (nuevo o no) instala un cliente de Telegram en algún dispositivo
compatible, este cliente se comunica con los servidores de Telegram para crear una
clave compartida, que recibe el nombre de authorization key. Esta clave se utilizará
posteriormente para cifrar las comunicaciones entre cliente y servidor, teniendo una
vida útil bastante larga.

Para la negociación de la clave se utiliza el algoritmo de intercambio de claves de
Diffie-Hellman7
, por lo que la clave en sí no es nunca transmitida, ni en claro, ni
cifrada. Para que el usuario sepa que está comunicándose con el servidor de
Telegram, éste último especifica su clave pública (más bien, la huella digital de la
misma) en el primer mensaje que envía al usuario.

A continuación se muestra en detalle este protocolo de autenticación/autorización,
mostrado también gráficamente en la
Figura 1. Información más detallada sobre este
proceso se puede consultar en la web de Telegram8, incluyendo un ejemplo con datos
concretos9
.

mensaje contiene un

nonce10

generado por Alice, llamado nonce.

1. El usuario, Alice, envía una petición req_pq al servidor de Telegram. Este

2. Telegram responde mandando el mensaje resPQ, que incluye otro nonce
generado por él,
incluye un número
compuesto (pequeño) n=pq, producto de dos primos p y q, y la huella digital de
su clave pública, fingerprint. A partir de este momento, en todos los
mensajes se incluirá el par (nonce,server_nonce), que sirve para identificar la
sesión.

llamado server_nonce. Además,

3. Alice comprueba que tiene la clave pública asociada a fingerprint y en caso
afirmativo, factoriza n, obteniendo p y q. Genera un nuevo número aleatorio,



7 http://en.wikipedia.org/wiki/Diffie-hellman
8 https://core.telegram.org/mtproto/auth_key
9 https://core.telegram.org/mtproto/samples-auth_key
10 http://en.wikipedia.org/wiki/Cryptographic_nonce



TELEGRAM – Sorteando el protocolo de autenticación



5

new_nonce, y reenvía los tres valores, cifrados con la clave pública de
Telegram, en el mensaje req_DH_params.



4. Telegram descifra los campos recibidos y comprueba la factorización de n. Si
es correcta, utiliza new_nonce y server_nonce para generar una clave
simétrica que será utilizada temporalmente con AES en modo IGE11
. También
genera aleatoriamente su parte del intercambio Diffie-Hellman, ga. Envía ga a
Alice, cifrado con
temporal generada. Este es el mensaje
server_DH_params_ok.

la clave

5. Alice, al conocer new_nonce y server_nonce, puede calcular la misma clave
que ha utilizado Telegram, y descifra el valor ga. Comprueba que ha sido
creado correctamente y genera su propio gb. En este punto, el cliente sabe que,
de completar satisfactoriamente el proceso, la authorization key final será gab.
En su último mensaje de la autenticación, set_client_DH_params, envía gb a
Telegram, cifrado con la clave AES temporal.

6. Telegram descifra el valor recibido, y establece la authorization key a gab = gba.
Para confirmar que todo se ha ejecutado correctamente, envía un último
mensaje a Alice, dh_gen_ok, incluyendo un hash SHA1 con una sintaxis
específica que recibe como parámetros el valor new_nonce y la authorization
key.

Una vez establecida la clave con el servidor de Telegram, éste último redirige a
Alice al servidor (o servidores) más próximos, con quienes Alice repite el mismo
proceso de negociación de clave. Finalmente, Telegram envía un código por SMS
a Alice, al número especificado por ella. Al introducir este código en el cliente
recién autorizado, se completa la autenticación.



11 http://www.links.org/files/openssl-ige.pdf



TELEGRAM – Sorteando el protocolo de autenticación



6

Figura 1. Protocolo para creación de una clave de autorización en Telegram



Fuente: Elaboración propia

2.2 FLUJO DEL ATAQUE

En general, este es un proceso “bien conocido” de intercambio de claves, equivalente
al que se realiza durante el handshake de SSL/TLS. No obstante, el contexto de
Telegram posee varias características que facilitan un ataque de tipo MITM como el
mostrado en la Figura 2.

El principal problema se debe a que, al tener una API abierta que permite a cualquiera
crear un cliente y hacer uso de los servicios proporcionados por el servidor, Telegram
deposita toda la confianza el cliente. A esto hay que añadir que no se utiliza una
infraestructura de clave pública bien establecida (o al menos, en ningún punto se
recomienda o se
  • Links de descarga
http://lwp-l.com/pdf14493

Comentarios de: Telegram: sorteando el protocolo de autenticación (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad