Etiquetas

, ,

Antes que nada, no tengo ni la mínima intención de defender a Telegram, tampoco sé si sus métodos de cifrado son los mejores o no. Se trata simplemente te aclarar unos temas básicos de cifrado para el «drama» que están montando (por ejemplo) a partir del artículo original How I Hacked Telegram’s “Encryption”. (también erróneo por sensacionalista y poor ignorar de dónde está el problema, pero vaya, es cuestión de negocios, supongo).

En primer lugar, lo que ha hecho no fue hackear ningún cifrado sino usar otra debilidad del sistema operativo en algunos dispositivos para obtener acceso privilegiado (root) a todo el dispositivo. Luego, con estos privilegios pudo acceder a la memoria y ficheros de la app, algo imposible si no fuese por el bug del sistema operativo. Básicamente, no es bug de la app de Telegram, sino del sistema operativo.

Una vez que obtuvo acceso a la memoria RAM y ficheros encontró que los mensajes no están cifrados en la memoria y que la clave de cifrado de la conversación «secret» se guardan si cifrar en un fichero (privado).

Vayamos con la primer parte. El texto que introduce el usuario en la app va siempre en plano desde el «teclado» (es un software independiente) hasta la app. Es decir, es imposible evitar que exista una copia del texto plano en la memoria, siempre existirá, y siempre podrá ser detectada si se tiene acceso «root». Además, si puede «hackear» la memoria de la app, también puede hacerlo con la del teclado, y la del sistema operativo. Es absurdo, al menos con las arquitecturas modernas, pretender que la app solucione este problema.

Por otro lado, para poder almacenar la clave de cifrado (en memoria o en el fichero) otra vez cifrada hace falta una clave privada de cifrado, por lo que esta clave debe estar almacenada y luego en memoria. Por lo tanto esta clave de cifrado de la clave de cifrado está disponible por lo que se puede obtener el texto plano de la clave de cifrado. Lo escribí así para que veáis el «bucle», en pocas palabras: cifrar un texto con una clave cifrada que tiene que estar en la misma app no agrega nada de seguridad, sólo exige un poco más de tiempo para la primera vez que se intenta encontrar (donde «más tiempo» pueden ser un par de minutos, o menos).

Resumen:

  1. Puede ser que los tenga, pero en este caso no se detectó problemas de seguridad de la app de Telegram.
  2. Mucho menos es un hackeo a su método de cifrado, es sólo aprovecharse de un problema de seguridad no relacionado con la app.
  3. No tiene nada que ver con hackeo o debilidad el mecanismo de cifrado de Telegram. Si una app puede obtener privilegios «root» en tu móvil puede romper la seguridad de cualquier app. Estas se basan en que el sistema operativo ya brinda protección de acceso a memoria y ficheros privados. No es sólo tema de teléfonos, también de los sistemas de PCs, ¿o crees que el texto claro en ssh no pasa nunca por memoria?, ¿o que no te pueden «robar» certificados privados si no tienes los permisos correctos y el sistema operativo no los controlase?.
  4. Agregar una capa de cifrado en la app cuando la propia app debe poseer el texto claro de esa clave de cifrado no agrega seguridad, sólo una sensación de falsa seguridad.
  5. Un poco de rigor, escepticismo y opinión informada no viene nunca mal, sobre todo en temas tan complejos como cifrado y seguridad.