Saltar al contenido
El bit perdido
Newsletter

¿Cómo se rompe un cifrado sin la clave?

Nivel bachillerato10 min de lecturaPor Fernando Hernando

De César a Vigenère: cómo las frecuencias de las letras y las ideas de Kasiski y Friedman rompieron «el cifrado indescifrable», con el ataque completo paso a paso.

cada dato lleva su fuente al final

Un cifrado se rompe sin la clave cuando el texto cifrado conserva alguna huella del mensaje original, y casi siempre esa huella es estadística: las letras de un idioma no se reparten al azar. Los cifrados clásicos cayeron uno tras otro porque su autor no vio la regularidad matemática que dejaba escapar. Aquí seguimos esa cadena, del César a Vigenère, y al final rompemos de verdad un mensaje de 362 letras cifrado con una clave de cinco, sin más herramientas que contar, dividir y sumar.

La idea

César. Según Suetonio, cuando Julio César tenía que decir algo confidencial en sus cartas privadas lo escribía cifrado, cambiando cada letra por la que está tres puestos más allá en el alfabeto: la A por la D, la B por la E, y así. Con un alfabeto de 26 letras solo hay 25 desplazamientos posibles, así que basta probarlos todos y quedarse con el que da un texto legible. El secreto no valía nada porque la clave se puede adivinar por fuerza bruta.

Frecuencias. Pero hay una forma más elegante, que funciona aunque el alfabeto cifrado esté totalmente desordenado: contar letras. En español, la E y la A son las más frecuentes, y la K o la W casi no aparecen. Un cifrado que sustituye cada letra siempre por la misma conserva ese reparto: la letra más repetida del texto cifrado será, muy probablemente, la E disfrazada. El libro de criptología más antiguo que se conoce, escrito por al-Kindi en Bagdad en el siglo IX, ya explica este método. Un cifrado que sustituye letra por letra con un único alfabeto no resiste este ataque en cuanto el mensaje es un poco largo.

Vigenère. La respuesta fue usar varios alfabetos a la vez. Se elige una palabra clave, por ejemplo PLATA, y la primera letra del mensaje se desplaza como indica la P, la segunda como la L, la tercera como la A, y al llegar al final de la clave se vuelve a empezar. Ahora la E del mensaje se convierte unas veces en T, otras en P, otras en E y otras en X, y las frecuencias se emborronan. Usar una palabra clave para ir cambiando de alfabeto lo publicó Giovan Battista Bellaso en 1553. Blaise de Vigenère recogió la idea en su Traicté des chiffres de 1586, citando a Bellaso, y el nombre que se quedó fue el de Vigenère. Llegó a conocerse como le chiffre indéchiffrable, el cifrado indescifrable.

Kasiski. En 1863, Friedrich Kasiski publicó el primer método general para romperlo, en Die Geheimschriften und die Dechiffrir-Kunst. Charles Babbage lo había roto antes, pero no publicó cómo. La idea de Kasiski: si un mismo trozo del mensaje aparece dos veces a una distancia que es múltiplo de la longitud de la clave, se cifra igual las dos veces, y en el texto cifrado queda una repetición. La distancia entre repeticiones delata la longitud de la clave. Con la longitud en la mano, el cifrado se deshace en varios cifrados de César, y cada uno cae por frecuencias. La matemática que Vigenère no vio era un máximo común divisor.

Las matemáticas de verdad

Para hacerlo completo trabajamos con el alfabeto de 26 letras, sin ñ, sin tildes y sin espacios: la ñ se escribe N y se quitan las tildes. Numeramos las letras de 0 (A) a 25 (Z). Cifrar con una clave k0k1…km−1k_0 k_1\dots k_{m-1} de longitud mm es sumar módulo 26:

ci=(pi+ki mod m) mod 26.c_i = (p_i + k_{i \bmod m}) \bmod 26.

Nuestro ejemplo es un mensaje propio de 362 letras, cifrado con la clave PLATA (m=5m = 5). Va en grupos de cinco, con 25 letras por línea:

