Citar
Volviendo a Telegram: problemas técnicos adicionales
Ahora que ya sabemos cómo comparte el cliente y el servidor la clave, parece que todo está resuelto. Sin embargo, sigue habiendo problemas que obligan a modificar el protocolo, y para entenderlos tenemos que profundizar un poco en temas técnicos.
Telegram usa el algoritmo de cifrado AES con claves de 256 bits, en modo IGE (Infinite Garble Extension). El modo tiene que ver con la entrada del algoritmo: AES cifra por bloques, cadenas de 128 bits. Dependiendo del modo en el que usemos el algoritmo, cifraremos los bloques provenientes del texto plano o los combinaremos de alguna forma con bloques cifrados anteriores. Si estáis interesados en el tema, este es un buen recurso, pero el modo de AES no nos interesa demasiado para este artículo.
Lo que sí nos importa es que AES-IGE es vulnerable a ciertos ataques de criptoanálisis. Por ejemplo, a CPA (Chosen Plaintext Attack). Este tipo de ataque consiste en cifrar ciertos textos planos que tú conoces y ver cuál es el resultado. A partir de esos textos (que no son elegidos al azar, sino que se forman específicamente para cada situación), se pueden inferir datos sobre la clave, reduciendo las posibilidades y aumentando la probabilidad de adivinarla por completo.
Para contrarrestar este tipo de ataques, Telegram implementa dos características ingeniosas. La primera es que, cuando se cifra un mensaje, no se cifra sólo el mensaje sino que a él se añade un salt, una cadena aleatoria que define el servidor de Telegram, la hora actual y un número de secuencia que indica el orden del mensaje.
De esta forma, un atacante no puede cifrar con AES-IGE el texto que él quiera, ya que la aplicación siempre añade esos tres valores fijos que él no controla.
La segunda característica tiene más implicaciones, y es que antes os he mentido un poco. La clave que comparten servidor y cliente no es la que se usa para cifrar los mensajes. Veamos los detalles en la siguiente sección.
Ahora que ya sabemos cómo comparte el cliente y el servidor la clave, parece que todo está resuelto. Sin embargo, sigue habiendo problemas que obligan a modificar el protocolo, y para entenderlos tenemos que profundizar un poco en temas técnicos.
Telegram usa el algoritmo de cifrado AES con claves de 256 bits, en modo IGE (Infinite Garble Extension). El modo tiene que ver con la entrada del algoritmo: AES cifra por bloques, cadenas de 128 bits. Dependiendo del modo en el que usemos el algoritmo, cifraremos los bloques provenientes del texto plano o los combinaremos de alguna forma con bloques cifrados anteriores. Si estáis interesados en el tema, este es un buen recurso, pero el modo de AES no nos interesa demasiado para este artículo.
Lo que sí nos importa es que AES-IGE es vulnerable a ciertos ataques de criptoanálisis. Por ejemplo, a CPA (Chosen Plaintext Attack). Este tipo de ataque consiste en cifrar ciertos textos planos que tú conoces y ver cuál es el resultado. A partir de esos textos (que no son elegidos al azar, sino que se forman específicamente para cada situación), se pueden inferir datos sobre la clave, reduciendo las posibilidades y aumentando la probabilidad de adivinarla por completo.
Para contrarrestar este tipo de ataques, Telegram implementa dos características ingeniosas. La primera es que, cuando se cifra un mensaje, no se cifra sólo el mensaje sino que a él se añade un salt, una cadena aleatoria que define el servidor de Telegram, la hora actual y un número de secuencia que indica el orden del mensaje.
De esta forma, un atacante no puede cifrar con AES-IGE el texto que él quiera, ya que la aplicación siempre añade esos tres valores fijos que él no controla.
La segunda característica tiene más implicaciones, y es que antes os he mentido un poco. La clave que comparten servidor y cliente no es la que se usa para cifrar los mensajes. Veamos los detalles en la siguiente sección.
Es un poco contradictorio lo que menciona ¿no creen?