¿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 de longitud es sumar módulo 26:
Nuestro ejemplo es un mensaje propio de 362 letras, cifrado con la clave PLATA (). 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):
| Tramo | Posiciones | Distancia |
|---|---|---|
| HNOG | 75 y 160 | 85 |
| RPRK | 145 y 325 | 180 |
| SPLT | 95 y 295 | 200 |
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 . Si las tres repeticiones son de ese tipo, divide a las tres distancias, y por tanto a su máximo común divisor:
Así que es 1 o 5. Con 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 letras, en el que la letra aparece veces, es la probabilidad de que dos letras tomadas al azar en dos posiciones distintas del texto sean iguales:
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 con probabilidad , la probabilidad de que dos letras sean ambas la es , y sumando sobre todas las letras sale . Ese es el valor que el IC estima. Hay dos casos extremos:
- Texto aleatorio en 26 letras, todas con probabilidad : . 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, sube. Contado sobre el texto completo del Quijote (1 651 361 letras, normalizadas igual), sale ; solo la E (14 %), la A (12 %), la O, la S y la N ya aportan . Con la tabla de frecuencias de Pratt (1939), reducida a 26 letras, sale . El español ronda , 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 porque mezcla alfabetos: nuestro texto cifrado completo da .
Aquí llega la idea clave. Si la clave tiene longitud y reparto el texto en columnas (las letras de las posiciones ; las de ; etc.), cada columna está cifrada con un único desplazamiento, es decir, es un César. Si he acertado con , 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 :
| IC medio | IC medio | ||
|---|---|---|---|
| 1 | 0,0514 | 7 | 0,0550 |
| 2 | 0,0504 | 8 | 0,0489 |
| 3 | 0,0483 | 9 | 0,0461 |
| 4 | 0,0488 | 10 | 0,0834 |
| 5 | 0,0873 | 11 | 0,0486 |
| 6 | 0,0450 | 12 | 0,0447 |
Se ven dos picos, y : 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: . El valor supera el por dos motivos. El mensaje sin cifrar ya tiene un IC de , 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 y .
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 posible de una columna de letras, deshacemos el desplazamiento y comparamos lo que sale con el español. Si el español tiene frecuencias (las del Quijote), esperaríamos ver veces la letra del mensaje, es decir, la letra del texto cifrado. Llamamos a las veces que aparece de verdad (con los índices módulo 26) y medimos el desajuste con el estadístico de Pearson:
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 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 que minimiza :
| Columna | Mejor | Segundo mejor | |
|---|---|---|---|
| 1 | P | 14,4 | 344,3 |
| 2 | L | 29,5 | 175,5 |
| 3 | A | 19,0 | 166,2 |
| 4 | T | 40,0 | 129,5 |
| 5 | A | 25,6 | 210,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
- Suetonio, Vida de los doce Césares, «Divino Julio», 56.6, en la edición de LacusCurtius.
- Ibrahim A. al-Kadi, «Origins of cryptology: the Arab contributions», Cryptologia 16 (1992), 97-126 (al-Kindi, siglo IX, autor del libro de criptología más antiguo que se conoce); el método de las frecuencias en el manuscrito, también en Wikipedia: Al-Kindi.
- Paolo Bonavoglia, «Trithemius, Bellaso, Vigenère. Origins of the polyalphabetic ciphers», HistoCrypt 2020, 45-51 (Bellaso 1553 y Vigenère 1586, con las fuentes originales).
- Friedrich W. Kasiski, Die Geheimschriften und die Dechiffrir-Kunst, Berlín, E. S. Mittler und Sohn, 1863.
- Babbage: Simon Singh, The Code Book, Fourth Estate, 1999, cap. 2, y Ole I. Franksen, «Babbage and cryptography», Mathematics and Computers in Simulation 35 (1993), 327-367; resumen de la historia en Wikipedia: Vigenère cipher.
- William F. Friedman, The Index of Coincidence and Its Applications in Cryptography, Riverbank Laboratories, publicación n.º 22 (lista de las publicaciones de Riverbank); reimpresión de Aegean Park Press, 1987.
- Auguste Kerckhoffs, «La cryptographie militaire», Journal des sciences militaires, enero de 1883.
- Para la historia completa: David Kahn, The Codebreakers, Scribner, 1996.
- Frecuencias del español: el Quijote de Project Gutenberg y la tabla de Wikipedia (fuente citada: Fletcher Pratt, Secret and Urgent, 1939).
- Cálculos del ejemplo: ficha
investigacion/como-romper-un-cifrado-sin-la-clave.md.
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