FFEKI SZMTR XZLTR TFNBO COEFA
CLNTQ JPDTA EWASA SLHTS ILEEJ
JPVXS TWMXN HLJXQ JPRXC XMIKA
HNOGT XPNXL POIKE RNIHN SPLTL
BLCXN NWAAO GLDXL PPNMR TRAEL
TGAXL STNXR DPNNN HZBKE RPRKA
SZYGO WLBEE HNOGN POIXD TWAKE
JYIHN CTDXL BPNLA YPSBA ARUBE
CEEIR TRUGT PAOKE ALLFA RPNWI
FFEOA HLVXR PEUAE GXAGA RFAGD
DWLXG JPSTL PAUXR ILELP TCAAA
HEAJU TZIZA HWAVA BAAGA SPLTI
VWELI PJEGT DYCXS TYTKA HTNAA
RPRKU XOOJU TXAXS ILCTR ILDXS
EFELD TWEXR AL

Finge que no conoces ni la clave ni su longitud.

Paso 1: repeticiones y distancias (Kasiski)

Buscamos tramos de 4 o más letras que aparezcan dos veces. En este texto hay exactamente tres (ninguno de 5 letras), con sus posiciones (la primera letra es la posición 0):

TramoPosicionesDistancia
HNOG75 y 16085
RPRK145 y 325180
SPLT95 y 295200

Si una repetición viene de un mismo trozo de mensaje cifrado con las mismas letras de la clave, la distancia es un múltiplo de mm. Si las tres repeticiones son de ese tipo, mm divide a las tres distancias, y por tanto a su máximo común divisor:

mcd⁡(85, 180, 200)=5.\operatorname{mcd}(85,\,180,\,200) = 5.

Así que mm es 1 o 5. Con m=1m = 1 sería un César, cosa que el paso 2 descarta. La longitud de la clave es probablemente 5.

Hay que ir con cuidado, porque una repetición también puede salir por casualidad. Con tramos de 3 letras aparecen 20 repeticiones más. En 18 de ellas la distancia es múltiplo de 5: son trozos del mensaje que se repiten, como QUE, DEL o CERR. Pero dos son pura casualidad: BAA, a distancia 97, y AAR, a distancia 129. Es lo que cabe esperar: hay 17 576 tramos posibles de tres letras y unos 64 600 pares de posiciones, así que un texto al azar ya daría unas 3 o 4 coincidencias. Basta una de esas casualidades para que el mcd de todas las distancias sea 1. Por eso no se toma el mcd a ciegas: se mira qué divisor comparten casi todas las distancias. Aquí, de las 26 distancias que salen de los tramos de tres letras, 24 son múltiplos de 5. Y la conclusión se confirma con el paso siguiente.

Paso 2: el índice de coincidencia

William Friedman, en un folleto de los laboratorios Riverbank (Illinois) de principios de los años veinte, introdujo una medida que no necesita buscar repeticiones. El índice de coincidencia de un texto de NN letras, en el que la letra xx aparece nxn_x veces, es la probabilidad de que dos letras tomadas al azar en dos posiciones distintas del texto sean iguales:

IC=∑xnx(nx−1)N(N−1).\mathrm{IC} = \frac{\sum_{x} n_x (n_x - 1)}{N(N-1)}.

El denominador cuenta las formas de elegir la primera posición y luego otra distinta; el numerador, las que caen en la misma letra.

¿Cuánto vale para un idioma? Si cada letra del texto es la xx con probabilidad pxp_x, la probabilidad de que dos letras sean ambas la xx es px⋅pxp_x \cdot p_x, y sumando sobre todas las letras sale ∑xpx2\sum_x p_x^2. Ese es el valor que el IC estima. Hay dos casos extremos:

  • Texto aleatorio en 26 letras, todas con probabilidad 1/261/26: ∑xpx2=26⋅1262=126≈0,0385\sum_x p_x^2 = 26\cdot\frac{1}{26^2} = \frac{1}{26} \approx 0{,}0385. Es el valor más pequeño posible: cualquier reparto desigual da más.
  • Texto en español: las letras están muy desigualmente repartidas, y como los cuadrados premian a las grandes, ∑xpx2\sum_x p_x^2 sube. Contado sobre el texto completo del Quijote (1 651 361 letras, normalizadas igual), sale 0,07500{,}0750; solo la E (14 %), la A (12 %), la O, la S y la N ya aportan 0,0550{,}055. Con la tabla de frecuencias de Pratt (1939), reducida a 26 letras, sale 0,07530{,}0753. El español ronda 0,0750{,}075, casi el doble que el azar.

