Allá por el siglo IX, Al-Kindi, un filósofo y matemático árabe, fue el primero que se dio cuenta, o al menos que lo documentó, de que se podía atacar un texto cifrado mediante la estadística del lenguaje en el que estuviera escrito el texto en claro, ya que ciertas características del mismo se trasladaban al criptograma. Por ello, entiendo que podría ser considerado como el padre del criptoanálisis e incluso como el primer 'hacker' de la historia.
El análisis de frecuencias consiste, básicamente, en estudiar la frecuencia de aparición en el criptograma de caracteres o símbolos y de grupos de ellos (monogramas: un carácter o símbolo; bigramas o digramas: dos caracteres o símbolos consecutivos; trigramas: secuencias de tres caracteres o símbolos, tetragramas: cuatro caracteres o símbolos consecutivos, etc.) con relación a la frecuencia de las letras y grupos de éstas en el idioma en el que está escrito el texto en claro.
La técnica del análisis de frecuencias es muy eficaz en el criptoanálisis de criptogramas cifrados por sustitución simple monoalfabética, en los que una letra del texto en claro se cifra siempre como una misma letra en el criptograma, y en los que, por tanto, podemos mapear los caracteres o símbolos del criptograma con aquellos que les correspondería a cada uno de ellos en el texto en claro en función de la frecuencia de aparición de los primeros en el criptograma con relación a la frecuencia relativa de aparición de los caracteres en un texto escrito en el idioma en el que se escribió el texto en claro.Es decir, en un criptograma lo suficientemente largo, aunque no hace falta que sea muy extenso, es posible inferir, sin mucho riesgo a equivocarse, que, en aquellos mensajes cifrados correspondientes a textos en español o inglés, la letra que más aparezca en el criptograma se corresponde con la "E" en el texto en claro, ya que dicha letra es la significativamente más frecuente en ambos idiomas, y que la segunda que más aparezca se corresponde con la "A", si el idioma en el que está escrito el mensaje original es el español, o la "T", si se trata del inglés, y así sucesivamente.
Sin embargo, esto no es tan fácil como lo dicho anteriormente, ya que la estadística del lenguaje no es una ciencia exacta cuando se aplica a mensajes concretos, e incluso nos puede llevar a equívocos con las letras más frecuentes si el criptograma es de poca longitud, por lo que será necesario ir refinando la primera aproximación obtenida hasta lograr dar con el alfabeto de sustitución (la clave) empleada en el cifrado.
Para ciertos tipos de cifrados por sustitución simple monoalfabética, tales como el cifrado César y el cifrado afín, como el cifrado y el descifrado se realizan mediante una función definida por una expresión matemática, ni siquiera se precisa mapear todos los caracteres del criptograma con los del texto en claro, sino que bastará con establecer las correspondencias del más frecuente o de los dos más frecuentes, respectivamente (ver posts: "Ataque mediante análisis de frecuencias al cifrado César en python" y "Ataque mediante análisis de frecuencias al cifrado afín en python").En el caso de los dos cifrados indicados anteriormente, ni siquiera es necesario realizar un ataque por análisis de frecuencias, ya que basta con uno de fuerza bruta porque en ambos casos el espacio de claves es muy pequeño (ver posts: "Ataque de fuerza bruta al cifrado César en python" y "Ataque de fuerza bruta al cifrado afín en python", respectivamente).
Pero, la cosa se complica cuando el alfabeto de sustitución es aleatorio, ya que, por ejemplo, para el caso del alfabeto español con letras mayúsculas (27 caracteres) nos encontramos con que el tamaño del espacio de claves o alfabetos de sustitución posibles es de 27! (1 x 2 x 3 x... x 27), lo que asciende a la bonita cifra de más de diez mil cuatrilllones, algo así como un número mayor que la unidad seguida de 28 ceros, por lo que el ataque de fuerza bruta no es nada aconsejable, y, salvo que se conozcan o puedan inferir fragmentos de texto claro correspondientes a partes del mensaje cifrado o el alfabeto de sustitución se forme de acuerdo a una clave previamente acordada por el emisor y receptor, en cuyo caso el criptograma podría ser vulnerable a un ataque de texto claro conocido (en inglés: 'Known plaintext attack') o de diccionario (en inglés, 'dictionary attack'), respectivamente, es ahí donde juega un papel fundamental la redundancia del lenguaje para atacar este tipo de cifrados.
Esta técnica también se puede emplear, junto con otras más modernas, para el criptoanálisis, por ejemplo, de mensajes cifrados con la máquina Enigma utilizada por el ejército alemán en la WWII. Tal es el caso del algoritmo 'Hill Climbing', en el que se puede utilizar el análisis de frecuencias de n-gramas junto con el Índice de Coincidencia (IC) para atacar mensajes cifrados utilizando esta máquina. Lo que se ha hecho con éxito contra mensajes originales del ejército alemán de la Segunda Guerra Mundial, incluidos mensajes con no más de 80 caracteres y para los que han fallado otros métodos más modernos.
Comentarios
Publicar un comentario