¿Por qué no son seguros los cifrados monoalfabéticos?

Un cifrado monoalfabético es uno donde cada símbolo en la entrada (llamado “texto sin formato”) se asigna a un símbolo fijo en la salida (llamado texto cifrado).

Si reemplaza cada “a” en el mensaje con una “x”, cada “b” en el mensaje con una “m” y así sucesivamente para todos los caracteres del alfabeto, está utilizando un cifrado monoalfabético. (Hablo de mensajes que son textos en inglés representados en ascii aquí porque eso facilita los ejemplos, pero las mismas formas de descifrar el cifrado funcionan igualmente bien para mensajes que están en otros idiomas o en otros formatos)

(rot13 – un ejemplo de un cifrado de sustitución monoalfabética)

Dichos cifrados pueden romperse fácilmente en una larga lista de formas diferentes, por lo que decimos que no son seguros. Aquí hay una breve lista de ALGUNAS de las formas en que se puede romper un cifrado de este tipo:

  • Conteo de frecuencias. En inglés (y otros idiomas) hay una gran variación en la frecuencia con la que aparecen las diferentes letras “e” es la más común, ya que representa aproximadamente el 13% de todas las letras en un texto, la siguiente es “t” al 9% “a” en 8% y así sucesivamente. [1] Para descifrar el código, simplemente cuento cuántas veces aparece cada letra en el texto cifrado, y luego supongo que la letra que aparece con más frecuencia es una “e”, la segunda más frecuente es una “t” y así sucesivamente. Después de haber hecho esto para algunas de las letras, es posible reconocer palabras, si por ejemplo “t? E” aparece con frecuencia, entonces? es probable que sea una “h”: por cada nueva letra que adivino correctamente, adivinar las restantes se vuelve más fácil y muy pronto el código se descifra.
  • Ataque conocido de texto simple: si puedo engañarlo de alguna manera para que cifre un texto que conozco (por ejemplo, filtrando un documento “secreto” a sus espías, y espero que lo cifren y se lo envíen), entonces puedo descifrar el código. Al ver directamente cómo es tu mapeo. Si el mensaje que filtré decía que “Londres” y su texto cifrado dice: “Mwrywr”, entonces sé que en su código “M” significa “L” y “w” significa “o” y así sucesivamente, y puedo usar esto Conocimientos para leer futuros mensajes que envíes en el mismo código.
  • Contador de bigramas: similar al conteo de frecuencias, pero aún más poderoso es el conteo de bigramos o trigramas. La idea es que ciertas combinaciones de letras son mucho más comunes en inglés que otras combinaciones de letras, y al contar las combinaciones de letras en el texto cifrado, puedo averiguar qué significan en el texto simple. Por ejemplo, el 1.52% de todas las combinaciones de 2 letras en inglés son “th”, mientras que solo el 0.000004% de todas las combinaciones de 2 letras son “qz”. Entonces, si hay mucho “ru” en tu texto cifrado, entonces es muy probable que signifique “th” y es muy poco probable que signifique “qz”.

Notas al pie

[1] Frecuencia de letras – Wikipedia