Un cifrado de César o cualquier sustitución con un solo alfabeto conserva el IC, porque solo cambia el nombre de las letras. Un Vigenère, en cambio, lo acerca a 0,03850{,}0385 porque mezcla alfabetos: nuestro texto cifrado completo da 0,05140{,}0514.

Aquí llega la idea clave. Si la clave tiene longitud mm y reparto el texto en mm columnas (las letras de las posiciones 0,m,2m,…0, m, 2m,\dots; las de 1,m+1,2m+1,…1, m+1, 2m+1,\dots; etc.), cada columna está cifrada con un único desplazamiento, es decir, es un César. Si he acertado con mm, cada columna tiene un IC parecido al del español. Si me equivoco, las columnas mezclan alfabetos y su IC baja. Calculo el IC medio de las columnas para cada mm:

mmIC mediommIC medio
10,051470,0550
20,050480,0489
30,048390,0461
40,0488100,0834
50,0873110,0486
60,0450120,0447

Se ven dos picos, m=5m=5 y m=10m=10: si 5 es la longitud, con 10 también cada columna es un César (es dar la clave dos veces). Nos quedamos con la menor. Esto confirma a Kasiski: m=5m=5. El valor 0,08730{,}0873 supera el 0,0750{,}075 por dos motivos. El mensaje sin cifrar ya tiene un IC de 0,08370{,}0837, porque es corto y repite palabras. Y cada columna tiene solo unas 72 letras, así que su IC baila mucho: en trozos de 72 letras del Quijote, nueve de cada diez tienen un IC entre 0,0630{,}063 y 0,0870{,}087.

Paso 3: recuperar cada letra de la clave

Ya tenemos cinco Césares. Para la columna 1 (las letras de las posiciones 0, 5, 10, …) hay 73 letras y las más frecuentes son T (11 veces), H (8), P (7) y S (6). Como la letra más frecuente del español es la E, probamos que la T sea una E desplazada: de E (4) a T (19) hay 15 puestos, y la letra que lleva el número 15 es la P. Primera letra de la clave: P. Es una pista, no una prueba, así que lo hacemos de forma sistemática.

Para cada desplazamiento ss posible de una columna de nn letras, deshacemos el desplazamiento y comparamos lo que sale con el español. Si el español tiene frecuencias fjf_j (las del Quijote), esperaríamos ver Ej=n fjE_j = n\,f_j veces la letra jj del mensaje, es decir, la letra j+sj+s del texto cifrado. Llamamos Oj+sO_{j+s} a las veces que aparece de verdad (con los índices módulo 26) y medimos el desajuste con el estadístico χ2\chi^2 de Pearson:

χ2(s)=∑j=025(Oj+s−Ej)2Ej.\chi^2(s) = \sum_{j=0}^{25} \frac{(O_{j+s} - E_j)^2}{E_j}.

Cada sumando compara lo observado con lo esperado y lo divide por lo esperado, para que un desajuste en una letra rara pese más que el mismo desajuste en la E. La suma es pequeña cuando el desplazamiento ss deja las letras repartidas como en español. (La K y la W casi no aparecen en el Quijote; les damos una frecuencia mínima de 0,0005 para no dividir por casi cero. Cambiar ese mínimo no cambia el resultado.) Elegimos el ss que minimiza χ2\chi^2:

ColumnaMejor ssχ2\chi^2Segundo mejor χ2\chi^2
1P14,4344,3
2L29,5175,5
3A19,0166,2
4T40,0129,5
5A25,6210,4

La clave es PLATA. Restando esas letras en cada posición, se recupera el mensaje: «Querido Mario: la reunión de mañana queda aplazada hasta el jueves. El mensaje que recibirás…». La diferencia entre el mejor desplazamiento y el segundo es enorme en todas las columnas, y por eso el ataque no deja duda con 72 letras por columna. Con menos letras por columna el ataque se vuelve ambiguo, y por eso conviene probarlo con textos de varios cientos de letras.

Qué aprendió la criptografía

Cada cifrado cayó por la matemática que su autor no vio: César por una cuenta de 25 casos, la sustitución simple por las frecuencias, Vigenère por un máximo común divisor y una probabilidad de coincidencia. Esto cambió la forma de diseñar cifrados. En 1883, Auguste Kerckhoffs escribió, en La cryptographie militaire, que un sistema de cifrado «no debe exigir secreto y debe poder, sin inconveniente, caer en manos del enemigo» (Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi). Dicho de otro modo: el enemigo conoce el método, la seguridad tiene que descansar solo en la clave. Nosotros acabamos de verlo: en todo este ataque no hizo falta conocer la clave, pero sí sabíamos que se trataba de un Vigenère.

Ese principio plantea un problema nuevo. Si lo único secreto es la clave, dos personas que nunca se han visto tienen que ponerse de acuerdo en ella antes de empezar a hablar, y un canal inseguro no sirve para ello. La salida llegó en el siglo XX con la criptografía de clave pública: RSA permite cifrar con una clave que puede ser pública, porque descifrar sin la clave privada exigiría, hasta donde se sabe, factorizar un número enorme, algo que nadie sabe hacer deprisa con los ordenadores actuales. Cómo funciona eso, y por qué es cierto, está en ¿Por qué funciona RSA?.

Fuentes

Preguntas frecuentes

¿Se puede romper un cifrado sin conocer la clave?

Sí, si el cifrado deja huellas estadísticas del mensaje. En un cifrado de César o en uno de Vigenère, las frecuencias de las letras o las repeticiones del texto cifrado delatan la clave. Un cifrado moderno bien diseñado está hecho precisamente para que no deje esas huellas, y su seguridad descansa en que probar todas las claves o resolver el problema matemático que esconde sea inviable.

¿Qué es el análisis de frecuencias?

Es contar cuántas veces aparece cada letra en el texto cifrado y compararlo con lo habitual en el idioma. En español las letras más frecuentes son E y A, y en un cifrado de César la letra más repetida del texto cifrado suele ser la E desplazada. El libro de criptología más antiguo que se conoce, escrito por al-Kindi en el siglo IX, ya explica este método.

¿Por qué se llamó a Vigenère «el cifrado indescifrable»?

Porque usa varios alfabetos de César a la vez, según las letras de una palabra clave, y así las letras más frecuentes dejan de destacar. Desde que Bellaso publicó la idea en 1553 pasaron más de tres siglos hasta que Friedrich Kasiski publicó, en 1863, un método general para romperlo. Charles Babbage lo había roto antes, pero no publicó cómo.

¿Qué dice el principio de Kerckhoffs?

Que un sistema criptográfico no debe exigir secreto y debe poder caer en manos del enemigo sin inconveniente: lo único que ha de ser secreto es la clave. Lo formuló Auguste Kerckhoffs en 1883, en «La cryptographie militaire».

Publicado el

Para saber más

  1. ¿Por qué funciona RSA? Explicado paso a paso

    Multiplicar dos primos es fácil y deshacerlo no. Con un ejemplo completo y la demostración del teorema de Euler, por qué RSA cifra y descifra sin compartir claves.

    7 min de lectura
  2. ¿Cómo se rompió Enigma y qué matemáticas se usaron?

    Los polacos rompieron Enigma antes de la guerra con permutaciones: un teorema sobre ciclos que el tablero de cables no podía ocultar. Qué hizo Turing y qué no.

    11 min de lectura