Guía Completa de Criptología
Guía Completa de Criptología
I Sistemas Clásicos 1
1 Substitución Monoalfabética 3
2 Substitución Polialfabética 33
2.1 Substitución con homófonos . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2 Cifrado de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3 El método original de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4 Criptoanálisis del sistema de Vigenère . . . . . . . . . . . . . . . . . . . . . 41
2.4.1 La prueba de Kasiski . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.2 Ejemplo de criptoanálisis usando la prueba de Kasiski . . . . . . . . 45
El criptograma en bloques de seis . . . . . . . . . . . . . . . . . . . . 46
Columna 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Columna 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Columna 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Columna 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Columna 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Columna 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Criptograma descifrado . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.4.3 La prueba de Friedman . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.4.4 Conceptos afines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.4.5 Criptanálisis utilizando el ı́ndice de coincidencias . . . . . . . . . . . 62
Columna 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Columna 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Columna 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Columna 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Columna 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Columna 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
ÍNDICE GENERAL v
Columna 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Columna 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Columna 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3 Sistemas Poligráficos 91
Precálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
9.4.4 Diffie-Hellman vs. Logaritmo Discreto . . . . . . . . . . . . . . . . . 256
9.5 El Problema de Factorización . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.5.1 Algoritmos para buscar factores pequeños de n . . . . . . . . . . . . 258
División . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Algoritmo ro de factorización de Pollard . . . . . . . . . . . . . . . . 259
Algortimo p − 1 de Pollard . . . . . . . . . . . . . . . . . . . . . . . 260
9.5.2 Factorización con curvas elı́pticas . . . . . . . . . . . . . . . . . . . . 262
9.5.3 Métodos de Fermat, Kraitchik, y Fracciones Continuas . . . . . . . . 263
Método de diferencia de cuadrados de Fermat . . . . . . . . . . . . . 264
Método de Kraitchik . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Fracciones Continuas . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Cómo encontrar subsucesiones . . . . . . . . . . . . . . . . . . . . . 268
9.5.4 La Criba Cuadrática . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
9.5.5 La Criba Especial de Campos Numéricos . . . . . . . . . . . . . . . 272
9.5.6 La Criba General de Campos Numéricos . . . . . . . . . . . . . . . . 276
9.5.7 Complejidad de las cribas . . . . . . . . . . . . . . . . . . . . . . . . 278
9.5.8 La Criba Cuadrática vs. La Criba General de Campos Numéricos . 279
Convenciones y nomenclatura
Criptotexto El texto resultante de cifrar el texto claro. También llamado texto cifrado.
Alfabeto Colección de sı́mbolos que se utilizan para escribir el texto, ya sea el texto claro
o el criptotexto; los alfabetos usados para el texto claro y para el criptotexto no son
necesariamente los mismos, aunque a menudo lo son.
Enemigo Un recepto no autorizado que desea leer los mensajes cifrados, y quien no de-
seamos que los lea.
Es importante notar que las palabras codificar y código tienen un significado especial
en Criptologı́a, como veremos en el Capı́tulo 5; en particular, codificar no es lo mismo que
cifrar, y es importante no confundir los términos.
Parte I
Sistemas Clásicos
Vamos a empezar con sistemas criptográficos que se utilizaron en la historia, empezando
durante la República Romana, y hasta el Renacimiento. Todos los sistemas criptográficos de
este capı́tulo comparten una caracterı́stica: se tiene una correspondencia entre el alfabeto de
escritura y el alfabeto de cifrado, y ésta correspondencia está fija durante todo el proceso
de cifrado y de descifrado. Debido a ello, decimos que estamos usando únicamente un
alfabeto de cifrado, lo que lleva al nombre de “substitución monoalfabético” o “cifrado
monoalfabético.”
Entre los sistemas criptográficos más antiguos de que tenemos noticia, destaca el sistema
de cifrado cesáreo. Atribuido a Julio César, quien menciona que lo utilizó durante la Guerra
de las Galias por el dominio de Europa central en contra de los pueblos celtas que las
4 Substitución Monoalfabética
0 1 2 3 4 5 6 7 8 9 10 11 12
A B C D E F G H I J K L M
13 14 15 16 17 18 19 20 21 22 23 24 25
N O P Q R S T U V W X Y Z
Tabla 1.1: Alfabeto usado en la mayor parte del texto. Ocasionalmente añadiremos la
letra Ñ. Las letras han sido indexadas (el ı́ndice es el número que aparece sobre la letra) a
partir de cero.
habitaban. Suetonio en La vida de los Césares describe también el sistema utilizado por
César.
El mecanismo de cifrado de César supone la existencia de un alfabeto, aquel en el que
se escriben los mensajes que se desea cifrar. Este alfabeto es también utilizado para escribir
los mensajes cifrados y se supone ordenado, en orden alfabético creciente. Según algunas
fuentes César utilizó el alfabeto griego, según otras el latino de 24 letras. Nosotros usaremos
aquı́ el alfabeto de 26 letras usual en la gran mayorı́a de los idiomas y que se muestra en la
tabla 1.1.
Para cifrar un mensaje, además del alfabeto ordenado se requiere el mensaje mismo. El
mensaje está escrito usando únicamente los sı́mbolos del alfabeto. Un tercer elemento clave
faltante para aplicar el mecanismo de cifrado de César: un número k ∈ {0, 1, . . . , n−1} donde
n es el número de sı́mbolos en el alfabeto (el tamaño del alfabeto). Este número es utilizado
para desplazar el alfabeto mismo y obtener ası́ una correspondencia entre los sı́mbolos del
mensaje original y los que se colocarán en el mensaje cifrado. Es decir, siempre que se
encuentre el i-ésimo sı́mbolo del alfabeto en el mensaje original, este será reemplazado por
el sı́mbolo (i + k)-ésimo del alfabeto en el mensaje cifrado. El desplazamiento del alfabeto
es un mecanismo practico para obtener la correspondencia, en la tabla 1.2 se muestra la
correspondencia del alfabeto para k = 3. Al parecer César siempre utilizó k = 2, pero
nosotros podemos ser más generales.
Como se muestra en la Tabla 1.2, cada vez que en el texto original aparece la letra a
este sı́mbolo debe sustituirse en el mensaje cifrado por el sı́mbolo D, la b por la E y ası́
hasta llegar a la w que se substituye por la Z1 . Al llegar a este punto se nos ha acabado el
alfabeto leyéndolo linealmente, nos faltan por cifrar la x, la y y la z. Usamos para cifrar
1
Hemos usado itálicas minúsculas para las letras del alfabeto en el mensaje original y mayúsculas ti-
pográficas para las del cifrado, esto se hace por claridad y por razones históricas. Las letras mayúsculas
han sido tradicionalmente usadas en los mensajes cifrados porque estos eran transmitidos generalmente por
telégrafo y las máquinas de escribir de los telegrafistas, con las que eran transcritos los mensajes, sólo poseı́an
mayúsculas.
1.1 Sistema criptográfico de César 5
a b c d e f g h i j k l m
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
D E F G H I J K L M N O P
n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
Q R S T U V W X Y Z A B C
Lo primero que debemos hacer es echar a perder la ortografı́a, vamos a quitar todos los
acentos ortográficos. Luego reemplazamos cada letra por la que se le asocia según la tabla:
Si indexamos las letras del alfabeto, es decir les asignamos un número natural según su
posición podemos trabajar más eficientemente. Esto ya lo hicimos en la Tabla 1.1.
6 Substitución Monoalfabética
a b c d e f g h i j k l m
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
A C E G I K M O Q S U W Y
n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
A C E G I K M O Q S U W Y
j = (ki) (mod n), a saber 0 y 13. Es decir sólo usarı́amos A y N para cifrar todo el
alfabeto.
Curiosamente los números que hemos probado son divisores de 26. Podrı́amos pensar
que hay que elegir entonces a k de manera que no sea divisor de n.
Hagamos un experimento más pequeño. Supongamos que tenemos los números del 0 al
14, es decir trabajaremos módulo 15. Elegimos k = 6, que no divide a 15. Si nos ponemos a
multiplicar y sacar módulos nos daremos cuenta de que la expresión j = (6 · i) (mod 15),
recorriendo todos los posibles valores de i ∈ {0, . . . , 14}, sólo puede arrojar cinco resultados:
2, 8, 14, 5, y 11. Estos resultados se repiten periódicamente a lo largo de la secuencia
0, . . . , 14. El periodo de repetición, es decir, la distancia entre apariciones sucesivas del
mismo número, es 5, que divide a 15; en efecto, 5|15, pues 3 × 5 = 15. Curiosamente, 3 es el
máximo común divisor de 6 y 15, en notación mcd(6, 15) = 3. El periodo es 15/mcd(6, 15).
Eso nos podrı́a hacer sospechar que el siguiente teorema es cierto:
Lema 1.1 Sean a, b, c ∈ Z, y supongamos que a|bc. Si a y b son primos relativos, entonces
a|c.
Dem.: Puesto que una función de un conjunto finito a sı́ mismo es biyectiva si y sólo si es
inyectiva, si y sólo si es suprayectiva, vamos a probar que la función f es inyectiva si y sólo
si k y n son primos relativos.
Supongamos que i1 , i2 ∈ {0, . . . , n−1} son tales que f (i1 ) = ki1 ≡ ki2 = f (i2 ) (mod n).
Podemos suponer, sin pérdida de generalidad, que 0 ≤ i1 ≤ i2 < n.
8 Substitución Monoalfabética
a b c d e f g h i j k l m
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
A F K P U Z E J O T Y D I
n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
N S X C H M R W B G L Q V
Notamos que como ki1 ≡ ki2 (mod n), tenemos que n|ki2 − ki1 = k(i2 − i1 ).
Si k es primo relativo con n, entonces podemos usar el Lema 1.1 para concluir que
n|i2 − i1 . Pero 0 ≤ i2 − i1 < n, de manera que la única manera en que n|i2 − i1 es si
i2 − i1 = 0; es decir, si k es primo relativo con n, entonces f (i1 ) = f (i2 ) implica que i1 = i2 ,
y f es inyectiva.
Conversamente, supongamos que k no es primo relativo con n, y sea 1 < d = mcd(k, n).
Entonces nd y kd son enteros, y son menores que n y que d, respectivamente. Consideramos
f (0) = 0 y f ( nd ) = nk nk k k nk
d . Puesto que d = n d , y d es un entero, d es un múltiplo de n, y
n n n
por lo tanto, f ( d ) = 0. Es decir, f (0) = f ( d ). Como n > 0, d 6= 0, de manera que f no es
inyectiva.
2
Ahora sabemos qué se requiere para tener un esquema de cifrado con alfabeto decimado
útil: hay que elegir el factor de decimación de tal forma que sea primo relativo al tamaño del
módulo. Por ejemplo, si el factor es k = 5, con nuestros 26 sı́mbolos tenemos la substitución
mostrada en la Tabla 1.4
Podemos generalizar aún más nuestro método de cifrado. Podemos combinar los dos que
tenemos hasta hora. En vez de sólo multiplicar o sólo sumar podemos hacer ambas cosas.
Es decir, definimos la regla de substitución mediante la fórmula j = (ri + k) (mod n),
donde n es la cardinalidad de nuestro alfabeto, y i, r, k ∈ {0, . . . , n − 1}. A este tipo de
substitución se le denomina cifrado o substitución afı́n.
1.4 Alfabetos mezclados 9
Dado que en el esquema de cifrado afı́n también se utiliza un factor que multiplica al
ı́ndice del sı́mbolo a substituir, está sujeto a la misma restricción que el cifrado con alfabeto
diezmado. Para que sea válido debe ocurrir que mcd(r, n) = 1. Dado que la suma solo
desplaza los sı́mbolos una cierta distancia, esta restricción basta para que la substitución
sea biyectiva.
Podemos generalizar aún más y definir el mapeo de substitución de una manera comple-
tamente aleatoria: desordenar completamente el alfabeto sin regla alguna y luego ponerlo
en correspondencia con el alfabeto ordenado. Esta es, sin duda, la mayor generalización
posible. A un esquema como éste se le llama cifrado por alfabeto mezclado.
Esto, sin embargo, trae consigo un problema práctico.
Si un par de personas pretenden usar un esquema criptográfico de alfabetos mezclados
deben primero ponerse de acuerdo en el alfabeto desordenado que define la substitución.
Este alfabeto no puede viajar, como un mensaje más entre los interlocutores: si el enemigo
lo intercepta tiene toda la información para descifrar (y también cifrar) mensajes. Ası́
que es necesario que los corresponsales se pongan de acuerdo en el alfabeto mezclado a
utlizar antes de iniciar la correspondencia. Luego pueden irse a los lugares usuales desde
donde envı́an y reciben mensajes. Pero de alguna manera deben poder recordar el alfabeto
desordenado. Serı́a imprudente escribirlo en un papel que alguien pudiera robar, ası́ que
deben memorizarlo. Pero memorizar una secuencia completamente aleatoria de sı́mbolos
no es trivial.
Para resolver el problema de recordar la substitución serı́a mejor tener un método para
generarlo a partir de alguna información más fácil de recordar. El método debe generar
un alfabeto suficientemente desordenado. Hay varias maneras de hacerlo. La más común
consiste en la elección de una palabra clave, que es la que intercambiamos con nuestro
interlocutor en una reunión secreta, digamos TRISCAYDECAFOBIA. Si eliminamos las repeti-
ciones de letras obtenemos TRISCAYDEFOB. Después escribimos el alfabeto que utilizamos en
el orden usual y eliminamos aquellas letras que ya aparecen en TRISCAYDEFOB. Escribimos
entonces las letras que quedan en el alfabeto en el orden en el que aparecen usualmente, y
obtenemos:
TRISCAYDEFOBGHJKLMNPQUVWXZ,
lo que podemos usar como nuestro alfabeto desordenado definiendo ası́ la correspondencia
que aparece en la Tabla 1.5. A este tipo de alfabeto mezclado se le denomina un alfabeto
determinado por una palabra clave. Por supuesto, no hay restricción en usar una palabra,
10 Substitución Monoalfabética
a b c d e f g h i j k l m
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
T R I S C A Y D E F O B G
n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
H J K L M N P Q U V W X Z
T R I S C A Y D E F O B
G H J K L M N P Q U V W
X Z
26! = 403, 291, 461, 126, 605, 635, 584, 000, 000.
12 Substitución Monoalfabética
Hasta ahora hemos presentado diversos métodos para cifrar y descifrar mensajes. En
todos ellos hay una caracterı́stica común: dado un sı́mbolo cualquiera del alfabeto, éste es
reemplazado por un único sı́mbolo del alfabeto. Cada vez que en el texto cifrado aparece
una M, sabemos que habrá que reemplazarla por alguna letra, siempre la misma. De allı́ el
calificativo monoalfabéticos para describir estos métodos de cifrado.
Procederemos ahora a hacer criptoanálisis de los sistemas monoalfabéticos. Es decir,
presentaremos las técnicas usuales para descifrar mensajes cifrados cuando carecemos de la
llave correspondiente. Pero antes conviene hacer algunas precisiones. Vamos a suponer que
tenemos un criptotexto, que sabemos que fue cifrado mediante una substitución monoal-
fabética, y que no tenemos ninguna información adicional.
Para cifrar un mensaje usando el método de César se requiere, como hemos dicho, el
alfabeto a utilizar en un orden predeterminado y el desplazamiento que define la función de
reemplazo. Los mismos elementos son necesarios para que el destinatario de los mensajes
pueda descifrarlos correctamente. Si damos por sentado que ambos interlocutores cono-
cen el alfabeto ordenado, bastará que el receptor conozca, para cada mensaje recibido, el
desplazamiento utilizado para cifrarlo; con eso basta para que pueda descifrar correcta y
eficientemente el mensaje. Este elemento es al que llamaremos la clave o la llave.
En los otros métodos de cifrado tenemos también los elementos similares: el alfabeto, el
mensaje original, el mensaje cifrado, y la llave. En al caso de los alfabetos decimados la llave
es el factor, en el cifrado afı́n es el factor y el desplazamiento, en los alfabetos mezclados
es el alfabeto desordenado, o bien la palabra clave y el método para generarlo. En general
tenemos el esquema mostrado en la Figura 1.1.
Hay que hacer énfasis en que cifrar poseyendo la clave y el texto original, o descifrar
cuando estmos en posesión e la llave y el texto cifrado, es un procedimiento algorı́tmico.
Sólo hay que seguir un conjunto ordenado de pasos que luego de un tiempo finito nos
proporcionan lo que deseamos, a saber, el texto cifrado o el texto descifrado.
En contraste, si el enemigo logra capturar uno o varios mensajes cifrados pero no posee la
clave para descifrarlos usando los algoritmos necesarios, entonces para tratar de descifrarlos
tendrá que hacer un análisis del texto cifrado, y tendrá que hacer algunas hipótesis que
1.7 Criptoanálisis de sistemas monoalfabéticos 13
Emisor Receptor
clave
transmisión
MENSAJE MENSAJE
algoritmo de
cifrado CIFRADO CIFRADO
mensaje
mensaje
original algoritmo de
descifrado original
clave
pueden o no ser ciertas acerca de las substituciones que se llevaron a cabo para obtener
lo que el vé. Este, por supuesto, no es un procedimiento algorı́tmico, sino un proceso
heurı́stico. Se plantean posibles soluciones parciales más o menos plausibles, se sigue un
cierto camino que en ocasiones hay que desandar, nunca hay garantı́a de estar en la pista
correcta; se da por terminado el proceso cuando se logra entender el mensaje recibido y
se presume que es éste y no otro el que originalmente fue cifrado por el emisor. En este
proceso la intervención humana es indispensable. Las computadoras nos pueden echar una
mano haciendo algunas cosas por nosotros, como veremos, pero las decisiones inteligentes
necesariamente las hacen las personas, al menos por ahora.
Cifrar y descifrar teniendo la clave es pues un procedimiento algorı́tmico, determinı́stico,
criptográfico. Tratar de descifrar mensajes sin tener la clave es un procedimiento heurı́stico,
azaroso, criptoanalı́tico. El proceso criptoanalı́tico necesariamente lo hace alguien, pero el
proceso criptográfico puede hacerlo algo.
Supongamos que recibimos el siguiente mensaje y que sospechamos que está cifrado
usando un sistema monoalfabético:
nos damos cuenta de que la más frecuente es la conjunción y ası́ que podemos suponer que
T = y. Palabras de dos letras hay varias: GP, AP, FG, OM, y PC. La P aparece la segunda y en
la última de estas. Puesto que una palabra de dos letras en español tiene una vocal y una
consonante, tenemos dos posibles suposiciones, ambas plausibles:
Pero la aparición de la palabra RAG (tercera palabra, tercer lı́nea) nos hace pensar que la
segunda opción no es muy buena, porque habrı́a dos consonantes juntas en una palabra de
tres letras. Ası́ que mejor suponer que la primera opción es la buena. Si suponemos que P
es consonante y G es vocal entonces también debemos suponer que F es consonante, porque
de no serlo la palabra FG tendrı́a dos vocales juntas. Luego notamos que la palabra OM y
la aparición de APM (segunda palabra, quinto renglón) nos llevn a pensar que M es vocal,
porque si no, en esa palabra de tres letras aparecerı́an dos consonantes juntas; suponer que
M es vocal nos lleva a que O es consonante.
La aparición de la palabra YEYEM (cuarta palabra, tercer lı́nea), nos hace pensar que une
de Y y M es vocal. La palabra HOMIC (segunda palabra, sexta lı́nea) nos lleva a pensar que
M es vocal porque de otro modo tendrı́a muchas consonantes juntas, algo que no ocurre en
español.
16 Substitución Monoalfabética
en un u a e a an a e u o
GP AP OAUMW FG OM DMPIJM FG IATC
no e no quie o a o a e no a e
PCDBWG PC RAEGWC MICWFMWDG PC JMIG
u o ie o que i ia un i a o
DAIJC XEGDQC RAG YEYEM AP JEFMOUC
e u o una an a en as i e o un
3
Violamos aquı́ nuestra convención de escribir el texto claro en letra itálica debido a cuestiones tipográficas
1.7 Criptoanálisis de sistemas monoalfabéticos 17
o in a o y un a o o e o
WCIEP HOMIC T AP UMOUC ICWWGFCW
Se ve bastante bien por ahora: las vocales están bien distribuidas, y algunos conectivos
están bien hechos. La distribución de las vocales es una muy buena indicación de que
al menos hemos determinado correctamente cuáles letras del criptotexto corresponden a
vocales.
Si nos fijamos ahora en la tercera palabra de la segunda lı́nea, podemos pensar que
W = r.
La I aparece mucho antecediendo a la letra que creemos es la u. La letra que más
frecuentemente tiene a la u a su inmediata izquierda es la q, pero ésta ya está asignada. El
segundo lugar lo tiene la s (véase la tabla de frecuencias de digramas en el Apéndice A).
Pero la tercerr palabra de la cuarta lı́nea serı́a suna, algo que no tiene mucho sentido. A la
s como antecesor de u le sigue la p en frecuencia, pero puna tampoco es una buena opción.
La siguiente letra en frecuencia es la c, y cuna parece razonable.
Si hacemos las substituciones W = r y I = c, la última palabra del texto queda corre?or,
por lo que suponemos que F = d . Si hacemos esta última substitución, la primera palabra
de la quinta lı́nea queda e?cudo, por lo que hacemos la substitución V = s. Y en la última
palabra de la segunda lı́nea tenemos ?ace, por lo que suponemos J = h. La cuarta palabra
de la segunda lı́nea dice acordar?e, y la primera de la lı́nea tres dice ?ucho, por lo que
suponemos que D = m. El estado actual de nuestro descifrado es el siguiente:
en un u ar de a mancha de cu o
GP AP OAUMW FG OM DMPIJM FG IATC
Quizás el lector ya habrá descifrado el texto completo, pero continuemos como si aún lo
hemos hecho. Lo siguiente que podemos hacer es ver la primera palabra de la segunda lı́nea.
Parece evidente que B = b. La quinta palabra de la cuarta lı́nea sugiere Q = p. Haciendo
estas dos substituciones, notamos ahora que la segunda palabra palabra de la tercer lı́nea
sugiere que X = t; y la segunda palabra de la cuarta lı́nea y, con mayor razón, la penúltima
palabra de la quinta lı́nea, sugieren O = l . Ahora tenemos:
en un lu ar de la mancha de cu o
GP AP OAUMW FG OM DMPIJM FG IATC
Ya es fácil completar: U = g, T = y, Y = v , S = z , y H = f .
Nuestro texto descifrado queda:
Difı́cilmente podrı́amos encontrar algo más representativo del español (aunque sea del
español del siglo de oro).
Ahora podrı́amos preguntarnos: ¿cómo fue construida la regla de substitución? ¿Habrá
alguna manera de generar el alfabeto desordenado que se utilizó?
Escribamos nuestra asociación como se muestra a continuación, para ver si encontramos
algún patrón:
a b c d e f g h i j k l m
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
M B I F G H U J E ? ? O D
n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
P C ? R W V X A Y ? ? ? S
M I G U E L D C R V A N T S
B F H J K O P Q W X Y Z
20 Substitución Monoalfabética
MBIFGHUJEKLODPCQRWVXAYNZTS.
¿Por dónde empezamos ahora? En el caso anterior, las palabras cortas nos dieron una man-
era sencilla de empezar e identificar vocales. Pero ahora no tenemos división de palabras,
ası́ que no tenemos manera de identificar esas palabras cortas. Tendremos que recurrir a la
estructura tı́pica del idioma en que fue escrito el mensaje original. Nos referimos a cosas
como que la b nunca va antecedida de n, o que la q siempre va seguida de u, por ejemplo.
Esta última es una buena manera de empezar porque sabemos que la palabra que es muy
frecuente en español (véase Apéndice A). Podemos tratar de identificar a la q y ası́ ten-
dremos a la u y probablemente alguna otra vocal (e ó i). A fin de cuentas las vocales son las
letras más frecuentes y se reparten por todo el texto. Su espaciamiento también es fácil de
identificar, pues cada sı́laba debe tener al menos una vocal. Nuestro objetivo principal es
entonces primero identificar a las vocales; la q es un objetivo secundario, pero veremos que
1.7 Criptoanálisis de sistemas monoalfabéticos 21
la información que tenemos que acumular para identificar las vocales nos permite también
tratar de identificar a la q.
Lo primero que hacemos es observar la frecuencia de aparición de cada letra. Luego
vamos a observar qué letras se juntan con cuáles y cuántas veces lo hacen. Cuando una
letra va precedida o sucedida por otra se dice que hace contacto con ella. Ası́ que necesitamos
conocer los contactos de cada letra en el criptotexto y luego observar la frecuencia con la que
cada letra hace contacto con cada otra. Esto se llama la frecuencia de digramas (bloques de
dos letras). En la Tabla 1.7 se muestran las frecuencias de aparición de las letras en el texto
cifrado, y en las Tablas 1.8–1.11, las frecuencias de los distintos digramas encontrados. En
éstas últimas, en la columna izquierda debajo de cada letra aquellas que la preceden, junto
a la frecuencia de tal digráfica; la columna de la derecha indica las letras que la suceden
junto a su frecuencia. Por ejemplo, el criptotexto A está precedido por K una vez, y por D
tres veces; mientras que el criptotexto F está sucedido por J una vez, y por T tres veces.
Para identificar a la q, buscamos letras que tengan sólo un único sucesor. Para identificar
a las vocales, recordamos que las vocales tienden a ser sucesores y antecesores de todas las
consonantes, pero que no se mezclan mucho entre sı́; por otro lado, es más común que una
consonante tenga pocos vecinos distintos, y que en su mayorı́a sean vocales. Buscamos
entonces letras frecuentes, con muchos distintos vecinos, que no tengan mucho contacto
entre ellos.
22 Substitución Monoalfabética
A B C D E F G
K:1 D:1 J:1 O:1 G:2 A:3 O:2 T:2 P:1 J:1 O:5 D:2
V:1 F:1 J:2 D:1 G:1 O:1 J:2 F:1
D:3 H:1 H:1 H:2 A:1 P:1 P:1 H:1
N:1 I:1 T:1 J:3 J:2 T:3 T:3 I:2
W:1 J:1 A:1 O:1 J:2
O:2 D:1 Q:3
H I J K L M
D:2 D:1 N:2 H:1 U:1 B:1 O:1 A:1 P:2 H:1 O:1 T:2
L:1 L:1 P:1 J:2 S:2 D:2 X:1 O:2 T:1 O:3 P:1
G:1 O:1 A:1 O:2 P:2 F:2 P:1 O:1 Q:1
P:1 P:3 G:2 D:3 G:2 H:1 S:1
A:1 U:1 I:2 J:1 J:1
Q:1 W:1 V:1 L:1
I:1 Q:1 N:3
F:1 P:4
G:2 V:2
J:1
A:1
O:1
N O P Q R S
J:3 A:1 I3 E:2 H:3 F:1 G:3 H:1 Z:1 T:1 L:1 J:2
O:4 I:2 T:4 F:1 O:7 G:1 N:1 J:1 P:1
O:3 N:3 G:5 J:4 H:1 L:1 O:3
Q:1 V:2 J:1 F:1 I:1
L:3 K:1 J:2
Q:3 L:1 K:1
A:2 M:1 L:2
H:1 N:4 M:1
K:2 P:7 O:2
F:1 T:1 S:1
P:2 X:1 V:2
B:1 Z:1
T U V W X Y Z
F:3 D:1 H:1 J:1 P:2 A:1 H:1 A:1 O:1 K:1
M:2 G:3 J:2 J:1
O:1 L:1 O:2
R:1 O:4
E:2
s a e s ue en u as e
DHPLH UJNIO PFTON OGFTL SJPVO
esan es e que e en a
LOPJG QOPIO MTOKA ONIOG DJVAI
a s a en esn e e en
JDHPV JDAOG QOPGH OXKON AFOGQ
an a ue e asqu eunas a e
JGDJF TONQO FJPMT OTGJP HDJVO
u esa es e nase un aa
ZRTDA HLOPJ NOPLO GJPOE TGIJJ
se un a s a es e
LQHPO ETGIH WADDA JFPSJ BOPKO
a e
JNO
Otra de las letras que aparenta ser una vocal es la A: tiene tantos vecinos a la izquierda
como a la derecha, y tiene alta frecuencia; ası́ que puede ser i o bien o. Por otra parte el
digrama AO aparece dos veces en el texto, ası́ que si suponemos que A = o tenemos AO = oe,
que es un digrama poco frecuente. En cambio el digrama ie sı́ es frecuente, ası́ que serı́a
mejor suponer que A = i . Las únicas letra más o menos equilibradas en vecinos derechos
e izquierdos y con muchos vecinos que quedan son la H y la D, pero como la D aparece
frecuentemente en nuestro texto precediendo o sucediendo a la que creemos que es la a, es
decir a la J, nos hace pensar que no es la vocal que nos falta, porque aparecerı́a mucho el
digrama ao y el oa, algo poco frecuente en español. Ası́ que suponemos que H = o, lo cual
es plausible porque el digrama HP aparece frecuentemente en el texto y esto se traducirı́a
en os, también frecuente en español.
Con esto en mente la D debe ser entonces una consonante muy frecuente; podriamos
pensar en la r. Los digramas DA y DJ aparecen mucho en el texto, y corresponderı́an a ri y
ra; pero entonces DO, que serı́a re, no aparece en el texto, y que deberı́a ser más frecuente
que los dos digramas ya mencionados. Tampoco aparece DG, que deberı́a ser con mucho el
más frecuente si D = r . La letra que si antecede mucho a la O es la N, ası́ que N es mejor
opción para r que D. Respecto a la D, dado que se junta mucho con la J, que creemos es la
26 Substitución Monoalfabética
a, pensamos que es la l, dado que el digrama la es muy frecuente en español. Sólo tenemos
un dato contradictorio: la aparición del digrama AD seguido de DA. Si suponemos que A = i
y nos fijamos en la tabla de digramas con reversos frecuentes, esto sugerirı́a que D = c. Si
ponemos en el texto ambas opciones nos daremos cuenta de que es mejor opción D = l .
Poniendo nuestras nuevas substituciones tenemos:
los o ar e s uer en u as e
DHPLH UJNIO PFTON OGFTL SJPVO
esan es e que i er en la i
LOPJG QOPIO MTOKA ONIOG DJVAI
ose un o illi a s a es e
LQHPO ETGIH WADDA JFPSJ BOPKO
are
JNO
La F debe ser una consonante frecuente y tiende a aparecer mucho antes de vocales. También
le anteceden la s, la i, la a, n, y la e. Serı́a raro que F fuera la c porque cs no es frecuente
en español. Podrı́a ser la d, pero deberı́a aparecer más el digrama de de lo que aparece FO;
y deberı́a ser poco frecuente du que en nuestro caso serı́a FT. Podrı́a ser que F = t, pero
no parace muy probable porque aparece mucho FT, que corresponderı́a a tu, y éste es poco
frecuente en español. Además no aparece FH que deberı́a ser muy frecuente porque to lo
es en español. Podrı́a también ser que F = m, lo que se ve bastente bien si lo sustituimos.
Hacemos eso entonces:
esan es e que i er en la i
LOPJG QOPIO MTOKA ONIOG DJVAI
are
JNO
En el primer renglón leemos mueren y luego en el cuarto muer?e por lo que suponemos que
suponemos que Q = t. También en el cuarto renglón tenemos mas que una sola ?e?, ası́
que supondremos que V = v y Z = z . En el primer y segundo renglones tenemos mueren
mu??as ve?es antes. El primer y tercer signo de interrogación corresponden a la misma
letra, la L, por lo que supondremos que L = c y que S = h. A partir de ahora todo es más
sencillo. Podemos descifrar el resto, y obtenemos:
are
JNO
Los cobardes mueren muchas veces antes de que pierden la vida. Los valientes
no experimentan la muerte mas que una sola vez. Julio César, escena segunda,
acto segundo. William Shakespeare.
a b c d e f g h i j k l m
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
J U L I O ? E S A R B D F
n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
G H K M N P Q T V W X ? Z
En 1883 fue publicada una obra que sentó las bases de la criptografı́a moderna. Fue
escrita por un holandés que, a pesar de tener siete nombres, es conocido sólo como Auguste
Kerckhoffs. La obra es de hecho un libro publicado en varias números de el Journal des
Sciences Militaires a partir del número de enero de 1883, bajo el tı́tulo La Cryptographie
Militaire [Ker83]. En ella, Kerckhoffs establece una serie de propiedades que deben poseer
los sistemas criptográficos y que han servido desde entonces como preceptos para el diseño
de dichos sistemas. A lo largo del tiempo estos preceptos han sido retomados en repetidas
ocasiones por diferentes personas que han hecho aportaciones importantes a la criptografı́a,
a la teorı́a de la información, y a la teorı́a de códigos. En una interpretación reciente
podemos enunciarlos ası́:
1.8 Las máximas de Kerckhoffs 29
1. No se debe subestimar al adversario. Siempre es bueno pensar que quien desea desci-
frar ilegalmente nuestros mensajes secretos es bastante más inteligente que nosotros
y no bastante más tonto. Lo que puede parecernos muy seguro porque nosotros no
podrı́amos descifrarlo puede no ser seguro.
2. Sólo un criptoanalista puede juzgar la seguridad de un sistema criptográfico. Ya vimos
que un sistema criptográfico monoalfabético no ofrece mucha seguridad, algo que no
sospecharı́amos si sólo pensáramos que hay 26! posibles maneras de hacerlo. Esto se
debe a que el criptoanalista no tiene que probarlas todas; las técnicas criptoanalı́ticas
nos indican cuáles son las debilidades del sistema.
3. La seguridad de un sistema criptográfico debe residir exclusivamente en la llave. Ker-
ckhoffs dijo literalmente que el sistema criptográfico “no debe exigir el secreto [del
sistema mismo.] Este puede, sin inconveniente, caer en manos del enemigo”. Es de-
cir debemos suponer en todo momento que el enemigo conoce nuestro algoritmo de
cifrado4 .
4. Las complicaciones superficiales pueden ser ilusorias. Un ejemplo de esto lo vimos
al comparar el sistema de alfabeto decimado con el de César. A pesar de que el
cifrado de César es más sencillo, es más débil el decimado desde el punto de vista
combinatórico. En general el criptoanalista no necesariamente tiene que desandar
paso a paso el camino seguido para cifrar para poder descifrar el mensaje.
5. Al juzgar la seguridad de una clase de métodos hay que considerar posibles errores de
transmisión. Kerckhoffs originalmente escribió “es necesario que el sistema sea fácil
de usar, que no demande tensión de la mente ni el conocimiento de una larga serie de
reglas a observar”. Cuando las cosas son demasiado complicadas para quien las usa,
tiende a evitarse hacer todo lo que se debe hacer y la flojera puede resultar cara.
se incluye una cuarta regla que dice que el sistema “debe ser aplicable a la correspondencia
telegráfica”. Esa regla es poco mencionada porque es, de hecho, la única que ha caducado,
o mejor dicho, actualmente resulta de ámbito muy limitado.
Suponiendo que ya tenemos un sistema criptográfico, ya que podemos suponer que este
sistema será atacado por el enemigo (un criptoanalista), es importante tener una idea sobre
cuáles son los posibles ataques de los que dispone el criptoanalista.
Los tipos de ataque se suelen clasificar en cinco categorı́as dependiendo de lo que el
criptoanalista posee para hacer su trabajo; cuanto más abajo de esta lista nos encontremos,
más elementos tiene:
La razón principal por la cual las substituciones monoalfabéticas son tan vulnerables
al criptoanálisis es que preservan las frecuencias caracterı́sticas del idioma. El conteo de
34 Substitución Polialfabética
2. El número de elementos en el conjunto asociado a cada letra sea el entero más cercano
a cien veces la frecuencia relativa de la letra.
Por ejemplo: para cifrar, reemplazamos cada letra por algún número, elegido aleatoria-
mente de el subconjunto de S asociado a la letra. Una posible asociación se muestra en la
Tabla 2.1. Para descifrar, buscamos el número en la tabla y lo reemplazamos por la letra
correspondiente.
n o s v e m o s e n e l
31 02 89 44 08 87 78 28 59 49 81 26
2.1 Substitución con homófonos 35
a 15, 16, 30, 33, 37, 38,53, 55, 57, 72, 91, 96
b 24
c 03, 39, 42, 67
d 04, 43, 61, 69, 88
e 08, 12, 20, 46, 47, 59, 64, 79, 81, 85, 90, 94, 97
f 60
g 29
h 05
i 14, 45, 50, 60, 73, 82
j 11
k 77
l 01, 26, 35, 71, 93, 98, 99
m 34, 87, 38
n 06, 17, 22, 31, 49, 58
o 02, 10, 41, 51, 66, 70, 75, 83
p 13,18
q 36
r 21, 25, 65, 68, 92, 95
s 00, 28, 52, 63, 74, 78, 89
t 07, 19, 23, 54, 84
u 09, 32, 62, 80
v 44
w 56
x 86
y 76
z 27
Tabla 2.1: Asociación de letras y números. Cada letra tiene una cantidad de códigos
asociada correspondiente a su frecuencia relativa en español.
36 Substitución Polialfabética
c a f e a l a s t r e s
03 37 40 81 57 71 72 52 54 25 85 63
Los sistemas que vimos en el capı́tulo anterior son llamados monoalfabéticos pues utilizan
un único alfabeto de cifrado. Para disfrazar las frecuencias, una idea es utilizar varios
alfabetos de cifrado distintos, alternando entre ellos mediante algún esquema fijo.
El primer método polialfabético práctico fue diseñado por Blaise de Vigenère en 1586.
El apellido simplemente indicaba que Blaise venı́a de un pueblo llamado Vigenère. Vi-
genère entró como secretario al servicio exterior francés, y tras algunos años de experiencia
con cifrado y criptoanálisis, propuso un sistema relativamente avanzado, mediante una ex-
posición muy clara.
Pero desgraciadamente, en esa época la moda criptográfica eran los nomenclatores, que
se trataban de códigos donde palabras y frases completas eran reemplazadas por números1 .
Debido a ello, su sistema fue ignorado hasta finales del siglo XIX. Los criptólogos de ese
1
La diferencia principal entre los códigos y los criptogramas es que en un código las unidades lingüı́sticas
se respetan, mientras que en un criptograma son las unidades alfabéticas las que se respetan.
2.2 Cifrado de Vigenère 37
Para cifrar, buscamos la letra de la palabra clave en la primer columna de la tabla, in-
dicándonos que renglón usar. Luego buscamos la letra que queremos cifrar en el primer
renglón, lo cual nos indica que columna de la tabla utilizar. El criptotexto correspondiente
es entonces la entrada que está en esa columna y ese renglón.
Por ejemplo, la primer letra del mensaje es una e, indicando que debemos usar la columna
que tiene una e hasta arriba; y la primer palabra de la clave es la C, indicando que usemos
el renglón que empieza con C. La entrada en ese renglón y esa columna es una g, de manera
que ese es nuestro criptotexto. Continuando de esa manera, tenemos:
Si pensamos en cada letra como un número 0 ≤ x ≤ 25, módulo 26, entonces el proceso
criptográfico es equivalente a sumar la letra de la clave a la letra del mensaje módulo 26
para obtener el valor de la letra del criptotexto.
El cifrado de Vigenère también es llamado “doble substitución”, y era considerado ir-
rompible en el siglo XIX (excepto quizás si tenı́a uno la buena suerte de adivinar la llave).
38 Substitución Polialfabética
a b c d e f g h i j k l m n o p q r s t u v w x y z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J J L M N O P Q R S T U V W X Y Z A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M M O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Notemos que una misma letra del criptotexto puede representar a varias letras distin-
tas del mensaje original: la segunda, décima, y vigésimo tercera letra del criptotexto son
todas Y; sin embargo, la primer instancia representa a n, la segunda a d, y la tercera a u;
simétricamente, aunque la segunda y cuarta letras del mensaje son n, están representadas
en el criptotexto por letras distintas: Y e I, respectivamente. Por otro lado, la n en la
posición décimo sexta vuelve a ser representada por I.
Si escogemos la llave razonablemente bien, las frecuencias de cada caracter en el cripto-
texto tienden a aplanarse, dando una distribución bastante uniforme.
Mencionamos en la sección anterior que el método que ahora se conoce por el nombre
de Vigenère es una simplificación del método original.
El método original de Vigenère consistı́a en poner un alfabeto mezclado en el primer
renglón, un alfabeto mezclado en la primer columna, y un alfabeto arbitrario en la tabla; di-
cho alfabeto era rotado (compuesto con cifrado de César) en cada renglón sucesivo. Tenemos
un ejemplo en la Tabla 2.3.
Dicho cifrado es a veces llamada “cifrado de Alberti”; Alberti fue un criptoanalista y
criptógrafo italiano, que sugirió un modelo de substitución polialfabética en el cual cada
cierto número de letras (o cada palabra) se cambiaba el alfabeto de cifrado, utilizando algún
esquema en el cual habı́an quedado de acuerdo el remitente y el destinatario.
Nostros vamos a usar el término “cifrado de Alberti” para referirnos a él. Una tabla
con un alfabeto mezclado rotado va a ser llamada una “tabla de Alberti”, para diferenciar
de la tabla de Vigenère usual. También le llamaremos ası́ aunque sólo modifiquemos la
primer columna o el primer renglón de la tabla de Vigenère (esto es equivalente a hacer una
substitución monoalfabética antes, o después, de cifrar).
El método se puede hacer aún más complicado si en vez de utilizar un mismo alfabeto
trasladado para los distintos renglones de la tabla de Vigènere (o de Alberti), usamos
alfabetos arbitrarios no relacionados. Esto hace que la “llave” consista de los n alfabetos que
usemos, más la palabra clave. Este fue el sistema utilizado por el ejercito americano durante
la Segunda Guerra Mundial, diseñado por William Friedman, el padre del criptoanálisis
moderno.
40 Substitución Polialfabética
c o m i d a b e f g h j k l m p q r s t u v w x y z
D A L I M E N T O B C D F G H J K P Q R S U V W X Y Z
E L I M E N T O B C D F G H J K P Q R S U V W X Y Z A
S I M E N T O B C D F G H J K P Q R S U V W X Y Z A L
A M E N T O B C D F G H J K P Q R S U V W X Y Z A L I
Y E N T O B C D F G H J K P Q R S U V W X Y Z A L I M
U N T O B C D F G H J K P Q R S U V W X Y Z A L I M E
N T O B C D F G H J K P Q R S U V W X Y Z A L I M E N
O O B C D F G H J K P Q R S U V W X Y Z A L I M E N T
B B C D F G H J K P Q R S U V W X Y Z A L I M E N T O
C C D F G H J K P Q R S U V W X Y Z A L I M E N T O B
F D F G H J K P Q R S U V W X Y Z A L I M E N T O B C
G F G H J K P Q R S U V W X Y Z A L I M E N T O B C D
H G H J K P Q R S U V W X Y Z A L I M E N T O B C D F
I H J K P Q R S U V W X Y Z A L I M E N T O B C D F G
J J K P Q R S U V W X Y Z A L I M E N T O B C D F G H
K K P Q R S U V W X Y Z A L I M E N T O B C D F G H J
L P Q R S U V W X Y Z A L I M E N T O B C D F G H J K
M Q R S U V W X Y Z A L I M E N T O B C D F G H J K P
P R S U V W X Y Z A L I M E N T O B C D F G H J K P Q
Q S U V W X Y Z A L I M E N T O B C D F G H J K P Q R
R U V W X Y Z A L I M E N T O B C D F G H J K P Q R S
T V W X Y Z A L I M E N T O B C D F G H J K P Q R S U
V W X Y Z A L I M E N T O B C D F G H J K P Q R S U V
W X Y Z A L I M E N T O B C D F G H J K P Q R S U V W
X Y Z A L I M E N T O B C D F G H J K P Q R S U V W X
Z Z A L I M E N T O B C D F G H J K P Q R S U V W X Y
Sabemos ya que en cada idioma las letras del alfabeto poseen una distribución de fre-
cuencias caracterı́stica; en el Capı́tulo 1 nuestro criptoanálisis de sistemas monoalfabéticos
estaba fundamentado en este hecho. En las substituciones monoalfabéticas cada letra cam-
bia su identidad, pero preserva su frecuencia. El panorama para hacer criptoanálisis de
sistemas polialfabéticos, como los que hemos mencionado en este capı́tulo, luce escabroso,
o mejor dicho, excesivamente plano. Los métodos de cifrado polialfabéticos tratan justa-
mente de destruir la información de las frecuencias, pretenden “aplanar” la distribución de
frecuencias de las letras y hacerlas indistinguibles (al menos desde el punto de vista del
análisis de frecuencias). Ası́ que ya no podemos basar el criptoanálisis de sistemas polial-
fabéticos en las frecuencias de las letras del criptograma, al menos no de inmediato. ¿Será
posible recuperar la información de las frecuencias de alguna manera?
Hagamos una revisión de los elementos involucrados en el cifrado: se comienza con un
texto claro y una palabra clave; la palabra clave se hace corresponder letra a letra con el
texto claro. Como en general la palabra clave es bastante más corta que el texto a cifrar, la
palabra clave se repite tantas veces como sea necesario para cubrir el texto completo. Cada
pareja de letras (una letra de la palabra clave y la otra del texto original) se reemplaza por
una letra en el texto cifrado; en general, en cada pareja de letras, la de la clave se usa para
determinar uno de un conjunto de posibles alfabetos, que será usado para reemplazar la
otra letra de la pareja, la del texto claro.
Denotemos con ` la longitud de la palabra clave (número de letras en la palabra clave) y
con N la longitud del texto claro (número de letras sin considerar espacios ni puntuación).
Como en general ` < N , esto obliga a que la palabra clave sea repetida varias veces para
cubrir todo el texto claro. Si denotamos por pj la j-ésima letra del texto claro, donde
j ∈ {0, . . . , N − 1}, y denotamos con ci , i ∈ {0, . . . , ` − 1} la i-ésima letra de la palabra
clave, entonces la ci corresponde a la pj si y sólo si i ≡ j (mod `).
La letra de la palabra clave ci determina el alfabeto usado para cifrar la letra del texto
claro pj . Ası́ que las letras del texto claro p0 , p` , p2` , . . . , pk` son cifradas con el mismo
alfabeto, a saber aquel determinado por c0 ; p1 , p`+1 , p2`+1 , . . . , pk`+1 son cifradas con otro
alfabeto, pero todas ellas con el determinado por c1 ; p2 , p`+2 , p2`+2 , . . . , pk`+2 son cifradas
con el alfabeto determinado por c2 ; y ası́ podemos continuar hasta llegar al conjunto de
las letras p`−1 , p2`−1 , p3`−1 , . . . , p(k+1)`−1 , las que son cifradas con el alfabeto determinado
por c`−1 . Hemos dividido entonces todo el texto claro en ` subconjuntos distintos, cada
subconjunto asociado a una letra diferente de la palabra clave y por tanto, cifrado usando
un único alfabeto determinado por esa letra. Es decir, cada subconjunto es cifrado monoal-
fabéticamente. ¡Qué bien! Si logramos determinar el tamaño de la palabra clave entonces
42 Substitución Polialfabética
Ahora tenemos que encontrar una manera de estimar el tamaño de la palabra clave. Para
evidenciar como podemos hacer esto consideremos un ejemplo. Supongamos que tenemos
el siguiente texto claro2 :
El texto versa sobre la risa, por lo que son frecuentes palabras como rı́e y reı́rse. Si no
sólo consideramos palabras, sino secuencias de letras que se repiten, tenemos cosas como
la palabra, es signo de, significa. Al cifrar se pone en correspondencia el texto claro con la
palabra clave repetida. Si algunas de estas repeticiones empatan de la misma manera con la
clave entonces son cifradas de la misma manera y esto resultará en repeticiones en el texto
cifrado. Es decir, repeticiones de empate entre secuencias de letras del texto claro y la clave
generan repeticiones en el criptograma; hay que enfatizar que no basta que una secuencia
de letras se repita en el texto claro, es menester que estas repeticiones sean apareadas de
la misma manera con la palabra clave. También es conveniente señalar que no siempre las
repeticiones en el criptograma provienen de repeticiones de apareo entre el texto claro y la
clave, algunas de las repeticiones en el criptograma son accidentales. Sin embargo, estas
son raras por lo que tienden a ser cortas.
Para que ocurran las repeticiones de empate, es necesario y suficiente que la distancia
entre algunas de las repeticiones de secuencia en el texto claro sea múltiplo de la longitud
2
Tomado de: El Nombre de la Rosa de Humberto Eco; hora Tercia del Segundo Dı́a, discusión acerca de
la risa que sostienen fray Guillermo de Baskerville y fray Jorge de Burgos.
2.4 Criptoanálisis del sistema de Vigenère 43
de la palabra clave. Por ejemplo, si ciframos nuestro texto usando el método de Vigenère
con la imaginativa palabra clave: clave, de longitud 5, obtenemos lo que se muestra en la
Tabla 2.4.
En la tabla podemos observar que hay varias coincidencias de empate entre el texto
claro y la clave, lo que ocasiona repeticiones de secuencia en el criptograma. Por ejemplo,
la secuencia NLPVPCMRV se repite dos veces en el criptograma y proviene de dos empates
idénticos de la secuencia la palabra con la palabra clave. De la misma forma podemos iden-
tificar otras repeticiones. Algunas de ellas se muestran en la Tabla 2.5 junto con la posición
en la que comienza cada repetición (número total de letras que anteceden a la primera de
la secuencia en cuestión) y la distancia entre apariciones (diferencia de posiciones).
En la Tabla 2.5 podemos ver que las distancias entre repeticiones de secuencias en el
criptograma son divisibles entre 5, la longitud de la palabra clave, siempre que provienen
de repeticiones de empate. En cambio las dos ultimas secuencias de la tabla se repiten a
intervalos no divisibles por 5 y no corresponden a repeticiones de empate entre el texto claro
y la clave. Éstas son las repeticiones accidentales que ya mencionamos. Hay que hacer notar
que las repeticiones que nos interesan, las que provienen de empates iguales, son más largas
que las accidentales. Esto por supuesto no siempre ocurre. En general es poco probable
encontrar repeticiones accidentales largas pero puede haber muchas no accidentales cortas.
¿Qué hacemos si nos topamos con un criptograma que presumiblemente ha sido obtenido
con un cifrado polialfabético?
2. Registramos las posiciones en las que ocurren las repeticiones y obtenemos las distan-
cias entre ellas.
3. De entre los divisores de las distancias, los más frecuentes son buenos candidatos para
la longitud de la palabra clave.
4. Se agrupa cada letra del criptograma con todas aquellas que disten de ella en un
múltiplo de la hipotética longitud de clave y se procede a hacer análisis de frecuencias
sobre cada uno de los conjuntos obtenidos de esta manera.
Tabla 2.5: Algunas secuencias de letras que se repiten en el criptograma, sus posiciones,
distancias y divisores primos de las mismas.
oficial del Trigésimo Tercer Regimiento de Infanterı́a del Ejercito Prusiano. Posiblemente
Babbage hizo su descubrimiento alrededor de 1854 [Sin99], pero nunca lo publicó. No se
supo de este descubrimiento hasta que en el siglo XX, cuando algunos estudiosos de la obra
de Babbage revisaron sus notas personales. Kasiski describió el método en su libro de 1863
La Escritura Secreta y el Arte de Descifrar3 . Al parecer la obra de Kasiski no recibió mucha
atención en su momento. El interés de Kasiski en la criptologı́a decayó y prefirió dedicarse
a la antropologı́a, campo en el que fue más reconocido en su momento [Kah99]. El método
resulta ser el fundamento en el que se basó el criptoanálisis moderno a principios del siglo
XX. Hoy en dı́a lo conocemos como la prueba de Kasiski [Lew00, Bau00].
WWJEE SWPOI EMWVO NQOID YIATW AYSNS WWKUR TWXZE ADGLO AADGB
ILBIF CYNGO HXHEE BWUFE MAKNH MVEFC YNQIE RYNGO QWIMV EFCYN
QIERY NGOWW FAFBW UFEMA KHINB EKCCM BTWBI RBSFR LIDUW IUSLA
KRMIR MHAYM RCSDM AZAKL INGEF CIPBN WALID UWIUS RNERJ EASSV
CEATG ZOEAO ERJEA SSVCE ATGNH LNSJR KURZS BSNBE KCCMB HWAGO
FUJJK URVWW WIQAW BXEFP GSICV VAUXE YAKNX AQEKW CRVQM NTAZE
3
Die Geheimschriften und Dechiffrir-kunst.
46 Substitución Polialfabética
SPLAQ AXNGE ATAMU TRNAN HDBPG AGEWO JNHMV SNNLD NDWBW OASMV
CRIAF RXAQE KMYLN VAMUQ HEUXH SHMAA FAIIV JYNIA FRXAQ EK
WWJEES WPOIEM WVONQO IDYIAT WAYSNS WWKURT WXZEAD GLOAAD GBILBI FCYNGO
HXHEEB WUFEMA KNHMVE FCYNQI ERYNGO QWIMVE FCYNQI ERYNGO WWFAFB WUFEMA
KHINBE KCCMBT WBIRBS FRLIDU WIUSLA KRMIRM HAYMRC SDMAZA KLINGE FCIPBN
2.4 Criptoanálisis del sistema de Vigenère 47
WALIDU WIUSRN ERJEAS SVCEAT GZOEAO ERJEAS SVCEAT GNHLNS JRKURZ SBSNBE
KCCMBH WAGOFU JJKURV WWWIQA WBXEFP GSICVV AUXEYA KNXAQE KWCRVQ MNTAZE
SPLAQA XNGEAT AMUTRN ANHDBP GAGEWO JNHMVS NNLDND WBWOAS MVCRIA FRXAQE
KMYLNV AMUQHE UXHSHM AAFAII VJYNIA FRXAQE K
Columna 1
WWHQKKWEKGSJKFWWWFKHWSWAXNAWGKEWSEGJKAWUIGFWFKSJWKAMAWFEWWFGSWMGFVK
Columna 2
WWXWHRARCSPNMRPXUCCAIVAUNNMVLNRBDRNJNMBXDBCWRLVRWWNVAACRUICZBBNARJ
En la figura 2.1 aparece la gráfica comparativa de las frecuencias relativas de las letras
en español y de las de la columna 2, desplazando el alfabeto 9 y 13 lugares el alfabeto.
Con una gráfica como ésta podemos decidir qué desplazamiento hace corresponder mejor
las distribuciones.
Columna 3
JKHIIMLJCILHYXOZFYCYUCGXGLUOOHYIMJHKXUWHYIYFLICKWCHCFYYYFUIOSXTGXY
Español a en J a en N
14
12
10
Frecuencia Relativa
0
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Letra
Columna 4
EUEMNIIEMCAMLAIEENMMSEOEEDQNAMNRAELUATOSILNAINEUIRDRASNNESPENEAEAN
Columna 5
EREVBRDABVQVNQEAMQBRRAFYANHQAVGBZANRQRAHABQFDGARQVBIINGGMLBABFZWQI
16
14
12
10
Frecuencia Relativa
0
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Letra
representada por la M. Pero en general las cosas lucen bien, mucho mejor que en los
otros tres casos (véase figura 2.3) De manera que vamos a suponer que la quinta letra
de la clave es N.
Columna 6
STBEEMUSHVASVEMDAITCNTUATDEODEOSASSVENSMTIIBUETZAQPAISOOAANOEPEOEA
16
14
12
10
Frecuencia Relativa
0
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Letra
Criptograma descifrado
enpers eguirm emundo queint eresas enquet eofend ocuand osoloi ntento
ponerb elleza senmie ntendi miento ynomie ntendi miento enlasb elleza
syonoe stimot esoros niriqu ezasya sisiem premec ausama sconte ntopon
erriqu ezasen mipens amient oqueno mipens amient oenlas riquez asynoe
stimoh ermosu raquev encida esdesp ojociv ildela sedade sniriq uezame
agrada fement idaten iendop ormejo renmis verdad escons umirva nidade
sdelav idaque consum irlavi daenva nidade s
que luego cambió su nombre por el de William Frederick [Kah99]. William Friedman es-
tudió genética en la Universidad de Cornell, y en 1914 entró a trabajar como genetista en
los laboratorios privados Riverbank de George Fabyan. En los laboratorios Riverbank se
trabajaba en varias áreas; genética era una de ellas, y criptoanálisis era otra. Friedman fue
contratado con la idea de que trabajarı́a en el primero.
El principal interés del Departamento de Criptoanálisis de Riverbank era esclarecer la
autorı́a de algunos sonetos atribuidos a Shakespeare, y que algunos piensan que en realidad
fueron escritos por Francis Bacon. En el Departamento de Criptoanálisis trabajaba una
joven experta en literatura inglesa, particularmente en la obra de Shakespeare, de nombre
Elizebeth Smith (nótese que no es Elizabeth sino Elizebeth). No sabemos si a Friedman
le interesó primero Elizebeth o el criptoanálisis, pero terminó trabajando en el Departa-
mento de Criptoanálisis de Riverbank. Se casó con Elizebeth y en 1921 ambos se fueron al
Departamento de Guerra norteamericano [Kah99].
Ya mencionamos que los sistemas criptográficos polialfabéticos pretenden “aplanar” la
distribución de frecuencias (equivalentemente de probabilidades) caracterı́stica del idioma,
y hacerla lo más parecida posible a una distribución uniforme. Podrı́amos preguntarnos
entonces: dado un criptograma polialfabético ¿qué lejos estará la distribución de las letras
en él, respecto a la distribución uniforme?
Si denotamos por pi la probabilidad Pde que el i-ésimo sı́mbolo del alfabeto convencional
26
de 26 letras aparezca, sabemos que i=1 pi = 1. Si el método de cifrado fuera ideal,
1
entonces después de cifrar el texto todas las probabilidades serı́an iguales a 26 . Entonces
una posible manera de medir la distancia a la distribución univorme serı́a calculos qué tanto
1 1
varı́an las probabilidades pi de 26 , es decir calcular los valores pi − 26 . Cabe señalar que
aquı́ estamos abusando de la notación: pi está denotando la probabilidad de que el i-ésimo
sı́mbolo aparezca en el criptograma, pero dado que el tamaño del criptograma es finito, en
realidad deberı́amos de hablar de un estimador de la probabilidad, algo como la frecuencia
relativa.
La expresión de arriba no es muy buena, pues si sumamos sobre todos los valores de i,
como algunos sumandos pueden ser negativos y otros positivos, el total nos darı́a una idea
equivocada de que tanto difieren las distribuciones. Usar valores absolutos complica las
cosas, ası́ que lo mejor es usar una técnica común en estadı́stica, y tomar los cuadrados de
los valores. Es decir,
26
1 2
X
pi − .
26
i=1
2.4 Criptoanálisis del sistema de Vigenère 57
Esta expresión nos dice qué tan diferente es la distribución de las letras en el texto
respecto a la distribución uniforme. Por eso se le suele llamar el grado de aspereza o rough-
ness [Sin66] del lenguaje. La suma de los cuadrados de las probabilidades la podemos
interpretar como la probabilidad de que al tomar aleatoriamente (sin reemplazo) dos letras
del texto, ambas sean iguales. Al valor de ésta probabilidad se le llama el ı́ndice de coinci-
dencias, y fue una innovación de Friedman. Se trata de la primera vez que en criptoanálisis
se proporciona una expresión analı́tica para obtener el valor de algo en vez de adivinarlo.
Principalmente por esta aportación se le considera a Friedman el padre del criptoanálisis
moderno. Con el ı́ndice de coincidencias, Friedman permitió el uso de todas las herramientas
estadı́sticas para el criptoanálisis.
En la práctica sólo contamos con una muestra de texto, de manera que tenemos que
estimar el ı́ndice de coincidencias. Supongamos que tenemos una muestra de texto T de N
letras sobre el alfabeto convencional de 26 letras, y sea ni el número de veces que se repite
la i-ésima letra del alfabeto en el texto T . Entonces la probabilidad de que al tomar tomar
dos letras resulta que ambas son la i-ésima es igual al número de éxitos entre el número de
casos posibles:
ni
2 n (n − 1)
= i i (2.4.2)
N N (N − 1)
2
Supongamos ahora que sabemos que el texto claro estaba originalmente en español,
que al cifrar se usaron r alfabetos distintos, y que hemos acomodado el criptograma en r
columnas. Cada columna tiene entonces aproximadamente N/r letras, o a lo más (N/r) + 1
letras. Por simplicidad, suponemos que el número de letras de T es un múltiplo de r.
Calculemos M ; para ello consideramos dos casos. Primero, el caso en que elegimos
aleatoriamente dos letras de la misma columna sin reemplazo. Para elegir la primera ten-
emos N opciones (una letra cualquiera), y para la segunda tenemos que elegir alguna letra
de la misma columna en la que está la primera elegida, pero excluyendo a ésta. Ası́ que
tenemos (N/r) − 1 posibilidades. Como consideramos como casos iguales aquel en el que se
elige la letra i-ésima y luego la j-ésima de la columna y aquel en el que se eligen en orden
inverso, hay que dividir entre dos. En sı́ntesis, el número de posibles elecciones de dos letras
de la misma columna es:
N Nr − 1
(2.4.5)
2
Tomamos ahora el caso en que elegimos dos letras de diferentes columnas. Tenemos N
opciones para la primera letra y N − (N/r) para la segunda, y luego dividimos entre dos.
Entonces el número de posibles elecciones de dos letras de diferente columna es:
N N − Nr
(2.4.6)
2
de donde:
(0.038)N − 0.0744 (0.036)N
r 1− = .
IC(T )(N − 1) IC(T )(N − 1)
Finalmente:
.
(0.036)N IC(T )(N − 1) − (0.038)N + 0.0744
r ≈
IC(T )(N − 1) IC(T )(N − 1)
(0.036)N
= . (2.4.8)
IC(T )(N − 1) − (0.038)N + 0.0744
Ahora tenemos una expresión que nos estima el número de alfabetos usados para obtener
el criptograma T a partir de un texto en español, usando un método polialfabético (véase
[Lew00]).
están en idiomas diferentes el número de coincidencias será bastante menor que el que
resulta si los textos están en el mismo idioma. El número de coincidencias para dos textos
en español es de aproximadamente el 7.44% del total de letras en los textos, por ejemplo.
A este número se le suele denotar con la letra griega κ [Bau00].
Tomamos ahora dos textos, los ponemos en correspondencia, contamos sus coincidencias,
y luego desplazamos uno de ellos un lugar a la izquierda haciendo que la letra que “sale”
reaparezca por la derecha (lo que constituye una rotación del texto). Volvemos a contar
las coincidencias y continuamos este proceso de rotación-conteo hasta regresar a la posición
original del texto. Al final obtendremos una lista de números, tantos como la longitud de
los textos (que suponemos son de la misma longitud por simplicidad). Si ahora obtenemos
el promedio de estos números estamos en realidad obteniendo un cierto valor promedio de
κ para ellos. A este valor se le denota por la letra griega χ [Bau00].
Si los dos textos son en realidad uno solo, es decir si ponemos un texto en correspon-
dencia consigo mismo y obtenemos el promedio de las coincidencias sobre todas las posibles
rotaciones del texto, entonces estaremos calculando el valor de χ para un texto consigo
mismo, lo que suele denotarse por ψ.
Pero el promedio obtenido calculando ψ sobre un texto tiene un inconveniente. Cuando
los dos textos, que son el mismo, están en correspondencia y ambos están en la posición
inicial, antes de cualquier rotación, entonces, por supuesto, coinciden en todas sus posiciones
y el valor de κ será exactamente 1 (100% de coincidencias). Este valor no es muy tı́pico
representativo del resto de los valores que se obtendrán con las rotaciones posteriores, ası́
que convendrı́a eliminarlo del promedio calculado por ψ. Al valor de ψ sin considerar este
caso particular se le llama φ y es el que utilizamos como valor del ı́ndice de coincidencias
en la pasada subsección.
En sı́ntesis. Sean T1 y T2 dos textos cualesquiera de igual longitud (`):
χ(T1 , T2 ) Es el valor promedio de κ(T1 , T2,(r) ), donde T2,(r) el el resultado de rotar el texto T2
r lugares, r ∈ {0, . . . , ` − 1}.
φ(T1 ) Es el valor promedio de κ(T1 , T1,(r) ) donde T1,(r) es el resultado de rotar el texto T1 r
posiciones, r ∈ {1, . . . , ` − 1}.
y un subı́ndice: κes = 0.0744 es el valor para el español, κin = 0.065 para el inglés4 y
κun = 0.038 para el texto uniformemente distribuido.
Supongamos que hemos recibido el criptograma que aparece a continuación y que sabe-
mos que ha sido obtenido con un cifrado de Vigerère de un texto originalmente escrito en
español:
WBTIA NZHGU ROILX BJYLW ENMHR BNRDK YMUSL XDOQU TUWIV RAJIX JFTSE
RTYKN FEIBD KYKXB VPXLU MMLCG PDZQS WAPKI YRTUL ZIXTX QYYAN DHVTH
UMQOI XWHBJ LIESS EFBCY BRRHC VRLCM BSTVP NTIKJ PTPOR HIVXD XRVNR
ULNXT VSRHM WWOOM YNUHM UQTWW VBFWN LVISG EUYDS EPDFG OMNZE IPNDX
IBSTU XVUHX XFLYU RIJMC CWIMN HCIJR OIUGY XWHAX HUBII LNSLX RRBWI
BHXPO NDIBA OCSOH UAWDB EMEEE XWWRX EVRDN IKOEE SNZUG LSUEG NGOMM
OUEDY EMIAF BIUBI SKXBN RFNRI LNJXP DDKYT NHKEL NKHUD QAEFU ESKXB
EEVQE MGJRB GKNIX WWQXP ONIMM EWGSD QEHLN RHRTH YDWCS XWWNR UIUQN
EOZQH LXVBR FNHXM ACWMO YQMGU SRIQQ EYVBI FEQHQ FKXAH UXRTY KROTP
JHDUL NJHXD BHUKR CGIQZ YNIMR XPDYU SMWRT EOMEF IVOGS BQYIT NGHFU
RUFKD SEPRH DVCNB ZSOCU SBAOL IOPEH ADABW PNUMX JRTYQ TUHBR ZXWSN
BXIAO SSVVU GXASF YUZKL IWRHI QGHYL RSGXH FSIUX ENIUR PUJJV XGKBU
MBXAT RGBQO VJRXE THUFT JGWEP NIKCN ZXGLA UMMUO XWSNT UTJQN EOYEB
QICVS QZKWP JRXWH ALITC IKEBQ YMKAS VMRAF IZZIX RRSKY UNBXW WRHJW
LOIEU NDIZN JXRWN HXMAW LEDPQ XIYIG XRQUF IBQXV HZEHQ JGIIU BBUAY
FHICN IKCNM TLDOY UVEWL XRQUF VXJXP FNRUT USKSO RINMW WTPDE YMIJF
TCDNB WMWWK PHYQY AYOWE GVZIT JPNIQ NIYVX FTHLB IBIPO TZXRI NZJAX
VFRTG CHJXR WHHIA XQTFD YBYZX MEIGR LYVCI KEHAB CLNGW SQDKC RXHXP
HCHYO DBMSF BCIAN ZEEPN RUXXF JYHRB MCYWX WHQUU TUWTH HYQHB NOJYL
RDKCN RTFDB RFQPO WSSBH FIVSK GHQHY KRPBH DCELY DSIIQ FQVIM OKPHN
BACWO IEUGU XMUOA SQEQK CNOEG DAPUA NDHVH YLUTX FWIVH RLIIC XPONH
YAYCG HLBSI VVIVL DUKGQ URTHT HUMMU ZTQDO QFICC ESVNO KCNSK EKVZU
LNIGV HZUHL XBGEW HHUTM SMSOR TIYDS OMYVQ UTJGM IQQYF TJGWI VNDWP
XPBIQ NOUGZ IXHRA TYYDW XVDDK YMUZT IVGKP QNGXP HFULD RFBEB YUNMW
RKMDC ELANB HVGBD KCRXH XHYUL MYZBG RDKYX XFLYD ZELTN VBGLR IYUNF
VIGDK YLNOE PLRDU LNZTR WRIYX DGBIV RTIVH GXPON CUANR HRDGE FWBOX
PONIY TXDKS PRJCW HZTSW EQFML OEDRY QYAYI XPDPE HTJQN EOYUJ IBCVE
VVUFU RGFSF BBIYD WHUXR SIVUO WIONU MXJRT TURWO VCCEI VHDIU KFXCG
4
Para el inglés en general κin ∈ [0.065, 0.069].
2.4 Criptoanálisis del sistema de Vigenère 63
VZIYD SLIOY QGIKO EEPBB CVNFT CTHUY ZJVBN DQUOV QCGVD QEGWU WGIUB
TYIWH XUXRH UIUOV YDYJU UKWXR UBWIL XBJYL WENMZ IXWHC KMQNG XHRAO
MMUZT QDFUX WWOFS OVDYZ JCYVH PYYVM CEIQH UPWBG XVYVS CWBMF IUPUX
MB
Nuestro análisis de frecuencia del criptograma, que tiene 1707 letras, nos arroja los datos
que aparecen en la Tabla 2.13. El ı́ndice de coincidencias del criptograma resulta ser 0.0413.
Si revisamos en el Apéndice A la tabla del ı́ndice de coincidencias (IC) para textos cifrados
polialfabéticamente en español, nos percataremos de que, según esa tabla se están usando
alrededor de 10 alfabetos para cifrar el texto. Si usamos la expresión (2.4.8) obtenemos que
r ≈ 10.85. Podemos ahora hacer nuestro análisis de Kasiski para determinar el valor de r
con mayor certidumbre.
En lo que sigue cambiaremos un poco la notación respecto al primer caso de estudio
para abreviar la escritura de los casos diferentes para cada columna.
En la Tabla 2.14 se muestra el resultado de la prueba de Kasiski. Al ver la tabla del
análisis de Kasiski podemos notar que:
• El 7 aparece en 8 renglones
Tabla 2.14: Análisis de repetición de secuencias. La columna del centro señala las distancia
entre apariciones sucesivas de la secuencia en la columna de la izquierda. En la columna
derecha está la descomposición en factores primos de cada distancia.
2.4 Criptoanálisis del sistema de Vigenère 65
• El 11 aparece en 5 renglones
ası́ que lo más probable es que se haya usado una clave de longitud 9 para cifrarlo.
El criptograma en 9 columnas se ve asi:
WBTIANZHG UROILXBJY LWENMHRBN RDKYMUSLX DOQUTUWIV RAJIXJFTS ERTYKNFEI
BDKYKXBVP XLUMMLCGP DZQSWAPKI YRTULZIXT XQYYANDHV THUMQOIXW HBJLIESSE
FBCYBRRHC VRLCMBSTV PNTIKJPTP ORHIVXDXR VNRULNXTV SRHMWWOOM YNUHMUQTW
WVBFWNLVI SGEUYDSEP DFGOMNZEI PNDXIBSTU XVUHXXFLY URIJMCCWI MNHCIJROI
UGYXWHAXH UBIILNSLX RRBWIBHXP ONDIBAOCS OHUAWDBEM EEEXWWRXE VRDNIKOEE
SNZUGLSUE GNGOMMOUE DYEMIAFBI UBISKXBNR FNRILNJXP DDKYTNHKE LNKHUDQAE
FUESKXBEE VQEMGJRBG KNIXWWQXP ONIMMEWGS DQEHLNRHR THYDWCSXW WNRUIUQNE
OZQHLXVBR FNHXMACWM OYQMGUSRI QQEYVBIFE QHQFKXAHU XRTYKROTP JHDULNJHX
DBHUKRCGI QZYNIMRXP DYUSMWRTE OMEFIVOGS BQYITNGHF URUFKDSEP RHDVCNBZS
OCUSBAOLI OPEHADABW PNUMXJRTY QTUHBRZXW SNBXIAOSS VVUGXASFY UZKLIWRHI
QGHYLRSGX HFSIUXENI URPUJJVXG KBUMBXATR GBQOVJRXE THUFTJGWE PNIKCNZXG
LAUMMUOXW SNTUTJQNE OYEBQICVS QZKWPJRXW HALITCIKE BQYMKASVM RAFIZZIXR
RSKYUNBXW WRHJWLOIE UNDIZNJXR WNHXMAWLE DPQXIYIGX RQUFIBQXV HZEHQJGII
UBBUAYFHI CNIKCNMTL DOYUVEWLX RQUFVXJXP FNRUTUSKS ORINMWWTP DEYMIJFTC
DNBWMWWKP HYQYAYOWE GVZITJPNI QNIYVXFTH LBIBIPOTZ XRINZJAXV FRTGCHJXR
WHHIAXQTF DYBYZXMEI GRLYVCIKE HABCLNGWS QDKCRXHXP HCHYODBMS FBCIANZEE
PNRUXXFJY HRBMCYWXW HQUUTUWTH HYQHBNOJY LRDKCNRTF DBRFQPOWS SBHFIVSKG
HQHYKRPBH DCELYDSII QFQVIMOKP HNBACWOIE UGUXMUOAS QEQKCNOEG DAPUANDHV
HYLUTXFWI VHRLIICXP ONHYAYCGH LBSIVVIVL DUKGQURTH THUMMUZTQ DOQFICCES
VNOKCNSKE KVZULNIGV HZUHLXBGE WHHUTMSMS ORTIYDSOM YVQUTJGMI QQYFTJGWI
VNDWPXPBI QNOUGZIXH RATYYDWXV DDKYMUZTI VGKPQNGXP HFULDRFBE BYUNMWRKM
DCELANBHV GBDKCRXHX HYULMYZBG RDKYXXFLY DZELTNVBG LRIYUNFVI GDKYLNOEP
LRDULNZTR WRIYXDGBI VRTIVHGXP ONCUANRHR DGEFWBOXP ONIYTXDKS PRJCWHZTS
WEQFMLOED RYQYAYIXP DPEHTJQNE OYUJIBCVE VVUFURGFS FBBIYDWHU XRSIVUOWI
ONUMXJRTT URWOVCCEI VHDIUKFXC GVZIYDSLI OYQGIKOEE PBBCVNFTC THUYZJVBN
DQUOVQCGV DQEGWUWGI UBTYIWHXU XRHUIUOVY DYJUUKWXR UBWILXBJY LWENMZIXW
HCKMQNGXH RAOMMUZTQ DFUXWWOFS OVDYZJCYV HPYYVMCEI QHUPWBGXV YVSCWBMFI
UPUXMB
Columna 1
WBFWUSFODOQLRUDWPHHVVDLWODHUXVSUGVFQOHSWCHDHDVKQGWRUDRLDPDRDKODP
UOUDGGHQOHRHVDVUDRYOPOUOQOQKQWRQHHHLWDROOGXODXVXOFDQBSGHDFLQLUDO
VDDVODHRTSUEDTXUVTBROXHDQTYHLOFPUQEHYMVLWJRUPRHDFFSDDQBGPXTLYU
66 Substitución Polialfabética
3. e → H, a → D. Desplazamiento de 3.
Columna 2
BDBVGNUZBCGASBNHNQYNNCRENQCRLRGBNQNZPFNRNYYRCHVNBRYRQAWZNFRYNYYN
RYNOVRQFNZAYRPHBFDRRNNBNQMTBZNQNAYNBHDDNYVRVOQNVHNQHQNBAPNBDRGUR
GZGVYYPAHRREDHRRVHQQRRCBEHVFRNBBBHRBNNRNNHHZNAZERBBAOQYDRRHWVP
2.4 Criptoanálisis del sistema de Vigenère 67
2. e → R, a → N. Desplazamiento de 13.
Columna 3
TKCBYZEQHUHUKBBHRHLODEDQUUKOULEIGEHYESTHIQBBERZODIQWEOEQTGBEIQUU
PEDYZLUQHUTUTEDTUKTHDDIIEEUUKHUIBQBSHKKCUZHDQYRUUREQYBQLQRIKDUKT
KEEUQJYJUHIEKYTUUUYUIIHRQUQUIIBBWUTJUHDKRDDKIFEYTCHPQYUKJSUESU
68 Substitución Polialfabética
1. e → U, a → Q. Desplazamiento de 16.
Columna 4
IYYFXUSHUSYMYUWIUYUKWLUFMOMIMCUIOMXNHIUJKYYMLLUUKYYOGMNSIOWMXMSM
UBIUIYUVYHYLIHIYXYUIXISMYFHMWXFYCHAIUYYUJIUYUYUHAIHFIXOIXUBCKXGI
PLFFGUYIMMJXYDYFGFMFNNYFKMULYYICIPYLHCNHUUVLKIHMGIFUFFNYCIYNCX
1. e → Y, a → U. Desplazamiento de 20.
2.4 Criptoanálisis del sistema de Vigenère 69
Columna 5
AKBWWGKLKBLMUAMAXKTCPALMXVQLMMYLMGMIAUTWCAZCYILGCXAVWMMWKMIIWGMX
JQZVTVTIALYMVTUIWMLVIBKMVIBBPMVVLBCVTMXAIYIZTALXWLLKTIVTITIRCMQY
QTQUIUVXQWMWTWKKXTKIMZOQCMTDUTYVLWKIMIIUILCICZQICAIAITMLWVZMWM
1. e → M, a → I. Desplazamiento de 9.
70 Substitución Polialfabética
Columna 6
NXRNHLXXRARUNYWXXRXNXNNLJQNXLBDNMJAMDXJLNYXYDINZRDYCUUHAJNBAWUWJ
JINEJCUMYXDYHJKWWUZXBAXEBVRXJAXXNNWVMUXNBDUJUNNXDNNXNAJCYUPXNUUD
NNBRKKMJOWCWNCRDAJABWJDPNUJRNXDNXBNEUJKDUNNWNZJJHNVNCJWNHUJZBB
1. e → N, a → J. Desplazamiento de 9.
Columna 7
ZBRLASBVCOSOBFWQFPFSPBZORCGBCSSSORCRAEQOMOMWSCIIXGICWZRPPZHFQSRR
VCJWPIWOCBWZGQFHOSIDSOBWIOZARWJFGOOISZFRCSOCWDXFBJRAGORIISOHRORS
GVOGOWCFIOCRHSOSSGSQWABOOZGFFDWFBGFSQROQQJBRZIGFJZSDCGROZOVIM
2. e → S, a → O. Desplazamiento de 14.
Columna 8
HVHVXUEBGLGXXHKTJBWKBHTETGXJGTELUBWXBNNITWEXIXGXHBXEGTBKTEXBXRTT
72 Substitución Polialfabética
XVXLNKTKGGXBXNXXFLXXTCNGFGXTXLXTWJIVMTLHVLVYIHTLEXHHHSXKGKTXTATO
XBXFEXETXOWXKXTEFWVXTXMWETMBVKHTJXESTOEANHZHXXITXEKHEWKETWBXF
1. e → X, a → T. Desplazamiento de 19.
Columna 9
GPCIHEERIIXWWIPFYHIEIVRDTVHYPVPXEGMPWIEELEIWIPVHXIPIIQNIPIPIPIEY
GSRXIEHPHEVGPECUSXTRUSRSESWRWEPHSYELSIYREIYVVVVYMPRUFSEEXSZPFSHM
PGPSERISWMIEEWPPYEMVPVSSGQIEISUCYV
Opciones:
1. e → I, a → E. Desplazamiento de 4.
Todo se lo creyó Don Quijote, y dijo que él estaba allı́ pronto para obedecerle,
y que concluyese con la mayor brevedad que pudiese; porque si fuese otra vez
acometido, y se viese armado caballero, no pensaba dejar persona viva en el
castillo, excepto aquellas que él le mandase, a quien por su respeto dejarı́a.
2.5 Criptoanálisis de Sistemas de Alberti 75
Recordemos que el llamado “sistema de Alberti” consiste en utilizar una tabla tipo
Vigenère, con tres posibles generalizaciones:
76 Substitución Polialfabética
1. El alfabeto del primer renglón puede ser un alfabeto mezclado, en vez del alfabeto
en orden normal; es decir, el alfabeto que nos indica qué columna debemos utilizar
puede ser un alfabeto mezclado. En este caso, decimos que se trata de un sistema con
secuencia de texto original mezclada o con columnas permutada.
3. El alfabeto que forma la parte central de la tabla, que es el que rotamos un lugar en
cada renglón, puede ser un alfabeto mezclado en vez de un alfabeto normal. En este
caso, decimos que se trata de un sistema con secuencia de cifrado mezclada.
Si conocemos la secuencia de texto original (es decir el orden en que las columnas
corresponden a las letras del alfabeto original) y la secuencia de cifrado (es decir, el alfabeto
que aparece en la tabla y que es “rotado” en cada renglón sucesivo), entonces podemos
utilizar exactamente el mismo método que en el criptoanálisis de Vigenère para encontrar
la solución. Simplemente buscamos cuál posición del alfabeto mezclado mejor corresponde
con la distribución que tenemos, y proseguimos como antes.
Si conocemos la secuencia de texto original pero no la secuencia de cifrado, es decir, no
sabemos cuál alfabeto fue usado en la tabla, entonces no podemos utilizar los métodos ante-
riores. En este caso, el método estándar de solución se conoce como simetrı́a de posiciones
o simetrı́a directa. El método de simetrı́a de posiciones depende de una palabra probable
para empezar el análisis del criptograma. Se utiliza el hecho de que las columnas de la tabla
se pueden reconstruir en su orden original a partir de la información que se vá obteniendo.
cantam usa
NPUANO LJYTQU RJWVNU HPJMSO ROYSQD JBZSSF OMIIFF HZODZW
b ienave nturad a
DSBMQZ JTVCSD DSJIDC OSKXXW JJSIJC OJIXVN GAUIBF OUDMNR A.
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 A N G O L
2 P A J V
3 Y U D
4 I M A
5 N B
6 N R F O
Puesto que sabemos que cada renglón de la tabla de Alberti es una traslación de cualquier
otro renglón, sabemos que la distancia entre letras en los renglones es contante. Por ejemplo,
en el primer renglón, hay exactamente un hueco entre la A y la N. Eso quiere decir que en
todos los renglones hay exactamente un espacio entre la A y la N. Por lo tanto, la N en el
segundo renglón aparece en la columna de g, en el cuarto renglón en la columna de v, y en
el último renglón en la columna de la z. Continuando de esta manera, podemos rellenar
varios espacios de la tabla:
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 A N R F I G O J V L P B M
2 P B M A N R F I G O J V L
3 Y U D
4 I G O J V L P B M A N R F
5 N R F I G O J V L P B M A
6 N R F I G O J V L P B M A
e f ut a p o hi ido c g t a t
RLZWIW LVOSQC EEZWNW CSSPDV IRAVFV NEBXGX WVODEW DPSADC
a m n am e t asn ue t g ac as o a e
TSYWJX OYOWNO LAEAQY DSNILJ LAKADC WYZYGW AMIILZ JTSIKF
ad el n ha ta ue n o b m g and e e ha il
KYISNR RIZSQJ IPKANK LADLTV UBEHJC WNEIVR RTOYDF IPAVOT
o a n os am ns nb ienave nturad a
DSBMQZ JTVCSD DSJIDC OSKXXW JJSIJC OJIXVN GAUIBF OUDMNR A.
Ahora podemos usar esta información para obtener mas correspondencias del cripto-
texto. En los bloques 30 y 31, en el cuarto renglón, tenemos g*ande, lo cual sugiere que
la E del tercer alfabeto de cifrado corresponde a la r ; y en los bloques 12 y 13, tenemos
p*ohi*ido, lo cual sugiere que la D del quinto alfabeto es una r también, y la A del cuarto
una b. Con esta información, hacemos nuevamente uso de la simetrı́a de posiciones para
rellenar la tabla, y luego substituimos en el criptotexto.
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 A N R F I G U O J V E D L P B M Y
2 P B M Y A N R F I G U O J V E D L
3 Y A N R F I G U O J V E D L P B M
4 I G U O J V E D L P B M Y A N R F
5 N R F I G U O J V E D L P B M Y A
6 N R F I G U O J V E D L P B M Y A
Continuando de esta manera, alternando entre análisis del texto y simetrı́a de posiciones,
obtenemos la tabla completa y el texto del mensaje.
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 A C N Z R F Q I G T S H U O J V E K W D L X P B M Y
2 P B M Y A C N Z R F Q I G T S H U O J V E K W D L X
3 Y A C N Z R F Q I G T S H U O J V E K W D L X P B M
4 I G T S H U O J V E K W D L X P B M Y A C N Z R F Q
5 N Z R F Q I G T S H U O J V E K W D L X P B M Y A C
6 C N Z R F Q I G T S H U O J V E K W D L X P B M Y A
El método de simetrı́a directa también se puede utilizar como método alternativo cuando
conocemos la secuencia de cifrado (el alfabeto que va dentro de la tabla), pero no cono-
cemos la secuencia de texto original. En ese caso, invertimos nuestra tabla, poniendo la
secuencia de cifrado arriba, y en el interior de la tabla poniendo el equivalente de texto ori-
ginal, utilizando distintos renglones para distintos alfabetos. Cada renglón tiene entonces
la secuencia de texto original en el orden en que aparece en la tabla.
c l a r i n e t b d f g h j k m o p q s u v w x y z
B C D E G H I J K L M P Q R T U V W Y Z S A X O F N
M P Q R T U V W Y Z S A X O F N B C D E G H I J K L
R T U V W Y Z S A X O F N B C D E G H I J K L M P Q
K L M P Q R T U V W Y Z S A X O F N B C D E G H I J
a b c d e f g h i j k l m n o p q r s t u v w x y z
D K B L I M P Q G R T C U H V W Y E Z J S A X O F N
Q Y M Z V S A X T O F P N U B C D R E W G H I J K L
U A R X Z O F N W B C T D Y E G H V I S J K L M P Q
M V K W T Y Z S Q A X L O R F N B P C U D E G H I J
La observación importante es que al trabajar con la “tabla del criptoanalista” (la se-
gunda tabla arriba), cualquier par de columnas y cualquier par de renglones, representan
un intervalo de la matriz original. Por ejemplo, veamos las columnas de las letras a y g en
la segunda tabla. Las letras D y P aparecen en el primer alfabeto (el primer renglón) en
esas columnas, respectivamente. Si contamos la distancia entre D y P en la tabla original
(la primera de arriba), notamos que el intervalo es de tamaño nueve. De manera similar, el
intervalo entre las otras parejas en las dos columnas, Q y A, U y F, M y Z, también es nueve.
2.5 Criptoanálisis de Sistemas de Alberti 81
Para cualesquiera dos columnas que comparemos, el intervalo horizontal entre letras en cada
renglón es constante. El intervalo no siempre es nueve, pues depende de las columnas que
estemos comparando. Pero la distancia entre parejas en el mismo renglón en las mismas
dos columnas siempre es constante.
Ahora comparemos las letras en el primer alfabeto de cifrado y el segundo en la segunda
tabla. En la primer columna, las letras D y Q aparecen, y notamos que están a una distancia
de diez en la secuencia original. Las letras Q y X aparecen en otra columna, y lo mismo
con C y P, E y R. Todos estos pares están a una distancia de diez en la secuencia original.
Lo mismo sucede con cualquier otro par elegido de la misma manera. La primer y segunda
sucesión de cifrado en la segunda tabla están entonces separadas por un intervalo de diez
espacios. Cada par de sucesiones (es decir, cada par de renglones) representa un intervalo
distinto. Por ejemplo, el intervalo entre el primer y tercer renglón es trece, entre el primer
y cuarto renglón es cinco, entre el segundo y tercero es cinco también, etc.
Hay varias maneras en que podemos usar esta relación entre intervalos para rellenar la
tabla. Para ver cómo funciona la simetrı́a indirecta, supongamos que tenemos un sistema
polialfabético en el cuál hemos obtenido la siguiente información:
a b c d e f g h i j ···
R T M ···
M F ···
T M ···
Con información en la tabla, podemos también usar otra técnica, llamada encade-
namiento lineal, para continuar llenando el resto de la tabla.
Supongamos que hemos obtenido la siguiente información de un criptotexto que usó
cinco alfabetos:
a b c d e f g h i j k l m n o p q r s t u v w x y z
H Z E I C W K S F J O T A
K M C L H A Z O J N R W S F
T X O B H P K S M R F I N V Z J
S F P Y O L E T V Z M C I R W
N R Z V J A T X S F H
La idea es obtener listas que marcan todas las relaciones que resultan de comparar cada
sucesión de cifrado con cada otra sucesión de cifrado. Por ejemplo, al comparar la primera
con la segunda sucesión, notamos que la distancia de E a C es la misma que de C a H, de H
a K, de K a O, etc. Es decir, la sucesión:
E C H K O
es una decimación (con intervalo desconocido) de la sucesión original. Si hacemos esto con
la tabla de arriba, obtenemos las siguientes sucesiones (cada bloque representa un segmento
de la decimación del alfabeto original; la distancia entre letras sucesivas en cada renglón es
constante, pero puede variar de renglón a renglón):
1-4: FZP WL KE SV JM OC TI AR
4-5: PN LJ EA VT CS IF ZX
Notemos que las cadenas producidas al comparar los renglones 1 y 2, y las obtenidas al
comparar los renglones 2 y 3, tienen obviamente el mismo intervalo (en ambas tenemos el
fragmento CHKOR, por ejemplo). Puesto que al comparar los renglones 1 y 2 obtuvimos el
fragmento IL, y al comparar los renglones 2 y 3 el fragmento LP, los podemos “encadenar”
para obtener un fragmento más largo, ILP; de manera similar obtenemos el fragmento
TWZMB. Tenemos pues ahora los siguientes fragmentos de una decimación del alfabeto de
cifrado usado:
E C H K O R V
T W Z M B
F J N
I L P
A S
El siguiente paso es relacionar estas cadenas con las otras. Si examinamos los intervalos
y patrones de las letras en los fragmentos de otros renglones, podemos agregarlos usando
las mismas reglas. Por ejemplo, si nos fijamos en los fragmentos obtenidos en 1-3, notamos
que el fragmento EHOV representa una decimación, con intervalo dos, del primer fragmento
listado arriba. Concluimos entonces que las distancias entre letras vecinas en el renglón 1-3
es el doble de la distancia que en el renglón 1-2 y en el renglón 2-3. Las podemos agregar,
indicando un lugar vacı́o (cuyo contenido aún no conocemos) por un punto, y obtenemos
E C H K O R V
T W Z M B
F J N
A S . I L P
Las cadenas del renglón 3-4 se obtienen de las de arriba contando cinco letras hacia
atrás, como vemos con las letras V y C del fragmento NZIVC. Esto nos permite atar todos
los fragmentos en una misma cadena larga. Al agregar todas las combinaciones, cada una
con su propia regla, obtenemos el alfabeto casi completo:
E C H K O R V . A S . I L P T W Z M B F J N . . X .
84 Substitución Polialfabética
V W X . Z . A M E S B C . F H I J . L N O P . R T .
G A M E S B C D F H I J K L N O P Q R T U V W X Y Z
Una vez conocido el alfabeto de cifrado, podemos regresar a nuestra tabla de substitución
polialfabética, y reordenar las columnas usando este alfabeto en cada renglón, para obtener:
o a . u . b . v y . n . m e . x p f r z i g s c h t
K L N O P Q R T U V W X Y Z G A M E S B C D F H I J
O P Q R T U V W X Y Z G A M E S B C D F H I J K L N
R T U V W X Y Z G A M E S B C D F H I J K L N O P Q
E S B C D F H I J K L N O P Q R T U V W X Y Z G A M
A M E S B C D F H I J K L N O P Q R T U V W X Y Z G
Dos mensajes idénticos cifrados por dos claves distintas son llamados isólogos.
Cuando tenemos isólogos tales que los tamaños de las llaves son distintos, es posible
recuperar la sucesión de cifrado original sin necesidad de utilizar palabra probable o de
recuperar ninguna parte del texto original. Después podemos reducir los criptogramas a
una substitución monoalfabétca que podemos resolver rápidamente.
Hay dos técnicas, dependiendo de si ambos fueron cifrados con la misma tabla de Vi-
genère o con distintas tablas, pero las ideas son esencialmente las mismas.
Por ejemplo, supongamos que recibimos los siguientes dos mensajes, de la misma fuente:
2.5 Criptoanálisis de Sistemas de Alberti 85
RTDQU XACPP QZCCK PPQPU VZNDA HLTYW YIRDD BLMIS RXRLS GPCIF NEWAL
CZNDZ UXBVL IQQMT KPVQV UQBLW BUXFZ ODPUA HCQEX MJWGL EMMAN KPDQG
LSMLI GVLTK SPBJA FNQSG PCXCN DZMAB VJTBM USVUC BMXBF NHCPL XNPVE
JUCGW WWYLC MQQHM XJZRV RRXIK NEIYT CKNTZ UXACP PPUAH PQRWP XHGPP
QQXHN MMAMK HGWDZ GLSRT VBKLT HBVZJ DIFEV BUZCK LQAMM HRQWI SQHRW
QAMMH CWEEJ XAZDM GSUSC WCLRA CKXDM MAJFT WIAFX XWHWA DHVNP MOAHV.
VXIOW SSVTT NQLXY QQTOC LANXE TUODH BWIQJ AMVUO MXVCO XTHEW ROLSN
XIOLS LHUOL SGYRO WILLZ AEAME VXBFM AINWC LVUOA BCBVA NPNXH XPXGQ
UCXXT SZTNH CWVPT FTWOX THMVR ABBOW RKUCN CFOUN OWFTQ TYYVT LSESH
PLCOS ZASBO EUUXB TEIDW DMHTX NTNRA UWTRH YCMIE WOXTH IWAAT SLXTT
NFTSF PPIND YUWXT QUCFC LXTTN FTSFP PINDY UWNOS IUPBG SHTXB GIYGW
CEWRX PHGKQ CMXKV YOLSE SHPLC OSZAS BOEUU XBTEI DWDMH TXNTN RAUWT.
Notamos que en cada columna aparecen letras que corresponden a la misma letra en el
mensaje original. Comparamos la columna 2 con la columna 14. Ambas tienen una X en el
segundo alfabeto de la segunda llave. La columna dos nos dice que esa letra corresponde a
lo mismo que T en el segundo alfabeto de la primer llave, y la columna catorce que es igual
a C en el séptimo alfabeto de la primer llave. Podemos combinar las dos columnas para
hacer una sola, que serı́a:
Eso nos dice que X del segundo alfabeto de la segunda llave, C del séptimo alfabeto de
la primer llave (que es igual al sexto de la segunda), y T del segundo alfabeto de la primer
llave (que es igual al quinto alfabeto de la segunda llave) corresponden a la misma letra del
mensaje original.
Podemos ahora continuar, consolidando columnas. Al final, obtenemos la siguiente
tabla:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
(1, 1) G Z V K N C F R B M Y H X P
(2, 1)(5, 2) T L N W B P Q F M X S E J D U R O A
(3, 1) Q D E V I M P C W H S R T Y
(4, 1) B W Q G Z A I E L H M R P X C
(5, 1) P R S U A K M J V Y Z O Q H G
(6, 1) A U M C X D L Z R F J K T Q
(7, 1)(6, 2) C X T H S I B N A J P Q D F W V
(1, 2) O M G L T E N V S C Y K R B I
(2, 2) X C L S H V W K E R D B T A Q Y I
(3, 2) V I R Y F T U H Q Z O A L
(4, 2) U A O X C Q T G P K N D
Cada columna de esta tabla representa la misma letra en el mensaje original, aunque
varias columnas son homófonos de la misma letra (que no pudimos consolidar por falta de
información).
Podemos ahora empezar a usar simetrı́a indirecta y encadenamiento lineal en esta misma
tabla. Dependiendo de cuales relaciones lineales utilicemos, obtenemos una decimación de
la sucesión original del mensaje. Por ejemplo, un posible resultado es la sucesión:
G T S A J V N B M X R F Q Z L H U E I K W O C P Y D
Podemos simplemente utilizar esta decimación para obtener la tabla final, o notar que
las posiciones de la W, X, Y, y Z sugieren que la sucesión original era:
S E N O R D L A I B C F G H J K M P Q T U V W X Y Z
Utilizando esta información, terminamos la tabla; una vez identificadas las columnas
correspondientes, la nueva tabla tiene únicamente 21 columnas (el mensaje original sólo usa
21 letras distintas). El resultado es:
88 Substitución Polialfabética
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
(1, 1) G Z V K N C F R B M T U A Y X H I S P Q W
(2, 1)(5, 2) T L N W B P Q F M X S E J D R U K A Y Z O
(3, 1) Q D E V I M P C K W Z S H R O T J L X Y N
(4, 1) B W Q G Z A I E L H M P R V U C D X J K T
(5, 1) P R S U A K M B J V Y Z G O N Q H D W X E
(6, 1) A U M C X D L Z R F J K N T Q I O V G H P
(7, 1)(6, 2) C X T H S I B N A J P Q D W V F L Y K M U
(1, 2) O M G L T E N V S A C F Y K J R Z P I B H
(2, 2) X C L S H V W K U E R D Q B I Y T F N O A
(3, 2) V I R Y F T U H Q Z N O M A L W P B S E D
(4, 2) U A O X C Q T G P Y E N K L D V M I Z S R
HABCD EIFFG CLDAD FGCAB OBCBF QGCND TGBFM IBFGC IBHBL DADFG CCBEG
ABCBE DEGCB ECPCC DFDCJ BLIBJ ADEPB UBLDA DFGCR GKNAB CKGAH DFBCM
GEJBE DJGCD KGAIA PEGLD ADBFC BEGAG CMPAG BECPH AGEGG CMPAG BEFDH
IBAAD JBKGA JGAJG EJBOD MBEFD CCGKN ADCPE DEIFF GLDAD SGNBA EDAFG
CPEDE IFFGL DADBE MGEHA DAFGC PEDEI FFGLD ADHAD BAFGC DHGJG CODHD
AFGCD FDCHI EIBNF DCBEF DHIBA ADJBK GAJGA JGEJB ODMBE FDCCG KNADC.
Esto representa una substitución monoalfabética del mensaje original, el cual puede ser
2.5 Criptoanálisis de Sistemas de Alberti 89
resuelto usando las técnicas desarrolladas para ello. El resultado final es el poema principal
de El Señor de los Anillos de J.R.R. Tolkien:
sobre bloques de n letras, con n > 1. Más formalmente, siguiendo a [Sin66] decimos que un
sistema poligráfico es aquél que reemplaza cada conjunto de n letras del texto original por
un conjunto de n letras en el criptotexto, con n > 1.
Desde el punto de vista matemático, se trata de una substitución monoalfabética en la
cuál el “alfabeto” original y el “alfabeto” de cifrado son la colección de todos los posibles
bloques de n-letras.
El primer sistema tipo poligráfico del que tenemos noticia es el de Giovanni Baptista
Porta (1563) [Kah99]. El sistema de Porta estaba basado en una tabla que, como la de Vi-
genère, tenı́a indexados los renglones y las columnas por las letras del alfabeto. Las entradas
de la tabla eran un conjunto de sı́mbolos extraños. Dado un par de letras consecutivas del
texto claro, la primera se utiliza como el ı́ndice del renglón r y la segunda como el ı́ndice de
la columna c, luego se busca en la tabla el sı́mbolo en la entrada (r, c) y este reemplaza al
par de letras que le dieron lugar. Esto constituye el germen de un sistema poligráfico, pero
no exactamente uno, pues cada pareja de letras es sustituı́do por un sı́mbolo, y no por otro
bloque de letras.
El primer sistema poligráfico verdadero que conocemos es el de Playfair. Recibe su
nombre de el noble inglés Lyon Playfair, quien no lo inventó alrededor de 1854 [Kah99].
Quien realmente inventó el sistema fue Charles Wheatstone, que también inventó su propio
telégrafo poco antes del de Morse y estudiaba óptica, electromagnetismo, y acústica entre
otras cosas. Wheatstone le presentó su sistema a su buen amigo Playfair, con quien se
entretenı́a descifrando los mensajes de enamorados secretos que aparecı́an en el London
Times. Playfair presentó el sistema de Wheatstone en una cena de gala a la que asistió
toda la alta sociedad inglesa, incluyendo a la reina Victoria y a muy diversos funcionarios.
Desde entonces el sistema se conoce por el nombre de su padrino Playfair y no por el de
su verdadero inventor. Por cierto Playfair nunca tuvo intención de plagiar el sistema de
Wheatstone, que se convirtió después en el cifrado de trinchera del ejército inglés y fue
utilizado en la Guerra de los Boers.
El sistema de Playfair reemplaza digramas (pares de letras consecutivas). Intuitivamente
esto dificulta el criptoanálisis porque:
• Hay sólo 26 letras, pero hay 26 × 26 = 676 digramas. La letra e constituye aproxi-
madamente, el 13% del total de letras en un texto en español, pero el digrama más
frecuente, en, constituye sólo el 2.5% del total de digramas. La complejidad absoluta
3.1 Sistema poligráfico de Playfair 93
del sistema es mucho mayor. Para poder distinguir la frecuencia verdadera del ruido,
se requiere mucho más texto.
E A J S Z
L C K T I
D M U B F
N V R G P
X O H Q Y
Supongamos que en el texto claro nos encontramos con el digrama ordenado p1 p2 . Éste
será substituido en el criptograma por el digrama ordenado c1 c2 , que se obtiene mediante
el siguiente algoritmo [Sin66, Lew00]:
1. Se localizan p1 y p2 en el cuadrado.
5. Si p1 y p2 coinciden en renglón y columna (es decir, son la misma letra), se inserta una
letra arbitraria entre ellas, usualmente x, para romper el digrama. Luego se procede
94 Sistemas Poligráficos
E A J S Z E A J S Z E A J S Z
L C K T I L C K T I L L C K T I
D M U B F D M U B F D M U B F
N V R G P N V R G P N V R G P
X O H Q Y X O H Q Y X O H Q Y
A B C
Figura 3.1: Substitución de digramas en el método de Playfair. En A se ilustra el caso en
el que las letras no coinciden en renglón ni columna; en este caso el digrama que reemplaza
a to es CQ. En B se ilustra el caso en el que las letras coinciden en renglón; en este caso
el digrama it se reemplaza por LI. En C se ilustra el caso en el que las letras coinciden en
columna; en este caso el digrama en se reemplaza por LX.
a cifrar por separado los digramas p1 , x y p2 con la letra que siga. Otra alternativa es
substituir p2 por una letra arbitraria.
En el esquema original de Wheatstone si las dos letras del digrama eran iguales y su
3.1 Sistema poligráfico de Playfair 95
posición en la matriz era Mi,j entonces se reemplazaban por el digrama en el que ambas
letras son la de la posición MR−i−1,C−j−1 donde R es el número de renglones en la matriz y
C es el número de columnas. De hecho las matrices de Wheatstone podı́an tener el último
renglón más corto que los anteriores, y no ser cuadradas [Kah99].
Para descifrar hay que aplicar el proceso a la inversa. Sean Mi,j y Mk,m las posiciones
en la matriz M de la primera y segunda letra del digrama del criptotexto, respectivamente,
con i, j, k, m ∈ {0, . . . , 4}. Para descifrarlo:
4. No puede ocurrir que ambas letras del digrama sean iguales. Pero habrá que leer el
resultado final para eliminar las letras espurias que se añadieron para romper digramas
de la misma letra.
Hay una formula mnemotécnica usada por el ejército [otA90], para utilizar el algoritmo
de Playfair en los casos en que las letras coinciden en renglón o columnas: CDDI y CDDA;
esto es: Cifrar Derecha, Descifrar Izquierda y Cifrar Debajo, Descifrar Arriba1 .
Si nuestro texto a cifrar fuera:
mi to sl os mi to ss eg en er an
Ahora nos percatamos que tenemos el digrama ss y tenemos que romperlo añadiendo una
x entre las s. Esto va a dejar un número impar de letras, ası́ que al final debemos también
añadir una x. La secuencia resultante de digramas es:
1
El mnemotécnico original en inglés es: ERDL y EBDA, es decir: Encipher Right, Decipher Left y
Encipher Below, Decipher Above.
96 Sistemas Poligráficos
mi to sl os mi to sx se ge ne ra nx
Una de las ventajas del segundo método de eliminación de digrámas repetidos, sustituı́r
la segunda letra por una x, es que se puede hacer “en lı́nea” al encontrar un digrama que
consiste de una letra repetida, y no hay necesidad de modificar los digramas siguientes.
El cifrado, usando nuestra matriz de arriba, queda como sigue:
claro mi to sl os mi to sx se ge ne ra nx
cifrado FC CQ ET QA FC CQ EQ ZA NS XL VJ XE
En el método de los cuatro cuadrados se coloca el alfabeto completo (salvo nuestra w),
en el orden usual, en un cuadrado de 5 × 5. Este cuadrado se coloca dos veces en el primer y
cuarto cuadrante (es decir, esquinas opuestas) de un cuadrado de 10 × 10, capaz de contener
cuatro cuadrados menores de 5 × 5. En los otros dos cuadrantes se ponen sendos alfabetos
mezclados diferentes. Por ejemplo:
2
De hecho, la repetición de la letra E al final en este caso fue accidental; se debe a que la X y la E están
en la misma columna.
3.2 Sistema de cuatro cuadrados 97
a b c d e M I G U E
f g h i j L A B C D
k l m n o F H J K N
p q r s t O P Q R S
u v x y z T V X Y Z
C E R V A a b c d e
N T S B D f g h i j
F G H I J k l m n o
K L M O P p q r s t
Q U X Y Z u v x y z
claro se es ta cu er do me av en tu ro ad ec ir
cifrado SV UP OA MX GP EI NR IQ UJ OZ SH UC GA BO
Como podemos notar, el criptotexto que corresponde a se es SV, pero el que corresponde
a es no es VS, sino UP.
Una variación sencilla se obtiene si en vez de usar el alfabeto en su orden usual en los
cuadrantes 1 y 4, se utiliza un alfabeto mezclado arbitario en cada cuadrante.
98 Sistemas Poligráficos
Los sistemas de dos cuadrados son una simplifación del sistema de cuatro cuadrados.
Hay dos versiones: vertical y horizontal.
Este sistema usa dos matrices de 5 × 5, uno encima del otro. Normalmente ambos
cuadrados tienen un alfabeto mezclado. Por ejemplo, véase la Figura 3.2
C A L B O
Z S D E F
G H I J K
M N P Q R
T U V X T
D R A G O
N E S B C
F H I J K
L M P Q T
U V X Y Z
Figura 3.2: Un ejemplo de dos cuadrados verticales. El cuadrado de arriba se obtuvo con
la palabra clave CALABOZOS, y el de abajo con DRAGONES.
Para cifrar, usamos la regla del cuadrado, igual que en el caso de los cuatro cuadrados,
cuando se pueda. La primer letra del digrama se busca en el cuadrado superior, y la segunda
en el inferior. Si las dos letras que se busca cifrar están en la misma columna, el digrama es
“cifrado” consigo mismo. Nótese que la primer letra de un digrama de criptotexto siempre
proviene del cuadrado de arriba, y la segunda del cuadrado de abajo.
Por ejemplo, para cifrar la luna brilla con los dos uadrados de la Figura 3.2, tenemos:
Texto claro la lu na br il la
Criptotexto LA CX PR AG GP LA
el 20% de las digráficas del criptograma serán transparencias. Esto facilita la identificación
y el desciframiento.
Para descifrar, buscamos la primer letra en el cuadrado de arriba y la segunda en el
de abajo. Si están en la misma columna, las dejamos como estaban. Si están en columnas
distintas, usamos la regla del cuadrado para descifrar.
En este caso colocamos los dos cuadrados de 5 × 5 uno al lado del otro en posición
horizontal. Para cifrar, buscamos la primer letra en el cuadrado de la izquierda, y la
segunda en el de la derecha. Si las letras están en renglones distintos, aplicamos la regla del
cuadrado. Si están en el mismo renglón, invertimos su orden antes de ponerla. Nótese que
la primer letra de un digrama cifrado es obtenida del cuadrado de la derecha, y la segunda
del cuadrado de la izquierda; es por esto que dos letras en la misma columna deben ser
invertidas al cifrar.
C A L B O D R A G O
Z S D E F N E S B C
G H I J K F H I J K
M N P Q R L M P Q T
T U V X T U V X Y Z
Figura 3.3: Un ejemplo de dos cuadrados horizontales, obtenidos con los mismos cuadrados
base que el caso de dos cuadrados verticales.
Por ejemplo, nuevamente ciframos la luna brilla, usando los dos cuadrados horizontales
en la Figura 3.3:
Texto claro la lu na br il la
Criptotexto AL DV PA RB FP AL
26|(2 x − 1),
es decir:
(2 × 13)|(2 x − 1).
Pero un número par no puede dividir a un impar.
Para establecer exactamente cuáles residuos tienen inverso multiplicativo, necesitaremos
algunos teoremas elementales de Teorı́a de Números.
Ya sabemos que a ≡ b (mod m) significa que m|(a − b). Recordemos también el sigu-
iente hecho evidente:
MCD(a, b)
1 if b = 0 then
2 return a
3 else
4 return MCD (b, a (mod b))
5 endif
Figura 3.4: Versión recursiva del algoritmo de Euclides para obtener el máximo común
divisor de dos números a y b.
llamada a b cociente
0 97 77 1
1 77 20 3
2 20 17 1
3 17 3 5
4 3 2 1
5 2 1 2
6 1 0
Tabla 3.1: Valores de a y b, argumentos del algoritmo de Euclides en las llamadas recursivas
sucesivas para encontrar mcd(97, 77).
Dem.: Como a|b entonces es posible escribir b = ax para algún x ∈ Z. Además b|c entonces
c = by para algún y ∈ Z. Sea z = xy ∈ Z. Entonces c = axy = az por lo que a|c. 2
En esencia la ecuación (3.4.1) dice que cualquier residuo (los valores de b) resultado del
proceso puede escribirse como combinación lineal de sus dos predecesores. Sólo tenemos que
reescribir la ecuación como bi+1 = −qi bi + bi−1 . Pero si esto es posible entonces podemos
irnos hacia atrás escribiendo cada residuo de la expresión como combinación lineal de sus
predecesores hasta llegar a a y b. Como el último residuo es mcd(a, b) esto quiere decir que
el máximo común divisor de dos números puede escribirse como combinación lineal de ellos.
En particular si los dos números a y b son primos relativos entonces existen α, β ∈ Z tales
que:
1 = αa + βb (3.4.2)
Como −34 ≡ 63 (mod 97) (97 − 34 = 63), concluimos que el inverso de 77módulo 97
es 63.
3.4 Un poco de teorı́a de números 103
ax ≡ 1 (mod m) (3.4.3)
Esta ecuación tiene solución, y es única, si y sólo si a y m son primos relativos, es decir
mcd(a, m) = 1.
α a + β, b = α rx + β ry = (α x + β y)r,
Dem.: Supongamos primero que b ∈ Z es tal que ab ≡ 1 (mod m). Entonces m|(ab − 1),
es decir, existe una β ∈ Z tal que β m = ab − 1. Por lo tanto, ab − β m = 1, de manera que
el máximo común divisor de a y m debe dividir al 1; la única manera es si mcd(a, m) = 1.
Conversamente, supongamos que a ∈ Zm , y que mcd(a, m) = 1. Entonces existen
α, β ∈ Z tales que
α a + β m = 1.
Entonces −β m = α a − 1, es decir, m|α a − 1. Por lo tanto, α a ≡ 1 (mod m), de manera
que α es un inverso multiplicativo módulo m de a. 2
Los números de Z26 que tienen inverso son entonces los siguientes:
número 1 3 5 7 9 11 15 17 19 21 23 25
inverso 1 9 21 15 3 19 7 23 11 5 17 25
que son justamente aquellos que son primos relativos con 26.
104 Sistemas Poligráficos
En 1929 en The American Mathematical Monthly apareció un artı́culo del profesor Lester
S. Hill, de Hunter College de Nueva York [Hil29]. En el artı́culo Hill describe un sistema crip-
tográfico basado en manipulaciones algebraicas del alfabeto, aplicándole transformaciones
lineales. En 1931 amplió el trabajo anterior [Hil31].
Si las letras corresponden a enteros positivos del 0 al 25 y todas nuestras operaciones son
en Z26 , entonces podemos ver un digrama como una pareja ordenada de números (p1 , p2 ),
es decir, un vector en Z226 . Por ejemplo, el digrama af corresponde al vector (0, 5).
Si ahora aplicamos una transformación lineal a este vector, multiplicándolo por una
matriz módulo 26, obtenemos un nuevo vector (c1 , c2 ) en Z226 que corresponde a un digrama.
Es decir, podemos cifrar un digrama p1 p2 multiplicando por una matriz M de 2 × 2:
c1 m1,1 m1,2 p1
= (mod 26) (3.5.4)
c2 m2,1 m2,2 p2
Por ejemplo, para cifrar el texto: con diez cañones usando la matriz de cifrado:
9 4
5 7
claro co nd ie zc an on es
vec. claro (2, 14) (13, 3) (8, 4) (25, 2) (0, 13) (14, 13) (4, 18)
vec cripto (22, 4) (25, 8) (10, 16) (25, 9) (0, 13) (22, 5) (4, 16)
criptograma WE ZI KQ ZJ AN WF EQ
Ya que mcd(17, 26) = 1 sabemos que sı́ existe el inverso multiplicativo de 17 modulo 26. A
saber, 1/17 = 23 (mod 26) ası́ que la inversa de M es:
−1 7 −4 161 −92 5 12
M = 23 (mod 26) = (mod 26) = .
−5 9 −115 207 15 25
El lector puede comprobar que multiplicando módulo 26 esta matriz por los vectores
que aparecen en el tercer renglón de la tabla 3.2 se obtienen los del segundo renglón.
Por otro lado, la matriz:
2 12
1 14
tiene determinante 2, que no es primo relativo con 26, ası́ que no tiene inverso y por tanto
la matriz tampoco tiene inversa. No se puede usar para cifrar.
Cuando trabajamos módulo 26 hay dos matrices de 2 × 2 que son su propia inversa. Por
ejemplo,
2 3
25 24
es una de ellas. A estas matrices se les denomina auto-involutivas. Tienen la propiedad que
si se utiliza una matriz auto-involutiva para cifrar, esa misma matriz sirve para descifrar.
Nada impide que en vez de usar matrices de 2 × 2 se utilicen matrices más grandes. En
general una matriz de n × n cifra n-gramas. En [Hil31] Hill propone algunas matrices de
3 × 3.
El método de Hill es el primero con el que nos topamos que posee una caracterı́stica
relevante: La clave para cifrar (la matriz) no es necesariamente igual a la clave para descifrar
(la matriz inversa). A un sistema con esta cualidad se le denomina asimétrico. Más adelante,
cuando abordemos el tema de criptografı́a de llave pública veremos la utilidad de algunos
sistemas criptográficos asimétricos más poderosos. En el sistema de Hill las claves de cifrado
y de descifrado no son la misma, pero si se conoce una de ellas, la otra es fácilmente
calculable. Si no fuera ası́ podrı́amos darle a todo mundo una matriz de cifrado de la que
conocemos su inversa, con la seguridad de que cualquiera puede cifrar mensajes con ella,
pero nadie puede calcular fácilmente la inversa que descifra.
Otra caracterı́stica importante es que el método de Hill permite cifrar n-gramas para
n grande de manera bastante sencilla. No se requieren grandes tablas de n-gramas ni
complicados procesos para realizar el cifrado.
3.6 Criptoanálisis de sistemas poligráficos 107
Sabemos que la palabra infierno y la palabra cielo aparecen varias veces cada una.
Un análisis de ı́ndice de coincidencias nos dice que el Índice de Coincidencias del texto
es IC = 0.0629, y que el número de alfabetos es aproximadamente r = 1.29. Puesto que la
distribución no es monoalfabética, reordenamos el criptotexto en dos columnas para facilitar
su análisis:
3
El toro es el nombre matemático de una superficie en forma de dona; se obtiene tomando un cuadrado,
identificando el lado superior con el inferior para formar un cilindro, y luego identificando el lado derecho e
izquierdo, para formar un tubo cerrado.
3.7 Criptoanálisis de Playfair 109
TC VK ST EV AN ML AE MF KC TS HN LA FN MY
EM FU DZ KE TS GM JK VA PT MY BL FU NF DK
LI OP IM KZ QS IS AF IM PC NB VR MK NJ KE
PO IL KO TJ BD HK ME AT GM DJ GM MA PA HK
DM MZ AM AE MF KC DJ GM AT GM ID KX AV TS
TM NK DM KJ RO CP KN DZ TL CQ JK BP VM SI
NJ IM KS FM AB YH MD KJ EX PT NB CZ KJ EX
EN AV CP HN HK KH MA CP JK AO EB DJ FN LN
TA LM AB ME KX JK FN KE GM MA PA HK DM IF
MG IN KS FM AB KH EK TL AE MF KC LS MK KJ
PY TP KE GM AT GM LZ
Número de
Criptotexto veces Posición
AE MF KC 3 veces 13, 119, 269
AT GM 3 veces 99, 129, 289
MA PA HK DM 2 veces 107, 243
DJ GM 2 veces 103, 125
KJ EX 2 veces 183,193
in fi er no nf ie rn
MA PA HK DM AE MF KC
Notamos que ésto implicarı́a que cielo aparece como ci el o* en al menos dos repeticiones,
y no como *c ie lo, pues en el segundo caso tendrı́amos la digráfica MF en otro bloque de
repeticiones correspondientes a cielo.
Para empezar la reconstrucción de la tabla de Playfair, de ser posible buscamos comenzar
con una digráfica en la cual hay una letra en común entre la digráfica cifrada y la digráfica
original.
110 Sistemas Poligráficos
Pero de no ser posible (como en el caso de arriba), empezamos con dos pares de digráficas
que tengan al menos dos letras en común. Por ejemplo, el par (in, MA), y el par (fi, PA).
Ahora consideramos todas las posibles maneras en las que estos pares pueden corre-
sponder en una tabla de Playfair. Por ejemplo, hay tres maneras en las que la digráfica in
pudo corresponder a la digráfica MA: ya sea con la regla del cuadrado, del renglón, o de la
columna. En cada caso respectivo, la tabla de Playfair se verı́a:
I M I
M
IM NA
N
A N A
F
P
I M
A N
P F
IM NA
F
P P F
I M IM NA
A N
Continuamos ahora tratando de acoplar las otras parejas que conocemos a estas tablas,
viendo cuáles son las posibilidades válidas.
Por ejemplo, consideremos la asignación nf 7→ AE. Si la tabla de Playfair corresponde a
la primera opción de arriba, entonces esta asignación no puede ser por regla de la columna,
pues N y A están en columnas distintas; ni por regla del renglón, que requerirı́a que F y A
estén en el mismo renglón. Por lo tanto, tendrı́a que ser por la regla del cuadrado. Por otro
lado, si la tabla corresponde a la segunda opción arriba listada, entonces esta asignación no
puede deberse ni a la regla del renglón ni de la columna, pues F, N, y A no están ni en el
mismo renglón ni en la misma columna; de manera que también se tendrı́a que deber a la
regla del cuadrado. Nuevamente tenemos, pues, dos posibilidades para la tabla:
F E P EF
P
I M IM NA
A N
112 Sistemas Poligráficos
También tenemos la asignación ie 7→ MF; pero ésta es incompatible con la segunda opción
de arriba, que darı́a ie 7→ NP. De manera que la única posibilidad para la tabla de Playfair
que produjo el mensaje, con esas asignaciones, es la primera.
Veamos ahora la asignación no 7→ DM. No puede ser debida a la regla del renglón, pero
tanto la del cuadrado como la de la columna son compatibles. En el caso de la primera,
obtenemos la tabla:
F E
P
I M O
A N D
F E
P
O
I M
A N
D
Pero, claro, se trata de una tabla de cinco por cinco, de manera que podemos “acoplar”
los dos pedazos de la tabla para obtener que en el segundo caso nuestra aproximación a la
tabla de Playfair es entonces:
F E
P O
I M
A N
D
3.7 Criptoanálisis de Playfair 113
Aquı́ podemos ver el uso de la simetrı́a de toro del sistema de Playfair. No importa
cuál renglón pongamos primero, siempre y cuando mantengamos el orden de los renglones
correctamente.
Nuestras dos posibilidades son entonces:
F E F E
P P O
I M O I M
A N D A N
D
EH RK
E H
K R
N C
114 Sistemas Poligráficos
Ahora buscamos acoplar este diagrama parcial con nuestras dos reconstrucciones par-
ciales de la tabla de Playfair de arriba. No cabe con la segunda, pues en la segunda ya
tenemos cinco letras en la columna de E, y tendrı́amos que agregar una sexta, a saber K.
Eso quiere decir que la única posibilidad es la primera, y al acoplar este diagrama de seis
letras, obtenemos la siguiente reconstrucción parcial:
F E H
P
K R
I M O
A N D C
Es importante notar que el orden de las columnas no está fijo, ni tampoco el de los
bloques de renglones. El renglón de la K podrı́a ir arriba del renglón de la F. Sólo los
renglones listados contiguamente deben permanecer en esa relación unos con otros. También
es posible que el renglón de la K fuera el mismo que el de la P. Simplemente no sabemos
todavı́a.
Usamos esta información parcial para regresar a nuestro criptograma, y obtener algunas
correspondencias más; y también utilizamos las correspondencias que ya tenı́amos. Por
ejemplo, tenemos en el quinto renglón:
ni nf ie rn o
AM AE MF KC DJ
Eso quiere decir que o* 7→ DJ. Como la O está arriba de la D, J tiene que estar en la
misma columna en la tabla de Playfair.
Sabemos que cielo aparece como ci el o* ; como ya tenemos que ci 7→ A*, podemos
adivinar de nuestra tabla de repeticiones que ci el 7→ AT GM. Eso nos dice que los digramas
DJ, ID, y LZ corresponden todos a o*.
Para poder acomodar la correspondencia ci 7→ AT, la única posibilidad en la tabla que
ya tenemos es:
3.7 Criptoanálisis de Playfair 115
F E H
P
K R
I M O T
A N D C
Esto nos permite llenar más digramas en nuestro criptotexto; por ejemplo, ID corres-
ponde a oa, etc. Rellenando, y sabiendo que el 7→ GM, tenemos:
t nf ie rn ec ea
TC VK ST EV AN ML AE MF KC TS HN LA FN MY
i ae n
EM FU DZ KE TS GM JK VA PT MY BL FU NF DK
i i a
LI OP IM KZ QS IS AF IM PC NB VR MK NJ KE
i m er ci el o el in fi er
PO IL KO TJ BD HK ME AT GM DJ GM MA PA HK
no ni nf ie rn o el ci el oa
DM MZ AM AE MF KC DJ GM AT GM ID KX AV TS
116 Sistemas Poligráficos
m no t a m
TM NK DM KJ RO CP KN DZ TL CQ JK BP VM SI
d ei on i
NJ IM KS FM AB YH MD KJ EX PT NB CZ KJ EX
m a ec er re in a di o ea
EN AV CP HN HK KH MA CP JK AO EB DJ FN LN
ic ea el in fi er no
TA LM AB ME KX JK FN KE GM MA PA HK DM IF
ma ei re nf ie rn
MG IN KS FM AB KH EK TL AE MF KC LS MK KJ
i el ci el
PY TP KE GM AT GM LZ
Tenemos pues que ML debe corresponder a *i. Como la I está en el mismo renglón que
M en nuestra tabla, la L debe estar a la derecha de I. Es decir,
F E H
P
K R
IL M O T
A N D C
También tenemos que TS corresponde a o*, y que TL corresponde a *i, con lo cual
obtenemos más correspondencias. Puesto que LS corresponde a o*, y ya tenemos todo el
renglón (las cinco entradas; sólo falta determinar el orden), eso quiere decir que S está en
la columna de O; como LZ también corresponde a o*, Z también está en esa columna. De
aquı́ obtenemos
3.7 Criptoanálisis de Playfair 117
F E H
P
K R
IL M T O
A N C D
F E H
P
K R
IL M T O
A N C D
J
U Z
F E H
P K R S
IL M T O
A N C D
J
U Z
Para poder empalmar los dos bloques de dos renglones, la única posibilidad es:
IL M T O
A N C D
F E H J
P K R S
U Z
re ne *i nf ie rn o
RE EK TL AE MF KC LS
y el * debe ser M, L, u O. La L es la opción clara, lo cual nos permite poner tres columnas
en orden:
ILT M O
A C N D
F H E J
P R K S
U Z
3.7 Criptoanálisis de Playfair 119
Tenemos que EN PO IL KO, al final del tercer y principio del cuarto renglón, corresponde
a en si *i sm, y la I debe corresponder a O o a M. Eso nos dice que la M debe estar a la
izquierda inmediata de la I, y eso nos deja a la O en cualquier extremo. Nuestra tabla de
Playfair as ahora
M I L T O
N A C D
E F H J
K P R S
U Z
M I L T O
N A B C D
E F G H J
K P Q R S
U V X Y Z
yt up ro fu nd oi nf ie rn or ec ib ea tu
TC VK ST EV AN ML AE MF KC TS HN LA FN MY
nu ev os en or el es pi ri tu lx ev ae ns
EM FU DZ KE TS GM JK VA PT MY BL FU NF DK
im is mo su pr op ia mo ra da yp ue de en
LI OP IM KZ QS IS AF IM PC NB VR MK NJ KE
si mi sm oh ac er un ci el od el in fi er
PO IL KO TJ BD HK ME AT GM DJ GM MA PA HK
no ou ni nf ie rn od el ci el oa qu ip or
DM MZ AM AE MF KC DJ GM AT GM ID KX AV TS
120 Sistemas Poligráficos
lo me no se st ar em os li br es aq ui po
TM NK DM KJ RO CP KN DZ TL CQ JK BP VM SI
de mo sr ei na rc on se gu ri da dy se gu
NJ IM KS FM AB YH MD KJ EX PT NB CZ KJ EX
nm ip ar ec er re in ar es di gn od ea mb
EN AV CP HN HK KH MA CP JK AO EB DJ FN LN
ic io na un qu es ea en el in fi er no va
TA LM AB ME KX JK FN KE GM MA PA HK DM IF
le ma sr ei na re ne li nf ie rn oq ue se
MG IN KS FM AB KH EK TL AE MF KC LS MK KJ
rv ir en el ci el ox
PY TP KE GM AT GM LZ
“Y tú, profundo infierno, recibe a tu nuevo señor. El espı́ritu lleva en sı́ mismo
su propia morada, y puede en sı́ mismo hacer un cielo del infierno o un in-
fierno del cielo. Aquı́ por lo menos estaremos libres. Aquı́ podemos reinar con
seguridad. Y reinar, según mi parecer, es digno de ambición, aunque sea en el
infierno. Vale más reinar en el infierno que servir en el cielo.”
Al igual que con el sistema de Playfair, el sistema de cuatro cuadrados requiere, para
poder iniciar el criptoanálisis, que podamos identificar o asumir parte del texto. Esto se
puede hacer con tablas de frecuencias de digráficas, con palabras probables, estudio de
patrones, o con inicios y terminaciones tı́picas.
Si ya sabemos que el mensaje fue cifrado con un sistema digráfico, normalmente lo
identificamos como el resultado de un sistema de cuatro cuadrados a base de eliminación;
por ejemplo, tiene digráficas que consisten de la repetición de una misma letra, lo cual es
imposible en Playfair.
Consideremos el siguiente mensaje, que fue cifrado con el método de cuatro cuadrados.
Nuestra información indica que el mensaje comienza con amigos, termina en dura, y contiene
varias veces la palabra ambición o ambicioso.
SF DD LS TH IL MK PI KM NJ PS HK NO NR TL TR AJ ML RN AM AC LM ZU JD
IO TI NT MP SN SJ AS SN MK CJ IU CU OH MO KG EF NV EM LS HH JL TL PD
SJ AM MU QR JO TL YB ZU EM AB AM AS SF AM YJ MO MR SS NL RK RH LR YN
BX AS LS TI RN SF AB AM AN FI LM RL NI TL LG JO MU SP ZN YN AD RL NV
SO AS SN SS CJ JL FI HK TK SF DD KM HK SS EF CO LV BZ TR IS SN SF BR
SS JO NX NZ QI FI ES ZJ SS CJ JL FI HK TK VI NX NZ TI PD KM SP SE LM
KS EJ MU IX SC LS CL ZN DY LS PS RA IO TH IL XI LM NY PR AS CL TO OK
MU MK IU NI PL AN NT EG FI AN SS RJ TK AM RL NI NL JL FI HK TK IU OK
EA QC IL QI EM LS TF SP AS BL AC AF JG KS SN SJ AS SN VK CJ JL FI HK
LI EO SS BI TI QL AE LI JM SM AN CY NL
a b c d e C S
f g h i j D F H
k l m n o J L
p q r s t N T
u v x y z
J L I a b c d e
D f g h i j
F K k l m n o
S p q r s t
Y u v x y z
a b c d e C S E
f g h i j D F H
k l m n o J K L
p q r s t N T
u v x y z
J L I a b c d e
D f g h i j
F K M k l m n o
S p q r s t
Y u v x y z
Utilizamos esta tabla parcial para descifrar mas texto. Como CJ es *a, y la J está en
el primer renglón de abajo, en el sexto renglón tenemos que SS CJ JL FI KH TK debe ser
uno de er aa mb ic io so, er ba mb ic io so, y er ea mb ic io so. La opción obvia es la
primera, lo cual coloca a J al principio del cuadrado de abajo a la izquierda, y permite más
descifrado.
3.8 Criptoanálisis de cuatro cuadrados 123
Esto sugiere probar JULIO como base del cuadrado inferior izquierdo, pues además da
buenas digráficas en el resto del texto. Y en el renglón doce tendrı́amos CJ JL FI HK LI
EO SS, que tiene traducción parcial aa mb ic io nd e* er, con la letra faltante necesariamente
b, d, o e. La opción clara es b, lo cual también coloca la E del cuadro superior derecho.
Tenemos pues
a b c d e C E S
f g h i j D F H
k l m n o J K L
p q r s t N T
u v x y z
J U L I O a b c d e
D f g h i j
F K M k l m n o
S p q r s t
Y u v x y z
y rápidamente sugerimos que el primer renglón del segundo cuadrante sea CESAR.
Con esto desciframos aun más texto. Puesto que ES corresponde a eq (renglón siete),
tenemos que ZJ debe ser ue o ui, y por estar en el renglón de la J del tercer cuadrante, ue
es lo obvio.
a b c d e C E S A R
f g h i j D F H
k l m n o J K L
p q r s t N T
u v x y z Z
J U L I O a b c d e
D f g h i j
F K M k l m n o
S p q r s t
Y u v x y z
Parece claro que el lugar después de la L del segundo cuadrante debe corresponder a
M, y la última posición del tercer cuadrante a Z. Entre la F y la K del tercer cuadrante la
izquierda van G y H (I y J ya están antes), y continuando de esta manera, el resto del
cuadrado se llena. Obtenemos:
124 Sistemas Poligráficos
a b c d e C E S A R
f g h i j B D F G H
k l m n o I J K L M
p q r s t N O P Q T
u v x y z U V X Y Z
J U L I O a b c d e
A B C D E f g h i j
F G H K M k l m n o
N P Q R S p q r s t
T V X Y Z u v x y z
Es parte del monólogo de Marco Antonio, Escena II, Acto III, de Julio César, de William
Shakespeare.
Para facilitar el estudio, haremos criptoanálisis del sistema de Hill aplicado a una susti-
tución digráfica; es decir, donde las matrices utilizadas para la transformación son de dos
por dos.
En este caso, recordemos que en realidad el cifrado de Hill consiste en una transformación
lineal. Si pudiéramos obtener dos o más correspondencias entre texto y criptotexto, las
podrı́amos usar para obtener un sistema de congruencias, donde las entradas de la matriz son
las incógnitas. Dos correspondencias darı́an cuatro congruencias, que puede ser suficiente
para resolver el sistema de manera única. Si no lo son, entonces las distintas posibilidades
se pueden probar contra el criptotexto, o nuevas congruencias pueden ser obtenidas, para
obtener una solución.
Todo esto, por supuesto, asumiendo que el criptoanalista conoce la correspondencia
entre letras y números que está siendo utilizada.
Consideremos, por ejemplo, el siguiente mensaje; suponemos que ya hemos identificado
el sistema como un sistema de Hill, usando la correspondencia usual de letras a números
(a ↔ 0, . . . , z ↔ 25). Nuestro servicio de inteligencia nos ha indicado que el mensaje
comienza con si nosotros.
MS LF AW XE GS NX IM AW HL HC SL MD QQ DZ SU QV UW DP HX IO GN AA RS
AC HB HX IO AP YH CV HX BT SL QG IO AE QQ BE ZL GH QM VX MS QT CK WX
SH II YW NN MS FV CK PP ML QM LF SV CK OR KV GS BZ PV CK YC WX HB YC
GS MS AW IM CE UI QC GU XD NH DZ GN OI SI DY SH GL
126 Sistemas Poligráficos
Con estas identificaciones, tenemos dos opciones, que normalmente son equivalentes:
podemos buscar la matriz de cifrado, y luego calcular su inverso para encontrar la de
descifrado. O bien podemos tratar de calcular la matriz de descifrado directamente, y
obtener la de cifrado calculando su inversa (módulo 26, por supuesto). La elección de
cuál de los dos caminos elegir depende de cuál sistema de congruencias sea más sencillo. En
general, conviene más un sistema que tiene ceros en los coeficientes y no en los resultados. En
este caso, vamos a calcular la de descifrado, aprovechando el 0 en la tercer correspondencia.
Recordemos que buscamos la matriz
a b
(mod 26)
c d
que hace las transformaciones indicadas arriba. Usado la tercer transformación, tenemos
pues que
Eso nos dice que 11b ≡ 9 (mod 13); esta congruencia es equivalente a
De manera análoga, 11d ≡ 7 (mod 13) nos da como resultado que d ≡ 3 (mod 13).
Esto nos dice que el valor de b, módulo 26, es 2 ó 15; y el de d es 3 ó 16.
3.10 Criptoanálisis de sistema de Hill 127
y la última que
a = 5 ó 18;
b = 2 ó 15;
c = 7 ó 20;
d = 3 ó 16.
Ahora tenemos que encontrar los valores exactos. Podrı́amos intentar las 16 posibili-
dades, o podemos proceder un poco más cuidadosamente. De la segunda transformación,
LF 7→ no, tenemos que 11a + 5b ≡ 13 (mod 26), de manera que a y b deben tener paridad
opuesta. También obtenemos que 11c + 5d ≡ 14 (mod 26), de manera que c y d tienen la
misma paridad. Por lo tanto,
a = 5, b = 2 ó a = 18, b = 15;
c = 7, d = 3 ó c = 20, d = 16.
Como los múltiplos pares de 13 son 0 módulo 26, para determinar cual valor usar nece-
sitamos congruencias dónde los coeficientes de a y b sean de paridad distinta (si son de la
misma paridad, no hay manera de distinguir las dos posibilidades, pues al final habremos
sumado un múltiplo par de 13; lo mismo para c y d). Esto nos lo da la cuarta correspon-
dencia, XE 7→ tr, que es equivalente a las congruencias
Si nosotros hemos ofendido, piensa ésto y todo queda arreglado: Que te haz
dormido aquı́ mientras las visiones aparecı́an. Ası́ pues, buenas noches a todos.
Denme sus aplausos si somos amigos, y Robin se disculpara[x].
En 1837 Samuel Morse en Estados Unidos y Sir Charles Wheatstone (el mismo que
inventó el cifrado de Playfair) inventaron, independientemente, un telégrafo. El diseño de
Morse era más barato, y no requerı́a de los cinco hilos de transmisión que tenı́a el de Wheat-
stone, ası́ que fue el que prevaleció, junto con el código asociado a la transmisión: el código
Morse. Más tarde, en 1857, Wheatstone inventó un mecanismo que disminuı́a consider-
ablemente la posibilidad de errores al transmitir mensajes. El mecanismo de Wheatstone
consistı́a en un teclado, donde el telegrafista tecleaba el mensaje e enviar; ese teclado pro-
ducı́a como salida una cinta de papel perforada con el código Morse como se muestra en la
figura 4.1; después sólo habı́a que colocar la cinta en el dispositivo transmisor, que la leı́a y
enviaba las señales que le correspondı́an. Esta misma idea fue reutilizada en 1880, cuando
130 Sistemas Históricos de Llave Larga
A N T E S
raya
Morse
punto
Morse Baudot
A 00011
N 01100
T 10000
E 00001
S 00101
Baudot
ANT E S
Figura 4.1: Codificación telegráfica en una cinta usando (arriba) el código Morse y (abajo)
el código Baudot. En el caso de Morse cada raya está representada por tres puntos (hoyos)
en la parte superior de la cinta, esto porque la señal para representar una raya debı́a ser
tres veces más larga que la señal del punto. Hemos puesto un punto para representar un
agujero. En Baudot los agujeros equivalen a un 1, la ausencia de agujero a un 0.
Emile Baudot inventó un nuevo código telegráfico que, igual que el de Morse, posee sólo
dos sı́mbolos fundamentales. Pero a diferencia de el código Morse, en el código de Baudot
todos los sı́mbolos tienen la misma longitud. El código Morse fue pensado para minimizar
la cantidad promedio de sı́mbolos usados para transmitir un mensaje. El código de Bau-
dot, en cambio, para maximizar la expresividad del código. Por ejemplo, en el código de
Baudot hay sı́mbolos especiales que cambian el significado de todos los que le siguen en la
transmisión: 10111 (23 en decimal1 ) en código de Baudot representa a la letra Q, pero si
va precedido de una aparición de el código 11011 (27) entonces su significado cambia para
representar el número 1 (véase Tabla 4.1). El código 11111 (31) regresa la transmisión a
su estado original, actuando como el inverso del 27, al que se le asigno el nombre inglés de
shift. El código de Baudot ocupó el lugar del de Morse en las transmisiones telegráficas. El
sistema ideado por Wheatstone fue mejorado y adaptado para funcionar en código Baudot:
el telegrafista tecleaba el mensaje que era perforado en una cinta. Luego ésta era leı́da por
un aparato transmisor y el mensaje se enviaba. El aparato receptor recibı́a el mensaje que
era nuevamente perforado en una cinta que más tarde era leı́da por un mecanismo impresor
que entregaba el mensaje legible en una hoja de papel. Este era el panorama general de las
comunicaciones telegráficas a principios del siglo XX [Kah99].
1
Estamos considerando el código como la representación de un número entero en base 2, es decir, en
binario.
4.1 Cifrado de Vernam y seguridad perfecta 131
Tabla 4.1: El código de Baudot. El código lf significa cambio de lı́nea (line feed ), mientras
que bell es un sonido, y cr es retorno de carro (carriage return).
132 Sistemas Históricos de Llave Larga
P C M
0 0 0
0 1 0
1 0 0
1 1 1
En la tabla aparecen todas las posibles combinaciones de bits en el mensaje claro (columna
P) y palabra clave (columna C), arbitrariamente podemos pensar en que un 1 representa
un agujero de la cinta y un 0 la ausencia de agujero. Si la columna M representa el bit
mensaje cifrado estamos en problemas. El primer y el tercer renglón de la tabla tienen
el mismo valor de mensaje pero no provienen del mismo valor de texto claro. Aplicar la
función a las columnas C y M no da como resultado la columna P. La solución es una
función muy conocida por los computólogos, se le suele llamar disyunción exclusiva, xor,
suma booleana, o suma módulo 2:
P C M
0 0 0
0 1 1
1 0 1
1 1 0
4.1 Cifrado de Vernam y seguridad perfecta 133
00 01 10 11
00 00 01 10 11
01 01 00 11 10
10 10 11 00 01
11 11 10 01 00
C L A V E
01110 10010 00011 11110 00001
00011 01100 10000 00001 00101
a n t e s
01101 11110 10011 11111 00100
F V W shif t−1 espacio
clave? ya sabemos que los sistemas poligráficos son susceptibles a la prueba de Kasiski
(conocida para la época de Vernam), ası́ que no es buena idea usar claves cortas, y de
hecho no es conveniente usar una misma clave por mucho tiempo, pues el criptoanalista
puede recabar suficiente texto cifrado como para proceder al criptoanálisis. Poner cintas
circulares largas no es buena idea porque resultan inmanejables y hay que tener en cuenta
que la misma cinta debe estar tanto del lado del emisor como del receptor, y transportar
un rollo grande de papel hace al sistema vulnerable.
A uno de los miembros del equipo de Vernam, Morehouse, se le ocurrió poner varias
cintas. Combinar, de hecho, cintas largas y cortas, de tal forma que una clave corta (pri-
maria) cifre una clave más larga (secundaria). Si una de ellas mide 100 caracteres y la otra
850, la combinación nos da un total de 17, 000 caracteres antes de comenzar a repetir el
ciclo de clave usada para cifrar mensajes (la longitud es el mı́nimo común múltiplo de las
longitudes de las dos cintas). Sin embargo, Mauborgne, un criptoanalista [Kah99] notó que
con suficiente tráfico era posible utilizar superposición de Kerckhoffs y recuperar la clave
secundaria.
Usar más de una vez una clave hace que el criptoanalista posea dos textos diferentes
cifrados con la misma clave. Dadas las cualidades de la función xor esto hace posible
que el criptoanalista sepa donde coinciden dos letras del texto claro y donde no. Si, por
ejemplo, nuestros textos claros hola y dato fueran cifrados con la misma clave, a saber:
JQRT, obtendrı́amos lo siguiente en código Baudot:
clave J Q R T
Baudot clave 01011 10111 01010 10000
Claro 1 h o l a
Baudot 1 10100 11000 10010 00011
Cifrado 1 shift K O W
Bc 1 11111 01111 11000 10011
Claro 2 d a t o
Baudot 2 01001 00011 10000 11000
Cifrado 2 lf H G cr
Bc 2 00010 10100 11010 01000
(Baudot 1) xor (Baudot 2) 11101 11011 00010 11011
(Bc 1) xor (Bc 2) 11101 11011 00010 11011
En los renglones etiquetados Baudot 1 y Baudot 2 están los textos claros en código
de Baudot, en Bc 1 y Bc 2 los códigos del texto cifrado que les corresponden. Los dos
últimos renglones son exactamente iguales y se obtienen de hacer el xor entre los renglones
del código de texto claro y de hacer el xor de los renglones del código de texto cifrado.
4.1 Cifrado de Vernam y seguridad perfecta 135
En sı́ntesis, hacer el xor de dos textos claros es equivalente a hacer el xor de los textos
cifrados con la misma clave obtenidos de ellos. Ası́ que podemos recuperar la información
proporcionada por el ı́ndice de coincidencias de ambos textos claros si tenemos la de los
textos cifrados; si tenemos suficiente texto, el criptoanálisis tiene buenas posibilidades de
tener éxito y descifrar el mensaje..
En sı́ntesis lo recomendable en el sistema de Vernam es que la clave no se repita nunca y
que no sea inteligible, es decir claves de un sólo uso y lo más aleatorias posible. Esto es un
problema serio, porque si la secuencia que constituye la clave es realmente aleatoria (alguien
se pone a jugar con unos dados y genera números aleatorios), entonces es, por definición,
irreproducible; esto significa que si el emisor la genera, el receptor no puede reconstruirla
porque no hay método determinı́stico que la genere. Ası́ que hay dos opciones que, por
supuesto, debilitan el sistema: una vez generada la secuencia por alguna de las partes,
una copia de ésta es transportada al otro extremo; o bien, la secuencia es generada por
un método determinı́stico y aparenta ser aleatoria. Uno de los problemas con esta última
opción es que nuestros generadores de números pseudoaleatorios generan realmente un ciclo
de números que aparentan ser aleatorios, pero que tarde o temprano, se repite; ası́ que luego
de un tiempo, estarı́amos usando realmente la misma clave una y otra vez.
Pero, lejos de los problemas prácticos para implementar este sistema de cifrado, si
suponemos que realmente poseemos la capacidad de generar secuencias aleatorias de bits
y que la clave puede intercambiarse con toda seguridad, ¿qué tan seguro es el sistema?
Intuitivamente, si suponemos que la distribución de los bits en la clave es completamente
aleatoria y uniforme entonces no importa que tanta estructura tenga el texto claro, sin
importar la distribución de frecuencias de cada bit en él, el resultado de cifrarlo tendrá una
distribución uniforme, y todo rasgo distintivo y posible fuente de información se pierden.
De hecho si suponemos que la clave es generada aleatoriamente con distribución uniforme
entonces ni siquiera un ataque por fuerza bruta darı́a resultado. Supongamos por ejemplo
que A envı́a a B el criptograma del renglón seis de la tabla 4.1.2, obtenido a partir del
renglón 4 de la misma tabla. Escuchando el canal está C, un intruso que pretende violar la
privacı́a de la comunicación. C sabe el tipo de cifrado que utilizan A y B y decide buscar
una clave que le dé como resultado algo inteligible como texto descifrado. Luego de buscar
un tiempo encuentra que si a la cadena: shift−1 B L S M, codificada en Baudot se le hace
un xor con el criptograma se obtiene lo siguiente:
136 Sistemas Históricos de Llave Larga
Como luego es un buen candidato para ser el texto claro, C podrı́a pensar que ha encontrado
la clave aunque nosotros sabemos que no es ası́. De hecho cualquier palabra o conjunto de
palabras con 5 letras de longitud es un posible candidato a texto claro, pues para cualquiera
de ellos es posible encontrar una llave que al cifrarlo de como resultado el criptograma
capturado por C. Dado cualquier texto claro P y cualquier texto cifrado M, la clave que
transforma P en M es P xor M, la suma booleana bit a bit de P con M.
Es decir, en el esquema de cifrado de Vernam, para cualquier criptograma M de longitud
m, y cualquier texto claro P de la misma longitud, existe una clave C, también de longitud
m, tal que: M = P xor C. ¡Es posible obtener cualquier texto dado a partir de cualquier
otro eligiendo apropiadamente la clave!
El cifrado de Vernam luce, en teorı́a, bastante seguro.
1. Los mensajes son letras individuales tomadas al azar de un texto cualquiera en español.
Podrı́amos pensar en tomar el Quijote de Cervantes, abrirlo en una página al azar,
cerrar los ojos y poner el ı́ndice sobre alguna parte de la página y enviar como mensaje
la letra sobre la que quedó el dedo. En este caso |M| = 26.
Imaginemos ahora que somos el criptoanalista que intercepta mensajes entre A y B.
A toma una letra al azar, lo que constituye el mensaje claro µ, lo cifra usando un
cifrado de César y obtiene el mensaje cifrado γ que envı́a a B.
Nosotros capturamos el mensaje γ y, por supuesto, no sabemos quien es µ, pero
sabemos que proviene de un texto en español y conocemos la tabla de frecuencias del
español (véase el Apéndice A). Ası́ que sabemos que la probabilidad de que A haya
escogido la e es de 0.13 aproximadamente, la de que haya escogido a es 0.11, etcétera.
¿Cuál es la probabilidad de que la γ que capturamos provenga de cifrar una µ en
particular? Esta probabilidad la denotaremos con
Pγ (µ) = P (A haya escogido µ | A envı́a γ)
= P (µ | γ).
Lo único que sabemos es: Pγ (e) = 0.13, Pγ (a) = 0.11, etcétera. Es decir, no sabemos
más que lo evidente, lo que todo mundo conoce consultando el Apéndice A: P (µ). En
notación, la situación en la que estamos está caracterizada por:
Pγ (µ) = P (µ) (4.1.1)
para toda γ ∈ C y para toda µ ∈ M
138 Sistemas Históricos de Llave Larga
2. Ahora digamos que nuestros mensajes son textos de 440 letras en español. Hay
un texto en español en particular, la Carta a Sor Filotea de Sor Juana, que tiene
justamente 440 letras, llamemos t a ese texto. En este caso tenemos que: |M| =
número de posibles textos en español de 440 letras.
Supongamos nuevamente que somos el criptoanalista y que capturamos un mensaje
que envió A a B. Sabemos que A tomó algún texto en español de 440 letras µ, lo cifró
a la César y envió a B el mensaje cifrado γ. Supongamos que A eligió la Carta a Sor
Filotea, pero nosotros no lo sabemos.
La probabilidad de que el mensaje sea alguno de los millones de textos posibles en
español de 440 letras es:
1
P (µ) = ≈0 (4.1.2)
|M|
Estas desigualdades son las que nos permiten descifrar. La igualdad (4.1.1) impide
hacerlo.
Teorema 4.1 Si S es un sistema perfectamente seguro entonces cualquier texto claro puede
ser llevado a cualquier texto cifrado usando alguna clave de S.
Estas son condiciones necesarias para que un sistema sea perfectamente seguro. Inves-
tiguemos ahora las condiciones suficientes.
Sabemos que cuando Pγ (µ) = P (µ) tenemos un sistema perfectamente seguro. También
sabemos que Pγ (µ) = P (µ | γ). Ésta es una probabilidad condicional que podemos reescribir
de acuerdo al teorema de Bayes:
P (γ | µ) P (µ)
P (µ | γ) = P ,
M (P (γ | µi ) P (µi ))
1
donde P (µ) = |M| . Ası́ que:
1
P (γ | µ) |M| P (γ | µ)
P (µ | γ) = 1 P =P .
|M| M P (γ | µi ) M P (γ | µi )
140 Sistemas Históricos de Llave Larga
• Para toda pareja (µ, γ), con µ ∈ M y γ ∈ C, existe fk ∈ F tal que fk (µ) = γ; y
En el cifrado de Vernam los tres conjuntos son el mismo. El cifrado de Vernam, también
conocido en la literatura como one-time pad o “llaves de un solo uso”, es entonces perfec-
tamente seguro.
Ya mencionamos entre las limitaciones prácticas del sistema de Vernam que la clave
debe ser tan larga como el mensaje, aleatoria, y debe usarse una sola vez. Mencionamos
también el hecho de que transportarla, una vez que ha sido generada por alguna de las
partes, implica un debilitamiento de la seguridad. Una alternativa es que ambas partes
sean capaces de generar una secuencia pseudoaleatoria muy larga como clave.
Con esto en mente se diseñaron unos dispositivos fı́sicos capaces de generar secuen-
cias aparentemente aleatorias de bits llamados: registros de desplazamiento con retroali-
mentación lineal (LFSR o Linear Feedback Shift Registers en inglés) [Sch96]. En la Figura 4.2
4.1 Cifrado de Vernam y seguridad perfecta 141
carga inicial
b7 b6 b5 b4 b3 b2 b1 b0 salida
Figura 4.2: Registro de desplazamiento con retroalimentación lineal (LFSR) de ocho bits.
El registro es inicializado con 8 bits cualesquiera. En cada paso subsecuente el registro es
desplazado un lugar a la derecha, el bit del extremo derecho sale del registro para ser usado
como bit de la secuencia aleatoria, el nuevo bit del extremo izquierdo es el resultado de la
función ⊕ (xor) sobre los valores de los bits 0, 2, 4 y 6 del paso inmediato anterior.
• Irreducible sobre Z2 [x]; esto es, que no sea posible factorizarlo como el producto de
polinomios de grado menor, módulo 2; y
4.1 Cifrado de Vernam y seguridad perfecta 143
• Primitivo; un polinomio primitivo es aquel para el que el entero positivo más pequeño
m, tal que el polinomio divide a xm − 1 es m = 2n − 1.
Se ha propuesto el uso de registros en los que la función que determina el nuevo bit
de la izquierda sea no lineal, involucrando el producto de algunos bits y la suma de otros
y algunas constantes, por ejemplo. Pero también se han montado ataques basados en
correlaciones estadı́sticas entre los bits producidos. Además se sabe poco de este tipo de
registros, suficientemente poco como para no saber que tan seguros son, de manera que su
uso no es recomendado.
4.2 ENIGMA
Esta sección está basada en la presentación que se encuentra en [Kah99, Mil96, Wil01].
representan una letra, de manera que el rotor es una sustitución monoalfabética. La idea es
poner al rotor entre dos placas fijas de material aislante, cada una con 26 contactos. De un
lado, lo conectamos a un teclado que representa el texto original. El otro lado se conecta
a un aparato que produzca el texto cifrado: un teletipo, o un teclado con lámparas que se
vayan iluminando. Cuando oprimimos una letra en el texto original, la corriente pasa por
el rotor y se produce otra letra en el texto cifrado.
Si esto fuera todo, la invención no serı́a importante. Pero el rotor no se queda esta-
cionario mientras vamos tecleando el mensaje: después de cada paso, rota, poniendo otra
sustitución monoalfabética en juego. Esto resulta en una serie de 26 monoalfabetos rela-
cionados (no exactamente tipo Alberti, pero puesto que el alambrado dentro del rotor es
fijo, hay relaciones entre las sustituciones).
Esto ya lo vuelve más interesante, pero todavı́a no tenemos un sistema demasiado impor-
tante. Pero si ahora ponemos otro rotor entre el primero y la salida, estamos componiendo
dos sustituciones monoalfabéticas. Si hacemos que el segundo rotor se mueva un lugar sólo
después d que el primero dio toda la vuelta, en vez de un sistema polialfabético con periodo
26, tenemos un sistema con periodo 26 × 26 = 676; y los alfabetos, aunque relacionados,
están relacionados de una manera mucho más complicada. Un tercer rotor da 17576 alfa-
betos, y un cuarto y quinto dan 456, 975 y 11, 881, 376 alfabetos, respectivamente. Es fácil
entonces construir un sistema donde el periodo es suficientemente largo para escribir las
obras completas de Shakespeare, La Guerra y la Paz de Tolstoi, Don Quijote, La Iliada, La
Odisea, y El Paraı́so Perdido de Milton, uno detrás del otro, sin repetir ningún alfabeto.
Eso evitarı́a el análisis de frecuencia, que requiere entre 20 y 50 letras por alfabeto utilizado.
Ninguno de los tres inventores obtuvo mucho beneficio económico de sus inventos. Koch
le vendió sus patentes a un alemáan en 1923, y murió en 1924. El alemán, Arthur Scherbius,
lo utilizó para construir varios modelos de una máquina cifradora a la que llamo Enigma.
En 1926, la Kriegsmarine (Marina de Guerra) alemana compró Enigmas. Los Enigmas
se convirtieron en el principal aparato criptográfico de alto nivel para el gobierno y fuerzas
armadas alemanes hasta 1945.
rotación
A A
B B
C C
D D
E E
F F
B
A
lámparas
B
C
D
E
F
stecker
teclas a b c d e f
El uso del reflector tiene como resultado que los alfabetos resultantes sean todos recı́-
procos. Es decir, si e 7→ X, entonces x 7→ E. De esa manera, uno puede usar la máquina
tal cual para cifrar, y para descifrar. En la Figura 4.3 se muestra, esquemáticamente, la
estructura general de Enigma.
Originalmente la rotación de los rotores era tipo odómetro: el rotor de la derecha se
movı́a cada paso; el rotor central cuando el rotor de la derecha terminaba una vuelta; el
rotor de la izquierda cuando el rotor central terminaba una vuelta. Pero debido a la relación
entre los alfabetos, en vez de eso Scherbius puso un sistema de engranes y palancas para
que el movimiento fuera más irregular.
El orden de los rotores, y su posición original, eran la llave.
El mecanismo de rotación funcionaba gracias al movimiento de oprimir una tecla; eso
quiere decir que el rotor derecho se movı́a antes de cifrar la letra correspondiente.
Cada rotor tenı́a un anillo con 26 ranuras del lado derecho; el lado izquierdo tenı́a un
anillo movible que tenı́a una sóla ranura. Para mover los otros rotores, habı́a una palanca en
forma de ‘T’ entre los rotores vecinos, que se movı́a hacia adelante y atrás en cada teclazo.
Cuando el rotor de la derecha de la palanca llega a la posición en la cuál tiene la ranura en el
4.2 ENIGMA 147
contactos contactos
Ranuras
anillo de su lado izquierdo, la porción de la palanca T de ese lado entra al hueco. Entonces
la porción izquierda de la T entra en contacto con una de las 26 ranuras del rotor a su
izquierda. En el siguiente teclazo, la palanca se mueve hacia adelante, empujando los dos
rotores. Cuando el rotor a la derecha no está en la posición que corresponde a la ranura,
esto evita que la palanca entre, y entonces tampoco entra en los huecos del rotor de la
izquierda, que se mantiene inmóvil. Un diagrama esquemático se muestra en la Figura 4.4.
El efecto de esta palanca es que entre los rotores derechos y centrales, el mecanismo fun-
ciona simplemente como un odómetro; pero el efecto entre los rotores centrales e izquierdo
es un poco sorpresivo. Supongamos, por ejemplo, que el rotor de central está a una posición
de que la ranura de su lado izquierdo se ajuste a la palanca, y el rotor derecho está en la
posición de ajuste. Cuando oprimimos una tecla, la palanca entre el rotor derecho y central
mueve tanto el rotor derecho como el rotor central, que es lo que esperamos que suceda.
En ese momento, se cifra la letra. Ahora, el rotor derecho está en la posición de ajuste, de
manera que la palanca entre el rotor central y el derecho está en posición de mover ambos.
Al siguiente teclazo, tanto el rotor izquierdo como el central se mueven, por el movimiento
de la palanca. El rotor derecho se mueve en cada teclazo, de manera que todos los rotores
se mueven en ese momento. Eso quiere decir que el rotor central se ha movido dos veces en
pasos sucesivos, lo cuál es muy distinto al funcionamiento de un odómetro.
La anomalı́a existe entre los rotores central e izquierdo, y también entre el derecho
y central; pero como el rotor derecho se mueve en cada teclazo, no se observa ninguna
148 Sistemas Históricos de Llave Larga
p combinaciones p combinaciones
0 1 7 1, 305, 093, 289, 500
1 325 8 10, 767, 019, 638, 375
2 44, 850 9 53, 835, 098, 191, 875
3 3, 453, 450 10 150, 738, 274, 937, 250
4 164, 038, 875 11 205, 552, 193, 096, 250
5 5, 019, 589, 575 12 102, 776, 096, 548, 125
6 100, 391, 791, 500 13 7, 905, 853, 580, 625
150 Sistemas Históricos de Llave Larga
El número posible de posiciones del stecker es entonces la suma sobre los valores de
p = 0, 1, . . . , 13. El resultado es:
13
X 26!
= 532, 985, 208, 200, 576.
(26 − 2p)! × p! × 2p
p=0
2 y 3. Los rotores. Tenemos, originalmente, tres rotores puestos en un orden especı́fico. Hay
26! posibles rotores (uno por cada posible sustitución monoalfabética); cualquiera de
ellos puede estar en la posición derecha; cualquiera de los 26! − 1 restantes en la
central, y cualquiera de los 26! − 2 restantes en la posición izquierda. Puesto que el
orden importan, el total de posibilidades es (26!)(26! − 1)(26! − 2), es decir,
65, 592, 937, 459, 144, 468, 297, 405, 473, 480, 371, 753, 615, 896,
841, 298, 988, 710, 328, 553, 805, 190, 043, 271, 168, 000, 000.
4. La siguiente variable es la posición inicial de los rotores. Cada uno de los tres rotores
puede estar en cualquiera de la 26 posiciones iniciales originales, lo cual nos dá un
total de 263 = 17, 576 posibilidades.
5. La siguiente variable era el anillo movible que indica el momento de rotación del rotor
a su izquierda. La posición del anillo en el rotor de hasta la izquierda no importa,
pues no afecta la operación del Enigma. Eso nos deja 26 posibles posiciones para
cada uno de los rotores derecho y central, lo cual nos da 262 = 676 combinaciones
posibles.
Ahora tenemos todo lo que necesitamos para calcular la complejidad teórica del Enigma.
Puesto que el cálculo en cada inciso arriba es independiente, tenemos que multiplicar todos
los números resultantes. El resultado es:
3 , 283, 883, 513, 796, 974, 198, 700, 882, 069, 882, 752, 878, 379, 955, 261, 095, 623, 685, 444,
055, 315, 226, 006, 433, 615, 627, 409, 666, 933, 182, 371, 154, 802, 769, 920, 000, 000, 000
o aproximadamente 3 × 10114 .
4.2 ENIGMA 151
o aproximadamente 1023 . Aunque el número es mucho más pequeño que el teórico, aún
representa un número impresionantemente grande, y serı́a imposible montar un ataque de
fuerza bruta.
Estas consideraciones convencieron a los altos mandos alemanes que la seguridad que
daba el Enigma era mas que suficiente.
En 1920, Rusia invadió Polonia en la guerra Ruso-Polaca. El ejército polaco creó una
sección criptoanalı́tica con la que Polonia bloquó el avance ruso antes de que llegara a
Varsovia. Cuando los rusos retrocedieron, el Biuro Szyfrów (Buró de Cifrado) empezó a
concentrarse en Alemania. Tuvieron mucho éxito hasta que, en 1928, empezaron a inter-
ceptar mensajes con un carácter criptográfico completamente distinto al que las fuerzas
armadas alemanas habı́an usado hasta entonces. Usando espı́as y análisis, descubrieron que
se trataba de un sistema tipo Enigma (Scherbius habı́a puesto a la venta al público los
modelos A, B, y C del Enigma; estos tenı́an un sistema de rotación mucho más simple que
el de las fuerzas armadas, carecı́an de reflector y stecker, y el cableado de los rotores era
totalmente distinto al de los Enigmas de las fuerzas armadas).
152 Sistemas Históricos de Llave Larga
El jefe del Biuro Szifrów se dió cuenta que el aumento de volumen de comunicaciones
estaba mecanizando a la criptografı́a, y que los códigos estaban siendo totalmente aban-
donados. Compró varias versiones comerciales del Enigma para saber cómo funciona-
ban en términos generales, y contrató a veinte jóvenes matemáticos de la Universidad de
Poznán. Hasta ese entonces, los burós de criptoanálisis solı́an tener filólogos y traduc-
tores, no matemáticos. La mayorı́a de estos jóvenes se salió del Biuro después de poco
timepo, pero tres de los matemáticos se quedaron: Marian Rejewski, Henryk Zygalski, y
Jerzy Rózycki. Cuando terminaron la carrera (en el caso de Rejewski, una maestrı́a en
Göttingen), se incorporaron al Biuro Szygrów en Varsovia tiempo completo, y empezaron
a atacar el Enigma.
La Kriegsmarine habı́a hecho demasiados cambios a la máquina comercial antes de
que fuera adoptada por las fuerzas armadas. De manera que las máquinas comerciales
sólo les sirvieron para conocer el mecanismo general de cifrado. Con mucho volumen y
mucho trabajo, en quizás uno de los logros criptoanalı́ticos más impresionantes del siglo
XX, Rejewski logró determinar una ecuación matemática que le permitirı́a descubrir el
cableado de los rotores. Pero la ecuación tenı́a demasiadas incógnitas, y no pudo avanzar
más.
En 1932, Hans-Thilo Schmidt, de 44 años, un empleado del Buró de Cifrados de la
Wehrmacht, querı́a más dinero y le ofreció a un agente francés el manual de operaciones
del Enigma. Francia los compró, pero como el manual no tenı́a información sobre la
llave (las conexiones del stecker, la posición de los rotores, el cableado de los rotores),
los criptoanalistas franceses no lograron gran cosa. Los franceses le pasaron una copia del
manual al Jefe de Inteligencia de Radio del ejército polaco, bajo un tratado de ayuda militar
mutua firmado en 1921. El Buró de Inteligencia de Radio no se lo proporcionó al Biuro
Szyfrów hasta que su propia gente no logró hacer nada con el. Pero el material que Schmidt
les habı́a proporcionado incluı́a las instrucciones de uso.
Además de la llave del dı́a, cada mensaje tenı́a que ser enviado con una posición inicial
aleatoria de los rotores. El remitente elegı́a una llave, digamos PDQ. Utilizando la llave del
dı́a, enviaba PDQ, ponı́a los rotores en esa posición, y entonces enviaba el mensaje. Para
evitar problemas por errores de transmisión, la llave del mensaje se repetı́a al enviarla:
PDQPDQ. Esto producı́a seis letras, digamos MKFXRC, llamadas el indicador del mensaje. Se
transmitı́an, y el destinatario usaba la llave del dı́a para descifrar el indicador, obtener
PDQPDQ, y luego usaba la posición de los rotores PDQ para descifrar el mensaje.
La repetición aumentaba la confiabilidad, pero era en un grave error de seguridad.
Representaba un pequeño compromiso criptotexto-criptotexto (es decir, dos criptotextos
que sabemos corresponden al mismo texto original). La M y la X, la K y la R, la F y la C
corresponden, cada pareja, a la misma letra. Si otro indicador del mismo dı́a fuera MRAXTT,
4.2 ENIGMA 153
entonces sabemos que el rotor de la izquierda en ambos mensajes está en la misma posición.
Con esta información y 60 mensajes, Rejewski muchas veces lograba encontrar sufi-
cientes correspondencias; con estas correspondencias, reducı́a el problema del cableado de
los rotores a seis ecuaciones para el rotor derecho; pero todavı́a tenı́a demasiadas incógnitas.
Schmidt siguió vendiéndole información a los franceses. Les vendió las llaves que habı́an
sido utilizadas en agosto y septiembre de 1932. Con ellas, Rejewski redujo las ecuaciones,
pero aún no lograba resolverlas. De repente, tuvo una inspiración: hasta entonces, habı́a
asumido que el cableado del teclado a los rotores iba de la primera letra del teclado, Q, al
primer contacto del rotor (correspondiente a la A). ¿Qué tal si iba de Q a Q, B a B, etc.?
Ajustó las ecuaciones, y de pronto todo cobró sentido y obtuvo la solución. Con ellas,
Rejewski obtuvo el cableado del rotor derecho. Con el volumen de mensajes acumulado,
utilizó la misma técnica para deducir el cableado de todos los rotores. Hacia finales de
diciembre de 1932, entregó las primeras soluciones de Enigma al jefe del Biuro Szifrów.
Por supuesto, esto no terminaba con el problema. Rejewski habı́a, de hecho, “capturado”
el sistema al encontrar los cableados de los rotores y del reflector. Pero la complejidad del
sistema, aún con estos datos conocidos, seguı́a siendo demasiado grande. El problema era
recuperar las llaves del dı́a de manera rápida, y eso aún no era resuelto.
Las reglas de operación alemanas prohibı́an el uso de palabras como indicadores, o claves
como ABC ó QWE. La Kriegsmarine seguı́a las reglas, pero la Wehrmacht y la Luftwaffe eran
mucho más laxas. Un oficial de la Luftwaffe utilizaba mucho los indicadores CIL y LIE,
pues Cillie era el nombre de su novia. Con eso, el Biuro Szyfrów encontraba la llave del dı́a.
A tal grado fue esto que los criptoanalistas polacos le llamaban “cillies” a los indicadores
fáciles de adivinar. Pero por supuesto, no siempre venı́an los mensajes con cillies.
Rejewski y Zygalski usaron otra curiosidad técnica del Enigma: en ninguna posición el
Enigma cifra una letra a sı́ misma. Con este detalle, criptoanálisis puro, y el compromiso
criptotexto-criptotexto proporcionado por el indicador, Zygalski desarrolló un método que
utilizaba una especie de tarjeta perforada que permitı́an “rápidamente” calcular el indi-
cador, o al menos las dos primeras letras en la mayorı́a de los casos (normalmente, ninguno
de los rotores centrales o izquierdos se movı́an durante el envı́o del indicador, lo cual hacı́a
esto posible). Después de esto, habı́a sólo que probar unas cuantas posibilidades. Rejewski
diseñó una máquina que podı́a buscar las aproximadamente 17, 000 combinaciones en un par
de horas. La máquina parecı́a seis enigmas interconectados, cada uno con los rotores un un
orden especı́fico; e iban probando las distintas posibilidades que dieran lugar al indicador.
La máquina se llamaba Bomba.
Hay varias versiones sobre de dónde viene el nombre Bomba. La palabra es una palabra
polaca que quiere decir bomba; el Coronel Tadeusz Lisicki dijo alguna vez que Jerzy Rozycki
154 Sistemas Históricos de Llave Larga
le puso el nombre por un postre de helado que estaban comiendo cuando A Rejewski se le
ocurrió la idea. El postre era una bola de helado cubierta de chocolate, que parecı́a una
bomba de caricatura. Por otro lado, Rejewski dijo que era una bomba por falta de otro
nombre mejor; un documento del ejército americano decı́a que al llegar a una solución, la
máquina producı́a un ruido mecánico como de una explosión, y por eso el nombre.
El hecho es que las bombas funcionaban probando la posición del rotor izquierdo, descar-
tando aquellas que no permitı́an una conexión que hiciera que la primer y cuarta letra del
indicador correspondieran a la misma letra; una vez encontradas las posiciones posibles, se
probaban las del rotor central; y finalmente las del rotor derecho. Es decir, movı́an primero
el rotor más lento, y movı́a al final el rotor más rápido.
En 1938, los alemanes agregaron dos nuevos rotores. Usando sus ecuaciones, Rejewski
rápidamente pudo determinar sus cableados, pero las bombas ya no funcionaban: en vez de
seis Enigmas interconectados, se necesitarı́an 60 (una para cada posible elección y orden
de rotores). Regresaron entonces al viejo sistema de usar “hojas de Zygalski” (las tarjetas
perforadas) y tratar de adivinar indicadores.
El 24 de julio de 1939, temiendo una invasión en cualquier momento, los polacos le
ofrecieron sus resultados a Francia e Inglaterra, pues el volumen de tráfico era demasiado
grande para el pequeño Biuro Szyfrów. Al principio, Francia e Inglaterra no les creyeron que
habı́an logrado descifrar el Enigma. Después de ver los resultados, quedaron fascinados y se
llevaron todo el material bajo sello diplomático. Polonia fue invadida; la buena inteligencia
no bastó contra las huestes alemanas. Francia cayó unos meses después, e Inglaterra quedó
sola en Europa.
En septiembre de 1939, el Government Code and Cipher School (GC & CS) del gobierno
británico, se mudó de Londres a una mansión victoriana en Bletchley Park. Contrató a
matemáticos para continuar el trabajo de Rejewski y los criptoanalistas polacos. Entre
ellos estaban Alan Turing y Gordon Welchman, que fueron encargados con el trabajo de
encontrar cómo resolver los mensajes de Enigma más rápidamente.
Los alemanes iniciaron una serie de cambios al manual de operaciones y al uso de
los indicadores, buscando fortalecer la seguridad del Enigma. Cada cambio requerı́a de
nuevas hojas de Zygalski, que eran cortadas a mano y eran tardadas de producir. Y las
bombas polacas ya no eran suficientes. Turing diseñó una máquina que trabajara no sobre el
indicador, sino sobre una palabra probable. Entre más larga, mejor funcionaba la máquina.
Ésta también funcionaba a base de probar todas las posibles posiciones de rotores que eran
compatibles con la palabra. Las máquinas las llamaron bombes, y la primera fue instalada el
18 de marzo de 1940. Al principio, se concentraron en la Luftwaffe, y para mayo ya estaban
leyendo casi todo el material con 6 a 48 horas de retraso.
4.2 ENIGMA 155
Pero lo más importante no era la Luftwaffe, sino la Batalla del Atlántico, y el Enigma
de la Kriegsmarine. La Kriegsmarine estableció su propio libro de llaves, y no utilizaba ya
indicadores con repeticiones. Las bombes de Turing y el criptoanálisis analı́tico, a principios
de 1941, tardaba entre 38 horas y 11 dı́as para descifrar un mensaje, si es que lo lograban
descifrar.
Döenitz, Almirante en Jefe de la flota de submarinos, y posteriormente de la Kriegsma-
rine, habı́a introducido tres rotores más para un total de ocho. Bletchley Park no conocı́a
el cableado de los nuevos rotores, ası́ que cuando eran usados no podı́an leer los mensajes.
Rejewski estaba en Inglaterra, y sus ecuaciones hubieran podido resolver el problema, pero
como los criptoanalistas polacos habı́an estado en Francia de Vichy en ruta a Inglaterra, no
tenı́an permiso suficiente de seguridad y nunca fueron contactados. El proyecto de Bletch-
ley Park tenı́a una clasificación de seguridad especial llamada ULTRA; era tan secreta, que
estaba prohibido tomar acciones basadas en información de ULTRA que no pudieran ser
explicadas en términos de otros canales, para que los alemanes no supieran que se estaban
leyendo los mensajes del Enigma. A tal grado, que en 1941, Bletchley Park interceptó
planes de la Luftwaffe para un bombardeo masivo en Coventry, y Churchill no permitió la
evacuación de la ciudad. Ası́ que aunque Rejewski les hubiera podido resolver el problema,
no fue contactado debido a las medidas de seguridad que rodeaban Bletchley Park.
Un joven oficial de inteligencia británico, Ian Fleming (que luego escribió los libros de
James Bond) sugirió capturar un Enigma y su libro de llaves. Su idea era capturar un
bombardero alemán, estrellarlo en el Mar del Norte, y capturar al barco de rescate, pero
no se pudo llevar a cabo por falta de un bombardero alemán capturado. Un estudiante de
licenciatura de Cambridge que trabajaba en Bletchley Park, F. Harry Hinsley, sabı́a gracias
a su estudio de mensajes alemanes que la Kriegsmarine tenı́a barcos de pesca convertidos
al noreste de Islandia, los que enviaban reportes de clima necesarios para los bombardeos
durante el Blitz; y que estos barcos patrullaban sin escolta. Hinsley propuso capturar uno
de ellos. El Almirantazgo aceptó, y como a las 5 de la tarde del 17 de mayo de 1941, el barco
Müchen fue capturado. La tripulación logró tirar el Enigma por la borda, pero no lograron
destruir el libro con las llaves de junio. Poco después, el destructor H.M.S. Bulldog
abordó al submarino U-110, a punto de hundirse, y recuperó su Enigma intacto. Con el
Enigma y las llaves de junio, Bletchely Park recuperó los cableados de los nuevos rotores,
y empezando el primero de junio, lograba descifrar mensajes en sólo cuatro a seis horas.
Cuando se estaban acabando las llave, el Almirantazgo autorizó otra expedición a Is-
landia, y el 28 de junio fue capturado en barco Lauenburg, con las llaves de julio. Llegaron
a Bletchley Park el 2 de julio, y el tiempo de descifrado bajó de cuarenta horas (durante el
primero y dos de julio) a menos de tres por mensaje. Con esta información mejoraron las
bombes, y para agosto de 1941, el tiempo promedio de una solución analı́tica (sin conocer
la llave con anticipación) pasó a 12–40 horas.
156 Sistemas Históricos de Llave Larga
4.3 PÚRPURA
En 1912, Herbert Osborne Yardley consiguió trabajo como secretario de códigos del
Departamento de Estado de Estados Unidos. Una noche, un mensaje de 500 palabras en
código del Coronel House al Presidente Woodrow Wilson pasó por su escritorio, y Yardley
decidió ver si lo podı́a descifrar. Para su gran sorpresa, lo logró (los códigos diplomáticos de
Estados Unidos eran bastante anticuados y malos). Envió su solución y observaciones sobre
la seguridad del código a su jefe. En 1917, Estados Unidos declaró la guerra a Alemania, y
Yardley convenció al Departamento de Estado y al Departamento de Guerra que pusieran
el dinero para una sección de criptoanálisis de códigos diplomáticos.
Durante los siguientes años, Yardley continuó trabajando y resolviendo códigos diplo-
máticos de paı́ses enemigos, neutrales, y aliados. En 1919, se le encargó a su organización
resolver los códigos japoneses. Yardley prometió resolverlos en un año o renunciar. Casi de
inmediato, se arrepintió de su promesa: el texto claro japonés era bastante más complicado
de lo que esperaba, aun sin tomar en cuenta el cifrado.
La única gran civilización antigua que parece no haber inventado la idea de la criptografı́a
de algún tipo fue China. Probablemente ésto se debió a que leer y escribir era algo tan raro
(hasta hoy en dı́a, una medida popular de inteligencia y estatus social es cuántos ideogramas
sabe uno; se considera al número como directamente relacionado con la educación de la
persona), que el sólo hecho de escribir un mensaje lo ponı́a en una especia de código o
cifrado, y no era necesario hacer más. La cultura japonesa está fuertemente influenciada
por la china, de manera que Japón tampoco desarrolló códigos ni cifrados hasta principios
del siglo XX, después de su contacto con el occidente.
El japonés tiene tres “alfabetos”. El Kanji, que es el alfabeto de ideogramas, es el
primero. Para considerarse que uno domina el japonés escrito, el gobierno exige un vocab-
ulario de 2000 kanji (ideogramas); para leer un periódico, es necesario saber entre 2000 y
2500.
Otro alfabeto es el Hiragana; este es un alfabeto cursivo, que es en realidad un silabario:
cada sı́mbolo representa una sı́laba, (e.g. ‘ka’, ‘ke’, ‘la’, ‘mu’, etc.) con excepción de uno que
representa el sonido ‘n’. En total, hay 46 sı́mbolos, y dos signos diacrı́ticos que modifican
algunos de los sonidos.
4.3 PÚRPURA 159
Los japoneses decidieron que no iban a permitir que algo parecido ocurriera en el fu-
turo, y empezaron a rediseñar completamente sus sistemas criptográficos. Como no tenı́an
tradición criptográfica propia, se pusieron a estudiar los modelos comerciales que exstı́an,
como el Enigma.
Para su sistema militar, los japoneses utilizaron en el ango kikai taipu A (“máquina de
cifrado A”), que era llamada ROJO por los estadunidenses.3
La ango kikai taipu A funcionaba mediante una permutación fija inicial, y luego un
“medio rotor” con 26 salidas. Un medio rotor consiste de un disco con 26 entradas, igual
que el rotor, pero del otro lado en vez de otras 26 salidas, tiene un largo tubo de material
aislante con una serie de contactos; a medida que va girando el medio rotor, el tubo gira con
él, y los contactos se van moviendo. El alambrado del medio rotor de ROJO permutaba las
seis vocales (a, e, i, o, u, y) entre sı́, y las 20 consonantes entre sı́. Se trataba de un sistema
polialfabético, con un periodo de 60, con alfabetos relacionados, donde además las vocales
iban a vocales y las consonantes a consonantes. Esto permitı́a romanizar4 el katakana, y
que el resultado fuera la romanización de otro katakana.
En 1935, ya bajo la administración de Franklin Delano Roosevelt, el código fue atacado
for Solomon Kullback y Frank Rowlett, alumnos de Friedman que estaban trabajando para
20-OP-G, el departamento de criptoanálisis y criptografı́a de la Marina de Estados Unidos.
Kullback y Rowlett lograron reconstruir el código totalmente para 1936, resolviendo el
sistema por completo.
En 1937, Japón empezó a desarrollar un sistema más seguro, que entró en operación
en 1939; el ango kikai taipu B (“máquina de cifrado B”), llamado PÚRPURA por Estados
Unidos. Aún mantenı́a una separación en la permutación de seis letras por un lado y veinte
por otro, pero ya no tenı́an que ser vocales y consonantes. El número de alfabetos bajó
de 60 a 25, pero la selección de alfabetos era muy irregular. El sistema estaba basado en
engranes, y en cableados, pero el corazón de la máquina eran unos “uniselectores”. Los
uniselectores se utilizaban en centrales telefónicas para elegir circuitos libres cuando habı́a
varias llamadas al mismo conmutador, y son muy irregulares (aunque determinı́sticos) en
su operación.
3
La tradición del Departamento de Estado era ponerle nombre de colores a los códigos diplomáticos; el
código diplomático estadounidense de los 20s se distribuı́a a los oficiales de las embajadas en unas pastas
grises, y era conocido como GRIS. Bajo el código GRIS, la palabra clave para Japón era ROJO; de manera
que el código diplomático japonés se conoció como ROJO. A medida que fueron cambiando, se le fueron
poniendo nombres de otros colores asociados, como NARANJA, PÚRPURA, etc.
4
Romanizar significa transliterar del alfabeto japonés al alfabeto latı́n
4.3 PÚRPURA 161
El criptoanálisis de PÚRPURA estaba clasificado como MAGIC, más allá de TOP SE-
CRET, por la Marina de Estados Unidos. OP-20-G se volvió tan bueno descifrando que
el 7 de diciembre de 1941, el texto proveniente de OP-20-G llegó al Departamento de Es-
tado dos horas antes de que la Embajada Japonesa terminara de descifrarlo y entregara el
5
Hasta hoy en dı́a, muchos japoneses dicen que ningún extranjero puede en realidad aprender japonés
bien.
162 Sistemas Históricos de Llave Larga
6
El mensaje, sin embargo, no tenı́a información especı́fica y llegó demasiado tarde para prevenir el ataque
a Pearl Harbor.
4.3 PÚRPURA 163
japoneses preparaban sus aviones para el bombardeo terrestre de la base en Midway, los
“dive bombers” atacaron por sorpresa y sin oposición. Yamamoto habı́a traı́do cuatro de
sus seis portaaviones a la operación: Akagi, Kaga, Soryu, y Hiryu. Los bombarderos
estadounidenses hundieron Akagi, Kaga, y Soryu tras unas cuantas horas de combate.
En la tarde, hundieron Hiryu, mientras que los japoneses hundieron USS Yorktown, el
portaaviones que habı́a estado dañado. Yamamoto decidió que sin el soporte aéreo no podı́a
proseguir con la invasión de Midway, y ordenó la retirada. Más aun, los japoneses pasaron
de una ventaja a una desventaja en portaaviones y tonelaje total en el Pacı́fico, pasando de
seis contra cuatro a dos contra tres.
Midway fue el principio del fin de la Guerra en el Pacı́fico. Nunca más volvió a avanzar la
Marina Japonesa, y se tuvo que contentar con luchas de defensa y battalas de retaguardia.
Como dijera después Nimitz, “La victoria de Midway fue una victoria de Inteligencia.”
El General George Marshall, Jefe del Estado Mayor, fue más explı́cito: “Gracias al crip-
toanálisis, pudimos concentrar nuestras limitadas fuerzas donde eran necesarias; sin el crip-
toanálisis, hubiéramos estado tres mil millas fuera de lugar.”
El segundo gran éxito obtenido gracias a MAGIC fue el asesinato de Yamamoto. En
1943, Yamamoto decidió hacer un tour de inspección por las Islas Salomón, en un intento
de subir la moral a las tropas japonesas que estaban ahı́ atrincheradas esperando el ataque
de la Marina de Estados Unidos. Yamamoto era una figura casi legendaria, carismático, un
gran estratega y táctico naval. Era adorado por la tropa, quienes en general opinaban que
mientras Yamamoto estuviera seguro de la eventual victoria, la victoria estaba segura.
Yamamoto preparó su tour, y envió su itinerario para preparar su llegada a las bases.
Desafortunadamente, envió su itinerario cifrado, lo cual por supuesto no evitó que los crip-
toanalistas de Estados Unidos pudieran leer con todo lujo de detalle dónde y cuándo iba a
estar Yamamoto.
Nimitz notó que habı́a un lugar, entre la visita a dos islas, en que se podı́a tratar de
emboscar al avión de Yamamoto. Era un lugar remoto, apenas dentro del lı́mite de los caza
bombarderos estadunidenses. Era poco probable que una emboscada ahı́ fuera considerada
casual. Montarla pondrı́a en peligro el secreto de MAGIC.
Pero Yamamoto era demasiado importante, demasiado clave en la mente japonesa, y
Nimitz decidió que un pájaro en mano era más importante, y ordenó a dos cazas bom-
barderos que montaran la emboscada. El 8 de abril, derribaron el avión que traı́a a Ya-
mamoto, matándolo. El 21 de mayo, el Imperio Japonés anunció la muerte de Yamamoto
“durante un tour de inspección” y sin dar más detalles. El hombre que le siguió al mando
de la Marina Japonesa estaba tan desmoralizado como el resto; en su discurso al tomar el
mando dijo: “Sólo habı́a un Yamamoto. Nadie lo puede reemplazar. Su pérdida es un golpe
del que nunca nos recuperaremos.”
164 Sistemas Históricos de Llave Larga
Pero los japoneses estaban tan convencidos de la seguridad de sus códigos y la inherente
impenetrabilidad de su idioma, que atribuyeron el ataque a simple mala suerte; ni siquiera
cambiaron su código hasta agosto, cuando estaba previsto el cambio usual.
La historia de MAGIC se supo mucho más rápido que la de ULTRA, posiblemente
porque los sistemas japoneses no eran considerados seguros y nadie los estaba imitando.
Para 1960, ya se sabı́an los detalles del asesinato de Yamamoto y la Batalla de Midway. En
gran medida, MAGIC ganó la Guerra en el Pacı́fico, ası́ como ULTRA ganó la Batalla del
Atlántico.
Para terminar con los sistemas que podrı́amos llamar “históricos”, vamos a mencionar
brevemente tres tipos más de cifrado: los códigos, los nomenclátores, y los cifrados por
transposición.
5.1 Códigos
Un código consiste de, normalmente, miles de frases, palabras, sı́labas, y letras (uni-
dades lingüisticas), y sus palabras código, números código, o con mayor generalidad, grupo
de código. Un ejemplo tı́pico se verı́a de la siguiente manera:
166 Otros Sistemas Históricos de Criptografı́a
3964 Capitán
2103 listo para
0010 proseguir
1842 detener
9201 hombre a la deriva
Para enviar el mensaje “El capitán está listo para proseguir,” se enviarı́a
Los códigos se volvieron muy comunes en la segunda mitad del siglo XIX; eran utilizados
sobre todo para ahorrarse cuotas de telegrafı́a, permitiendo el envı́o de un mensaje largo
utilizando únicamente unos cuantos grupos de código. Aunque también proporcionan un
cierto grado de seguridad, su seguridad no es mucha debido al respeto de las unidades
lingüisticas. Un código modernos, a mediados del siglo XX, contendrı́a aproximadamente
50,000 grupos de códigos.
5.2 Nomenclátores
Entre 1400 y 1850, un sistema que era mitad cifrado y mitad código dominó la crip-
tografı́a. El sistema normalmente consistı́a de un alfabeto de cifrado (monoalfabético), con
homófonos, y una lista tipo código con nombres, palabras, y sı́labas. Orginalmente, la lista
tenı́a sólo nombres, lo cual le dio el nombre al sistema: nomenclátores.
Un nomenclátor es, según la Real Academia Española (22a. edición), un “catálogo de
nombres, ya sea de pueblos, de sujetos, o de voces técnicas de una ciencia o disciplina.”
Más tarde, los nomenclátores llegaron a crecer hasta ser comparables con los códigos mo-
dernos; sin embargo, cualquier sistema tipo código utilizado entre 1400 y 1850 es llamado
un nomenclátor.
Una caracterı́stica histórica curiosa es que los nomenclátores siempre se escribı́an en
grandes hojas sueltas que eran dobladas, mientras que los códigos, una invención moderna,
casi invariablemente se escriben en formato de libro.
Originalmente, los nomenclátores listaban tanto el texto original como los elementos
codificados en orden lexicográfico. Esto se debı́a a que era necesario poder codificar y
decodificar rápidamente. La única variación ocurrı́a en nomenclátores pequeños, donde los
nombres estaban en un orden más aleatorio.
5.3 Transposición 167
Esto, por supuesto, facilitaba el trabajo del criptoanalista. Si alguién sabı́a que 137
representaba de, y 168 representaba en, entonces 21 no podı́a ser para, pues los códigos de
palabras que empiezan con p serı́an después; y que dı́a tendrı́a que estar entre 138 y 167.
En 1600 nació Antoine Rossignol, quien se convertirı́a en el primer criptólogo de tiempo
completo en Francia. En 1628, decodificó un mensaje muy importante para el Rey de Fran-
cia, y con ello inició su carrera. Alrededor de 1650, Rossignol introdujo la innovación más
importante que tuvieron los nomenclátores durante los 400 años en que reinaron supremos
en la criptografı́a mundial.
Lo que hizo Rossignol fue revolver los códigos respecto al texto claro, para que no
estuvieran ambas listas en orden lexicográfico. Para facilitar la codificación y decodificación,
en vez de escribir el nomenclátor en una sóla tabla, se escribı́a en dos; una en la que el
texto original estuviera en orden lexicográfico, llamado la “tables à chiffrer”; y uno en el
que los códigos estuvieran listados en orden lexicográfico, llamado la “tables à dechiffrer.”
Debido a ello, estos son conocidos como nomenclátores de dos partes, y los anteriores como
nomenclátores de una parte.
La idea de Rossignol fue adoptada rápidamente, y para 1700 la mayorı́a de los paı́ses
usaban nomenclátores de dos partes con 2000 ó 3000 elementos (grupos de códigos).
Los nomenclátores perdieron su importancia con el advenimiento del telégrafo, que es-
timuló el cifrado y los códigos modernos. Además, hacia 1800 era claro que la seguridad
ofrecida por un nomenclátor, aún uno en dos partes y bien hecho, era mediocre y directa-
mente proporcional al tamaño y costo de producción. Paulatinamente fueron abandonados,
y la popularización del telégrafo en 1850 los volvió obsoletos.
5.3 Transposición
V N V V N I
I E I E C
y luego leı́do por renglones, para producir el criptotexto VNVVNIIEIEC. O bien podemos
escribirlo en un cuadrado,
168 Otros Sistemas Históricos de Criptografı́a
V I N E
V I V E
N C I X
y leı́do primer la primer columna de arriba hacia abajo, luego la segunda de abajo hacia
arriba, etc., para producir el criptotexto VVN CII NVI EEX.
Es fácil reconocer el resultado de un sistema de transposición, pues la distribución de
letras es la distribución usual del idioma en el que está escrito el mensaje.
El tipo más común de transposición es la transposición de columnas. Uno empieza con
una palabra clave, por ejemplo, QUIJOTE ; numeramos las letras en su orden alfabetico:
5 7 2 3 4 6 1
Q U I J O T E
5 7 2 3 4 6 1
Q U I J O T E
Y A C E A Q U
I E L H I D A
L G O F U E R
T E Q U E A T
A N T O E X T
R E M O L L E
G O D E V A L
I E N T E Q U
E S E A D V I
E R T E Q U E
L A M U E R T
E N O T R I U
N F O D E S U
V I D A C O N
S U M U E R T
E R O S A P Q
donde la P y Q finales son relleno. Luego, listamos cada columna en el orden indicado por
la palabra clave (en nuestros tradicionales bloques de cinco letras):
UARTT ELUIE TUUNT QCLOQ TMDNE TMOOD MQEHF UOOET AEUTD AUSAI UEELV EDQER
5.3 Transposición 169
ECEAY ILTAR GIEEL ENVSE QDEAX LAQVU RISOR PAEGE NEOES RANFI UR
También se pueden dejar lugares vacı́os al final, o en lugares preacordados entre los
corresponsales.
El caso de rectangulos con lugares vacı́os tiene buena seguridad para un mensaje rel-
ativamente corto. Pero con varios mensajes en la misma clave, se vuelve muy sencillo de
criptoanalizar. Para datos sobre el criptoanálisis de sistemas de transposición, dirigimos
al lector al último capı́tulo del libro de Sinkov [Sin66]. Si componemos la transposición
columnar (es decir, hacemos una segunda transposición columnar al terminar la primera),
el sistema se conoce como un sistema de doble transposición, y la seguridad aumenta en
mucho. Pero nuevamente, dos o más mensajes con la misma clave debilitan en mucho el
sistema.
En general, los métodos de transposición no fueron muy populares hasta épocas re-
cientes, probablemente porque es dificil contruir aparatos mecánicos que realizen trans-
posición, mientras que es relativamente sencillo construı́r los que hacen sustitución. Otro
problema es que requieren trabajar con el mensaje completo en vez de con pedazos aislados
(como por ejemplo, letra por letra), lo cual también reduce su eficiencia.
Parte II
Sistemas Modernos
6.1 El origen de DES
4. El algoritmo debe poder ser puesto a disposición del público sin restricciones (i.e. no
debe haber licencias de uso sobre él).
Nadie se presentó a esta convocatoria, por lo que se emitió una nueva el 27 de agosto
de 1974. En atención a ésta última, se presentó un algoritmo diseñado por un grupo de
trabajo de los laboratorios de investigación de IBM; el nombre del algoritmo era Lucifer.
La idea central de Lucifer fue de Horst Feistel, un inmigrante alemán que arribo a los
Estados Unidos en 1932 según algunas fuentes [Kah99], o en 1934 según otras [Sin99]. Feis-
tel siempre quiso trabajar en criptografı́a, pero debido a su origen durante la segunda guerra
mundial estuvo en arresto domiciliario. Luego de la guerra, trabajó un tiempo como inves-
tigador en el área de criptografı́a para la Fuerza Aérea y más tarde trabajó en la misma
área para una compañı́a privada (Maitre Corporation). Al parecer [Sin99] los proyectos
de Feistel en ambos empleos fueron cancelados por intervención de la NSA (National Se-
curity Agency), dependencia gubernamental que tiene a su cargo todo lo relacionado con
la seguridad de comunicaciones, la criptografı́a, y el criptoanálisis en los Estados Unidos.
Finalmente Feistel se incorporó en 1967 al IBM Thomas J. Watson Reserch Laboratory, de
donde surgió Lucifer, a principios de los setenta.
6.1 El origen de DES 175
Como todos los algoritmos de su tipo (redes de Feistel), DES trabaja en rondas. Cada
ronda es casi idéntica a las demás. Nos avocaremos a describir lo que ocurre en una ronda
de DES y luego procederemos a señalar las diferencias y el algoritmo que determina la clave
que entra a cada ronda (algoritmo de planificación de llave o key scheduling en inglés).
Llamaremos M al texto claro completo escrito en binario que se cifrará. Con K deno-
taremos la llave que se le proporciona a DES para cifrarlo. Tanto M como K miden 64 bits
originalmente, pero el bit del extremo izquierdo (el más significativo) de cada byte (octeto
de bits) de la clave se considera como el bit de verificación de paridad de los restantes siete
bits en el byte; ası́ que realmente la clave tiene 64 − 8 = 56 bits útiles.
Identificaremos los bits del mensaje a cifrar como m64 , m63 , . . . , m1 , cuanto mayor sea
el ı́ndice más a la izquierda está el bit.
Lo primero que se le hace a M es una permutación sin propósito criptográfico. La
permutación, descrita en [oST99] (pag. 10) es:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
los números en la tabla indican al ı́ndice del bit de M y su posición en la tabla es la que
adquieren luego de la permutación; ası́ el bit 58 de M queda en la primera posición, el bit
50 en la segunda y ası́ sucesivamente. Puesta ası́ la permutación se ve complicada, pero en
realidad no lo és: si nos fijamos en los últimos números de los primeros cuatro renglones
tenemos la sucesión: 2, 4, 6 y 8; en general los bits pares de M van a dar a la primera mitad
y los impares a la segunda. Éste es un truco para que en una máquina con un canal de datos
(bus) de 8 bits la carga de M en el registro del chip DES sea eficiente, y sólo se requiera
que sea un registro de carga-desplazamiento. Este registro está dividido en dos mitades por
lo que veremos a continuación y que es una caracterı́stica de las redes de Feistel. Al final,
6.2 Descripción de DES 177
Li+1 = Ri (6.2.1)
Ri+1 = LI ⊕ f (Ri , ki ) (6.2.2)
1. Permutación expansiva. Los 32 bits de Ri pasan por una permutación expansiva (ası́
que no es una permutación formalmente hablando), que entrega 48 bits a partir de
los 32 de Ri . La permutación ([oST99], pag. 13) es:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
64 bits
Texto de entrada
+ f
L1 R1
Li Ri ki
+ f
L i+1 R i+1
L 14 R 14 k15
+ f
L 15 R 15
32 32
Texto de salida
64 bits
2. A salida de la permutación expansiva se le aplica un xor bit a bit con los 48 bits
de ki .
3. El resultado del xor se introduce al dispositivo de substitución constituido por 8
diferentes cajas S. Cada caja recibe 6 bits de entrada. El primero y el último se usan
como los bits de un número binario que se interpreta como el ı́ndice del renglón r de
una matriz, los otros cuatro se usan como un el ı́ndice de la columna c. Cada caja
S tiene definida una matriz diferente con 4 × 16 = 64 entradas, cada entrada es un
número de cuatro bits. Cada caja S entrega como salida el número binario de cuatro
bits contenido en la entrada (r, c). En total las 8 cajas S entregan entonces 4 × 8 = 32
bits. Las ocho cajas son diferentes, pero se usan las mismas ocho y en el mismo orden
en cada ronda DES. Esto está ilustrado en la figura 6.3.
4. A la salida de las cajas S se le aplica la siguiente permutación ([oST99], pag. 15):
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Caja S1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Caja S2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
180 El Estándar de Cifrado de Datos – DES
ki
(48 bits)
+
48
Substitución (cajas S)
32
Permutación
32
Salida: f (R i , k i )
48 bits
32 bits
Caja S3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
Caja S4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
Caja S5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
Caja S6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
Caja S7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
Caja S8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Sólo falta por aclarar cómo se determina la llave ki de entrada a la ronda i a partir
de la clave originalmente dada como entrada a DES y que hemos denotado como K. Esto
182 El Estándar de Cifrado de Datos – DES
2. Cada mitad es rotada uno o dos bits a la izquierda, ambas mitades el mismo número de
bits. El número de bits a rotar está determinado por la siguiente tabla [oST99, Sch96]:
Ronda 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Desp. 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
0 .
3. La salida de este desplazamiento constituye ki+1
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Algunos bits se omiten: 9, 18, 22, 25, 35, 38, 43 y 54. Pero como antes la clave se
desplazo algunos bits a la izquierda, los omitidos no siempre son los mismos bits de
K.
La razón de todo este lı́o es lograr los dos objetivos señalados por Claude Shannon y
que trataremos con mayor detalle más delante: confusión y difusión. Hacer que el texto
de salida no se parezca nada al de entrada (confusión) y que cada pequeña parte de la
información de entrada tenga impacto en la información de salida (difusión). En DES cada
bit de salida en el texto cifrado es función de todos los bits del texto de entrada y de
6.2 Descripción de DES 183
56 bits
k ’i
28 28
Permutación
de
compresión k ’i+1
48
ki
48 bits 56 bits
Figura 6.4: Determinación de las llaves de cada ronda de DES. Para la primera ronda k00
son los 56 bits de la clave luego de la verificación de paridad.
todos los bits de la clave: un cambio en uno solo de los bits de entrada genera cambios en
el 50% de los bits de salida, aproximadamente ([Sch96, FdlGH+ 01]).
Una cualidad de DES es que si se reintroduce a DES un texto previamente cifrado con él
y se invierte el orden de las claves de cada ronda (k15 entra como k0 , k14 como k1 etcétera),
entonces el resultado es el texto claro originalmente cifrado.
Una variante común de DES es el llamado triple DES o 3DES. Consiste en elegir tres
llaves, K1 , K2 , y K3 , y tomar
−1
EK3 EK 2
(EK 1 (P ))
Tanto DES como su antecesor directo, Lucifer, forman parte de dos grandes familias de
algoritmos de cifrado: el cifrado de bloques por rondas, y las redes de Feistel.
La idea del cifrado por rondas es tomar una operación criptográfica relativamente sen-
cilla, y repetirla varias veces para aumentar su seguridad.
Las redes de Feistel son una idea un poco más complicada, pensada en términos de
aplicación a computadoras. La idea fue propuesta por Horst Feistel en un artı́culo de la
revista Scientific American en 1973 [Fei73].
En ambos casos, las ideas teóricas que informan el diseño de los sistemas criptográficos
se deben a Claude Elmwood Shannon, que en 1948 publicó dos artı́culos que inauguraron
la Teorı́a de Información [Sha48, Sha49].
Las dos técnicas básicas que se utilizan en criptografı́a son confusión y difusión.
La confusión busca esconder la relación entre el texto original y el texto cifrado. La
manera más sencilla de obtener confusión es mediante substituciones. En el caso de cifrado
por bloques, se substituye una secuencia larga de caracteres (un bloque), por otra a base de
manipular sub-bloques del texto como unidades completas. El resultado final es simplemente
una substitución poligráfica con n grande. Esto dificulta el análisis de frecuencia y el análisis
de contactos, por ejemplo.
La difusión busca disipar la información, buscando que el efecto de un pedazo del texto
original se haga sentir a lo largo de todo (o al menos, una parte grande) del texto cifrado.
Por ejemplo, la substituciones monoalfabéticas y polialfabéticas carecen de difusión, pues
cada caracter del texto original afecta únicamente un caracter del texto cifrado, a saber el
que le corresponde. Las substituciones poligráficas tienen más difusión, y entre mayor sea
el tamaño de las gráficas, mayor difusión. En general, la manera más sencilla de obtener
difusión es mediante permutaciones (o transposiciones).
Repetir confusión normalmente no mejora la seguridad de manera significativa; com-
poner dos substituciones monoalfabéticas no es mejor que una sola substitución monoal-
fabética; repetir substituciones polialfabéticas ayudan a agrandar el periodo de la llave,
pero no representan un aumento significativo en la dificultad final de criptoanálisis. Pero,
por lo general, repetir confusión sı́ mejora la seguridad total. Por ejemplo, la doble trans-
posición de columnas es mucho más segura que la transposición de columnas simple. O por
poner otro ejemplo: si después de una ronda logramos que un bit de la entrada afecte dos
de la salida, repetir el proceso hace que el bit de entrada original afecte cuatro de salida,
6.3 Redes de Feistel, Cifrado de Bloques, y Teorı́a de Información 185
Ii = Di ;
Di = Ii−1 ⊕ f (Di−1 , Ki )
donde ⊕ representa el XOR (suma booleana bit a bit), Ki es la i-ésima llave, y f es una
función que depende de la llave y el bloque, y cuyo valor es un bloque de t bits.
En otras palabras, en la i-ésima ronda, primero hacemos que la antigua mitad derecha
se vuelva la nueva mitad izquierda; y la nueva mitad derecha es el XOR de la vieja mitad
izquierda, y el resultado de una función criptográfica de la vieja mitad derecha y la llave
correspondiente.
Hay dos razones principales por las cuáles las redes de Feistel son muy útiles: primero, la
función f no tiene que ser demasiado fuerte (desde el punto de vista criptográfico), pues al
ser un cifrado de rondas, la composición de rondas fortalece el algoritmo completo. Pero más
importante: tenemos una garantı́a de que, independientemente de quién sea la función f ,
las redes de Feistel siempre son invertibles, y son invertibles mediante el mismo algoritmo.
Como Di = Ii−1 ⊕ f (Di−1 , Ki ), podemos recuperar Ii−1 a partir de Di , Di−1 , y Ki ,
simplemente:
Ii−1 = Di ⊕ f (Di−1 , Ki ).
Y para recuperar Di−1 , sólo necesitamos conocer Ii , pues Di−1 = Ii . Entonces, dados Ii y
Di , podemos recuperar Ii−1 y Di−1 .
No importa quien sea f , no importa que tan complicada, no importa que no sea invert-
ible, la red de Feistel es invertible, y mediante el mismo algoritmo:
Di−1 = Ii ;
Ii−1 = Di ⊕ f (Di−1 , Ki ).
Por cómo se maneja la distribución de llaves de DES, ciertas llaves son débiles: la llave
se parte a la mitad, y cada mitad se maneja independientemente. Si la mitad tiene puros
ceros o puros unos, entonces siempre se usa la misma llave en cada ronda. Estas se llaman
llaves débiles. Las cuatro llaves débiles aparecen en la Tabla 6.1, escritas en hexadecimal
(cada dı́gito represnta un byte).
Algunos pares de llaves cifran texto de manera idéntica; es decir, una llave del par
puede usarse para descifrar mensajes que se cifraron usando la otra llave del par. Estas
llaves generan únicamente dos subllaves, en vez de dieciséis. Cada una de estas subllaves
se utiliza ocho veces en el algoritmo. Estas son llamadas llaves semi-débiles, y vienen
en seis parejas de dos llaves cada una. Aparecen en la Table 6.2, en su versión con bit de
paridad.
6.4 Algunas Propiedades de DES 187
Algunas llaves producen sólo cuatro subllaves, cada una de las cuales es utilizada cuatro
veces por el algoritmo. Estas son llaves posiblemente débiles, y hay 48 de ellas. Están
listadas, incluyendo los bits de paridad, en la Tabla 6.3.
En total, DES tiene 64 llaves que pueden dar problemas, de un total de
El ataque de Encuentro a la Mitad fue sugerido por Merkle y Hellman, como men-
cionamos arriba.
Supongamos que tenemos C = EK2 (EK1 (P )). Dada la pareja P y C (es decir, se trata
de un ataque de texto claro conocido), calculamos los 255 posibles resultados de EKi (P ).
−1
Después calculamos todos los EK j
(C), y los comparamos con los EKi (P ) que calculamos
en el paso anterior. Cuando encontramos una coincidencia, obtenemos una pareja (Ki , Kj )
−1
que corresponde a EK j
(C) = EKi (P ); luego usamos esa pareja con otra pareja de texto-
criptotexto (P2 , C2 ), y eso detecta si nuestra pareja de llaves es la correcta. El tiempo de
190 El Estándar de Cifrado de Datos – DES
proceso es el mismo que el necesario para romper una sola aplicación de DES.
El cifrado triple no parece padecer del defecto del cifrado doble. El estándar de cifrado
triple consiste en elegir tres llaves, K1 , K2 , y K3 , y calcular
−1
EK3 (EK2
(EK1 (P ))).
La razón por la que se aplica el inverso en la segunda aplicación de DES es para que el
algoritmo sea compatible con el cifrado simple de DES: si tomamos K1 = K2 , el resultado
es simplemente EK3 (P ).
Después de cinco rondas de DES, cada bit de la salida depende de cada bit de la entrada.
Después de ocho rondas, cada bit de la salida es esencialmente una función aleatoria de cada
bit de entrada y cada bit de la llave. ¿Entonces, por qué se usan 16 rondas? La respuesta a
esa pregunta no se conoció públicamente hasta que se conoció el criptoanálisis diferencial,
que estudiaremos en el siguiente capı́tulo.
Hay principalmente dos ataques de criptoanálisis analı́tico contra DES: el criptoanálisis
diferencial, y el criptoanálisis lineal.
En este capı́tulo vamos a describir ambos ataques. Puesto que son algo complicados,
vamos a introducir una red de Feistel simplificada primero, sobre la cual vamos a aplicar
ambos criptoanálisis de manera ilustrativa.
Para poder explicar más fácilmente el criptoanálisis de DES, vamos a usar una red de
Feistel inventada para dicho objetivo. No se trata de un sistema criptográficamente seguro,
sino de un sistema elegido para explicar el criptoanálisis. El sistema y la aplicación del
criptoanálisis están tomados del artı́culo de Howard Heys [Hey]. Le vamos a llamar RFS
192 Criptoanálisis de DES
Entrada 0 1 2 3 4 5 6 7 8 9 A B C D E F
Salida E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Salida 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
La permutación se puede también dar de una manera un poco más sencilla: la salida i de
la j-ésima caja S se conecta a la entrada j de la i-ésima caja S de la siguiente ronda. Un
diagrama de la Red de Feistel Simplificada está en la Figura 7.1.
Llave K 1
S 11 S 12 S 13 S 14
Llave K 2
S 21 S 22 S 23 S 24
Llave K 3
S 31 S 32 S 33 S 34
Llave K 4
S 41 S 42 S 43 S 44
Llave K 5
W1 W2 W3 W4
K1
K2
K3
K4
X1 X2 X3 X4
Caja S de 4x4
Y1 Y2 Y3 Y4
Figura 7.2: Caja S con el efecto de la llave en la entrada
X = [X1 , . . . , Xn ]
X 0 = [X10 , . . . , Xn0 ]
∆X = ∆(X, X 0 ) = X ⊕ X 0 .
∆Y = ∆(Y, Y 0 ) = Y ⊕ Y 0 .
Si nuestro cifrado fuera ideal, la probabilidad de que una diferencia de salidas ∆(Y )
corresponda a una diferencia particular de entradas ∆(X), deberı́a ser 21n (excepto cuando
∆(X, X 0 ) = 0, en cuyo caso debe ser que la probabilidad de ∆(Y, Y 0 ) = 0 sea igual a 1).
El criptoanálisis diferencial busca utilizar los casos en que una cierta ∆(Y, Y 0 ) particular
ocurre respecto a una ∆(X, X 0 ) 6= 0 particular con una probabilidad p, con
1
p .
2n
El sı́mbolo se lee “mucho mayor que”. Una pareja (∆X, ∆Y ) que satisface esta condición
se llama un diferencial de la ronda en cuestión. Un diferencial es un diferencial de k rondas
si funciona después de la aplicación de k rondas.
¿Cómo se usa un diferencial para atacar una red de Feistel como DES? Se usa para
encontrar parte de la llave usada en la red. En el caso de DES, si logramos recuperar la
última llave usada, una búsqueda exhaustiva nos encontrarı́a los bits faltantes de la llave
completa.
Supongamos que tenemos una red de Feistel de r rondas, y un diferencial (∆X, ∆Y ) de
r − 1 rondas para esta red.
Lo que hacemos es tomar mucha parejas X, X 0 tales que ∆(X, X 0 ) = ∆X, el diferen-
cial buscado; con ellas obtenemos parejas Y, Y 0 , y las correspondientes mitades (Ir , Dr ) y
(Ir0 , Dr0 ). En teorı́a, conocemos con alta probabilidad la diferencia de los resultados de la
ronda anterior; es decir, conocemos con alta probabilidad (dada por el diferencial),
0 0
∆(Ir−1 , Ir−1 ) y ∆(Dr−1 , Dr−1 );
0
(Ir−1 , Dr−1 ) e (Ir−1 , Dr−1 ) que tengan la diferencia esperada. Sólo ciertas llaves pueden
dar nuestras Dr y Dr0 , al tiempo que guardan la diferencia buscada en la ronda r − 1.
Mantenemos una cuenta de cuáles llaves funcionan, y repetimos con otros buenos pares.
Lo que esperamos es que la llave correcta resulte posible en la mayorı́a de los casos,
pues la probabilidad de la caracterı́stica es alta. Las otras posiblidades de llaves ocurren
con probabilidad aleatoria, distribuidas uniformemente. Entonces, una vez que hayamos
obtenido suficientes buenas parejas, la verdadera llave debe sobresalir de nuestra cuenta por
encima del ruido de el resto de las posibles llaves. Finalmente, una búsqueda exhaustiva
demuestra y encuentra los bits faltantes de la llave.
El ataque es un ataque de “umbral.” Si no examinamos suficientes pares buenos, el ruido
de las llaves falsas es demasiado para detectar la verdadera llave. En general, el número de
parejas que se requieren examinar es inversamente proporcional a la probabilidad asociada
a la caracterı́stica: entre mayor probabilidad, menos parejas.
Las preguntas que tenemos que contestar ahora son: ¿Existen las caracterı́sticas? Y en
caso afirmativo, ¿Cómo las encontramos? Otra pregunta importante es: ¿Qué tan efectivo
es el ataque contra DES?
Debido al efecto de difusión, lo que busca uno para construı́r caracterı́sticas es trabajar
de ronda en ronda, y luego componer los resultados. La ventaja es que es mucho más
fácil trabajar con una sóla ronda que con varias. La desventaja es que si tenemos una
caracterı́stica con probabilidad p1 en la primer ronda, y una con probabilidad p2 en la
segunda que se puede componer con la primera, entonces la composición tiene probabilidad
p1 p2 < p1 , p2 (a menos que una de ellas tenga probailidad 1). En el caso de DES y otras
redes de Feistel, tenemos que empezar con un ∆X que sea muy “chico”, es decir, muy
pocos unos y muchos ceros. La idea es que nos tenemos que concentrar en el menor número
posible de cajas S para minimizar los problemas. El artı́culo original de Biham y Shamir,
por ejemplo, sugerı́a una caracterı́stica para DES de tres rondas que tenı́a únicamente tres
unos del lado izquierdo y dos del lado derecho (una diferencia de 5 bits, de un total de 64).
La razón por la cual queremos una red de Feistel donde la acción de la llave sea un XOR
es que dicha red “respeta” diferenciales: la diferencia entre los mensajes al entrar a la ronda
es igual a la diferencia después de haber sumado las llaves: si tenemos X y X 0 , y llave K,
entonces
∆(X, X 0 ) = X ⊕ X 0
= (X ⊕ K) ⊕ (X 0 ⊕ K)
= ∆(X ⊕ K, X 0 ⊕ K),
X1 X2 X3 X4
Caja S de 4x4
Y1 Y2 Y3 Y4
Figura 7.3: La caja S con los bits de entrada y salida numerados.
Para ilustrar cómo se encuentran caracterı́sticas, por qué deben existir, y cómo se usan
para hacer criptoanálisis a DES, vamos aplicar el criptoanálisis diferencial a nuestra RFS.
Para poder construir caracterı́sticas con probabilidad alta, tenemos que examinar las
propiedades de nuestras cajas S, y usar esas propiedades para determinar las propiedades
diferenciales totales. Especı́ficamente, consideramos todas las posibles diferencias de en-
tradas y salidas de nuestras cajas S, para determinar un par con alta probabilidad. Después
combinamos pares de ronda en ronda para que un diferencia distinta de cero en la salida de
una ronda corresponda a una diferencia en la entrada de la siguiente.
Primero examinamos las parejas (∆X, ∆Y ) relacionadas con nuestra caja S. Numeramos
los bits de entrada como X = [X1 X2 X3 X4 ] de izquierda a derecha, y los de salida como
Y = [Y1 Y2 Y3 Y4 ], también de izquierda a derecha. Véase la Figura 7.3.
Podemos examinar todas las parejas de diferencias (∆X, ∆Y ), y calcular la probabilidad
de que ∆Y resulte dado que ∆X es la diferencia de entrada; es decir, consideramos todas las
posibles parejas (X 0 , X 00 ) de entradas tales que ∆(X 0 , X 00 ) = X 0 ⊕ X 00 = ∆X, y analizamos
cuántas veces resulta que ∆(Y 0 , Y 00 ) = ∆Y . Puesto que el orden en que consideramos la
pareja (X 0 , X 00 ) no importa, para cada valor de ∆X basta considerar 16 pares: por cada
posible valor de X 0 , simplemente escogemos X 00 = X 0 ⊕ ∆X.
Por ejemplo, consideremos algunos valores de X y Y , y los correspondientes valores de
∆Y dada la pareja (X, X ⊕ ∆X), en la Tabla 7.1. La primer columna tiene el valor de X,
pasando por las 16 posibilidades. La segunda columna tiene el resultado de aplicar la caja
198 Criptoanálisis de DES
X Y ∆Y
∆X = 1011 ∆X = 1000 ∆X = 0100
0000 1110 0010 1101 1100
0001 0100 0010 1110 1011
0010 1101 0111 0101 0110
0011 0001 0010 1011 1001
0100 0010 0101 0111 1100
0101 1111 1111 0110 1011
0110 1011 0010 1011 0110
0111 1000 1101 1111 1001
1000 0011 0010 1101 0110
1001 1010 0111 1110 0011
1010 0110 0010 0101 0110
1011 1100 0010 1011 1011
1100 0101 1101 0111 0110
1101 1001 0010 0110 0011
1110 0000 1111 1011 0110
1111 0111 0101 1111 1011
Diferencia de salida ∆Y
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 2 0 0 0 2 0 2 4 0 4 2 0 0
2 0 0 0 2 0 6 2 2 0 2 0 0 0 0 2 0
3 0 0 2 0 2 0 0 0 0 4 2 0 2 0 0 4
4 0 0 0 2 0 0 6 0 0 2 0 4 2 0 0 0
5 0 4 0 0 0 2 2 0 0 0 4 0 2 0 0 2
6 0 0 0 4 0 4 0 0 0 0 0 0 2 2 2 2
∆ 7 0 0 2 2 2 0 2 0 0 2 2 0 0 0 0 4
X 8 0 0 0 0 0 0 2 2 0 0 0 4 0 4 2 2
9 0 2 0 0 2 0 0 4 2 0 2 2 2 0 0 0
A 0 2 2 0 0 0 0 0 6 0 0 2 0 0 4 0
B 0 0 8 0 0 2 0 2 0 0 0 0 0 2 0 2
C 0 2 0 0 2 2 2 0 0 0 0 2 0 6 0 0
D 0 4 0 0 0 0 0 4 2 0 2 0 2 0 2 0
E 0 0 2 4 2 0 0 0 6 0 0 0 0 0 2 0
F 0 2 0 0 6 0 0 0 0 4 0 2 0 0 2 0
Llave K 1
S 11 S 12 S 13 S 14
Llave K 2
S 21 S 22 S 23 S 24
Llave K 3
S 31 S 32 S 33 S 34
Llave K 4
no hay diferencia en la salida; y en la caja S12 , con probabilidad 1/2 la diferencia de salida
es 0010. Es decir, al iniciar la segunda ronda, con probabilidad 1/2 la única diferencia entre
los dos mensajes está en el segundo bit de entrada de S23 ; es decir, la diferencia en la entrada
de esa caja es 0100. Buscando en el renglón de ∆X = 4, vemos que con probabilidad 6/16
la diferencia de salida es ∆Y = 0110. Es decir, con probabilidad (1/2) ∗ (6/16) = 3/16,
dado que la diferencia en la entrada era ∆P , al empezar la tercer ronda la diferencia es
[0000 0010 0010 0000] (después de la permutación).
Ahora tenemos la misma diferencia en la entrada de dos cajas, S32 y S33 ; en ambos
casos, ∆X = 2. Buscando en el renglón de 2, vemos que la mayor probabilidad se alcanza
con ∆Y = 5, con probabilidad 6/16 en cada caja. Entonces, con probabilidad
3 6 6 27
=
16 16 16 1024
Por cada pareja de textos cuya diferencia es ∆P , obtenemos de esta manera varios
posibles valores para los bits involucrados de la llave K5 . Cada vez que un valor especı́fico
de esos bits hace que el resultado corresponda a la diferencia esperada ∆C al final de la
tercer ronda, aumentamos un contador asociado a ese valor. Repetimos para un número
grande de parejas de textos con diferencia ∆P . Al final, el valor asociado a cada posible
subllave es el número de veces en que las diferencias obtenidas son consistentes con pares
buenos (asumiendo que la subllave elegida sea correcta).
Se espera que la subllave correcta tenga una alta probabilidad de dar pares buenos,
mientras que subllaves incorrectas dan resultados uniformemente distribuidos. Una vez que
se tenga suficientes datos, la verdadera subllave sobresale por encima del ruido.
Por ejemplo, si tomamos 5000 parejas de textos con diferencia ∆P (es decir, producimos
10000 cifrados), la subllave correcta se espera sobresalga con probabilidad casi el doble que
cualquier otra (y en algunos casos, mucho más).
Hay un par de consideraciones que se deben hacer: nuestro cálculo de probabilidad
asume que el proceso de cada ronda es independiente uno de otro; en realidad no es inde-
pendiente, pues las rondas están relacionadas unas con otras. Sin embargo, la relación es
suficientemente débil que afecta la probabilidad sólo de manera marginal. Por ejemplo, el
valor de probabilidad calculado arriba es de 27/1024 = 0.0264, y un experimento obtuvo
un valor muy cercano: 0.0244.
En general, esta es la idea del criptoanálisis diferencial: para atacar una red de Feistel
de R rondas, se busca una diferencial de R − 1 rondas y se utiliza para encontrar los valores
de la última llave. En el caso de DES, la última llave proporciona casi todos los bits de la
llave, y el resto se buscan mediante fuerza bruta.
Particularmente útiles son caracterı́sticas de una ronda que se pueden componer consigo
mismas para obtener caracterı́sticas de varias rondas.
Entre más rondas tiene una red de Feistel, más complicado es el análisis. Entre mayor
difusión rápida tenga, también más complicado es el ataque, pues rápidamente se involucran
varias cajas S en las consideraciones de diferencias.
manera que se minimize la probabilidad de los pares de diferencia; es decir, que la Tabla de
Distribución de Diferencias tenga entradas relativamente chicas en su parte principal.
Cuando el criptoanálisis diferencial salió a la luz pública, Coppersmith hizo públicos por
primera vez los criterios que se habı́an utlizado para el diseño de las cajas S de Lucifer y
de DES. Los criterios eran:
1. Ningún bit de salida debe estar muy cerca de una función lineal de los bits de entrada.
3. Si dos entradas a la caja difieren exactamente en un bit, entonces las salidas difieren
en al menos dos bits.
4. Si dos entradas difieren en exactamente los dos bits del centro, las salidas difieren en
al menos dos bits.
5. Si dos entradas difieren en los primeros dos bits y son idénticas en los últimos dos
bits, las salidas no deben ser iguales.
6. Para cualquier diferencia distinta de cero entre las entradas, no más de ocho de los
treinta y dos pares con esa diferencia pueden tener la misma diferencia de salida.
Como se podrá ver, varios de los criterios (por ejemplo, los incisos 3, 4, 5, y 6) están pen-
sados precisamente para dificultar el criptoanálisis diferencial. Esto ya lo habı́an sospechado
Biham y Shamir, que experimentaron con cambiar el orden de las cajas, o reemplazarlas
por cajas generadas de manera aleatoria, y verificaron que la red de Feistel resultante era
en general mucho más sensible y suceptible al criptoanálisis diferencial que DES.
De pronto, se entendió por qué la NSA cambió las cajas S: las de Lucifer eran sustan-
cialmente más débiles ante el criptoanálisis diferencial. La evidencia indica que la NSA
conocı́a el criptoanálisis diferencial varios años antes de que fuera re-descubierto por Biham
y Shamir, y que se buscó optimizar DES contra él.
La resistencia de DES contra el criptoanálisis diferencial se puede mejorar aumentando
el número de rondas. A medida que aumenta el número de rondas, aumenta el número
de textos que se requieren para el análisis. Para DES de 17 ó 18 rondas, se require más o
menos el mismo número de textos que lo que se requiere para un ataque de fuerza bruta.
Con 19 o más rondas, el criptoanálisis diferencial se vuelve imposible, pues requiere más de
204 Criptoanálisis de DES
264 textos elegidos; pero DES tiene un tamaño de bloque de 64 bits, de manera que sólo
tiene 264 textos posibles. En general, uno puede probar que un algoritmo es resistente al
criptoanálisis diferencial si se puede demostrar que la cantidad de textos elegidos necesarios
para montar el ataque es mayor que el número de textos posibles.
Si bien parece que el diseño de DES tenı́a muy claro y presente el riesgo del criptoanálisis
diferencial, es más o menos evidente que el criptoanálisis lineal de Mitsuru Matsui no estaba
contemplado. En un artı́culo [Mat94], Matsui propuso un nuevo ataque contra DES y otras
redes de Feistel.
A diferencia del criptoanálisis diferencial, que es un ataque de texto elegido, el crip-
toanálisis lineal es un ataque de texto conocido, que se puede adaptar a un ataque de
criptotexto conocido a cambio de un aumento en la complejidad.
La idea básica del criptoanálisis lineal consiste en aproximar partes del criptosistema
mediante expresiones lineales. Si X = [X1 . . . Xn ] es la entrada y Y = [Y1 . . . Yn ] es la salida,
bajo expresiones lineales nos referimos a expresiones de la forma
El criptoanalista busca expresiones como éstas que tengan una alta o baja probabilidad
de ser ciertas para el criptosistema en cuestión. Si nuestro sistema fuera completamente
aleatorio, se esperarı́a que la ecuación fuese válida con una probabilidad de exactamente
1/2. La desviación de la probabilidad real de 1/2 es el sesgo lineal. Es decir, si la expresión
es cierta con probabilidad pL , entonces el sesgo lineal de la expresión es |(1/2) − pL|. Entre
más grande sea el sesgo lineal, mejor para el criptoanálisis lineal.
Otra manera de expresar la ecuación serı́a con los bits de la llave involucrados todos
del lado derecho de la igualdad. Pero si estos bits suman 0, no pasa nada; si suman 1, la
probabilidad de la expresión es simplemente el complemente de la probabilidad de antes
(es decir, 1 − pL ), y en ambos casos el sesgo lineal no cambia. De manera que nuevamente
podemos ignorar el efecto de la llave para calcular el sesgo de una expresión.
Si pL = 1, entonces la expresión es lineal, y es muy fácil atacar el sistema. Si, por el
contrario, tenemos que pL = 0, entonces la expresión es el complemento de una expresión
lineal. Cuando trabajamos módulo dos, el complemente de una expresión lineal se llama una
expresión afı́n. Un sistema que tiene un expresión afı́n nuevamente sufre de una debilidad
catastrófica, exactamente equivalente a la debilidad de una expresión lineal.
7.3 Criptoanálisis Lineal 205
Si pL > 1/2, lo que tenemos es una aproximación lineal; si pL < 1/2, tenemos una apro-
ximación afı́n. En ambos casos, el sesgo lineal produce una suceptibilidad al criptoanálisis
lineal. Puesto que en las redes de Feistel la no linealidad depende exclusivamente de las
cajas S, nos concentramos en las cajas S para buscar aproximaciones.
Hay muchas maneras de montar el ataque; nos vamos a concentrar en una de ellas, que
Matsui llama el Algoritmo 2.
¿Cómo usamos una expresión lineal, suponiendo que ya la tenemos, para el criptoanálisis
lineal?
Consideremos el caso de nuestra RFS. Supongamos que hemos encontrado una expresión
con sesgo lineal ε para las primeras tres rondas. Lo que hacemos es tomar varios textos
P1 , . . . , Pr y sus criptotextos correspondientes, C1 , . . . , Cr .
La idea es nuevamente muy parecida a lo que hicimos con el criptoanálisis diferencial.
Tomamos los criptotextos Ci , y hacemos un desciframiento parcial por la última ronda,
buscando aquellos valores de la llave K5 que nos corresponden a resultados en los cuales la
expresión es válida (si se trata de una aproximación lineal) o inválida (si se trata de una
proximación afı́n). Llevamos la cuenta de cuáles llaves nos dan el resultado buscado. Lo
que esperamos es que la llave correcta (o más exactamente, los bits involucrados en la llave
correcta) sobresalgan, pues aparecerán como correctos en una mayorı́a de los casos, mientras
que otras posibilidades apareceran de manera uniforme y aleatoria. Es decir, esperamos que
la llave correcta aparezca con probabilidad significativamente distinta de 1/2 (cerca de 0 si
se trata de una aproximación afı́n; cerca de 1 en el caso de una aproximación lineal). Una
llave incorrecta, por otro lado, funciona de manera relativamente aleatoria, y esperamos
que la probabilidad sea muy cercana a 1/2. Dados suficientes textos Pi y sus criptotextos
Ci , la verdadera llave se distingue de las falsas por su frecuencia.
Para montar el ataque con criptotexto conocido, necesitamos expresiones que que in-
volucren sólo una Xi ; normalmente corresponden a valores mucho más pequeños de sesgo
lineal, y por tanto aumenta la N considerablemente.
Igual que con el criptoanálisis diferencial, normalmente estudiamos las propiedades li-
neales de las cajas S por separado, y luego tomamos composiciones de nuestros resultados
a lo largo de las ronda.
Para estudiar la caja S de la RFS, contruimos una Tabla de Aproximación Lineal, que
aparece en la Tabla 7.4. Esta tabla contiene la información sobre los sesgos lineales de las
distintas aproximaciones a la caja S.
Por ejemplo, para la caja S de nuestra RSF, consideremos la expresión lineal
X2 ⊕ X3 ⊕ Y1 ⊕ Y3 ⊕ Y4 = 0
o equivalentemente
X2 ⊕ X3 = Y1 ⊕ Y3 ⊕ Y4 .
Calculamos los 16 posibles valores de X = [X1 X2 X3 X4 ] y examinamos los valores de salida
para ver si la expresión es cierta. Como se ve en la Tabla 7.3, la relación es cierta para 12
de 16 casos, y por ello el sesgo lineal es 12/16 − 1/2 = 1/4. De manera similar, la ecuación
X1 ⊕ X4 = Y2
X3 ⊕ X4 = Y1 ⊕ Y4
tiene sesgo lineal 2/16 − 1/2 = −3/8. En el último caso, la mejor aproximación es una
aproximación afı́n, como lo indica el signo.
Para construı́r la Tabla de Aproximación Lineal, consideramos una expresión de la forma:
a1 X1 ⊕ a2 X2 ⊕ a3 X3 ⊕ a4 X4 ⊕ b1 Y1 ⊕ b2 Y2 ⊕ b3 Y3 ⊕ b4 Y4 = 0
con ai , bj ∈ {0, 1}. Estos coeficientes corresponden a parejas de números entre 0 y 15,
escritos en binario, (a1 a2 a3 a4 , b1 b2 b3 b4 ). Por ejemplo, la expresión
X1 ⊕ X4 ⊕ Y2 ⊕ Y3 ⊕ Y4 = 0
7.3 Criptoanálisis Lineal 207
X1 X2 X3 X4 Y1 Y2 Y3 Y4 X2 Y1 X1 Y2 X3 Y1
⊕X3 ⊕Y3 ⊕X4 ⊕X4 ⊕Y4
⊕Y4
0 0 0 0 1 1 1 0 0 0 0 1 0 1
0 0 0 1 0 1 0 0 0 0 1 1 1 0
0 0 1 0 1 1 0 1 1 0 0 1 1 0
0 0 1 1 0 0 0 1 1 1 1 0 0 1
0 1 0 0 0 0 1 0 1 1 0 0 0 0
0 1 0 1 1 1 1 1 1 1 1 1 1 0
0 1 1 0 1 0 1 1 0 1 0 0 1 0
0 1 1 1 1 0 0 0 0 1 1 0 0 1
1 0 0 0 0 0 1 1 0 0 1 0 0 1
1 0 0 1 1 0 1 0 0 0 0 0 1 1
1 0 1 0 0 1 1 0 1 1 1 1 1 0
1 0 1 1 1 1 0 0 1 1 0 1 0 1
1 1 0 0 0 1 0 1 1 1 1 1 0 1
1 1 0 1 1 0 0 1 1 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1 0 1 0
1 1 1 1 0 1 1 1 0 0 0 1 0 1
X3 ⊕ Y1 ⊕ Y3 = 0.
X2 ⊕ X3 ⊕ Y1 ⊕ Y3 ⊕ Y4 = 0,
que corresponde al renglón 6 columna B de la tabla, tiene un sesgo lineal de 4/16; es decir,
está más cerca de ser lineal que afı́n, y la probabilidad de que la expresión sea válida para
una entrada aleatoria es 1/2+4/16 = 12/16; esto lo vemos en la Tabla 7.3, pues la expresión
es cierta en doce de los 16 casos posibles.
La Tabla de Aproximación Lineal tiene varias propiedades importantes. Entre ellas,
mencionamos las siguientes:
Suma de la Salida
0 1 2 3 4 5 6 7 8 9 A B C D E F
S 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 1 0 0 -2 -2 0 0 -2 6 2 2 0 0 2 2 0 0
m 2 0 0 -2 -2 0 0 -2 -2 0 0 2 2 0 0 -6 2
a 3 0 0 0 0 0 0 0 0 2 -6 -2 -2 2 2 -2 -2
4 0 2 0 -2 -2 -4 -2 0 0 -2 0 2 2 -4 2 0
d 5 0 -2 -2 0 -2 0 4 2 -2 0 -4 2 0 -2 -2 0
e 6 0 2 -2 4 2 0 0 2 0 -2 2 4 -2 0 0 -2
7 0 -2 0 2 2 -4 2 0 -2 0 2 0 4 2 0 2
E 8 0 0 0 0 0 0 0 0 -2 2 2 -2 2 -2 -2 -6
n 9 0 0 -2 -2 0 0 -2 -2 -4 0 -2 2 0 4 2 -2
t A 0 4 -2 2 -4 0 2 -2 2 2 0 0 2 2 0 0
r B 0 4 0 -4 4 0 4 0 0 0 0 0 0 0 0 0
a C 0 -2 4 -2 -2 0 2 0 2 0 2 4 0 2 0 -2
d D 0 2 2 0 -2 4 0 2 -4 -2 2 0 2 0 0 2
a E 0 2 2 0 -2 -4 0 2 -2 0 0 -2 -4 2 -2 0
F 0 -2 -4 -2 -2 0 2 0 0 -2 4 -2 -2 0 2 0
La última propiedad es importante, y quizás no sea tan claro por qué es cierta: Tomemos
un renglón cualquiera. Si la entrada a la caja S no es E en hexadecimal (en cuyo caso la
salida es 0), entonces la mitad de las expresiones lineales en las Yi toman el valor 0, y la
otra mitad toma el valor 1; si la entrada es E, entonces toda expresión lineal en las salidas
toma el valor 0. Si estamos en un renglón que corresponde a una cierta expresión lineal de
las Xi cuyo valor es 0 en la entrada, los que van a contar en ese renglón (en las distintas
columnas) son los que dan 0, y los que dan 1 no cuentan; en todos los casos excepto E, esto
corresponde a 8 entradas en el renglón; en el caso de E, a 16. Si al evaluar la expresión
lineal en la entrada nos da 1, entonces las que cuentan son las que dan 1, y no las que dan
0. En los casos distintos de E, estamos sumando 8 entradas en el renglón; en el caso de E,
sumamos cero.
Si evaluamos la expresión lineal en 1110 y nos da 0, entonces en el renglón tuvimos 8
“aciertos” por cada entrada distinta de 1110, y 16 por la entrada 1110. En total, tenemos
entonces 8 ∗ 15 + 16 = 136 “aciertos.” Después restamos 8 de cada entrada, lo cual nos deja
exactamente 8 puntos en el renglón. De manera que la suma de las entradas del renglón
debe ser igual a 8.
Si al evaluar la expresión lineal en 1110 nos da 1, entonces en el renglón tuvimos ocho
aciertos por cada entrada distinta de E, y cero con E, para un total de 8 ∗ 15 = 120 aciertos.
Después restamos 8 de cada entrada, y eso nos deja −8 puntos en el renglón, de manera
que la suma de las entradas en el renglón debe ser igual a −8.
Un análisis similar ocurre con las columnas.
Puesto que ningún renglón y ninguna columna suma 0, cada renglón y cada columna
debe tener alguna divergencia de la linealidad; es decir, es imposible construir una caja S que
sea perfectamente resistente al criptoanálisis lineal, y siempre hay sesgo lineal que explotar.
Es decir, siempre podemos encontrar alguna expresión lineal que tenga sesgo lineal distinto
de cero para la caja S que estamos investigando.
Una vez que hemos encontrado aproximaciones lineales (o afines) a las cajas S, es nece-
sario juntarlas para encontrar el sesgo lineal del sistema completo en varias rondas; en
el caso de el criptoanálisis diferencial, puesto que estabamos hablando de probabilidades,
asumimos la independencia y simplemente multiplicamos las probabilidades en cada ronda
para obtener el total.
En el caso del criptoanálisis lineal, el dato que tenemos es el sesgo, y el dato que buscamos
es el sesgo, de manera que no es cierto que simplemente multipliquemos los resultados. El
7.3 Criptoanálisis Lineal 211
Lema de Amontonamiento de Matsui nos proporciona una fórmula sencilla para evaluar el
sesgo del criptosistema total basado en el sesgo de cada ronda.
Nuevamente, para simplificar, suponemos que las expresiones son independientes de
ronda en ronda. Al igual que en el criptoanálisis diferencial, ésta suposición no es del todo
cierta, pero los experimentos parecen indicar que es lo suficientemente cerca de ser cierta
para que no afecte de manera perceptible los resultados.
Supongamos que tenemos dos expresiones E1 y E2 , que puede tomar el valor 0 o el valor
1, con distinta probabilidad:
p1 si i = 0
p(E1 = i) =
1 − p1 si i = 1
p2 si i = 0
p(E2 = i) =
1 − p2 si i = 1
p(E1 ⊕ E2 = 0) = p(E1 = E2 )
= p(E1 = 0, E2 = 0) + p(E1 = 1, E2 = 1)
= p1 p2 + (1 − p1 )(1 − p2 ).
1 1
Si ahora escribimos p1 = 2 + ε1 , p 2 = 2 + ε2 , donde εi es el sesgo lineal, con
1 1
− ≤ εi ≤ ,
2 2
entonces, sustituyendo, tenemos:
Esto nos dice que componer expresiones con alto sesgo lineal tiende a producir expre-
siones con alto sesgo lineal, que es precisamente lo que buscamos.
Una vez que hemos analizado el sesgo lineal de las componentes de nuestra red de Feistel,
procedemos a construı́r aproximaciones lineales de nuestro criptosistema para poder efectuar
un criptoanálisis lineal de éste. La Figura 7.5 presenta lo que hacemos.
7.3 Criptoanálisis Lineal 213
P5 P7 P8
S 11 S 12 S 13 S 14
K 2,6
S 21 S 22 S 23 S 24
K 3,6 K 3,14
S 31 S 32 S 33 S 34
Primero, buscamos en la Tabla de Aproximación Lineal entradas con alto sesgo, que
se combinen bien unas con otras de ronda en ronda. Por ejemplo, una entrada con alto
sesgo lineal en nuestra tabla es la correspondiente a (1, 7); sin embargo, si buscamos los
bits de salida involucrados (los bits 2, 3, y 4 de la caja), vemos que en la siguiente ronda
se involucrarı́an tres cajas S. Buscamos simplificar la expresión, de manera que queremos
minimizar, dentro de lo posible, el número de cajas S involucradas en la expresión.
Escogemos, pues, una expresión que no involucre tantas cajas en la siguiente ronda, a
saber:
X1 ⊕ X3 ⊕ X4 = Y2
con sesgo lineal 4/16 (corresponde a la entrada (B,4) de la Tabla de Aproximación Lineal).
Esto nos dá una expresión lineal que sólo usa un bit de la salida, de manera que sólo afecta
una caja de la siguiente ronda. Ahora hay que decidir a cuál caja se lo aplicamos.
Si se la aplicamos a S11 , eso nos darı́a en la siguiente ronda una entrada con valor 8
para S22 . Pero el renglón de 8 en la tabla es muy plano (excepto la entrada correspondiente
a salida F, pero entonces vamos a involucrar las cuatro cajas en la tercer ronda). Si se la
aplicamos a S12 , en la siguiente ronda vamos a tener una entrada de 4 en S22 ; el renglón de
4 tiene una buena salida con alto sesgo y pocos bits: salida 5, con sesgo −(1/4).
Si se lo aplicamos a S13 , tendrı́amos en la siguiente ronda a S22 con entrada 2, lo cual
nos da a E con buen sesgo; pero E consiste de tres bits prendidos. Si se lo aplicamos a S14 ,
entonces en la siguient ronda vamos a tener a S22 con entrada 1. Podrı́amos tomar salida
de 7 con alto sesgo, pero entonces tenemos tres cajas en la siguiente ronda.
En resumen, lo que minimiza el trabajo para la siguiente ronda es aplicarlo a S12 , con
una salida de valor 0100.
En la segunda ronda, vamos a tener a S22 con entrada 4; el sesgo que conviene es la
expresión
X2 = Y2 ⊕ Y4 ,
que corresponde a la entrada (4, 5) de nuestra Tabla de Aproximación Linal, con sesgo
−(1/4). Esto resulta en que en la tercer ronda, vamos a tener involucradas a las cajas S32
y S34 , ambas con entrada 4. Repetimos la elección de expresión para cada una de ellas,
y al iniciar la cuarta ronda, vamos a tener involucradas las cajas S42 y S44 , cada una con
entrada 0101.
Terminamos, pues, con las siguientes expresiones:
7.3 Criptoanálisis Lineal 215
que aproximan las cajas involucradas. Sea P el texto de entrada, Pj el j-ésimo bit de P ,
contado de izquierda a derecha; análogo con Cj , donde C es la salida del criptosistema.
Sean Ki la llave de la i-ésima ronda, con Kij el j-ésimo bit, también contado de izquierda a
derecha, de Ki . Sea Ui la entrada a las cajas en la ronda i, con Uij el j-ésimo bit (contado
de izquierda a derecha) de Ui ; y sea Vi la salida de las cajas en la i-ésima ronda, Vij el
j-ésimo bit de Vi .
Tenemos que U1 = P ⊕ K1 . También tenemos que
con sesgo −(1/4); como U2,6 = V1,6 ⊕ K2,6 , nuestra aproximación con sesgo −(1/4) es
Ahora combinamos nuestra expresión para las primeras dos rondas, con la expresión
para la tercera, y obtenemos:
Notamos que U4,6 = V3,6 ⊕ K4,6 , U4,8 = V3,14 ⊕ K4,8 , U4,14 = V3,8 ⊕ K4,14 , y U4,16 =
V3,16 ⊕ K4,16 , podemos reescribirlo como:
X
U4,6 ⊕ U4,8 ⊕ U4,14 ⊕ U4,16 ⊕ P5 ⊕ P7 ⊕ P8 ⊕ =0
K
donde
X
= K1,5 ⊕ K1,7 ⊕ K1,8 ⊕ K2,6 ⊕ K3,6 ⊕ K3,14 ⊕ K4,6 ⊕ K4,8 ⊕ K4,14 ⊕ K4,16
K
P
y por ende K tiene un valor fijo, ya sea 0 ó 1 dependiendo de la llave. Aplicando el Lema
de amontonamiento, le expresión de arriba tiene un sesgo de:
3 1 1 1 1
2 − =− .
4 4 8 32
P
Como K tiene un valor fijo, la expresión
En otras palabras, hemos obtenido una aproximación lineal a las primeras tres rondas
del criptosistema RSF, con un sesgo lineal de magnitud 1/32. Ahora queremos usar este
sesgo para determinar algunos de los bits de la llave K5 .
Una vez que hemos obtenido una aproximación lineal para R−1 rondas de nuestra red de
Feistel de R rondas, con sesgo lineal relativamente grande, se puede atacar el criptosistema
recuperando bits de la última llave utilizada. En el caso de RSF, tenemos una aproximación
lineal de tres rondas, y la podemos usar para extraer bits de la llave K5 . Especı́ficamente,
buscamos extraer los bits de la llave asociados con las cajas S que están involucradas en la
última ronda de nuestra aproximación lineal (en este caso, S42 y S44 , lo cual nos da acceso
a los bits 5–8 y 13–16 de K5 .
7.3 Criptoanálisis Lineal 217
Probablemente todos hemos armado algún rompecabezas durante nuestra vida y luego
de armarlo, generalmente, con todo el dolor de nuestro corazón, lo hemos desarmado para
guardarlo en su caja porque estorbaba en la mesa. Desarmarlo es cosa fácil, pero armarlo
no lo es en general. Este es un ejemplo de un proceso que es fácil de llevar a cabo en una
dirección pero difı́cil de invertir. Podrı́amos pensar en la función que mapea cada pieza a su
posición en el rompecabezas y estarı́amos hablando entonces de una función biyectiva, por
tanto invertible, pero cuya inversa es difı́cil de obtener. Esta noción es de gran utilidad en
criptografı́a. A las funciones que son fáciles de calcular en un sentido pero cuyas inversas
son difı́ciles de calcular se les suele llamar funciones de un solo sentido o one-way functions.
Hablando en términos estrictamente matemáticos tales cosas no existen: una función
biyectiva es invertible y ya. Sin embargo, hablando en términos computacionales, donde
220 Criptografı́a de llave pública
generalmente no basta con decir si algo existe o no, sino que además hay que calcularlo, sı́
es posible pensar en tales funciones y, más aún, usarlas. Podrı́amos pensar, por ejemplo,
en escribir un mensaje coherente en las piezas de un rompecabezas armado y luego dárselo
desarmado a alguien. Aunque por supuesto que descifrar el mensaje en tales circunstancias
no será fácil, éste es un ejemplo trivial de que las funciones de un solo sentido pueden ser
útiles en criptografı́a.
Pero pordrı́amos numerar las piezas del rompecabezas y hacemos un patrón de como
deben ir acomodadas. Entonces será trivial armar el rompecabezas en poco tiempo, muy
poco tiempo comparando con el que tomarı́a armarlo sin ayuda del patrón. Ahora estamos
hablando de funciones de un solo sentido en las que, si se da una clave, obtener la inversa
se vuelve (relativamente) fácil. A este tipo particular de funciones de un solo sentido se les
llama funciones con puerta de trampa (trapdoor functions). Una puerta de trampa es fácil
de abrir si se conoce el secreto para abrirla.
Tenemos buenos ejemplos de funciones de un solo sentido. Sabemos, por ejemplo, que
es fácil generar números primos, sabemos también que es fácil multiplicar un par (o más)
de números primos, pero si se nos da un número cualquiera es difı́cil, computacionalmente
hablando, obtener los factores primos que lo determinan1 . Otro caso es el de la exponen-
ciación en un campo finito2 : es fácil elevar un número a una potencia, pero dados un par
de números a y b no es fácil determinar a qué exponente x hay que elevar a para obtener b
(i.e. determinar x tal que ax = b). Cabe hacer énfasis en que esta última función es de un
solo sentido en campos finitos. Todos sabemos que en R es fácil en ambos sentidos, pues
el inverso de la exponenciación es el logaritmo. Pero cuando se trabaja en un campo finito
el problema se complica. En ese caso se habla del logaritmo discreto, y trataremos sobre él
más adelante.
8.2 Factorización
¿Cuáles son los factores primos de 1386? Buscamos números primos que dividen sin
residuo a 1386, ası́ que el algoritmo más ingenuo que podemos plantear es el mostrado en
la Figura 8.1, que consiste en probar con cada número primo a ver si divide al número
en cuestión, comenzando por 2. Tratamos entonces de dividir entre cada primo hasta que
ya no sea posible dividir entre él y entonces nos pasamos al siguiente. Nos detenemos
1
El teorema fundamental de la aritmética establece que cualquier número natural puede escribirse de
manera única (salvo el orden) como el producto de números primos.
2
Recuérdese nuestros conocidos Zp con p un número primo, que de hecho son casos especiales de campos
finitos. En general para todo primo p y todo entero positivo n existe un campo finito de tamaño pn y es
único salvo isomorfismo. p es llamada la caracterı́stica del campo.
8.2 Factorización 221
Factorización(N )
1 p←2
2 c←N
3 while ¬ (esPrimo(c)) do
4 while ¬ (p|c) do
5 p ← siguientePrimo(p)
6 endwhile
7 p → factores
8 c ← c/p
9 endwhile
10 c → factores
11 end
Figura 8.1: Algoritmo simple para factorizar. La función esPrimo(x) regresa verdadero si
su argumento es primo, siguientePrimo(x) regresa el primer número primo mayor que su
argumento, factores es una lista donde se van guardando los factores primos del número N ,
p|c significa p divide a c, y el sı́mbolo ¬ denota la negación lógica.
Si n no es primo puede ser que satisfaga 8.2.1 pero es raro4 . Si aplicamos repetidamente
la prueba a un cierto número n con diferentes valores de b entonces incrementamos nuestra
certeza de que n es primo.
Existen diversas pruebas de primalidad, como la de Solovay-Strassen, Lehmann, Rabin-
Miller o Cohen-Lenstra. Referimos al lector a [Sch96, Kob94, MvOV96] para más detalles.
Evidentemente existen algoritmos mejores para factorizar enteros, pero no mucho me-
jores. Los algoritmos con complejidad probada son exponenciales y de los que parecen
tener complejidad menor, ésta aún no se ha demostrado. Hablaremos más delante de
algunos de estos algoritmos, pero en sı́ntesis, de todas maneras se tardan mucho para
enteros “grandes”, donde “grande” significa de cientos de dı́gitos. Hay circunstancias para
las que existen algoritmos muy buenos para factorizar si el número de entrada tiene factores
primos pequeños, por ejemplo, cosa que no ocurre con los que se utilizan en criptografı́a.
En 1977 se publicó en la columna de Martin Gardner en Scientific American un número
de 129 dı́gitos (uno de los conocidos retos de RSA) y en 1994 un equipo de voluntarios coor-
dinado por Michael Graff y Paul Leyland intercambiando información por correo electrónico
logró factorizarlo utilizando el algoritmo de la criba cuadrática con polinomios múltiples
(MPQS) de A.K. Lenstra y Manasse tardándose ocho meses. En el proyecto participaron un
total de 1600 máquinas trabajando autónomamente. Ésto da una buena idea de lo tardado
que puede ser factorizar un número grande.
4
A los números que satisfacen 8.2.1 sin ser primos se les denomina números de Carmichael, en 1994 se
probó que hay una infinidad de ellos.
8.3 El logaritmo discreto 223
En un campo finito es fácil elevar un número a una potencia, por ejemplo 28 = 256 en
Z11 serı́a:
28 = 3 (mod 11),
ya no es tan fácil responder. Tendrı́amos que probar varias potencias para encontrar la
respuesta correcta. El problema es tanto más difı́cil cuanto más grande sea el tamaño del
campo finito5 .
En R el problema además de ser fácil tiene solución siempre que el argumento y la base
del logaritmo sean positivos. Pero en un campo finito puede ser que el problema ni siquiera
tenga solución. Por ejemplo: no existe x tal que 3x = 7 en Z13 .
Igual que en el caso del problema de factorización (en el cuál hay ciertos números para
los cuales el problema es sencillo), existen algoritmos más o menos rápidos para calcular el
logaritmo discreto en Zp si p − 1 sólo tiene factores primos pequeños, ası́ que en criptografı́a
se usan campos en los que p − 1 tenga al menos un factor primo grande.
Sabemos que hay procesos que es fácil hacer en un sentido pero que es difı́cil invertir y
estos procesos son funciones que operan sobre números. Pero si lo que deseamos es cifrar
mensajes hechos de letras y números ¿cómo hacemos para transformar un mensaje en un
número y ası́ poder usar esas funciones de un solo sentido para cifrarlo?
Dado que en particular en una computadora el mensaje debe ser almacenado carácter por
carácter mediante el código binario usado por la computadora para representar información,
sea ASCII o algún otro, es posible pensar en utilizar esta representación como el número que
5
De hecho el problema del logaritmo discreto no requiere que la estructura del conjunto sea un campo,
basta con que sea un grupo. En criptografı́a es donde se le refiere a un campo. Por supuesto en un grupo
G, cuya operación se denota por ∗ y se escribe multiplicativamente, la potencia n-ésima de a ∈ C, an , se
define como a ∗ . . . ∗ a, n factores.
224 Criptografı́a de llave pública
representa al mensaje. Ası́ por ejemplo el mensaje “HOLA” podrı́a verse como el número
484F4C41 en hexadecimal ya que el código ASCII de la “H” es 48, el de la “O” es 4F, etc.
Otra posibilidad es la utilizada en [Kob94]: ver a cada carácter de un mensaje como un
dı́gito en base 26 (si sólo utilizamos letras y sólo utilizamos el alfabeto de 26 letras) y ver
entonces un mensaje como un número escrito en esa base. Ası́ que la “A” es nuestro cero,
luego “B” vale 1, “C” vale 2 y ası́ sucesivamente hasta llegar a “Z” que vale 25. En este
esquema el mensaje “HOLA” serı́a el número:
dado que “H” = 7, “O” = 14, “L” = 11, y “A” = 0. Nótese que el valor de nuestros
caracteres en este esquema es la diferencia entre el valor que poseı́an en el esquema anterior
y el valor de la “A” también en el esquema anterior.
Dado un mensaje largo, digamos de varias cuartillas, si usamos cualquiera de los esque-
mas mencionados obtendremos un número gigantesco. ¿Cómo hacemos para manipularlo?
Para responder esta pregunta hay que hacer varias consideraciones. Por lo mencionado en
las secciones anteriores y lo que veremos más adelante las funciones de un solo sentido que
se suelen usar en criptografı́a involucran números grandes, de cientos de dı́gitos, ası́ que nue-
stros mensajes pueden ser también muy grandes. Aun ası́ en varias cuartillas hay muchos
cientos de caracteres, podrı́amos rebasar fácilmente cualquier lı́mite que se nos imponga.
Lo que se hace en este caso es fragmentar el mensaje en varios números del tamaño que se
esté utilizando.
Una vez superado el problema de la representación queda aun el de la manipulación de
estos grandes números y para resolverlo se echa mano de las computadoras y de bibliotecas
de software especializado en la manipulación de grandes números.
• Los amigos, aquella persona o personas con las que queremos comunicarnos sin que
nadie se entere de lo que decimos.
1. Cada persona en el sistema posee los medios necesarios para cifrar y descifrar mensajes.
Cifrar los destinados a cualquier otra persona y descifrar los que vayan dirigidos a ella.
2. Los medios para descifrar los mensajes de una persona no son obtenibles en un tiempo
razonable por cualquier otra persona.
Al parecer la Agencia de Seguridad Nacional (NSA por sus siglas en inglés) estadunidense
ya tenia conocimiento de sistemas criptográficos de llave pública desde 1966, diez años antes
de la publicación del artı́culo de Diffie y Hellman [Sch96]. También el servicio criptográfico
británico descubrió por su cuenta la criptografı́a de llave pública antes de su descubrimiento
oficial, lo que se mantuvo en secreto hasta hace poco [Sin99].
Adicionalmente los sistemas criptográficos de llave pública pueden utilizarse para cer-
tificar que un mensaje dado haya sido enviado por un usuario particular del sistema.
Supóngase que alguien, A, desea enviar un mensaje de tal forma que, una vez recibido,
al destinatario no le quepa duda de que fue A quien lo envió, y además que si alguien
intercepta el mensaje pueda obtener información suficiente como para hacerse pasar por A
y enviar mensajes a su nombre en el futuro. En un esquema de llave pública bastarı́a que
A añadiera al mensaje información que sólo puede ser obtenida usando su llave privada y
que, procesándola usando la llave pública de A, haga evidente que solo A pudo enviar el
mensaje. A un esquema de certificación de este tipo se le denomina firma digital. Más
adelante veremos como pueden usarse algunos esquemas criptográficos de llave pública para
implementar firmas digitales.
Imaginemos que queremos usar un sistema criptográfico simétrico. Hay una sola palabra
clave que es utilizada para cifrar y descifrar, y ésta no debe conocerla el enemigo. Ası́ que
ambas partes deben acordar una clave sin que nadie más se entere de ella. El canal de
comunicación es inseguro, es escuchado por todo mundo, ası́ que las partes tienen una de
dos opciones:
2. Ponerse de acuerdo usando el canal: de tal manera que nadie pueda obtener la clave (o
al menos obtenerla en un tiempo razonable) a partir de la información que es enviada
a través del canal por ambas partes.
3. Bartolo elige un entero aleatorio grande β, con 0 < β < p − 1, y le envı́a a Alicia
Y = gβ (mod p).
6
Generalmente en los libros y artı́culos de criptografı́a se usan Alice y Bob.
228 Criptografı́a de llave pública
Tabla 8.2: Los elementos de Z11 expresados como potencias de 2. Los elementos de la
primera columna son los de la última módulo 11.
Tenemos que K = K 0 = g αβ (mod p). Nadie que haya estado escuchando la conver-
sación entre Alicia y Bartolo puede calcular K. Sólo conocerı́a p, g, X, y Y , y para calcular
K tendrı́a que poder hacer alguna de las siguientes cosas:
con p primo, entonces todos los elementos distintos de cero tienen inverso multiplicativo,
porque cualquier número a ∈ Z∗p distinto de cero está en el conjunto {1, . . . , p − 1} y es
primo relativo a p.
También sabemos como calcular el inverso. En el mismo capı́tulo de sistemas poligráficos
vimos que el algoritmo de Euclides extendido nos proporciona un método fácil para encon-
trar el inverso.
Otros dos resultados que nos serán útiles son los siguientes.
ap−1 ≡ 1 (mod p)
Este teorema es una consecuencia del conocido Teorema Chino del Residuo.
sólo nosotros tenemos la llave, ni siquiera el destinatario de los documentos tiene copia de
la llave. Ası́ lo enviamos al destinatario, que, por supuesto, no puede abrirlo; en vez de
eso añade al portafolios su propio candado super-seguro del que sólo él tiene llave y nos lo
manda de regreso. Ahora nosotros procedemos a quitar nuestro candado usando nuestra
muy exclusiva llave y, claro está, dejamos en el portafolio el candado del destinatario que no
podemos abrir. El portafolios viaja de regreso al destinatario que con sólo quitar su propio
candado tiene acceso a los documentos confidenciales de su interior.
Formalmente hablando el algoritmo de Massey-Omura es el siguiente:
2. Alicia selecciona aleatoriamente un entero eA entre 1 y p−1 tal que mcd(eA , p−1) = 1
y usando el algoritmo de Euclides calcula su inverso dA , es decir, dA es un entero tal
que:
eA dA ≡ 1 (mod p − 1) (8.8.2)
y 0 < dA < p.
3. Bartolo selecciona aleatoriamente un entero eB entre 0 y p−1 tal que mcd(eB , p−1) = 1
y usando el algoritmo de Euclides calcula su inverso dB , de manera que:
y lo envı́a a Bartolo.
7. Bartolo calcula:
dB
M 00 = M 0 (mod p), (8.8.7)
que resulta ser el mensaje original M .
8.9 Criptosistema de ElGamal 231
Veamos por qué funciona. De las expresiones (8.8.6) y (8.8.7), tenemos que:
En 1984 Taher ElGamal8 propuso un esquema que permite tanto el cifrado de mensajes
como la implementación de firmas digitales. El procedimiento común a ambos usos es el
siguiente:
2. Calcular
y u = g xu (mod p). (8.9.8)
2. Calcula
a ≡ gk (mod p), (8.9.9)
y
k
b ≡ yB M (mod p) (8.9.10)
b
M= (mod p),
axB
que sólo lo puede efectuar quien posea la clave secreta xB . Ası́ que este esquema de cifrado
se basa en la hipótesis de que el logaritmo discreto es difı́cil de calcular.
8.9 Criptosistema de ElGamal 233
Sea M el mensaje que se desea firmar y supongamos que Alicia desea firmarlo para
enviarlo a Bartolo, de tal manera que Bartolo quede convencido que el mensaje viene de
Alicia y no de otra persona. Para hacer esto utilizando el criptosistema de ElGamal, Alicia
hace lo siguiente:
b
yA a ≡ (g xA )a g k
a b
(mod p)
≡ g axA g kb (mod p)
axA +kb
≡ g (mod p)
M
≡ g (mod p)
por la elección de b.
¿Quien posee la información necesaria para calcular a y b de tal manera que g M ≡ yA
a ab
(mod p)? El valor de b depende del valor de xA , que suponemos es conocido sólo por Alicia.
De manera que al recibir (M, a, b), estamos tan seguros de que el mensaje fue envı́ado por
Alicia como estamos de la seguridad del criptosistema mismo.
234 Criptografı́a de llave pública
En 1977 tres cientı́ficos de la computación adscritos a M.I.T., Ron Rivest, Adi Shamir,
y Leonard Adleman, desarrollaron un algoritmo de cifrado y firma digital conocido como
RSA, las iniciales de sus apellidos.
El algoritmo se basa en una generalización del Pequeño Teorema de Fermat:
Teorema 8.3 (Teorema de Euler) Sea n un entero positivo, y sea a un entero primo
relativo con n. Entonces
aϕ(n) ≡ 1 (mod n),
donde ϕ(n) es la función ϕ de Euler, cuyo valor en n es el número de enteros positivos
menores que n que son primos relativos con n.
2. Se calcula n = pq.
3. Después, elegimos una llave de cifrado e, que es un entero positivo que es primo
relativo con con (p − 1)(q − 1). Notemos que e debe ser impar, pues tanto p − 1 como
q − 1 son pares.
4. Una vez electo e, calculamos la llave de descifrado privada, que es un entero positivo
d electo de tal forma que
5. La llave pública es la pareja (n, e). La llave privada, que se mantiene secreta, es d.
Los valores de los primos p y q no deben revelarse, pero no es necesario recordarlos9 .
Para cifrar un mensaje M (que asumimos es un entero positivo que satisface M < n10
y tal que mcd(M, n) = 1), cuyo destinatario tiene llave pública (n, e), calculamos el valor
del mensaje cifrado C mediante la fórmula:
9
Aunque, como veremos, el algoritmo de RSA no requiere los valores de p y q, sino únicamente los valores
de n, d, y e, es relativamente común guardar los valores de p y q, manteniendolos secretos, para agilizar la
implementación del algoritmo.
10
Cuando el mensaje M es mayor que n, se tiene partir el mensaje en bloques, cada bloque con valor
menor que n, y enviarlos por separado.
236 Criptografı́a de llave pública
Puesto que M 0 y M son menores que n, tenemos que M 0 = M , que es lo que deseabamos.
Se solı́a recomendar que los primos p y q fueran primos fuertes, lo que se refiere a primos
p con la propiedad de que tanto p − 1 como p + 1 tengan factores primos grandes. Esto
debido a ciertos algoritmos de factorización tenı́an altas probabilidades de éxito si p − 1
ó p + 1 tenı́an sólo factores primos pequeños. Sin embargo, métodos de factorización más
recientes tienen la misma probabilidad de éxito con primos fuertes que con “primos débiles”,
de manera que la relevancia de los primos fuertes ya no es tan importante como antes. Sin
embargo, se sigue recomendando utilizar primos fuertes de ser posible.
RSA puede usarse también para firmas digitales. Si Alicia desea enviar un mensaje
firmado a Bartolo, entonces luego de enviar el mensaje M (cifrado o no) a Bartolo, envı́a
Mf = M d . Una vez recibido tanto M como Mf , Bartolo calcula Mfe mod n. Notemos
que tanto e como n son conocidos. Puesto que M ed ≡ M (mod n), Bartolo puede ahora
comparar el valor de M con el valor de Mfe ; la firma es correcta si estos dos valores son
iguales.
Puesto que calcular Mf requiere conocer el valor de d, que suponemos es conocido sólo
por Alicia, la firma garantiza que el mensaje fue envı́ado por Alicia.
Recordemos que la llave pública de RSA es la pareja (n, e), donde n es el producto de
dos primos p y q. La llave privada es el entero d que es el inverso multiplicativo de e módulo
ϕ(n) = (p − 1)(q − 1).
Dado que n y e son conocidos, resulta que conocer el valor de d es equivalente a conocer
la factorización de n. Es decir, tenemos el siguiente resultado:
8.10 Criptosistema RSA 237
Teorema 8.5 Sea (n, e) una llave pública de RSA. Dada la llave privada d, uno puede
factorizar el módulo n = pq de manera eficiente. Conversamente, dada la factorización
n = pq, uno puede obtener el valor de d de manera eficiente.
x ≡ 1 (mod p),
x ≡ −1 (mod q).
Este teorema nos dice que la seguridad de RSA es equivalente a la dificultad del problema
de factorización del módulo11 .
Nótese que hablamos de factorizar el módulo de RSA, no de factorizar en general. El
problema de factorizar un módulo de RSA es un caso particular de el problema general
11
Como veremos en el capı́tulo siguiente, nos referimos a la seguridad contra una ruptura total. No se
sabe si es posible obtener el valor de M sin obtener el valor de d o una factorización de n.
238 Criptografı́a de llave pública
de factorización, y en general es más fácil factorizar cuando sabemos que el número tiene
sólo dos factores primos de tamaños comparables, que cuando no conocemos nada sobre el
número.
Vale la pena notar también que hay una simetrı́a entre e y d; si bien nosotros elegimos
el valor de e y de ahı́ calculamos el valor de d, también es posible elegir una llave privada
d y utilizarla para calcular la llave pública e. Esto se suele hacer cuando queremos algún
valor especı́fico que permita que el descifrado se haga de manera rápida. Por el contrario,
si nos interesa que el cifrado se haga de manera rápida, elegimos e.
Los criptosistemas de llave pública tienen varias ventajas por encima de los criptosis-
temas simétricos como DES: resuelven totalmente el problema de distribución de llaves, y
como beneficio adicional proporcionan (en su mayorı́a) un método de verificación de iden-
tidad y de firma electrónica que los sistemas simétricos no proporcionan.
Podemos entonces preguntarnos por qué siguen utlizandose criptosistemas simétricos
como DES o AES. La respuesta es simplemente que los criptosistemas de llave pública son
extremadamente lentos comparados con los sistemas simétricos. Esto provoca que el costo de
enviar mensajes largos utilizando criptosistemas de llave pública sea muy superior al costo
de enviarlos con criptosistemas simétrcos. Esta diferencia es suficientemente importante
para justificar la existencia continuada de los criptosistemas simétricos.
En este capı́tulo vamos a iniciar el criptoanálisis de algunos sistemas de llave pública.
Para ello, vamos a analizar dos problemas matemáticos, que son la base de la mayorı́a de
los criptosistemas de llave pública que tenemos: el problema del logaritmo discreto, y el
problema de factorización. En el siguiente capı́tulo, estudiaremos algunos ataques contra
RSA que no se basan directamente en la factorización del módulo.
Vamos a comenzar repasando algunos conceptos, e indicando la complejidad de algunos
algoritmos básicos que se utilizan en Teorı́a de Números.
1. Ruptura del sistema. Decimos que el criptoanalista ha roto el sistema si, cono-
ciendo el algoritmo E, y dados E(M, eA ) y eA especı́ficos, le es posible recuperar
M.
2. Ruptura total del sistema. Decimos que el criptoanalista ha obtenido una ruptura
total del sistema si, conociendo el algoritmo de cifrado E y la llave pública eA , puede
recuperar la llave privada dA (mediante cualquier tipo de ataque; por ejemplo, texto
claro elegido, criptotexto conocido, texto claro conocido, etc.).
Notemos que una ruptura total del sistema implica una ruptura, pero el converso no es
necesariamente cierto.
En 1988, Whitfield Diffie notó que la mayorı́a de los algoritmos de llave pública están
basados en uno de los siguientes tres problemas:
9.3.1 La notación O
términos generales, suelen ser funciones de la longitud de x, es decir, de log(x). Esto suele
provocar confusiones; por ejemplo, el algoritmo de Euclides es de orden polinomial, puesto
que es polinomial en el logaritmo de su argumento. En cambio, factorizar n por división es
√
un algoritmo exponencial, pues es O( n) = O(exp( 12 log n)).
En general, pensamos que algoritmos que son polinomiales en log(n) son “rápidos” y
“eficientes”, mientras que algoritmos que son exponenciales en log(n) son “difı́ciles.”
Para poder estimar el tiempo que tardan diversos algoritmos complejos, es necesario
saber cuánto tiempo tardan ciertas operaciones sencillas. En esta sección, listamos, sin
demostración, la complejidad computacional de varias de estas operaciones. Las demostra-
ciones se pueden encontrar en varios libros, por ejemplo en [Kob94].
3. Dividir con residuo el entero a entre el entero b también tarda O(log(a) log(b)).
6. La suma y resta modular, a ± b (mod n), dados a (mod n) y b (mod n), tiene
complejidad O(log(n)).
El método más usado para calcular exponenciación modular es muy importante y vale
la pena mencionarlo; se le llama el método de eleva al cuadrado y multiplica (“square and
multiply” en inglés).
Si queremos calcular, por ejemplo, 310 (mod 13) de manera inocente, podemos calcular
(((((((((3 × 3) × 3) × 3) × 3) × 3) × 3) × 3) × 3) × 3)
y ya sea ir reduciendo módulo 13, o reducir al final. Esto requiere nueve multiplicaciones.
O bien, podemos notar que 10 = 8 + 2 = 23 + 21 , y por lo tanto,
b = a0 + a1 2 + a2 22 + · · · + am 2m , ai ∈ {0, 1}, am = 1,
F∗ ∼
= Zn1 ⊕ · · · ⊕ Znr ,
f (x) = xnr +1 − x
asociado al grupo que se está usando, eso nos proporciona una ruptura (en algunos casos
total) del sistema. Sin embargo, el problema que forma la base de esos algoritmos es el
siguiente:
Problema de Diffie-Hellman: Dado un grupo cı́clico G, un generador α, y dados los
elementos αa , αb , con 1 < a, b < n, encontrar αab .
Claramente, si podemos resolver el problema del Logaritmo Discreto para G, entonces
podemos resolver el Problema de Diffie-Hellman para G; simplemente calculamos el loga-
ritmo discreto de αa para obtener el valor de a, y luego calculamos (αb )a para obtener αab .
Esto es: el problema de Diffie-Hellman no es más dificil que el Problema del Logaritmo
Discreto.
Sin embargo, nadie sabe si el Problema de Diffie-Hellman es equivalente al Problema
del Logaritmo Discreto; hasta ahora, a nadie se le ha ocurrido ninguna manera de resolver
el Problema de Diffie-Hellman que no utilice de alguna manera un logaritmo discreto, pero
tampoco nadie a probado que si pudieramos resolver el Problema de Diffie-Hellman entonces
podrı́amos resolver el Problema del Logaritmo Discreto. Esta proposición es equivalente a
la Hipótesis de Diffie-Hellman:
Hipótesis de Diffie-Hellman: El Problema de Diffie-Hellman para un grupo G es igual
de dificil que el Problema del Logaritmo Discreto para G.
Hasta ahora, todos los ataques contra los criptosistemas que se basan en la dificultad
de resolver el Problema de Diffie-Hellman consisten en calcular el Logaritmo Discreto. De
manera que en ésta sección nos concentraremos en los algoritmos que tenemos para calcular
logaritmos discretos.
Hay principalmente tres categorı́as de algoritmos para este problema:
1. Algoritmos que funcionan para grupos arbitrarios, y cuya velocidad no depende del
grupo.
2. Algoritmos que funcionan para grupos arbitrarios, pero que son muy buenos para
grupos que satisfacen ciertas propiedades matemáticas.
3. Cálculo de Índices, un algoritmo muy bueno que sólo funciona para cierto tipo de
grupos.
Vamos a cubrirlos en orden. En todos los casos, suponemos que tenemos dado el grupo
cı́clico G, el orden del grupo n, un generador α de G, y un elemento β de G. Buscamos
calcular logα (β). A menos que digamos explı́citamente lo contrario, escribimos el grupo
multiplicativamente, y el elemento neutro se denota por 1.
246 Criptoanálisis de Sistemas de Llave Pública
Búsqueda exhaustiva
El algoritmo paso grande, paso chico (“Baby step, giant step” en ingés) es un cambio
de tiempo por memoria. Hay un precálculo extensivo, guardamos una tabla en memoria,
y luego la usamos para reducir el tiempo de búsqueda. En el caso de un solo cáculo de
logaritmo discreto, no hay ganancia comparado con el método de búsqueda exhaustiva,
pero para varios cálculos, parte del problema sólo se tiene que hacer una vez.
√
La observación crucial del método es la siguiente: sea m = d n e. Si β = αx , entonces
existen i, j, 0 ≤ i, j < m tales que x = im + j; y tenemos que αx = αim αj .
El algoritmo de paso grande, paso chico, comienza construyendo una tabla, cuyas en-
tradas son (j, αj ), con 0 ≤ j ≤ m; estos son los “pasos chicos.” Después, reordenamos
la tabla para que estén ordenadas de acuerdo a la segunda componente. Finalmente, cal-
culamos α−m , el “paso grande.” Esto se hace durante la fase de precálculo; sólo hay que
hacerlo una vez, y no depende del elemento β.
Dado β, y ya hecho el precálculo, primero buscamos β en la tabla. Si β es la segunda
entrada de algún (j, αj ), con 0 ≤ j < m, es decir, si β = αj para alguna de estas j, entonces
simplemente logα (β) = j y ya terminamos.
Si β no está en la tabla, entonces calculamos βα−m , y lo buscamos en la tabla. La
tabla está ordenada según la segunda coordenada para facilitar ésta búsqueda; en cuanto
lleguemos a un elemento de la tabla cuya segunda coordenada es mayor que el número
que buscamos, podemos terminar la búsqueda. Continuamos de esta manera, calculando
βα−im , hasta encontrarlo en la tabla; es decir, hasta encontrar una j tal que βα−im = αj .
9.4 El Problema del Logaritmo Discreto 247
j 0 1 2 3 4 5 6 7 8 9 10
3j mod 113 1 3 9 27 81 17 51 40 7 21 63
j 0 1 8 2 5 9 3 7 6 10 4
3j mod 113 1 3 7 9 17 21 27 40 51 63 81
Algoritmo ro de Pollard
para toda i ≥ 0. La sucesión de elementos define a su vez dos sucesiones de enteros módulo n:
a0 , a1 , . . . y b0 , b1 . . ., tales que xi = αai β bi para cada i ≥ 0. Es decir, a0 = b0 = 0, y para
toda i ≥ 0,
ai si xi ∈ S1
ai+1 = 2ai mod n si xi ∈ S2
ai + 1 mod n si xi ∈ S3
bi + 1 mod n si xi ∈ S1
bi+1 = 2bi mod n si xi ∈ S2
bi si xi ∈ S3
y también
logα (xj ) = aj + bj logα (β) (mod n).
Puesto que ai , aj , bi , bj son conocidos, obtenemos
x i+2
xi+1 x i+3
xi
x
j-1
x j-2 x j-3
x1
x0
Figura 9.1: La sucesión d xi del algoritmo ro de Pollard.
La manera inocente de proceder para encontrar los indices i y j serı́a ir calculando los
valores (xi , ai , bi ) para cada i, guardarlos en memoria, e ir comparando hasta encontrar
una repetición. Pero entonces usamos más memoria que en el de paso grande, paso chico,
y se pierde el tiempo comparando. Por ello, se utiliza mejor el Algoritmo de Floyd para
Búsqueda de Ciclos.
Algoritmo de Floyd para Búsqueda de Ciclos. Uno empieza con la pareja (x1 , x2 ), y
calcula de manera iterativa las parejas (xi , x2i ) a partir de la pareja anterior (xi−1 , x2i−2 ),
hasta que xm = x2m para alguna m. Si la cola de la sucesión tiene longitud λ y el ciclo
tiene longitud µ (se puede calcular los valores esperados de λ y µ), entonces la primera vez
que xm = x2m ocurren con
m = µ(1 + bλ/µc).
Algoritmo de Pohlig-Hellman
Definición 9.2 Sea B > 0 un entero positivo. Decimos que un entero n es B-homogéneo
o B-liso (en inglés, “B-smooth”) si y sólo si para todo número primo p, si p|n, entonces
p < B.
9.4 El Problema del Logaritmo Discreto 251
Primero calculamos x1 = x mod 2. Para ella, tomamos α = an/2 mod 251 = 250, y
β = β n/2 mod 251 = 250. Entonces x1 = log250 (250) = 1; por lo tanto, x1 = 1.
Después calculamos x2 = x mod 53 = `0 + `1 5 + `2 52 . Para ello, calculamos α =
αn/5 mod 251 = 20. Después tomamos γ = 1, β = (βγ −1 )n/5 mod p = 149. Como el orden
de α es pequeño, usamos búsqueda exhaustiva para obtener que
`0 = log20 (149) = 2.
252 Criptoanálisis de Sistemas de Llave Pública
Para calcular `1 , tomamos γ = 1α2 mod 251 = 21, y β = (βγ −1 )n/25 mod 251 = 113.
Nuevamente, usando búsqueda exhaustiva, tenemos que
`1 = log20 (113) = 4.
Para calcular `2 , tomamos γ = 21 × α4·5 mod 251 = 115, y β = (βγ −1 )n/125 mod 251 =
149. Usamos búsqueda exhaustiva para encontrar que:
`2 = log20 (149) = 2.
x ≡ 72 (mod 125)
x ≡ 1 (mod 2)
operaciones del grupo. En particular, el algoritmo es eficiente cuando cada divisor primo pi
de n es relativamente chico, es decir, cuando n es un número homogéneo.
Si n es primo, entonces el algoritmo de Pohlig-Hellman degenera al algoritmo de paso
grande, paso chico.
La Cálculo de Índices es le métodos más poderoso que se conoce para calcular logaritmos
discretos. Desgraciadamente, sólo se sabe cómo hacerlo funcionar bien en el caso de F∗q , y es
particularmente bueno dentro de ésta subclase para el caso en que q = 2m , un caso favorito
para programadores.
La idea del Cálculo de Índices es buscar una colección S ⊆ G, llamada una base de
factores, tal que:
9.4 El Problema del Logaritmo Discreto 253
1. S es relativamente chica.
Precálculo
S = {p1 , p2 , . . . , pt } ⊆ G.
3. Tomando logaritmos de ambos lados, obtenemos una relación lineal entre los logαi (pi ):
t
X
k≡ ci logα (pi ) (mod n).
i=1
no tener que encontrar demasiadas ecuaciones, y para que resolver el sistema de ecuaciones
sea más rápido. Entre más elementos tiene S, más ecuaciones necesitamos, y más tiempo
lleva encontrar la solución del sistema.
Queremos que un número grande de elementos de G sean expresables en términos de S
para no tener que tratar muchos valores de k antes de poder expresar αk en términos de S;
y queremos que la expresión se encuentre de manera eficiente para que no nos tardemos
mucho en encontrar los valores ci en el precálculo.
Cálculo
Puesto que los valores de logα (pi ) ya son conocidos, esto nos da el valor de logα (β).
Nuevamente, vemos que queremos que sea relativamente fácil expresar elementos de G
como productos de elementos de S para que no tengamos que tratar con muchas k, y para
que sea fácil determinar si podemos expresarlo, y en ese caso cuál es el valor de las di .
El principal problema para el Cálculo de Índices es entonces escoger S. En el caso en
que G = Z∗p con p un primo, se suele usar:
Ejemplo 9.4 Vamos a usar Cálculo de Índices para calcular logaritmo discreto en Z∗229 ,
con generador α = 6, de orden n = 228. Sea β = 13, y buscamos log16 (13).
Primero escogemos nuestra base de factores; en este caso, tomamos S = {2, 3, 5, 7, 11},
los primeros once primos. (El grupo es suficientemente chico para que no valga la pena
incluı́r a −1 en nuestra base de factores).
Después buscamos relaciones que involucren los elementos de la base de factores. No
vamos a poner los intentos fallidos, pero se encuentran las siguientes relationes:
Con estas ecuaciones obtenemos un sistema de seis ecuaciones en cinco incógnitas, a saber:
donde todas las congruncias son módulo 228, y son ecuaciones en las incógnitas log6 (2),
log6 (3), log6 (5), log6 (7), y log6 (11).
Resolvemos el sistema usando eliminación gaussiana, y obtenemos las siguientes solu-
ciones:
de manera que
log6 (13) = (log6 (3) + 2 log6 (7) − 77) mod 228 = 117.
Cabe mencionar que, utilizando curvas elı́pticas, Marer, Wolf, y Boneh han establecido
la equivalencia del Problema de Diffie-Hellman y el Problema del Logaritmo Discreto en
ciertos casos especiales, a saber:
La factorización de enteros está ı́ntimamente ligada con el criptosistema RSA. Igual que
en el caso de la relación entre el Problema del Logaritmo Discreto y los criptosistemas que
se basan en Diffie-Hellman, resolver el Problema de Factorización nos da una ruptura total
de RSA, pero el problema de criptoanálisis de RSA requiere de un poco menos.
Recordemos cuál es el Problema de Factorización:
Problema de Factorización. Dado un entero n, encontrar su factorización como producto
de primos.
En general, el Problema de Factorización se resuelve de manera iterativa, utilizando el
Problema de Descomposición:
Problema de Descomposición. Dado un entero n que no es primo, encontrar enteros a
y b, tales que 1 < a, b < n y n = ab.
Para resolver el Problema de Factorización a partir del de Descomposición, simplemente
le aplicamos el Problema de Descomposición a a y b, y repetimos hasta llegar a factores
primos. En general, es mucho más fácil saber si un entero es primo o no que factorizar o
descomponer.
Por otro lado, la ruptura de RSA requiere de resolver el siguiente problema:
Problema de RSA. Dados un entero n que es el producto de dos primos distintos, un
entero e que satisface (e, φ(n)) = 1, y el valor M e mod n, recuperar M .
Nuevamente, no se sabe si el Problema de RSA es equivalente al Problema de Facto-
rización (o incluso, al Problema de Descomposición aplicado al producto de dos primos
distintos). Pero a diferencia del caso de los criptosistemas que se basan en el Logaritmo
Discreto, existen métodos criptoanalı́ticos para atacar RSA que no dependen directamente
de factorizar el módulo n. Algunos de estos métodos los vamos a ver en el capı́tulo siguiente.
En esta sección, sin embargo, nos vamos a concentrar en los algoritmos que existen para
factorizar enteros.
258 Criptoanálisis de Sistemas de Llave Pública
Algunos algoritmos para factorizar están especializados para que funcionen muy bien
cuando el entero n tiene alguna forma especial; estos son llamados algoritmos de facto-
rización de propósito especial. Ejemplos de algoritmos de propósito especial son el método
de división, el algoritmo ro de Pollard, el algoritmo p − 1 de Pollard, la factorización por
curvas elı́pticas, y la criba especial de campos numéricos. Los algoritmos que tienen una
complejidad que depende exclusivamente del tamaño de n, por otro lado, son algoritmos de
factorización generales. Ejemplos de algoritmos generales son la criba cuadrática y la criba
general de campos numéricos. En general, cuando un método de factorización de propósito
especial es aplicable, conviene usarlo. Por ello, la estrategia más usual para factorizar un
número arbitrario es intentar aplicar algoritmos que encuentran factores pequeños primero,
y capitalizar la forma especial que el número tendrı́a como consecuencia; y si todo falla,
entonces sacar los algoritmos generales y usarlos.
Un ejemplo de una estrategia general serı́a:
1. Buscar factores primos pequeños mediante división, con primos p < b1 para alguna
cota b1 .
3. Utilizar el algoritmo de factorización con curvas elı́pticas para buscar factores primos
p, b2 ≤ p < b3 para alguna cota b3 .
Para estudiar los algoritmos, vamos a suponer que nos dan un entero impar positivo n
(los factores de 2 los podemos extraer fácilmente), y que sabemos que n no es primo, y que
no es una potencia perfecta (es decir, que n 6= ab para enteros a > 0, y b > 1; esto es fácil
de verificar también).
División
mismo tamaño. Pero el caso general tarda aproximadamente O(p + log(n)) divisiones hasta
encontrar un factor, donde p es el segundo factor primo más grande de n.
En general, si usamos división para un número grande elegido de manera aleatoria,
podemos esperar que el algoritmo encuentre factores pequeños de manera relativamente
rápida, pero que se tarde mucho tiempo en encontrar el segundo factor primo más grande
de n. Expı́citamente:
Teorema 9.2 Sea n un entero elegido de manera aleatoria en el intervalo [1, x].
Este algoritmo tiene varias ideas en común con el algoritmo de nombre similar para en-
contrar logaritmos discretos. En general es bueno para encontrar factores primos pequeños
de enteros que son compuestos.
Sea f : S → S una función arbitraria de un conjunto de tamaño n. Sea x0 ∈ S, y
6 j con
definimos xi+1 = f (xi ). Tarde o temprano la sucesión se repite. Buscamos i =
xi = xj .
El algoritmo ro de Pollard busca repeticiones con x0 = 2, xi+1 = x2i +1 (mod p), donde
p es un factor primo de n. Si logramos encontrar xi ≡ xj (mod p), entonces p|(xi − xj , n).
Pero como no concemos los factores primos de n, lo que hacemos es calcular xi+1 ≡ x2i +1
(mod n), y calculamos (xi − x2i , n) en cada paso.
Si 1 < (xi − x2i , n) < n, entonces hemos encontrado un factor propio de n y terminamos.
Si (xi − x2i , n) = 1, entonces pasamos a xi+1 y x2i+2 y repetimos.
Si (xi − x2i , n) = n, entonces terminamos con fracaso. La probabilidad es baja, pero si
algoritmo termina con fracaso, podemos tratar de nuevo con una nueva función, por ejemplo
f (x) = x2 + c, con c 6= 0, −2.
260 Criptoanálisis de Sistemas de Llave Pública
Ejemplo 9.5 Vamos a usar el algoritmo ro de Pollard para encontrar un factor no trivial
de n = 455459.
Empezamos con x0 = 2; luego tenemos los siguientes valores, donde xi+1 ≡ x2i + 1
(mod 455459), y d = (xi − x2i , 455459):
i xi x2i d
1 5 26 1
2 26 2871 1
3 677 179685 1
4 2871 155260 1
5 44380 416250 1
6 179685 43670 1
7 121634 164403 1
8 155260 247944 1
9 44567 68343 743
Algortimo p − 1 de Pollard
1. p es primo, a > 0;
2. p ≤ B;
3. pa ≤ n.
α = aQ .
q `q
2 24
3 15
5 10
7 8
11 6
13 6
17 5
19 5
La factorización por curvas elı́pticas fue inventada por Hendrik W. Lenstra, Jr., basán-
dose en el algoritmo p − 1 de Pollard. Cómo funciona explı́citamente es algo complicado, y
por ende no se considera dentro de éste capı́tulo. El lector interesado puede encontrar más
información sobre curvas elı́pticas y sobre este algoritmo en el Apéndice B.
Si pensamos en el algoritmo p − 1 de Pollard, podemos ver que el p − 1 es “en realidad”
el orden del grupo Z∗p , donde p es un factor primo de n. El algoritmo falla cuando este
grupo no tiene elementos de orden “adecuado,” a saber B-homogéneo.
La idea de Lenstra fue reemplazar el grupo Z∗p con el grupo de puntos de una curva
elı́ptica sobre el campo Zp . Como hay muchas curvas, y el orden de estos grupos está
√ √
distribuido uniformemente en el intervalo [p + 1 − 2 p, p + 1 + 2 p], hay más opciones con
mayor probabilidad de que el orden del grupo sea B-homogéneo.
Si encontramos una curva tal que el grupo asociado tiene orden sea B-homogéneo,
entonces el algoritmo tiene alta probabilidad de encontrar el factor p; si la curva que elegimos
tiene grupo cuyo orden no es B-homogéneo, el algoritmo falla. En el caso del algorimo p − 1
de Pollard, si el grupo no tiene orden B-homogéneo no hay nada que hacer (fuera de
agrandar B); pero en el caso de la factorización por curvas elı́pticas, simplemente podemos
9.5 El Problema de Factorización 263
operaciones con curvas elı́pticas. El principal problema del algoritmo consisten en codificar
estas operaciones, pues a diferencia de operaciones modulares, no suele haber funciones
ya hechas que las lleven a cabo, y “sumar” dos puntos del grupo de puntos de una curva
elı́ptica tiende a ser más tardado que sumar dos enteros módulo n.
El algoritmo de factorización con curvas elı́pticas tiende a encontrar los factores primos
chicos primero, y es el mejor algoritmo (en la práctica) para buscar factores primos con
aproximadamente 50 dı́gitos decimales.
Cuando n es el producto de dos primos de más o menos el mismo tamaño (es decir,
cuando estamos tratando el caso de factorizar un módulo de RSA), el algoritmo se encuentra
en su peor caso posible, y el tiempo esperado es
p p
O exp log(n) log log(n)
La idea detrás de los tres algoritmos más avanzados para factorización que se conocen (la
Criba Cuadrática, la Criba Especial de Campos Numéricos, y la Criba General de Campos
Numéricos) data de Fermat. En esta sección vamos a explicar cuál es el método de Fermat,
y las mejoras que se hicieron al método antes de la creación de las cribas.
Nuestra presentación está basada en el artı́culo de Carl Pomerance [Pom96].
264 Criptoanálisis de Sistemas de Llave Pública
8051 = 8100 − 49
= 902 − 72
= (90 + 7)(90 − 7)
= 97 × 83,
y después podemos verificar que tanto 97 como 83 son números primos, y hemos terminado.
Es decir, si podemos expresar n como una diferencia de cuadrados, n = a2 − b2 , entonces
n = (a + b)(a − b). Siempre y cuando a − b 6= 1, eso nos dá una descomposición no trivial de
n (asumimos que tanto a como b son enteros positivos, de manera que a + b nunca vale 1).
En general, si n = ab, con 1 < b < a < n, entonces podemos escribir
2 2
1 1
ab = (a + b) − (a − b)
2 2
(recuerde que asumimos que n es impar, de manera que a y b son también impares, y por lo
tanto a+b y a−b son ambos pares). Eso nos da una factorización con factores propios como
diferencia de cuadrados. Es decir: si podemos expresar n como una diferencia de cuadrados,
n = a2 − b2 , con a − b > 1, entonces de esta diferencia podemos encontrar factores propios
de n; conversamente, si tenemos factores propios de n, entonces es posible utilizarlos para
encontrar una expresión de n como diferencia de cuadrados.
El método de Fermat es entonces buscar cuadrados u y v tales que n = u2 − v 2 ; para
√
ello, tomamos u = d ne, y vemos is u2 − n es un cuadrado; si lo es, ya terminamos; si no
lo es, sumamos 1 a u y volvemos a tratar. Continuamos hasta encontrar la diferencia de
cuadrados que nos den una descomposición no trivial de n (recuerde que también estamos
asumiendo que ya sabemos que n no es un primo, ni una potencia perfecta).
Método de Kraitchik
En los años veinte, Maurice Kraitchik propuso una mejora técnica interesante al método
de diferencias de cuadrados de Fermat. Primero, en vez de buscar u y v tales que n = u2 −v 2 ,
buscamos u y v tales que u2 − v 2 = kn, es decir, tales que u2 ≡ v 2 (mod n).
9.5 El Problema de Factorización 265
u2 ≡ v 2 (mod n)
con (uv, n) = 1 son no triviales. Si encontramos una tal que u 6≡ ±v (mod n), entonces
tenemos que 1 < (u − v, n) < n; pues n|(u + v)(u − v), pero n6 |u + v, n6 |u − v. Esto nos
darı́a entonces un factor propio de n.
¿Cómo utilizamos la idea de Kraitchik para factorizar n = 2041?
√
Buscamos el primer cuadrado mayor que n; puesto que d ne = 46, el primero es 462 =
2116. Sea Q(x) = x2 − n. Entonces evaluamos el polinomio Q(x) en 47, 48, . . ., y obtenemos
la sucesión
75, 168, 263, 360, 459, 560, . . .
Fermat seguirı́a probando hasta encontrar un cuadrado, pero aquı́ entra la segunda parte
de la idea de Kraitchik. Buscamos varios valores de x tales que el producto de los valores
correspondientes de Q(x) sean un cuadrado. Pues si tuvieramos que
u2 ≡ (x1 · · · xk )2 (mod n)
≡ x21 · · · x2k (mod n)
≡ (x21 − n)(x22 − n) · · · (x2k − n) (mod n)
≡ Q(x1 ) · · · Q(xk ) (mod n)
2
≡ v (mod n).
Si tenemos suerte, vamos a tener que u 6≡ ±v (mod n) (esperamos que esto sea cierto en
al menos la mitad de los casos), y con ello obtenemos un factor propio de n. En realidad,
hay también que verificar que (uv, n) = 1, pero si (u, n) > 1 ó (v, n) > 1, entonces eso nos
da un factor propio de n y ya terminamos.
La pregunta es cómo encontramos los valores x1 , . . . , xk con esta propiedad. Kratichik
notó que algunos de los valores de Q(x) se factorizan muy facilmente:
Q(46) = 75 = 3 × 52
Q(47) = 168 = 23 × 3 × 7
Q(49) = 360 = 23 × 32 × 5
Q(51) = 560 = 24 × 5 × 7
266 Criptoanálisis de Sistemas de Llave Pública
y tenemos que u2 ≡ v 2 (mod n). Verificamos fácilmente que 311 6≡ 1416 (mod 2041), de
manera que
(1416 − 311, 2041) = 13
Fracciones Continuas
a0 = bxc; x0 = x − a0 ;
a1 = b1/x0 c; x1 = (1/x0 ) − a1 ;
.. ..
. .
ai = b1/xi−1 c; xi = (1/xi−1 ) − ai ;
.. ..
. .
(es fácil ver que el resultado de la derecha es un racional, al que expresamos en mı́nimos
términos como bi /ci ). Para faciliar la tipografı́a, esto se escribe normalmente como:
bi 1 1 1 1
= a0 + ··· .
ci a1 + a2 + a3 + ai + xi
Se puede probar que x es racional si y sólo si la sucesión de fracciones continuas termina;
es decir, si xi = 0 para alguna i ≥ 0. Si x es irracional, las fracciones continuas nos dan
una sucesión de racionales bi /ci , con la propiedad de que limi→∞ bi /ci = x. Además, las
fracciones parciales convergen “rápidamente” a x en el sentido del inciso (ii) de la siguiente
proposición:
b0 a0 b1 a0 a1 +1
(i) c0 = 1 ; c1 = a1 .
√
Si aplicamos el inciso (iii) al caso que nos interesa, x = n, y donde Qi = b2i − nc2i , eso
√
nos dice que |Qi | < 2 n, lo cual dice que los términos de la sucesión Q1 , Q2 , . . . tienden a
ser más pequeños que los de la sucesión de Kraitchik, lo cual facilita su uso.
Notamos que Qi ≡ b2i (mod n), de manera que nuevamente, si encontramos una sub-
sucesión Qi1 , . . . , Qik tal que
Qi1 × · · · × Qik = v 2
con v un entero positivo, entonces u = bi1 · · · bik satisface u2 ≡ v 2 (mod n), y procedemos
como antes.
Este método se conoce como el método de fracciones continuas, y durante muchos años
fue el mejor método para factorizar números grandes.
268 Criptoanálisis de Sistemas de Llave Pública
Por ejemplo,
v(75) = (0, 1, 2, 0, 0, . . .)
v(168) = (3, 1, 0, 1, 0, . . .)
v(360) = (3, 2, 1, 0, 0, . . .)
v(560) = (4, 0, 1, 1, 0, . . .).
entonces
v(a × b) = (ν1 (a) + ν1 (b), ν2 (a) + ν2 (b), . . . , νn (a) + νn (b), . . .).
no negativos, podemos tomar los vectores con entradas módulo 2; es decir, en vez de los
valores de arriba, usamos:
v(75) = (0, 1, 0, 0, 0, . . .)
v(168) = (1, 1, 0, 1, 0, . . .)
v(360) = (1, 0, 1, 0, 0, . . .)
v(560) = (0, 0, 1, 1, 0, . . .).
Ahora notamos que la suma de estos vectores es el vector cero; es decir, el producto de 75,
168, 360, y 560 es un cuadrado, como ya lo habı́amos notado.
La ventaja de trabajar con entradas módulo 2 es que entonces podemos pensar que
estamos en un espacio vectorial sobre el campo de dos elementos, lo cual nos permite
utilizar todas las herramientas de álgebra lineal para atacar el problema.
Pero aún ası́, trabajar con vectores infinitos (aunque sean casi nulos) es problemático.
Brillhart y Morrison sugirieron entonces que en vez de trabajar con la factorización total
de los números, trabajaramos sólo con las primeras π(B) coordenadas (donde π(m) es el
número de primos menores o iguales a m), y que nos concentraramos en aquellos números
que son B-homogéneos, con B relativamente chico. Esto también nos permite factorizar
fácilmente los números, lo cual es necesario para obtener los vectores.
Supongamos entonces que nos concentramos en números B-homogéneos, y que tenemos
π(B) + 1 tales números. Si pensamos en los vectores de estos números, cada vector tiene
π(B) coordenadas. Entonces estamos en un espacio vectorial de dimensión π(B) sobre
F2 ; si tenemos π(B) + 1 vectores, entonces sabemos por álgebra lineal que el conjunto es
linealmente dependiente. Es decir, hay una combinación lineal no trivial que suma cero; pero
los únicos coeficientes en F2 son 0 y 1; es decir, hay un subconjunto de estos vectores cuya
suma es el vector cero. Por lo tanto, hay un subconjunto de estos números B-homogéneos
cuyo producto es necesariamente un cuadrado. Y encontrar la combinación lineal que suma
cero es un fácil ejercicio de álgebra lineal.
Hay un refinamiento más que se puede hacer: Brillhard y Morrison notaron que sólo
aquellos primos p para los cuáles n es un cuadrado módulo p son importantes, de manera
que el resto de los primos puede ser deshechado. Pero entonces hay que agregar una entrada
al vector que tenga en cuenta el “signo” del elemento, pues vamos a trabajar módulo n; es
decir, las entradas de los vectores corresponden a un conjunto S que contiene al −1, y a
todos los primos p, p ≤ B, tales que n es un cuadrado módulo p. Recuerde que el teorema
de reciprocidad cuadrática y el sı́mbolo de Legendre nos permiten calcular de manera muy
sencilla si n es un cuadrado módulo p o no (véase el Apéndice E).
Tanto en el método de Kraitchik como en el de fracciones continuas, los primos p tales
270 Criptoanálisis de Sistemas de Llave Pública
Con la distribución de los valores S-factorizables no hay mucho que hacer. Se con-
jetura (y esta conjetura está relacionada con la Hipótesis de Riemann) que los valores
S-factorizables están distribuı́dos de manera uniforme, pero no sabemos mucho a ciencia
cierta. Donde sı́ podemos tratar de mejorar el tiempo es en el reconocimiento de los números
S-factorizables, y en la velocidad con la que logramos encontrar dicha expresión.
En 1981, Carl Pomerance sugirió una manera mucho mejor de reconocerlos, para el caso
del método de Kraitchik. La idea está basada en la criba de Erastóstenes.
En el caso de la criba de Erastóstenes, escribimos todos los números entre 2 y N inclusive;
marcamos el 2, y “tachamos” todos los números que sean múltiplos de 2. Luego buscamos el
siguiente número que no esté tachado (el 3); lo marcamos, y “tachamos” todos los múltiplos
de tres. Al terminar, buscamos el siguiente
√ número que no esté tachado, y continuamos de
esta manera. Cuando lleguemos a N , todos los números que estén marcados o no estén
tachados son primos.
La criba de Erastóstenes no sólo encuentra primos: también nos dice cuantos factores
primos distintos tiene cada número. Si contamos cuantos taches distintos tienen los números
tachados, ese es el número de factores primos distintos que tiene.
La idea de Pomerance fue que en vez de ir probando cada número Qi para ver si es
S-factorizable, podemos cribar los números hasta n usando los primos de S (puesto que
−1 ∈ S, en realidad cribamos los números de −n a n). Primero, armamos una tabla
con 2N + 1 entradas, numeradas de −n a n. Luego, en cada paso, tomamos un primo
p ∈ S, y a cada múltiplo i de p (son fáciles de encontrar en un arreglo), dividimos entre la
máxima potencia de p que divide a i; y reemplazamos i por el resultado en el arreglo. Al
terminar de cribar con todos los primos p de S, aquellas entradas que tienen un 1 son las
que corresponden a números S-factorizables. Entonces, cuando calculamos Qj , simplemente
tomamos Qj mod n, y buscamos en la tabla a ver si Qj mod n es S-factorizable; si la entrada
es 1, sı́ lo es; si la entrada no es 1, entonces podemos deshechar Qj y pasar al siguiente
número en la sucesión, a saber Qj+1 .
La ventaja de cribar es que los números divisibles entre p ocurren en lugares predecibles
de nuestra tabla original, de manera que el cribado se puede hacer muy rápidamente.
En la práctica, lo que hacemos es empezar con un arreglo A[ ], indexado por x con
−M ≤ x ≤ M , donde M es alguna cota elegida con anterioridad. La inicializamos a
√
blog |Q(x + b nc)|c, donde Q(y) = y 2 − n. Notemos que si p|Q(y), entonces p|Q(y + p`)
272 Criptoanálisis de Sistemas de Llave Pública
para todo entero `, pues Q es un polinomio. De manera que es fácil encontrar las entradas
que son múltiplos de p.
√
Dado p, resolvemos la congruencia (x + b nc)2 − n ≡ 0 (mod p). Esta congruencia
tiene dos soluciones módulo p, x1 y x2 . Entonces, le restamos blog(p)c a todas las entradas
A[x] donde x ≡ x1 (mod p) ó x ≡ x2 (mod p), −M ≤ x ≤ M . Esto lo hacemos para
cada primo impar p; (el caso de p = 2 y de potencias de p se trata de manera similar).
Al terminar este proceso, que es el proceso de cribado, aquellas x para las cuáles A[x]
es cercana a cero son las que con mayor probabilidad son S-factorizables. Puede ser que
tengamos candidatos de más debido a la naturaleza aproximada del proceso utilizado, pero
tiene la ventaja de que el cribado descrito es extremadamente rápido, y sólo se tiene que
hacer una vez.
Un cálculo de complejidad, asumiendo que los valores S-factorizables están distribuı́dos
de manera uniforme, nos dice que el orden de complejidad de la Criba Cuadrática es de
p p
O exp log(n) log log(n) .
√
Es decir, comparado con el método de fracciones continuas, hemos cambiado al constante 2
por una constante de 1. Parece ser una mejora mı́nima, pero en la práctica representa una
mejora muy fuerte: el número de dı́gitos de enteros para los cuales la Criba Cuadrática es
un método realı́sticamente eficiente para factorizar es aproximadamente el doble del número
de dı́gitos de los enteros para los cuales el método de fracciones continuas es razonable.
Otra gran ventaja de la criba cuadrática es que es muy amena a la paralelización del
proceso, lo cual también aumenta el tamaño de los enteros que podemos factorizar, a base de
dividir labores entre varios procesadores. Esto se logra ya sea utilizando varios polinomios
distintos en vez de uno sólo para generar los valores Qi , o repartiendo los intervalos de
valores a probar entre los distintos procesadores; o una combinación de ellos.
√
forma Q( d), donde d es un entero libre de cuadrados.
Inspirado por éste algoritmo, John Pollard circuló en 1988 una carta a varias personas
donde esbozaba una idea para factorizar ciertos numéros grandes de la forma ab ± 1, usando
campos numéricos. Pollard ilustró su idea factorizando el séptimo número de Fermat:
7
F7 = 22 = 59, 649, 589, 127, 497, 217 × 5, 704, 689, 200, 685, 129, 054, 721.
El séptimo número de Fermat habı́a sido el primer gran éxito del método de fracciones
continuas en 1970.
Mucha gente no tomó en serio la sugerencia de Pollard; la idea tenı́a varias dificultades
técnicas, y aún suponiendo que pudiesen ser resueltas, el algoritmo sólo pretendı́a servir
para números de forma muy especial.
Pero una cuantas gentes sı́ tomaron en serio a Pollard, y en particular, entre la gente
que le prestó atención se encontraban Hendrik W. Lenstra, Jr., su hermano Arjen Lenstra,
y Mark Manasse.
Hendrik Lenstra resolvió varias de las dificultades técnicas y teóricas del método, y
Arjen Lenstra y Manasse varias de las dificultades de programación. Brian La Macchia y
Andrew Odlyzko desarrollaron algoritmos eficientes para tratar con matrices grandes poco
densas, que aparecen en el método. Con estas herramientas en mano, los Lenstra y Manasse
9
decidieron probar la idea de Pollard con un verdadero premio, F9 = 22 + 1, el noveno primo
de Fermat. Se sabı́a que tenı́a un factor primo de 7 dı́gitos, y el cofactor de 148 dı́gitos
se sabı́a que no era primo, pero no se conocı́an ningún factor no trivial de éste. En la
primavera de 1990, anunciaron el éxito del proyecto. La factorización de F9 está dada por:
9
F9 = 22 + 1
= 2, 424, 833
× 208, 337, 395, 836, 200, 454, 918, 783, 366, 342, 657
× 741, 640, 062, 627, 530, 801, 524, 787, 141, 901, 937, 474, 059, 940, 781, 897, 519,
023, 905, 821, 316, 144, 415, 759, 504, 705, 008, 092, 818, 711, 693, 940, 737.
Fue un anuncio sensacional, sobre todo porque el trabajo se hizo con mucha paraleli-
zación, para la cual el algoritmo es especialmente apto.
¿Y qué pasa con números generales, o con las dificultades técnicas? Si las ignoramos,
o asumimos que hay una manera eficiente de darle la vuelta a los problemas, el algoritmo
tiene un tiempo esperado sorprendente:
p p
O exp c 3 log(n) 3 (log log(n))2
274 Criptoanálisis de Sistemas de Llave Pública
operaciones, donde la c es una constante (hablaremos un poco más sobre la c más abajo).
Era la primera vez que se lograba un método cuyo tiempo esperado tuviera el exponente
de log(n) por abajo de 12 ; y si bajar la constante en la criba cuadrática habı́a representado
un aumento tan dramático con respecto al método de fracciones continuas, ¿qué significarı́a
bajar el exponente? Muchı́simo.
¿Cuál era la idea de Pollard, y cómo funciona la Criba Especial de Campos Numéricos?
Primero, obtenemos un polinomio mónico con coeficientes enteros f (x) que sea irre-
ducible, y un entero m tal que f (x) ≡ 0 (mod n). El polinomio debe tener grado d
“moderado”; si 10100 ≤ n ≤ 10200 , normalmente se toma d = 5 ó d = 6.
Encontrarlos no es dificil: una vez elegido el grado d, tomamos m = bn1/d c, y escribimos
n en “base m”:
n = md + cd−1 md−1 + · · · + c0 ; 0 ≤ ci < m.
Tomamos f (x) = xd +cd−1 xd−1 +· · ·+c0 . Esto nos da un polinomio mónico con coeficientes
enteros tales que f (m) ≡ 0 (mod n). Si f (x) es irreducible, entonces no hay problema.
Pero si tenemos la “mala suerte” de que f (x) sea reducible, entonces tenemos dos polinomios
mónicos con coeficientes enteros, g(x), h(x), tales que f (x) = g(x)h(x). Entonces n =
f (m) = g(m)h(m), y un resultado de John Brillhart, Michael Filaset, y Andrew Odlyzko
nos dice que esta factorización de n es no trivial, y entonces hemos terminado nuestra
búsqueda por una descomposición no trivial de n. Ası́ que podemos suponer que f (x) es
irreducible.
Sea α una raı́z compleja de f (x), y consideramos Z[α], los polinomios en α con coe-
ficientes enteros. Como f (α) = 0 y f (m) ≡ 0 (mod n), es en vez de α ponemos m y
reducimos módulo n, obtenemos un mapa
φ: Z[α] → Zn
Es decir: Y
(a − αb) = γ 2
(a,b)∈S
para algún γ ∈ S.
con v ∈ Z.
u2 = φ(γ)2
= φ(γ 2 )
Y
= φ (a − αb)
(a,b)∈S
Y
= φ(a − αb)
(a,b)∈S
Y
= (a − mb)
(a,b)∈S
≡ v2 (mod n),
3
Es decir, es un ideal primo p tal que p ∩ Z = (p).
4
Un dominio de Dedekind es un dominio entero en el cual todo ideal distinto de cero se puede expresar
de manera única como un producto de ideales primos. Los anillos de enteros de un campo numérico siempre
son dominios de Dedekind.
278 Criptoanálisis de Sistemas de Llave Pública
Recordemos que tanto la Criba Especial de Campos Numéricos como la Criba General
tienen una complejidad esperada de
p p
O exp c 3 log(n) 3 (log log(n))2 ,
pero no hemos dicho cuánto vale la constante c.
9.5 El Problema de Factorización 279
Hay tres valores para la constante c, dependiendo de que versión de la criba se use. La
Criba Especial tiene
1/3
32
c= ≈ 1.523.
9
La Criba General, por otro lado, que sirve para cualquier entero positivo impar que no es
primo ni una potencia perfecta tiene una constante con valor
1/3
64
c= ≈ 1.923.
9
Finalmente, Don Coppersmith ha propuesto una versión de la Criba General que utiliza
varios polinomios en vez de uno sólo, y para éste método la constante tiene un valor de
1 √ 1/3
c= 92 + 26 13 ≈ 1.902.
3
¿En dónde está el punto de cruce entre la Criba Cuadrática y la Criba General de
Campos Numéricos? Si bien la Criba General tiene mejor tiempo asintótico, para números
más “pequeños” no es necesariamente el mejor método.
La respuesta a la pregunta depende de a quién le pregunte uno. Pero en algunas cosas
todo mundo está de acuerdo. Para número “pequeños”, digamos con 100 dı́gitos o menos,
la Criba Cuadrática es mucho mejor; para números más grandes, digamos con más de 130
dı́gitos, la Criba General es mejor (uponiendo siempre que ninguno de los métodos especiales
sea aplicable).
La razón por la cual la pregunta no tiene una mejor respuesta es que la respuesta
depende de los detalles de la programación y de la computadora que se esté utlizando. Por
ejemplo, se ha reportado que la Criba General de Campos Numéricos es muy sensible a
cuánta memoria tiene la computadora que se está utilizando; aunque la Criba Cuadrática
también depende de éste factor, depende en mucho menor medida.
En general, sin embargo, ambos métodos son peores que la factorización por curvas
elı́pticas, excepto para cierto tipo muy especial de números compuestos, llamados los
números difı́ciles. Los módulos de RSA, sin embargo, son todos números difı́ciles.
Hay ataques a RSA que no dependen directamente de factorizar el módulo, y éstos son
el tema de este capı́tulo.
Puesto que tenemos un algoritmo para factorizar el módulo con complejidad
p p
O exp c 3 log(n) 3 (log log(n))2 ,
(a saber, la Criba General de Campos Numéricos), sólo nos interesan aquellos ataques a
RSA cuya complejidad sea menor a la de la Criba General de Campos Numéricos.
En algunos de dichos ataques, el ataque culmina con una ruptura total del sistema, pero
eso no siempre es el caso. En su mayorı́a se tratan de ataques a ciertas implementaciones
o abusos de RSA, es decir, a malas elecciones al momento de implementar RSA, y no a
defectos inherentes en el algoritmo mismo.
Vamos a usar las siguientes convenciones en este capı́tulo: el módulo de RSA se deno-
tará N , con N = pq el producto de dos primos distintos. La llave pública consiste de dos
282 Ataques a RSA sin Factorizar el Módulo
enteros positivos (N, e), y la llave privada de un entero d, tal que de ≡ 1 (mod ϕ(N ));
ϕ(N ) es la función ϕ de Euler, cuyo valor en N es (p − 1)(q − 1).
El material de este capı́tulo está basado en el artı́culo de Dan Boneh [Bon99].
Supongamos que tenemos una red con varios usuarios, y queremos utilizar RSA para
comunicación segura entre ellos. Para no generar muchos módulos Ni = pi qi , uno por
usuario, simplemente elegimos un único módulo común para todos, N = pq, y le damos a
cada usuario una llave pública y privada (ei , di ) distinta.
Parecerı́a que esto nos produce una seguridad razonable, pero no es ası́. Vimos en el
Teorema 8.5 que dado el módulo N , y las llaves pública y privadas (e, d) de un usuario,
podemos obtener una factorización del módulo N de manera eficiente. Como cada usuario
tiene una pareja (ei , di ), y conoce N , cada usuario puede usar su llave para factorizar N .
Una vez factorizado N , dada la llave pública de cualquier otro usuario ej , le es fácil encontrar
el valor de la llave privada dj . Es decir, cada usuario tiene una ruptura total del sistema.
Es entonces muy importante nunca usar un módulo para dos o más usuarios.
Teorema 10.1 (M. Wiener) Sea N = pq, q < p < 2q dos primos. Supongamos que
d < 13 N 1/4 . Dado (N, e), con ed ≡ 1 (mod ϕ(N )), se puede recuperar d eficientemente.
10.2 Ataques por exponente privado pequeño 283
Dem.: Usamos fracciones continuas. Puesto que ed ≡ 1 (mod ϕ(N )), existe k ∈ Z tal que
ed − kϕ(N ) = 1. Tenemos entonces que
e k 1
ϕ(N ) − d = dϕ(N ) ,
3k
= √ .
d N
Tenemos también que kϕ(N ) = ed − 1 < ed. Como e < ϕ(N ), entonces
1
k < d < N 1/4 .
3
Entonces tenemos, usando la desigualdad de arriba, que
e
− k ≤ √1 < 1 .
N d d 4 N 2d2
Ésta es una relación clásica de aproximación diofantina, en la cuál la distancia debe ser más
pequeña que una función sencilla del denominador.
El número de fracciones kd con d < N que aproximan Ne con esta precisión está acotado
por log2 (N ), y todas se obtienen como parte de la expansión de Ne en fracciones continuas.
Uno calcula las primeras log2 (N ) fracciones continuas de la expansión, y una de ellas es k/d,
que ya está escrito en mı́nimos términos. Probamos todos los denominadores de nuestras
fracciones hasta encontrar el valor correcto de d. 2
284 Ataques a RSA sin Factorizar el Módulo
Para evitar el ataque, si N es de 1024 bits, d debe tener al menos 256 bits. Esto es malo
para smartcards, pues hacen que el descifrado sea bastante más lento.
Otra manera de evitar el ataque es usando una e más grande. Es decir, en vez de usar
el valor de e mod ϕ(N ), publicar un valor e0 = e + tϕ(N ), para algún entero t 0. Para
efectos de el cifrado y descifrado de RSA, e0 funciona igual que e (aunque calcular la e0 -ésima
potencia es más tardado que la e-ésima); pero entonces la k que aparece en la prueba es
muy grande, lo cual evita que el ataque prospere. En general, si e0 > N 3/2 , el ataque no se
puede montar.
Otra posible manera de intentar reducir el tiempo de descifrado es usar el Teorema
Chino del Residuo. Para ello, tenemos que recordar no sólo el valor de N , sino también
los valores p y q. Entonces uno define dp ≡ d (mod p − 1), dq ≡ d (mod q − 1), y para
descifrar, dado el mensaje cifrado C, uno calcula dos valores:
Mp ≡ C dp (mod p),
dq
Mq ≡ C (mod q).
Entonces usamos el Teorema Chino del Residuo para encontrar M , que es el único valor
módulo pq = N tal que M ≡ Mp (mod p) y M ≡ Mq (mod q).
Uno puede elegir dp y dq chicos, pero de tal manera que d sea grande (lo cual es posible).
Desafortunadamente,
p p hay un ataque tal que dado (N, e), permite factorizar el módulo en
tiempo O min dp , dq , de manera que si dp ó dq son demasiado pequeños, nuevamente
tenemos problemas.
La cota dada por el Teorema de Wiener no es la mejor posible; Boneh y Durfee tienen
un ataque modificado que funciona si d < N 0.292 . El consenso entre los expertos es que
en general d < N 1/2 es malo, y probablemente inseguro. Aunque√esto aún es un problema
abierto, no se recomienda usar exponentes privados menores de N .
Los ataques más poderosos por exponente público pequeño de RSA se basan en un
Teorema de Coppersmith [Cop97]. El teorema de Coppersmith tiene muchas aplicaciones,
pero sólo vamos a mencionar algunas. La demostración usa el algoritmo LLL1 de reducción
de base de retı́culas.
Puesto que h(x0 ) ≡ 0 (mod N ), y en valor absoluto es menor que N , concluı́mos que
h(x0 ) = 0. 2
El Lema 10.1 nos dice que si h es un polinomio con norma pequeña, entonces todas
las raı́ces chicas de h módulo N son en realidad raı́ces de h sobre los enteros. El Lema
sugiere entonces que para encontrar una raı́z chica x0 de f (x) mod N , nos conviene buscar
un polinomio h(x) ∈ Z[x] de norma pequeña que tenga las mismas raı́ces que f (x) mod N .
Entonces x0 serı́a una raı́z de h(x) sobre los enteros, y las raı́ces enteras de polinomios con
coeficientes enteros son fáciles de encontrar.
Para encontrar h(x), podemos buscar un polinomio g(x) ∈ Z[x] tal que h(x) = g(x)f (x)
tenga norma pequeña, esto es, menor a N . Esto equivale a buscar una combinación lineal con
coeficientes enteros de los polinomios f (x), xf (x), x2 f (x), . . . , xr f (x), con norma pequeña.
Desgraciadamente, en general no hay una combinación lineal no trivial que tenga norma
suficientemente chica.
Coppersmith descubrió un truco para resolver el problema: si f (x0 ) ≡ 0 (mod N ), en-
tonces f (x0 )k ≡ 0 (mod N k ) para toda k. En general, definimos los siguientes polinomios
para alguna m determinada:
gu,v (x) = N m−v xu f (x)v .
Entonces x0 es raı́z de gu,v (x) módulo N m para toda u ≥ 0 y toda 0 ≤ v ≤ m. Para poder
usar el Lema 10.1 tenemos que encontrar una combinación lineal con coeficientes enteros de
los polinomios gu,v (x), a la que llamaremos h(x), y tal que h(xX) tenga norma menor que
10.3 Ataques por exponente público pequeño 287
N m (pues X es una cota superior para las x0 , que satisface X ≤ N 1/d ). Puesto que ahora
tenemos una cota de N m en vez de N , uno puede demostrar que para m suficientemente
grande siempre existe tal h(x). Una vez que encontramos h(x), aplicamos el Lema 10.1,
que implica que el polinomio tiene a x0 como raı́z en los enteros, y podemos encontrar x0
fácilmente.
Sólo falta ahora ver cómo encontrar h(x) de manera eficiente. Para ello, mencionamos
ciertos resultados básicos sobre retı́culas en Zw , sin demostración. Una posible referencia
es [Lov86].
Sean u1 , . . . , uw ∈ Zw vectores linealmente independientes. Una retı́cula (de rango
completo) generado por hu1 , . . . , uw i es el conjunto de todas las combinaciones lineales con
coeficientes enteros de u1 , . . . , uw . El determinante de L se define como el determinante de
la matriz cuadrada de w × w cuyos renglones son los vectores u1 , . . . , uw .
En nuestro caso, consideramos los polinomios gu,v (xX) como vectores, y estudiamos la
retı́cula L que generan. Tomamos los valores v = 0, . . . , m y u = 0, . . . , d − 1, de manera
que la retı́cula tiene dimensión w = d(m + 1). Por ejemplo, cuando f (x) es un polinomio
mónico cuadrático y m = 3, la retı́cula que resulta está generada por los renglones de la
siguiente matriz:
N3
XN 3
X 2N 2
∗
X 3N 2
∗ ∗
∗ ∗ ∗ X 4N
∗ ∗ ∗ ∗ X 5N
∗ ∗ ∗ ∗ ∗ X6
∗ ∗ ∗ ∗ ∗ ∗ X6
donde los renglones de la matriz corresponden, respectivamente, a g0,0 (xX), g1,0 (xX),
g0,1 (xX), g1,1 (xX), g0,2 (xX), g1,2 (xX), g0,3 (xX), y g1,3 (xX); las columnas respectivamente
a 1, x, x2 , x3 , x4 , x5 , x6 , y x7 ; y las entradas ∗ corresponden a coeficientes en los polinomios
cuyos valores podemos ignorar. Todas las entradas vacı́as corresponden a ceros. Como al
matriz es triangular superior, su determinante el el producto de los elementos de la diagonal.
El objetivo es encontrar vectores pequeños en esta retı́cula.
Un resultado clásico de Hermite dice que cualquier retı́cula L de dimensión w contiene un
punto v ∈ L, v 6= 0, cuya norma L2 satisface kvk ≤ γw det(L)1/w , donde γw es una constante
que depende sólo de w. La cota de Hermite se puede usar para demostrar que para m 0,
nuestra retı́cula contiene vectores de norma menor a N m , que es lo que queremos. Pero la
pregunta es cómo podemos construir de manera eficiente un vector chico en L cuya longitud
288 Ataques a RSA sin Factorizar el Módulo
no sea mucho mayor a la cota de Hermite. El algoritmo LLL es un algoritmo eficiente que
hace precisamente eso:
Teorema 10.3 (LLL) Sea L una retı́cula generada por hu1 , . . . , uw i. Si hu1 , . . . , uw i son
dados como la entrada, el algoritmo LLL encuentra un punto v ∈ L que satisface
Podemos asumir que (Ni , Nj ) = 1, pues si tienen algún factor común, lo podemos usar
para factorizar los módulos (puesto que son distintos entre sı́). Entonces podemos aplicar
el Teorema Chino del Residuo a C1 , C2 , y C3 , para obtener un C 0 ∈ Z( N1 N2 N3 ) tal que
C 0 ≡ M 3 (mod N1 N2 N3 ). Pero como M es menor que cada Ni , entonces M 3 < N1 N2 N3 .
Es decir, C 0 = M 3 en los enteros. Para recuperar M , simplemente calculamos la raı́z cúbica
de C 0 .
En general, si todos los exponentes públicos son iguales a e, podemos recuperar M en
cuanto k ≥ e.
Este es el viejo ataque, y obviamente sólo es eficaz cuando e es muy pequeña. Pero
Hastad describió un ataque mucho más poderoso. Para motivarlo, consideremos una defensa
inocente contra el ataque de arriba. En vez de simplemente cifrar M y enviarlo, B puede
“rellenar” el mensaje antes de cifrar; por ejemplo, si M tiene m bits de largo, entonces B
puede envı́ar el cifrado de Mi = i2m + M a la persona Pi . Como el criptoanalista obtiene
cifrados de distintos textos, el ataque de arriba no se puede montar. Pero Hasta probó que
este tipo de relleno lineal no es seguro; de hecho, si aplicamos un polinomio fijo antes de
cifrar, obtenemos una transmisión masiva insegura.
Supongamos que para cada participante P1 , . . . , Pk , B tiene un polinomio fijo, conocido
públicamente, fi (x) ∈ ZNi [x]; y para envı́ar un mensaje M , B envı́a el cifrado de fi (M ) a
Pi . El criptoanalista entonces conoce todas las llaves públicas, los polinomios fi (x), y los
valores Ci = fi (M )ei para i = 1, . . . , k. Si k es suficientemente grande, entonces podemos
recuperar el texto original:
Teorema 10.4 (Hastad) Sean N1 , . . . , Nk enteros positivos primos relativos dos a dos, y
sea Nmin = mini (Ni ). Sean gi ∈ ZNi [x], i = 1, . . . , k polinomios de grado menor o igual
a d. Supongamos que existe un único entero M < Nmin que satisface
Si k > d, entonces uno puede recuperar eficientemente M dados los valores (Ni , gi ).
290 Ataques a RSA sin Factorizar el Módulo
Dem.: Sea N = N1 · · · Nk . Podemos asumir que todos los gi (x) son mónicos; pues si para
alguna i el coeficiente principal de gi no es invertible en ZNi , entonces no es primo relativo
con Ni y podemos usar su máximo común divisor para factorizar Ni . Si multiplicamos
cada gi por una potencia apropiada de x, podemos asumir que todos los gi tienen grado
exactamente igual a d. Construı́mos ahora el polinomio
k
X
g(x) = Ti gi (x)
i=1
donde
1 mod Nj si i = j
Ti =
0 mod Nj 6 j
si i =
Las Ti son enteros que se pueden encontrar con el Teorema Chino del Residuo. Entonces
g(x) es mónico, pues es mónico módulo todas las Ni y su coeficiente principal es menor
N . El grado de g(x) es d; y sabemos que g(M ) ≡ 0 (mod N ). El Teorema es ahora
1/k 1/d
consecuencia del Teorema de Coppersmith, pusto que M < Nmin ≤ N <N . 2
El Teorema de Hastad nos dice que un sistema de ecuaciones en una incógnita con
módulos primos relativos dos a dos se puede resolver eficientemente, si es que nos dan sufi-
cientes ecuaciones. Si tomamos gi = fiei − Ci (mod Ni ), el criptoanalista puede recuperar
M de los criptotextos que tenemos siempre que el número de personas sea al menos d,
donde d es el máximo de ei gr(fi ) tomado sobre i = 1, . . . , k. En particular, si todas las ei
son iguales a un mismo valor e, podemos recuperar el texto original M cuando k > e.
Para poderse proteger contra el ataque de Hastad, es necesario utilizar e 0, o bien
usar rellenos aleatorios en vez de rellenos fijos para los mensajes.
Lema 10.2 (Franklin-Reiter) Sean e = 3, y (N, e) una llave pública de RSA. Sean M1 6=
M2 ∈ Z∗N dos mensajes que satisfacen la relación M1 ≡ f (M2 ) (mod N ) para algún
polinomio lineal f (x) = ax + b ∈ ZN [x], con b 6= 0. Entonces, dados (N, e, C1 , C2 , f ), un
criptoanalista puede recuperar M1 y M2 en tiempo cuadrático en log(N ).
Dem.: Por lo pronto, tomamos e arbiraria. Como C1 ≡ M1e (mod N ), sabemos que M2
es raı́z del polinomio
g1 (x) = f (x)e − C1 ∈ ZN [x].
De manera análoga, M2 es raı́z del polinomio
g2 (x) = x3 − C2 ∈ ZN [x].
El factor lineal x − M2 , por lo tanto, divide a ambos polinomios. Podemos usar el algoritmo
de Euclides2 para calcular el máximo común divisor de g1 (x) y g2 (x). Si el máximo común
divisor es lineal, entonces hemos encontrado el valor de M2 ; el algoritmo de Euclides funciona
en tiempo cuadrático con argumentos e y log(N ).
Supongamos ahora que e = 3, y vamos a probar que el máximo común divisor tiene que
ser lineal. El polinomio x3 − C2 se factoriza módulo p y módulo q como el producto de un
factor lineal y un factor irreducible cuadrático, pues como (e, ϕ(N )) = 1, x3 − C2 sólo tiene
una raı́z en ZN . Como g2 no divide a g1 , el máximo común divisor tiene que ser lineal.
Si e > 3, el máximo común divisor es casi siempre lineal. Sin embargo, en algunos casos
extraños es posible tener M1 , M2 , y f para el cual el máximo común divisor no es lineal, y
en ese caso el ataque fracasa. 2
En ésta sección utlizaremos el concept del resultante de dos polinomios. El lector que no
esté familiarizado con resultantes puede encontrar la información necesaria (sin demostra-
ciones) en el Apéndice C.
2
El anillo ZN [x] no es un anillo euclidiano; pero si aplicamos el algoritmo de Euclides usual a sus poli-
nomios, se puede probar que o bien el algoritmo trabaja sin problemas, o bien si el algoritmo tiene algún
problema, podemos entonces usar esa información para factorizar N .
292 Ataques a RSA sin Factorizar el Módulo
Teorema 10.5 Sea (N, e) una llave pública de RSA, donde N tiene longitud de n-bits. Sea
m = bn/e2 c. Sea M ∈ Z∗N un mensaje de longitud menor o igual a n − m bits. Definimos
M1 = 2m M + r1 y M2 = 2m M + r2 , donde r1 y r2 son dos enteros distintos, arbitrarios,
tales que 0 ≤ r1 , r2 < 2m . Dados (N, e), y los cifrados C1 y C2 de M1 y M2 (pero sin
conocer r1 ni r2 ), se puede recuperar M eficientemente.
Sea (N, d) una llave privada de RSA. Supongamos que de alguna manera, el criptoana-
lista logra obtener una fracción de los bits de d, digamos, la cuarta parte de los bits. ¿Puede
10.3 Ataques por exponente público pequeño 293
entonces reconstruı́r el resto de d? Es algo sorpresivo que la respuesta a esta pregunta es sı́
cuando√el exponente público e es chico. En 1998, Boneh, Durfee, y Frankel probaron que
si e < N , entonces es posible reconstruir d de una fracción de sus bits. Los resultados
ilustran la gran importancia de cuidar toda la llave privada de RSA.
Teorema 10.6 (Boneh-Durfee-Frankel) Sea (N, d) una llave privada de RSA, donde N
es de longitud n bits. Dados los dn/4e bits menos significativos de d, se puede reconstruı́r
toda d mediante un algoritmo cuya complejidad es lineal en e log2 (e).
Como d < ϕ(N ), tenemos también que 0 < k ≤ e. Si reducimos la ecuación módulo 2n/4 (es
decir, nos fijamos sólo en los n/4 bits menos significativos), usamos la sustitución q = N/p,
y multiplicamos por p para eliminar denominadores, tenemos:
Como el criptoanalista conoce los n/4 bits menos significativos de d, y conoce el valor de e
(que es público), el criptoanalista tiene el valor de ed mod 2n/4 . Por lo tanto, la ecuación de
arriba nos dá una ecuación en dos incógnitas, k y p. Para cada uno de los e posibles valores
de k, el criptoanalista tiene que resolver una ecuación de grado dos en p para obtener un
número de candidatos para el valor de p mod 2n/4 . Para cada uno de estos candidatos,
puede usar el algoritmo del Teorema 10.7 para tratar de factorizar N . El número total de
candidatos para p mod 2n/4 es a lo mucho e log2 (e), de manera que después de a lo mucho
e log2 (e) intentos, habrá factorizado N y obtenido una ruptura total del sistema. 2
Para terminar con los problemas de exponente público chico, vamos a demostrar que
el criptosistema RSA filtra la mitad de los bits más significativos del exponente privado
cuando el exponente público es pequeño.
Recordemos que tenemos la ecuación ed − k(N − p − q + 1) = 1 para algún entero k que
satisface 0 < k ≤ e. Dado k, el criptoanalista puede calcular
dˆ = b(kN + 1)/ec.
Vamos ahora a ver un tipo distinto de ataques a RSA. En vez de atacar la estruc-
tura matemática de RSA, como en las secciones anteriores, se atacan las implementaciones
de RSA.
Imaginemos una tarjeta inteligente con la llave privada de RSA del usuario. Como la
tarjeta es resistente y no se puede examinar directamente, el criptoanalista que obtiene la
tarjeta no puede descubrir directamente la llave. Sin embargo, un ataque de P. Kocher,
descrito en 1996, muestra cómo a base de medir de manera precisa el tiempo que le lleva a
la tarjeta hacer el descifrado (o firma), el criptoanalista puede descubrir el valor de la llave
privada d.
10.4 Ataques de implementación 295
Por ejemplo, supongamos que la tarjeta implementa RSA usando el método de eleva al
cuadrado y multiplica. Recordemos que si
d = dn dn−1 . . . d0
es una representación binaria de d (es decir, d = 2i di , con di ∈ {0, 1}), entonces el método
P
de elevar al cuadrado y multiplicar calcula c = M d iterativamente de la siguiente manera:
empezamos inicializando una variable t y una variable c, poniendo t = M y c = 1; para
i = 0, . . . , n, si di = 1, multiplicamos c por t módulo N ; si di = 0, dejamos c como estaba;
y en ambos casos reemplazamos t por t2 mod N .
Para montar el ataque, el criptoanalista le pide a la tarjeta inteligente que genere firmas
electrónicas para un gran número de mensajes aleatorios, M1 , . . . , Mk ∈ Z∗N , y mide el
tiempo Ti que le lleva a la tarjeta generar la firma del i-ésimo mensaje.
El ataque recupera los bits de d de uno por uno, empezando por el menos significa-
tivo. Puesto que d tiene que ser impar, sabemos que d0 = 1. Consideramos ahora como
recuperar d1 . En la segunda iteración del algoritmo de elevar al cuadrado y multiplicar,
t = M 2 mod N , y c = M . Si d1 = 1, entonces la tarjeta inteligente calcula el producto
ct = M · M 2 mod N ; si d1 = 0, la tarjeta no hace nada. Sea ti el tiempo que le lleva a la
tarjeta calcular Mi · Mi2 mod N . Las ti ’s son distintas entre sı́, pues el tiempo que lleva
calcular la multiplicación depende del valor de Mi . El tiempo ti se calcula antes de montar
el ataque, en una máquina separada, usando las especificaciones fı́sicas de la tarjeta (es
decir, la implementación fı́sica del algoritmo en la tarjeta). Esto le permite aislar el tiempo
de ésta iteración, y separarlo del tiempo completo del algoritmo.
Kocher notó que si d1 = 1, entonces los conjuntos {ti }, y {Ti } están relacionados:
si para alguna i tenemos que ti es mucho más grande que el promedio, entonces la Ti
correspondiente es muy probable que también sea más grande que el promedio. Es decir,
hay una alta correlación entre el conjunto ordenado (t1 , . . . , tk ), y el conjunto ordenado
(T1 , . . . , Tk ).
Pero si d1 = 0, entonces los dos conjuntos ordenados (t1 , . . . , tk ) y (T1 , . . . , Tk ) se com-
portan como variables aleatorias independentes, sin ninguna correlación. El criptoanalista
puede medir la correlación entre los dos conjuntos, y determinar de esa manera si d1 vale 0
ó 1.
Una vez determinados los valores de d0 y d1 , puede repetir el proceso para encontrar los
valores de d2 , d3 , etc.
Recordemos además que si se está usando un exponente público e pequeño, entonces
el ataque de exposición parcial de la llave de la sección anterior nos dice que el ataque de
Kocher sólo tiene que recuperar la cuarta parte de los bits de d para poder recuperar el
296 Ataques a RSA sin Factorizar el Módulo
valor completo de d.
Hay dos maneras de defenderse del ataque de Kocher. La primera y más sencilla es
agregarle a la implementación un tiempo de espera adicional para que la exponenciación
modular siempre se tarde el mismo tiempo.
La segunda manera es una idea de Rivest, y se llama cegado 3 . Antes de descifrar M
(o de firmarlo), la tarjeta inteligente escoge un número aleatorio r ∈ Z∗N , y calcula el valor
de M 0 = M · re (mod N ). Después eleva M 0 a la d módulo N , y obtiene C 0 = (M 0 )d
(mod N ). Finalmente, la tarjeta calcula C = C 0 /r (mod N ), que es el valor de M . El
cegado hace que la tarjeta esté exponenciando un mensaje aleatorio M 0 que no es conocido
por el criptoanalista, de manera que éste último no puede montar el ataque.
Kocher también ha descubierto otro ataque similar, llamado Criptoanálisis de con-
sumo. Kocher demostró que el consumo de energı́a de la tarjeta inteligente cuando ésta
genera una firma electrónica permite determinar si en una iteración se están realizando una
o dos multiplicaciones; cuando se realiza una, el bit de la llave es 0, y si el bit de la llave es 1,
entonces se realizan dos operacions. Ni agregar tiempo de espera, ni el cegado de Rivest,
protegen contra este ataque.
Muchas implementaciones de RSA usan el Teorema Chino del Residuo para acelerar
el descifrado y firmado de documentos, facilitanto el cálculo de M d mod N . En vez de
trabajar módulo N , el usuario calcula las firmas del documento módulo p y módulo q, y
luego usa el Teorema Chino del Residuo para obtener el resultado correcto. Explı́citamente,
si queremos calcular M d mod N , primero cálculamos
Cp ≡ M dp (mod p)
y
Cq ≡ M dq (mod q)
donde dp ≡ d (mod (p − 1)) y dq ≡ d (mod (q − 1)); y después obtenemos el valor de
C = M d mod N tomando
C ≡ T1 Cp + T2 Cq (mod N ),
donde
1 mod p 0 mod p
T1 = y T2 =
0 mod q 1 mod q
3
Blinding en inglés.
10.4 Ataques de implementación 297
Eso quiere decir que el máximo común divisor de N y Ĉ e − M es p, lo cual nos da un factor
no trivial de N , y con ello la factorización de N .
Para que el ataque funcione, el criptoanalista tiene que conocer el valor de M ; es de-
cir, estamos suponiendo que la persona que está generando las firmas electrónicas no está
usando ningún tipo de relleno aleatorio. Agregar relleno aleatorio evita que se monte el
ataque, pero una mucho mejor defensa es simplemente verificar la firma generada antes de
enviarla. Verificar el resultado es particularmente importante cuando usamos la aplicación
del Teorema Chino del Residuo para aumentar la velocidad.
Los errores aleatorios son un verdadero peligro para muchos sistemas criptográficos;
varias implementaciones, incluyendo varias de RSA que no usan el Teorema Chino del
298 Ataques a RSA sin Factorizar el Módulo
Residuo, se pueden atacar con éxito utilizando errores aleatorios. Esto es un problema para
estos sistemas, pues la verificación suele ser igual de lenta que el cifrado y descifrado, y esta
lentitud ya es uno de los problemas de estos sistemas.
11.1 Criptografı́a simétrica vs. criptografı́a de llave pública
A lo largo del texto hemos visto diversos mecanismos de cifrado que podemos clasificar,
como ya hemos mencionado, en sistemas simétricos (aquellos en los que se utiliza la misma
clave para cifrar y para descifrar), y sistemas de llave pública (un tipo particular de los
sistemas asimétricos en los que se usan diferentes claves para cifrar y para descifrar y en
los que, además, conocer una de las claves no ofrece mucha información útil para conocer
la otra).
Los sistemas simétricos resultan convenientes porque:
DES, por ejemplo, son sólo corrimientos de bits y xor, fácilmente implementables en
hardware.
• Las claves son relativamente (respecto a la longitud del texto cifrado) cortas. DES,
por ejemplo usa claves de 64 (56 realmente) bits, AES usa claves de 128, 192 o 256
bits.
• La clave debe permanecer secreta. La misma clave se usa para cifrar y descifrar, ası́
que debe haber una “doble garantı́a” de que la clave está segura: tanto el emisor como
el receptor deben protegerla.
• Hay que cambiar las llaves con periodicidad para no favorecer el criptoanálisis por vo-
lumen de transmisión cifrada. Esto significa que el problema mencionado de establecer
las llaves es todavı́a más complicado.
• Sólo la llave privada debe mantenerse en secreto y sólo es conocida por una persona.
1
1 megabyte (MB) = 8,388,608 bits.
2
Más información en: http://www.sandia.gov/media/NewsRel/NR1999/encrypt.htm.
11.1 Criptografı́a simétrica vs. criptografı́a de llave pública 301
• Es posible pensar en una red de usuarios con un directorio público de llaves de cifrado.
• De haber un administrador central de llaves, éste no necesita ser tan confiable como
en el caso de la criptografı́a simétrica. Aal tipo de autoridad de administración de
llaves necesario se le conoce en inglés como Functionally Trusted Third Party, una
confiabilidad más débil [MvOV96] ya que no conoce las llaves privadas de los usuarios.
• Las parejas (llave pública, llave privada) pueden ser usadas durante periodos de tiempo
más prolongados que en la criptografı́a simétrica.
• En una red con muchos usuarios se requieren pocas llaves, comparativamente a los
mencionado arriba para los sistemas simétricos.
• Para implementarse requieren de mucha mayor infraestructura que los sistemas simé-
tricos. En software se requiere de bibliotecas de manejo de grandes números y con
funciones de aritmética modular y pruebas de primalidad. En hardware las opera-
ciones son mucho más complicadas. Basta recordar que para elevar un número a una
potencia por el método de elevar al cuadrado y multiplicar hay que implementar un
algoritmo de orden O(log3 n), donde n es el módulo.
• Son mecanismos mucho más lentos que los de criptografı́a simétrica usuales. Por
ejemplo el chip3 IBM 4758 tarda en promedio 3,568 ms (poco más de 3 segundos) en
establecer la llave de RSA; es capaz de cifrar 505 mensajes por segundo y de descifrar
174.8 en el mismo tiempo, compárense estas cifras con las del chip DES mencionado
arriba.
• El tamaño de las llaves es mucho más grande (al menos un orden de magnitud mayor)
al requerido por los sistemas simétricos. Esto es porque los mecanismos de crip-
toanálisis de los sistemas simétricos terminan en una búsqueda exhaustiva, en los
sistemas de llave pública, en cambio, hay muchos recursos teóricos que sustentan
atajos posibles; ası́ que para obtener en un sistema de llave pública una seguridad
comparable a la de un sistema simétrico se requiere una longitud de llave mayor.
supuesto de que no hay otro modo de hacer ciertas cosas más que siguiendo el camino
difı́cil.
Hay que hacer notar que las ventajas de los sistemas simétricos y de los de llave pública
son complementarias. Los de llave privada (simétricos) son rápidos y tienen una excelente
relación costo-beneficio y los de llave pública son buenos para resolver el problema que les
dió origen: la distribución de las llaves y autentificación. Ası́ que ¿por qué no pensar en
combinar ambos en un sistema hı́brido?
2. A usa la llave pública de B para cifrar un mensaje que contiene una llave de un sistema
simétrico, que previamente han acordado A y B. Ésta es llamada la llave de sesión.
A envı́a a B este mensaje.
Suena bien, pero el paso 1 puede traernos problemas. ¿Cómo consigue A la llave pública
de B? Consultando el directorio de llaves públicas que está guardado en algún lugar,
tı́picamente en la base de datos de una computadora que reparte las llaves a quién lo
solicita, una autoridad de distribución de llaves. En este escenario puede ocurrir algo como
lo siguiente: imaginemos que un tercero C, quiere saber lo que A y B se dirán en secreto.
4
Podemos pensar indistintamente que estos “usuarios” son personas o computadoras de una red.
11.2 Sistemas mixtos 303
Ahora A y B están de acuerdo en un par de llaves de sesión y pueden convenir usar una
de ellas para sus comunicaciones futuras con un algoritmo simétrico.
El protocolo de interbloqueo está basado en el hecho de que no es posible descifrar los
fragmentos de mensaje. Si C se hace pasar por A ante B y por B ante A, no puede descifrar
ninguno de los mensajes parciales por lo que no puede enviar nada a B a menos que invente
su propio mensaje.
El problema principal, como hemos visto, es certificar que la llave pública que se utiliza
es realmente la llave de aquel a quien van dirigidos los mensajes. Si logramos eso tenemos
gran parte de la batalla ganada, pero eso requiere de mecanismos de autentificación, los
que abordaremos un poco más adelante. Si suponemos que ya tenemos un mecanismo de
certificación de llaves podemos pensar en otras posibilidades para un sistema mixto. Por
ejemplo, el protocolo de Beller-Yacobi [MvOV96], que permite el envı́o simultáneo de una
llave de sesión (para sistema simétrico) y un mensaje cifrado:
1. A genera una llave de sesión K y cifra, con un método simétrico que ha acordado con
B, el mensaje M . Esto lo denotaremos5 con EK (M ).
4. B descifra la parte del mensaje que contiene K (EB (K)) usando su llave privada y
ası́ obtiene K.
5. B usa la K obtenida para descifrar la otra parte del mensaje que contiene M (EK (M )).
Ya mencionamos que uno de los problemas serios para implementar un sistema mixto es
la autentificación: estar seguros siempre de que hablamos con quien creemos estar hablando.
Si en un sistema de llave pública todos los usuarios conocen la llave pública del administrador
de llaves central y éste firma digitalmente sus mensajes entonces podemos garantizar que las
comunicaciones se llevan a cabo con quien realmente deben ser y no con intermediarios. Si
un usuario A pide al distribuidor la llave pública de B, con quien desea hablar en secreto,
y el distribuidor entrega la llave firmada con su propia llave privada, entonces A puede
obtener la llave pública de B y certificar que es el administrador quien se la dió, porque
5
En general usaremos E para denotar cifrado, ya sea con la llave pública de alguien en un sistema de
llave pública o con la llave privada de un sistema simétrico.
11.3 Autentificación e intercambio de llave 305
nadie podrı́a haber firmado el mensaje de tal forma que la llave pública del administrador
verifique la firma. Si un usuario malicioso C se pone en medio haciéndose pasar por el
administrador de llaves no tendrá los medios para firmar el mensaje de tal forma que A
crea que fue el administrador quien lo firmo. Aún si C solicita al distribuidor la verdadera
llave pública de B y pretende pegar la firma de este mensaje a su propio mensaje A se
percatará de ello: recordemos que la firma es una función tanto de la llave privada como
del mensaje mismo, firma y mensaje están estrechamente ligados, ası́ que no hay tal cosa
como una firma “general” añadible a cualquier mensaje.
También podemos pensar en un protocolo de autentificación con llave simétrica. Supon-
gamos que A y B se han puesto de acuerdo en un sistema simétrico y en una llave K para
usar con este sistema. A y B pueden autentificarse mutuamente con un protocolo llamado
desafı́o-respuesta [Sch96].
A sabe que habla con B porque nadie más podrı́a conocer K; y B sabe que habla con
A porque nadie que no sepa K podrı́a haber descifrado el mensaje para conocer rB . Un
atacante que se haga pasar por A o B no puede descifrar los mensajes. Pero hay otro
problema, existe un ataque similar al del intermediario llamado de reflexión que funcionarı́a
como sigue:
6. C responde otra vez con lo mismo que recibe (rA ) con lo que termina el primer
protocolo.
306 Sistemas Mixtos y Autentificación
Ahora C tiene dos sesiones abiertas con A. Para evitar este ataque debemos forzar a
que la contraparte cifre o descifre algo. Para esto necesitamos incluir en el mensaje algo
que deba ser conocido y luego cambiado en función de su valor, por ejemplo un número
aleatorio que se debe incrementar, un número de secuencia un identificador del remitente o
del destinatario, o un sello de tiempo (time-stamp). Por ejemplo si en el segundo paso B
tiene que enviar EK (rA , rB , A) entonces C ya no puede simplemente reflejar este mensaje
porque tendrı́a que reemplazar A por otro identificador, lo que significa que debe descifrar
el mensaje.
Otro protocolo de autentificación con establecimiento de llave de sesión es el de Borrows-
Abadi-Needham [Sch96, MvOV96], también conocido como el “protocolo de la rana hoci-
cona” (habladora) o en inglés wide-mouth frog.
La desventaja de este protocolo es que los mensajes viejos resultan útiles para un in-
truso C. Esto se debe a que C puede retomar algún mensaje previo que vio pasar, por
ejemplo (A, EkA,T (B, K)), y enviar miles de estos mensajes a T . Por cada uno de estos
mensajes T envı́a uno a B, ası́ que C puede echar a perder el sistema saturando a T e indi-
rectamente a B. Para resolver este problema se coloca un sello de tiempo en cada mensaje,
los mensajes caducos se ignoran.
Hemos mencionado ya dos veces los sellos de tiempo como una alternativa para prevenir
ataques. Se oye fácil pero no lo es. De hecho es uno de los problemas más importantes de
la teorı́a de la computación distribuida. Incluir sellos de tiempo en los mensajes supone que
todas las máquinas tienen la misma hora todo el tiempo, de otra manera ¿ćomo garantizar
que no se ignoran mensajes válidos? Ası́ que los relojes de todas las máquinas deben estar
sincronizados, ese es el problema.
Otro problema que hemos dejado de lado es la generación de números aleatorios, algo que
usamos para obtener las llaves de sistema simétrico. Estos números aleatorios deben poseer
“alta calidad”, algo que no es trivial dado que los generadores de números pseudoaleatorios
convencionales son bastante predecibles. Se requiere de recursos especiales para generar
números aleatorio con calidad criptográfica, ası́ que serı́a bueno que no todos los posibles
interlocutores tuvieran esa capacidad.
11.3 Autentificación e intercambio de llave 307
4. B envı́a a A: EK (rB ).
Los dos últimos pasos garantizan que no se puede atacar por reflexión: hay un número
aleatorio que debe poder ser conocido e incrementado antes de enviar respuesta. A sabe, al
final, que está hablando con B porque nadie más podrı́a conocer la llave que B comparte
con T , con la que se cifró el mensaje que A envió a B. Por su parte, B sabe que habla con A
porque recibió el número aleatorio que envió incrementado. Este protocolo tiene la ventaja
de que sólo T debe tener la capacidad de generar buenas llaves de sesión. Lo malo de este
protocolo es que si C conoce una llave vieja K, puede usarla para hacerse pasar por A:
1. C envı́a a B un mensaje que ya ha visto pasar antes y que fue cifrado usando la llave
K que conoce: EkB,T (K, A), no conoce kB,T pero no importa porque este mensaje es
idéntico a uno que en algún momento envió A a B.
3. Como C conoce K descifra el mensaje y cifra de nuevo para enviar EK (rB − 1).
2. B genera un nuevo mensaje: (I, A, B, EkA,T (rA , I, A, B), EkB,T (rB , I, A, B)) que envı́a
a T.
308 Sistemas Mixtos y Autentificación
3. El distribuidor T genera la llave de sesión y envı́a a B: (I, EkA,T (rA , K), EkB,T (rB , K)).
4. B envı́a a A el mensaje que recibió de T pero destinado a A: (I, EkA,T (rA , K)).
11.4 SSL
• La hora.
• Un número de 28 bytes (224 bits) aleatorio al que llamaremos rc .
• La versión del protocolo que corre en la máquina cliente.
• Un identificador de sesión.
• Una lista de opciones (ordenada por preferencia) acerca de:
– Algoritmos de criptografı́a simétrica soportados (mencionados arriba).
– Métodos de intercambio de llave. Hay dos posibilidades: RSA y Diffie-
Hellman.
– Métodos de verificación de integridad (funciones hash mencionadas arriba).
• Un número k que en el futuro será utilizado, según el caso, como la llave pública
del servidor (si se decide usar RSA como método de intercambio de llave) o como
los valores del módulo p, el generador g, y Y = g β (mod p) (si se decide usar
Diffie-Hellman).
• El identificador del certificado.
• Periodo de validez del certificado.
• Nombre del servidor.
• Nombre del servicio (e.g. httpd para intercambió de páginas web).
• Firma del certificado.
310 Sistemas Mixtos y Autentificación
5. El cliente envı́a un mensaje de intercambio de llave que sirve para establecer el secreto
pre-maestro. Si se eligió RSA el cliente envı́a 48 bytes (384 bits) aleatorios cifrados
con k que se interpreta como la llave pública del servidor. Si se eligió Diffie-Hellman
entonces se envı́a X = g α (mod p), k se interpreta como Y , como se mencionó antes.
6. Tanto el cliente como el servidor envı́an un mensaje llamado finish que consiste en la
función hash elegida para verificar integridad, evaluada sobre el conjunto de todos los
mensajes previos concatenados.
con base en estas funciones se define otra, en el borrador de IETF se denomina función
pseudoaleatoria (en siglas PRF):
el segundo argumento es, de hecho, la cadena de texto “master secret” (incluyendo el espacio
entre las palabras). Los valores rc y rs son los números aleatorios enviados en los mensajes
de saludo por el cliente y el servidor respectivamente.
El secreto maestro puede ser usado ahora como la llave de alguno de los sistemas
simétricos, aquel que hayan elegido de acuerdo a sus preferencias el cliente y el servidor.
TLS puede utilizar el protocolo de Diffie-Hellman para el intercambio de llaves. Otro
protocolo de uso común hoy en dı́a entre la comunidad de usuarios de computadoras en red
es SSH (Secure shell ), que permite la realización de sesiones de trabajo en computadoras
remotas en las que el usuario está registrado. La versión más reciente de este protocolo es
la 2 y también usa el protocolo de Diffie-Hellman para el intercambio de la llave, de hecho,
a diferencia de TLS en el que puede usar otro mecanismo de llave pública, en SSH el único
mecanismo especificado como obligatorio por el estándar es Diffie-Hellman.
En SSH también hay varios sub-protocolos:
Éste es un número primo de 1024 bits, 309 dı́gitos decimales. El generador que se utiliza es
2.
El catálogo de sistemas simétricos que especifica el estándar de SSH es [YKS+ 02]:
• Obligatoriamente 3DES.
• Opcionales: serpent, IDEA, algunos de los anteriores con otros tamaños de llave.
312 Sistemas Mixtos y Autentificación
Al igual que TLS, SSH también verifica la integridad de los datos. Para ello usa SHA.
Además provee de mecanismos de firmas digitales, para lo que se especifica como obligatorio
DSS y como recomendado RSA.
Cuando un usuario trata de hacer una conexión mediante SSH desde su máquina local
a alguna otra máquina en la que tiene cuenta, el protocolo de transporte se encarga de
validar al servidor. La primera vez que entran en contacto la máquina A y la máquina B
ejecutan Diffie-Hellman y se ponen de acuerdo en una llave, esta es almacenada para futuras
conexiones de tal forma que la próxima vez que A trate de hablar con B tratará de hacerlo
usando la llave en la que ya se habı́an puesto de acuerdo antes. Si esta llave fue borrada A
y B deben volver a ejecutar Diffie-Hellman para establecer una nueva. Una vez establecida
la llave de sesión el protocolo de autentificación de usuario entra en acción, se encarga de
verificar que el usuario de A es también un usuario legal de B. Una vez hecho esto es el
protocolo de conexión el que se encarga del resto de la comunicación cifrada entre A y B.
SSH es susceptible al ataque del intermediario. Si A quiere hablar con B y otro an-
fitrión C se interpone haciéndose pasar por B, basta con que finja que ha perdido la llave
de sesión en la que se habı́an puesto de acuerdo en el pasado A y B, entonces se pro-
cederá a determinar una nueva llave y ya. Cuando un anfitrión se pretende conectar con
otro con el que se ha conectado previamente y este dice desconocer la llave de sesión que
habı́an acordado, la versión 2 de SSH informa de esto al usuario que pretende conectarse y
le pregunta si realmente desea continuar con la conexión, es decir proceder a la ejecución
de Diffie-Hellman para determinar la nueva llave. En las versiones previas del protocolo el
usuario no era informado, simplemente se volvı́a a determinar la llave.
También TLS es susceptible al ataque del intermediario, a menos que tanto el cliente
como el servidor sean mutuamente autentificados. Por cierto esta es una opción de TLS,
de hecho se puede autentificar solo al servidor o al servidor y al cliente. en este caso debe
haber una autoridad de autentificación.
APÉNDICE
Los datos estadı́sticos elaborados por los autores fueron obtenidos con una muestra de
319,958 letras de texto literario y periodı́stico contemporáneo, en su mayorı́a escrito con el
uso del idioma en México. La tabla siguiente tiene la frecuencia absoluta y porcentual de
cada letra, incluyendo las vocales acentuadas y la Ñ.
314 Caracterı́sticas del Español
Índice de coincidencias (IC): 0.0694 (contando los 33 sı́mbolos como parte del alfabeto).
Usando un alfabeto de 26 letras (eliminando acentos, diéresis y considerando las Ñ como
igual a N) se obtiene:
Alfabetos IC
1 0.0744
2 0.0546
3 0.0495
4 0.0473
5 0.0439
6 0.0449
7 0.0423
8 0.0419
9 0.0415
10 0.0414
15 0.0395
20 0.0388
1. E, A
2. O, S
3. R, N, I, D
4. L, C, T, U
5. M, P
6. B, G, Y, V, Q, H, F, Z, J, X
7. K, W
También se dice que los textos de menos de 500 palabras son inadecuados para usar análisis
de frecuencias. No indica el tamaño de la muestra de la que se obtuvieron los datos mostra-
dos. El ı́ndice de coindicencias con estos datos serı́a 0.0755 (alfabeto de 26 letras) En [Nic]
se usan 60,115 de texto como muestra representativa y se obtienen gran cantidad de datos
que se muestran a continuación.
Índice de coincidencias1 de textos en español: 0.0747.
Frecuencias relativas.
Digramas (sobre una muestra de 60,115 letras) el renglón corresponde a la letra que se
encuentra a la izquierda en el digrama, la columna a la de la derecha.
318 Caracterı́sticas del Español
A B C D E F G H I J K L M
A 12 14 54 64 15 5 8 4 10 8 41 30
B 11 5 14 1 12
C 39 5 17 8 80 3
D 32 1 2 84 1 30
E 20 5 47 26 17 8 21 6 9 3 44 26
F 2 9 12 1
G 12 12 5 1
H 15 3 5
I 43 8 42 29 40 5 8 1 14 16
J 4 5
K 1
L 44 5 5 35 1 3 28 9 5
M 32 10 42 30
N 41 2 33 37 41 10 6 2 28 1 5 4
O 19 17 28 26 16 6 5 5 4 1 22 33
P 30 1 16 5 8
Q
R 74 1 12 10 94 1 12 45 1 1 6 15
S 32 2 18 15 57 3 2 4 41 1 5 7
T 60 1 67 35
U 13 6 11 5 52 1 3 9 9 6
V 12 1 15 15
W 1 1
X 1 4
Y 5 1 3 2 5 1 1 1 1
Z 6 1 1
A.2 Datos de otras fuentes 319
N O P Q R S T U V W X Y Z
A 64 4 24 5 81 62 18 9 9 11 4
B 5 12 2 1 3
C 69 6 13 18
D 1 59 2 1 3 1 6 1
E 126 5 23 4 94 119 17 5 10 1 8 2 3
F 7 4 5
G 2 15 11 1 11
H 6 1
I 50 67 4 1 16 27 24 1 8 5
J 3 3
K
L 1 17 5 1 2 4 5 5 3 1
M 15 10 6
N 3 43 10 2 4 21 91 12 6 1 1
O 104 4 29 7 58 73 12 3 5 2 9 1
P 31 34 1 3 19
Q 29
R 11 43 7 3 10 10 15 9 6 1 1
S 5 22 26 4 6 10 57 23 2 4
T 56 34 11
U 34 1 3 9 10 4 1 2
V 7
W 1
X 3 2
Y 1 5 2 1 1 3 1 1
Z 3 2
EN 126 ER 94 DE 84 RA 74 IO 67
ES 119 RE 94 AR 81 OS 73 TE 67
ON 104 NT 91 CI 80 CO 69 AN 64
AD 64 SE 57 IN 50 RO 43 AL 41
AS 62 ST 57 EC 47 NO 43 SI 41
TA 60 TO 56 RI 45 IA 43 NE 41
DO 59 AC 54 EL 44 IC 42 NA 41
OR 58 UE 52 LA 44 ME 42 IE 40
CA 39 OM 33 PA 30 NI 28 AP 24 NS 21 EE 17
ND 37 NC 33 AD 30 OC 28 IT 24 EA 20 OB 17
TI 35 DA 32 DI 30 IS 27 EP 23 OA 19 CE 17
LE 35 MA 32 ID 29 EM 26 SU 23 PU 19 ET 17
TR 34 SA 32 QU 29 SP 26 SO 22 SC 18 LO 17
UN 34 PO 31 OP 29 ED 26 OL 22 AT 18
PR 34 MI 30 LI 28 OD 26 EG 22 CU 18
EN 126 NE 41 CI 80 IC 42 AC 54 CA 39
ES 119 SE 57 AN 64 NA 41 LA 44 AL 41
ON 104 NO 43 AD 64 DA 32 EL 44 LE 35
ER 94 RE 94 AS 62 SA 32 MA 32 AM 30
AR 81 RA 74 OR 58 RO 43
NT 91 TN 0 ND 37 DN 1
IO 67 OI 4 NC 33 CN 0
ST 57 TS 0
Letras dobles.
EE 17 RR 10 LL 9 OO 4 DD 2
AA 12 SS 10 CC 5 NN 3
ENT 596 ARA 229 POR 176 OSE 147 ERO 131 NDE 121 PER 111
ION 564 ONE 227 TER 174 ONS 144 ONT 131 RAN 121 ASE 109
CIO 502 ESE 202 ODE 168 REC 144 ANA 130 STE 119 CAN 109
NTE 429 ADE 293 ERE 166 ORE 143 ARE 129 REN 118 UNI 108
CON 415 PAR 190 ERA 165 OCO 142 UNT 127 ARI 117 OSI 107
EST 355 CIA 190 TRA 165 EDE 141 ANO 127 TEN 116 GEN 105
RES 335 ENC 188 AME 165 ICI 140 TAR 126 OND 115 NCO 105
ADO 307 NCI 184 ERI 163 END 139 ANT 126 RIA 115 RIO 105
QUE 294 PRE 183 MER 162 SEN 139 ESA 126 ECI 114 ERN 104
ACI 277 DEL 183 ELA 159 TAD 138 IER 125 IST 113 OMI 104
NTO 270 NDO 183 PRO 158 ECO 135 ADA 125 ONA 113 SCO 104
IEM 267 NES 183 ACO 155 STR 134 DEN 124 DAD 112 TES 103
COM 246 DOS 182 ENE 153 TOS 133 AND 123 INT 112 BIE 101
ICA 242 MEN 181 UES 151 IDA 132 DES 121 NTR 112 NTI 100
STA 240 NTA 176 ESP 149 SDE 132 IDO 121 ESI 111 TOR 100
En este apéndice vamos a hablar de curvas elı́pticas, que en años recientes se han vuelto
una herramienta importante en criptologı́a; por un lado tenemos la idea de utilizar curvas
elı́pticas como base de criptosistemas, propuesta independientemente por Koblitz y Miller;
y por otro lado tenemos el uso de curvas elı́pticas para resolver problemas asociados a
criptosistemas de llave pública, como el algoritmo de factorización de Lenstra, y algoritmos
para encontrar logaritmos discretos.
Vamos a empezar con una breve introducción con definiciones y propiedades generales.
Después vamos a hablar de algunos criptosistemas que se basan en curvas elı́pticas. Y
finalmente vamos a describir el algoritmo de Lenstra para factorizar usando curvas elı́pticas.
324 Curvas Elı́pticas
Estas integrales toman varios valores sobre los números complejos, y sólo están bien
definidas módulo una retı́cula periódica. Uno puede entonces considerar que los valores
que toma una integral elı́ptica se encuentran en un toro. La función ‘inversa’ de una
integral elı́ptica es una función doblemente periódica llamada una función elı́ptica. De
hecho, cualquier función meromórfica doblemente periódica sobre los números complejos es
la inversa de una integral elı́ptica.
Resulta que toda función doblemente periódica P cuyos periodos son independientes
sobre R satisface una ecuación de la forma
P0 = 4P3 − g2 P − g3 ,
para ciertas constantes g2 y g3 . Una función P que satisface estas condiciones se llama una
función P de Weiestrass. Si consideramos la pareja (P, P0 ) como un punto en el espacio,
la ecuación nos da una función del toro a la curva
Y 2 = 4X 3 − g2 X − g3 .
y 2 = x3 + ax + b, (B.1.1)
y 2 + cy = x3 + ax + b (B.1.2)
y 2 + xy = x3 + ax2 + b, (B.1.3)
y donde no nos importa si el polinomio de grado tres tiene raı́ces múltiples o no; mas un
“punto al infinito” O.
y 2 = x3 + ax2 + bx + c (B.1.4)
mas un “punto al infinito” O, y donde no nos importa si el polinomio de grado tres tiene
raı́ces múltiples o no.
Definición B.4 Sea E una curva elı́ptica sobre los reales, y sean P y Q does puntos de E.
Definimos el negativo de P y la suma P + Q de acuerdo a las siguientes reglas:
326 Curvas Elı́pticas
Q
P
P+Q
y 2= x 3 − x
2. El negativo −P es el punto que tiene la misma coordenada x que P , y que tiene por
coordenada y el negativo de la coordenada y de P . Es decir, −(x, y) = (x, −y). De la
ecuación B.1.1, es claro que si (x, y) está en E, (x, −y) también lo está.
La figura presenta el caso tı́pico de una suma de dos puntos P y Q. Para encontrar
P + Q, trazamos la cuerda que pasa por P y Q, y P + Q es el reflejo a lo largo del eje X
del tercer punto de intersección. Si P y Q son el mismo punto, trazamos la tangente en P ,
y 2P es el reflejo a lo largo del eje X del tercer punto de intersección de la tangente con la
curva.
y2 − y1 2
x3 = − x1 − x2 ; (B.1.5)
x2 − x1
y2 − y1
y3 = −y1 + (x1 − x3 ).
x2 − x1
Con estas fórmulas, no es dificil probar que la suma es asociativa y los puntos de la
curva se convierten en un grupo abeliano; se puede probar con geometrı́a proyectiva, o un
argumento de análisis complejo, o un argumento de geometrı́a algebráica.
En el caso de geometrı́a proyectiva, podemos considerar el punto al infinito O como el
punto en la recta al infinito en la dirección vertical, y todo funciona perfectamente.
Las fórmulas (B.1.5) y (B.1.6) tienen sentido en cualquier campo (si el campo tiene
caracterı́stica 2 ó 3, uno puede derivar ecuaciones similares a partir de la ecuación general
(B.1.2), (B.1.3), o (B.1.4)). Se puede demostrar que las fórmulas dan un grupo abeliano
para los puntos de una curva elı́ptica sobre cualquier campo.
328 Curvas Elı́pticas
En particular, sea E una curva elı́ptica definida sobre el campo C de los números com-
plejos. Entonces E es el conjunto de parejas (x, y) de números complejos que satisfacen una
ecuación
y 2 = x3 + ax + b
P02 = P3 + aP + b;
y 2 = x3 + ax + b
B.1 Definiciones y propiedades básicas 329
con a, b ∈ Q, es natural buscar soluciones (x, y) con x, y ∈ Q. Hay una teorı́a muy grande
sobre curvas elı́pticas sobre los racionales; por ejemplo, notemos que las fórmulas para sumar
puntos garantizan que la suma de dos puntos con coordenadas racionales vuelve a ser un
racional (o el punto al finfinito).
Se sabe que el grupo abeliano de puntos de una curva elı́ptica sobre Q es finitamente
generado (el Teorema de Mordell). Esto quiere decir que consiste de un subgrupo finito,
llamado el “grupo de torsión” (los elementos de orden finito), y un subgrupo generado por
un número finito de puntos de orden infinito; es decir, copias del grupo cı́clico infinito. El
número de generadores que se necesitan para la parte infinita se llama el rango r de la curva;
vale cero si y sólo si el grupo completo es finito. El estudio del rango r y otras propiedades
del grupo de una curva elı́ptica sobre Q están relacionados con muchas preguntas de teorı́a
de números y geomtrı́a algebráica. Por ejemplo, una pregunta de los antiguos griegos:
“Dado un entero positivo n, ¿es mayor que cero el rango de la curva elı́ptica
y 2 = x3 − n2 x sobre Q?”
El orden N de un punto P en una curva elı́ptica es el menor entero positivo tal que
N P = O; tal número N puede no existir. En muchos casos, particularmente en el caso de
curvas elı́pticas sobre Q, hay puntos que son de orden infinito, para los cuales N no existe.
Además de saber cuántos puntos N tiene la curva, también nos gustarı́a saber la estruc-
tura del grupo abeliano. El grupo abeliano no tiene que ser cı́clico, pero se puede demostrar
que siempre es el producto de a lo mucho dos grupos cı́clico. Es decir, es isomorfo al
producto de grupos p-primarios, cada uno de la forma forma
Z Z
×
pα Z pβ Z
Si tenemos una curva elı́ptica E definida sobre Fq (es decir, los coeficientes de la ecuación
están en Fq ), entonces también está definida sobre Fqr para r = 1, 2, . . ., y por lo tanto tiene
sentido hablar de los puntos con coordenadas en Fqr , es decir, soluciones a la ecuación es
éstas extensiones del campo. Si empezamos con Fq como nuestro campo sobre el cual E
está definida, sea Nr el número de puntos con coordenadas en Fqr de E (de manera que
N1 = N ).
Usando los números Nr , uno puede definir una “serie generadora” Z(T ; E/Fq ), que es
una serie formal en Q[[T ]], dada por
Nr T r /r
P
Z(T ; E/Fq ) = e , (B.1.7)
B.2 Criptosistemas de curvas elı́pticas 331
1 − aT + qT 2
Z(T ; E/Fq ) = , (B.1.8)
(1 − T )(1 − qT )
donde sólo el entero a depende de la curva elı́ptica particular E. El valor de a está rela-
cionado a N = N1 de la siguiente forma: N = q + 1 − a. Además, el discriminante del
polinomio cuadrático en el numerador es negativo (i.e., a2 < 4q, que es el Teorema de
Hasse), y por lo tanto el polinomio cuadrático tiene dos raı́ces conjugadas complejas α y β,
√
ambos de valor absoluto q; más precisamente, 1/α y 1/β son las raı́ces, y α, β son las
“raı́ces recı́procas.”
Hay muchas analogı́as entre el grupo de puntos de una curva elı́ptica definidos sobre Fq
y el grupo multiplicativeo (Fq )∗ . Por ejemplo, tienen aproximadamente el mismo número
de elementos, por el Teorema de Hasse. Pero el grupo de puntos de una curva elı́ptica tiene
una ventaja que explica su utilidad para criptografı́a: para una misma q (relativamente
grande), hay muchas curvas elı́pticas de donde escoger, y muchas N correspondientes. Las
curvas elı́pticas dan entonces una gran cantidad de grupos abelianos finitos “naturales.”
Ya vimos cómo usar el grupo abeliano finito F∗q para crear criptosistemas de llave pública.
Para ser más precisos, vimos que resolver el problema del logaritmo discreto en campos
finitos es dificil, y eso nos llevó a considerar ciertos criptosistemas. Vamos ahora a construir
criptosistemas de llave pública análogos, usando ahora el grupo finito abeliano de puntos
de una curva elı́ptica E definida sobre Fq .
332 Curvas Elı́pticas
El análogo a multipicar dos elementos de F∗q para una curva elı́ptica E es sumar dos
puntos de E. Entonces, el análogo a tomar α ∈ F∗q y tomar αk serı́a tomar un punto
P ∈ E y tomar kP , P sumado consigo mismo k veces. Para elevar un elemento a la k-ésima
potencia en un campo finito podemos usar el método de elevar al cuadrado y multiplicar,
lo cual nos da un algoritmo de O(log(k) log3 (q)) operaciones de bits. De manera similar,
calcular kP ∈ E se puede hacer en O(log(k) log3 (q)) con un método semejante, de “duplica
y suma.”
Por ejemplo, para calcular 100P , podemos calcular
Para poder usar curvas elı́pticas como criptosistemas, tenemos que poder codificar nues-
tros textos como si fueran puntos en una curva elı́ptica dada E sobre un campo finito
Fq . Queremos hacerlo de alguna manera sistemática, para que dado un texto m (que
podemos pensar se trata de un entero en un rango conocido, como lo hacı́amos con los
criptosistemas de llave pública), sea posible determinar cuáles son las coordenadas del punto
Pm correspondiente. Nótese que ésta codificación no es un cifrado; después vamos a hablar
de maneras mediante las cuales podemos cifrar el punto Pm . Pero necesitamos alguna
manera en la cual un usuario autorizado pueda recuperar m una vez de descifra el texto y
obtiene el punto Pm .
Hay dos cosas que hay que decir. En primer lugar, no se conoce ningún algoritmo de
tiempo polinomial (en log(q)) que sea determinı́stico para encontrar un número grande de
puntos en una curva elı́ptica arbitraria E sobre Fq . Sin embargo, hay algoritmos probabi-
lı́sticos para los cuáles la probabilidad de fracaso es muy pequeña. En segundo lugar, no
basta con generar muchos puntos aleatorios de E: para poder codificar un gran número
de posibles mensajes m, necesitamos una manera sistemática de generar puntos que esté
relacionada de alguna manera a m, por ejemplo, tales que la coordenada x esté relacionada
de alguna manera sencilla con el entero m.
Damos un ejemplo de un algoritmo probabilı́stico para codificar textos como puntos en
una curva elı́ptica E definida sobre Fq . Sea κ un entero suficientemente grande para que
estemos satisfechos si la probabilidad de fracaso del algoritmo es 1 en 2κ ; normalmente
κ = 30 basta, κ = 50 en casos extremos. Supongamos que nuestras unidades de mensaje m
son enteros 0 ≤ m < M . Y suponemos que nuestro campo finito Fq se elige de tal manera
B.2 Criptosistemas de curvas elı́pticas 333
y 2 = f (x) = x3 + ax + b
y buscamos una raı́z cuadrada de f (x). Si encontramos tal y, con y 2 = f (x), tomamos
Pm = (x, y). Si f (x) no tiene raı́z cuadrada, entonces sustituı́mos j por j + 1 y volvemos a
tratar de encontrar la x y y correspondiente. Siempre que podamos encontrar una x tal que
f (x) es un cuadrado antes de que j crezca más allá de κ, podemos recuperar m del punto
(x, y) mediante la fórmula m = b(x̃ − 1)/κc, donde x̃ es el entero que corresponde a x bajo
la correspondencia con elementos de Fq . Como f (x) es un cuadrado para aproximadamente
la mitad de los posibles valores de x, la probabilidad de que el método falle es 2−κ .
Es probable que el Problema del Logaritmo Discreto en curvas elı́pticas sea más dificil
que el Problema del Logaritmo Discreto en campos finitos. Las técnicas más poderosas para
campos finitos, el cálculo de ı́ndices, no parece tener un buen análogo para curvas elı́pticas;
en particular, la relativa facilidad del Problema del Logaritmo Discreto para campos de
caracterı́stica 2 no parece aplicarse para curvas elı́pticas definidas sobre F2r . Es decir, si
bien para tener una garantı́a de seguridad para logaritmo dsicreto en F2r se requiere de una
r relativamente grande, parece ser que el problema análogo para curvas elı́pticas requiere
de una r sustancialmente más pequeña para alcanzar el mismo grado de seguridad.
Hasta 1990, los únicos algoritmos que se conocı́an para calcular logaritmo discreto en una
curva elı́ptica eran aquellos que funcionan en cualquier grupo abeliano. Estos algoritmos
son de tiempo exponencial cuando el orden del grupo es divisible por algún primo grando.
Pero en 1990 Menezes, Okamoto, y Vanstone dieron un nuevo ataque al problema para
334 Curvas Elı́pticas
curvas elı́pticas definidas sobre Fq . Usaron el aparamiento de Weil1 para inyectar el grupo
E al grupo multiplicative de una extensión Fqk de Fq . Esta inyección reduce el Problema
de Logaritmo Discreto de E al Problema del Logaritmo Discreto para F∗qk . Nótese que la
complejidad aumenta al pasar de Fq a Fqk .
Sin embargo, para que la reducción mediante el apareamiento de Weil ayude, es necesario
que el grado de la extensión, es decir k, sea pequeño. Pero las únicas curvas elı́pticas para las
cuales k es pequeño son las curvas llamadas “supersingulares.” Los ejemplos más familiares
de ellas son curvas de la forma y 2 = x3 +ax cuando la caracterı́stica p de Fq satisface p ≡ −1
(mod 4); y las curvas de la forma xy 2 = x3 + b con p ≡ −1 (mod 3). La gran mayorı́a
de las curvas elı́pticas, sin embargo, no son supersingulares, y para ellas la reducción de
Menezes, Okamoto, y Vanstone, casi nunca llevan a un algoritmo subexponencial.
Entonces, si evitamos las curvas supersingulares (lo cuál es fácil de hacer), no se conoce
ningún algoritmo subexponencial que resuelva el Problema de Logaritmo Discreto para
curvas elı́pticas.
Como en el caso de campos finitos, este criptosistema se usa para transmitir un men-
saje m, que asumimos que ya tenemos codificados como un punto Pm en alguna curva elı́ptica
E que está fija, y que se conoce públicamente. También asumimos que N , el número de
puntos de E, se ha calculado y se conoce públicamente.
Cada usuario del sistema elige secretamente un entero e entre 1 y N tal que (e, N ) = 1,
y usa el algoritmo de Euclides para calcular su inverso, d ≡ e−1 (mod N ), es decir, el
entero d, 1 ≤ d < N tal que de ≡ 1 (mod N ). Si A le quiere enviar el mensaje Pm a B,
primero le envı́a el punto eA Pm (donde el subı́ndice A denota que se trata de la llave de A).
Esto no le dice nada a B, que no conoce dA , eA , ni Pm . Sin tratar de entender el mensaje,
B multiplica por su llave eB y le manda eB eA Pm de regreso a A. Entonces A multiplica
por dA y envı́a dA eB eA Pm de regreso a B. Como N Pm = O, y dA eA ≡ 1 (mod N ), el
resultado de esta operación es envı́ar eB Pm a B. Entonces B multiplica por dB y obtiene
dB eB Pm = Pm , y el mensaje que se buscaba.
El criptoanalista conoce entonces eA Pm , eB eA Pm , y eB Pm . Si pudiera resolver el prob-
lema del logaritmo discreto, podrı́a recuperar el valor de eB de los primeros dos puntos,
y usarlo para calcular dB ; luego le aplica dB al último punto para obtener Pm . Pero el
Problema del Logaritmo Discreto es intratable en esta situación.
Hay varias maneras de elegir la curva elı́ptica E que se va a usar, y para el caso de
Diffie-Hellman y ElGamal, el punto B que servirá de base.
Elección aleatoria
Una vez que hemos elegido el campo finito Fq , con q grande, podemos elegir tanto E
como B = (x, y) ∈ E al mismo tiempo de la siguiente manera2 : Sean x, y, a tres elementos
arbitrarios de F + q. Luego definimos b = y 2 − (x3 + ax). Verificamos que la cúbica
x3 + ax + b no tenga raı́ces múltiples, que es equivalente a verificar que el discriminante
4a3 + 27b2 6= 0 en Fq ; si el discriminante es cero, hacemos una nueva elección aleatoria de
x, y, a. Si el discriminante es distinto de cero, tomamos B = (x, y) y E la curva dada por
y 2 = x3 + ax + b.
Si necesitamos saber el valor de N , el número de puntos de E, hay varias técnicas para
calcularlo. El primer algoritmo de tiempo polinomial para calcular #E fue descubierto por
René Shoof, y es determinı́stico. Consiste en contrar el valor de #E módulo ` para todo
primo ` menor o igual a cierta cota. Esto se puede hacer examinando la acción del mapa
de Frobenius en los puntos de orden ` de E; el mapa de Frobenus manda a cada elemento
x ∈ Fq a xp . El algoritmo es suficientemente rápido para que si q es un entero de entre 50
y 100 dı́gitos decimales, el algoritmo se puede aplicar.
Vale la pena mencionar que si bien no es necesario conocer el valor de N para el in-
tercambio de Diffie-Hellman o para el sistema de ElGamal, muchas veces uno quiere tener
una buena medida de la seguridad del sistema, y ésta depende de que N tenga un factor
primo grande (para que los algoritmos generales de logaritmo discreto no sean aplicables en
tiempo subexponencial).
2
Asumimos que la caracterı́stica del campo es mayor a 3; uno hace la obvia modificación al método si
q = 2r ó q = 3r , usando la ecuación correcta.
B.2 Criptosistemas de curvas elı́pticas 337
sea un primo. Si usamos el segundo método, entonces dado un punto B fijo sobre una curva
elı́ptica global fija E definida sobre Q, escogemos primos p hasta encontrar uno donde el
número de puntos de E mod p sea un primo. ¿Qué tanto vamos a tener que esperar hasta
encontrar una pareja que satisfaga las condiciones?
La pregunta de cuánto tenemos que esperar está relacionada con la siguiente pregunta
sobre los grupos F∗p : ¿Es (p − 1)/2 un primo? Es decir, ¿es cierto que cualquier elemento
de F∗p que no sea 1 ni −1 es un generador, o el cuadrado de un generador, de F∗p ? Ni la
respuesta para el caso de curvas elı́pticas, ni las respuesta para el caso de campos finitos se
conoce de manera definitiva. Pero se conjetura que en ambos casos la probabilidad de que
un p elegido tenga la propiedad deseada es aproximadamente O(1/ log(p)).
Nótese que para que el orden de E mod p tenga la posiblidad de ser un número primo
N para p >> 0, debemos elegir E de tal manera que tenga torsión trivial; es decir, que el
grupo de puntos no tenga ningún punto distinto de O de orden finito. De lo contrario, N
siempre es divisible entre el orden del subgrupo de torsión de E.
Por el resto de ésta sección, sea n un entero impar compuesto, y sea p un factor (descono-
cido) de n. Vamos a suponer que p > 3 (podemos verificar el caso de p = 3 directamente).
Para cualquier entero m, y cualesquiera dos racionales x1 y x2 cuyos denominadores son
primos relativos a m, escribimos x1 ≡ x2 (mod m) si y sólo si x1 − x2 , escrito en mı́nimos
términos, es un racional cuyo numerador es divisible entre m. Para cualquier racional x1
cuyo denominador es primo relativo a m, existe un único entero x2 , llamado el mı́nimo
residuo no negativo, 0 ≤ x2 ≤ m − 1, tal que x1 ≡ x2 (mod m). A veces escribimos
B.3 Factorización de enteros por curvas elı́pticas 339
Proposición B.1 Sea E una curva elı́ptica sobre Q con ecuación y 2 = x3 + ax + b, donde
a, b ∈ Z y (4a4 + 27b2 , n) = 1. Sean P1 y P2 dos puntos de E cuyas coordenadas tienen
denominadores que son primos relativos con n, y donde P1 6= −P2 . Entonces P1 + P2 ∈ E
tiene coordenadas cuyos denominadores son primos relativos con n si y sólo si no existe
ningún primo p, p|n, con la siguiente propiedad: los puntos P1 mod p y P2 mod p en la
curva elı́ptica E mod p tienen como suma el punto O mod p ∈ E mod p.
B.3.3 El algoritmo
Sea n un entero impar positivo, compusto. Supongamos que tenemos un método para
generar pares (E, P ) de curvas elı́pticas E: y 2 = x3 + ax + b con a, b ∈ Z, y un punto
P = (x, y) ∈ E. Dado un par como éste, hacemos el proceso que describimos a continuación.
Si el proceso fracasa y no entrega un factor propio de n, generamos un nuevo par (E, P ) y
repetimos el proceso.
Antes de empezar a trabajar con nuestra E módulo n, verificamos que es una curva
elı́ptica módulo cualquier p|n; esto sucede si y sólo si el discriminante 4a3 + 27b2 es primo
relativo con n. Si (4a3 + 27b2 , n) = 1, procedemos. De lo contrario, si el máximo común
divisor está entre 1 y n, hemos encontrado un factor propio de n y terminamos. Si el
máximo común divisor es igual a n, elegimos una nueva curva y punto.
Después, suponemos que hemos elegido dos cotas, enteros positivos B y C. La cota B es
la cota de homogeneidad para los divisores de k. Si B es grande, hay una gran probabilidad
de que nuestra pareja (E, P ) tenga la propiedad de que kP mod p = O mod p para alguna
p|n; por otro lado, entre más grande sea B más tiempo nos lleva calcular kP mod n. Ası́ que
B se debe elegir de alguna manera en que estimamos se minimice el tiempo que nos lleva
B.3 Factorización de enteros por curvas elı́pticas 341
correr el algoritmo. La cota C es, en términos generales, una cota de los divisores primos
p|n para los cuales tenemos probabilidad de encontrar una relación kP mod p = O mod p.
Después definimos k por la fórmula B.3.9; es decir, k es el producto de todas las potencias
menores o iguales a C de todos los primos menores o iguales a B. El Teorema de Hasse nos
√
dice que si p es un primo tal que p + 1 + 2 p < C y el orden de E mod p no es divisible entre
ningún primo mayor que B, entonces k es un múltiplo de éste orden, y kP mod p = O mod p.
B.3.4 Complejidad
El principal problema para calcular la complejidad del algoritmo es calcular, para una
p fija y una elección dada de B, la probabilidad de que una curva elı́ptica elegida aleatori-
amente, tenga orden N al reducir módulo p, y N no sea divisible por ningún primo mayor
que B. Es decir, que N sea B-homogéneo.
Los ordenes N de las curvas elı́pticas módulo p están distribuidas de manera razonable-
mente uniforme en el intervalo
√ √
p + 1 − 2 p ≤ N ≤ p + 1 + 2 p.
2. Por ello, puede ser usado en combinación con otros métodos para factorizar.
an an−1 ... a0
a n an−1 . . . a 0
..
.
an an−1 . . . a 0
R(f, g) = .
bm bm−1 . . . b0
bm bm−1 . . . b0
.
..
bm bm−1 . . . b0
En esta matriz, repetimos m veces los coeficientes de f (x), y n veces los de g(x). Los
espacios en blanco en la representación de arriba llevan ceros.
Si las raı́ces de f (x) son t1 , . . . , tn , y las raı́ces de g(x) son u1 , . . . , um , entonces se puede
probar que
Yn Y m
R(f, g) = am bn
n m · (ti − uj ).
i=1 j=1
Por lo tanto, f (x) y g(x) tienen al menos una raı́z común si y sólo si R(f, g) = 0.
Si empezamos con dos polinomios en dos variables, f (x, y), g(x, y), entonces podemos
considerarlos como polinomios en x y calcular el resultante, Rx (f, g); en éste caso, Rx (f, g)
será un polinomio en la variable y; las raı́ces de éste polinomio indican los valores de y para
los cuáles existe una x tal que (x, y) es raı́z común para f y g.
APÉNDICE
1 1
ζ(s) = 1 + s
+ s + ···
2 3
∞
X 1
=
ns
n=1
346 Algunas Conjeturas de Teorı́a de Números
Y 1
= .
1 − ps
p primo
Esta función está definida para toda s ∈ C, con Re(s) > 1; la continuación analı́tica está
definida en el plano.
La función zeta de Riemman fue introducida por éste como una herramienta para probar
el Teorema de los Números Primos, conjeturado por Gauss; a saber, que
π(x)
lim = 1,
x→∞ x/ log(x)
rad(n) = p1 p2 · · · pr .
Notemos que en este caso, tenemos que rad(ABC) > C. De hecho, en casi todos los
ejemplos que tomemos, tenemos que rad(ABC)/C > 1. Pero de vez en cuando, sucede que
ésto no es cierto. Por ejemplo, si A = 1, B = 8, y C = 9, entonces
De hecho, Masser probó que, eligiendo A y B con cuidado, podemos tener rad(ABC)/C
tan pequeño como se quiera. Es decir:
Conjetura D.2 (Conjetura ABC; Oesterlé y Masser) Si > 0, entonces los valores
de
(rad(ABC))1+
C
tomados sobre todos los tripletes de enteros positivos (A, B, C) tales que A y B son primos
relativos y A + B = C, tienen mı́nimo estrictamente positivo. Es decir: para toda ε > 0,
existe una constante cε > 0 tal que para todos enteros positivos A, B, y C que satisfacen
A + B = C y (A, B) = 1,
1+ε
C ≤ cε rad(ABC) .
348 Algunas Conjeturas de Teorı́a de Números
Sea p un primo, p > 2. Queremos saber cuáles de los elementos distintos de cero,
{1, 2, . . . , p − 1} de Fp son cuadrados. Si alguna a ∈ F∗p es un cuadrado, digamos b2 = a,
entonces a tiene exactamente dos raı́ces cuadradas: b y −b, pues la ecuación x2 −a = 0 tiene
a lo mucho dos soluciones en el campo. Entonces, los cuadrados de F∗p se pueden encontrar
calculando todos los valores b2 mod p, para b = 1, 2, . . . , (p − 1)/2, y exactamente la mitad
de los elementos de F∗p son cuadrados.
Definición E.1 Los cuadrados en F∗p son llamados residuos cuadráticos módulo p. El
resto de los elementos se llaman residuos no cuadráticos módulo p. Si no hay peligro
de confusión, omitiremos el “módulo p.”
Proposición E.1
a
≡ a(p−1)/2 (mod p).
p
Como ambos son primos, y los dos son congruentes con 3 módulo 4, tenemos que
7411 9283
=− .
9283 7411
Podemos reemplazar 9283 por su residuo módulo 7411, que es 1872. De manera que
7411 1872
=− .
9283 7411
1872 = 24 × 32 × 13,
de manera que
24
2
7411 1872 3 13
=− =− · · .
9283 7411 7411 7411 7411
Los dos primeros sı́mbolos de Legendre valen 1, pues 24 y 32 son cuadrados en los enteros.
Por lo tanto,
7411 13
=− .
9283 7411
13
= 7411
Como 13 ≡ 1 (mod 4), tenemos que 7411 13 ; reemplazamos 7411 por su residuo
módulo 13, que es 1, y tenemos que
7411 1
=− = −1.
9283 13
La única dificultad en el proceso anterior es que en cada paso tenemos que factorizar
el “numerador” (aunque éste siempre se puede tomar más pequeño que el “denominador”).
Afortunadamente, hay una generalización de reciprocidad cuadrática que permite realizar
el cálculo sin factorizar (excepto por los factores de 2, que son muy fáciles de obtener).
Definición E.3 Sea a un entero, y n un entero positivo impar. Escribimos n = pα1 1 · · · pαr r ,
su factorización en primos distintos, con αi > 0 para cada i. Definimos el sı́mbolo de
E.3 El sı́mbolo de Jacobi 353
a
Jacobi n como el producto de los sı́mbolos de Legendre de los factores primos de n; es
decir: a a α1 αr
a
= ··· .
n p1 pr
Proposición E.4 Sean m y n dos enteros positivos impares, a, b dos enteros cualesquiera.
3. ab a
b
n = n n .
a a a
4. mn = m n .
2
5. Para todo entero b, primo relativo con n, abn = na .
Proposición E.5 (Caracter cuadrático de −1) Para todo entero positivo impar n,
−1
= (−1)(n−1)/2 .
n
Teorema E.2 (Reciprocidad Cuadrática) Para cualesquiera dos enteros positivos im-
pares m y n, m n
= (−1)(m−1)(n−1)/4 .
n m
En particular, (
n
m − m , si m ≡ n ≡ 3 (mod 4),
= n
n m en otro caso.
Ejemplo E.2 Ahora podemos hacer el cálculo anterior sin tener que factorizar ni verificar
si los dos valores son primos. Sólo tenemos que “sacar” el factor de 24 de 1872:
7411 9283
= −
9283 7411
1872
= −
7411
16 117
= −
7411 7411
7411
= −
117
40
= −
117
8 5
= −
117 117
2 117
= −
117 5
117
=
5
2
=
5
= −1.
43691 65537
=
65537 43691
E.4 Complejidad del algoritmo 355
21846
=
43691
2 10923
=
43691 43691
10923
= −
43691
43691
=
10923
10922
=
10923
−1
=
10923
= −1.
Calcular el valor de na , donde n es un entero positivo impar (ya sea primo o no) lleva
[Bon99] Dan Boneh. Twenty years of attacks on the RSA cryptosystem. Notices of the
AMS, 46(2):203–213, 1999.
[BS91] Eli Biham and Adi Shamir. Differential cryptanalysis of DES-like cryptosys-
tems (extended abstract). In A. J. Menezes and S. A. Vanstone, editors, Ad-
vances in Cryptology–CRYPTO ’90, number 537 in Lecture Notes in Computer
Science, pages 2–21. Springer-Verlag, 1991.
[BS93a] Eli Biham and Adi Shamir. Differential cryptanalysis of the full 16-round DES.
In Ernest F. Brickell, editor, Advances in Cryptology–CRYPTO ’92, number
740 in Lecture Notes in Computer Science, pages 487–496. Springer-Verlag,
1993.
358 BIBLIOGRAFÍA
[BS93b] Eli Biham and Adi Shamir. Differential Cryptoanalysis of the Data Encryption
Standard. Springer-Verlag, 1993.
[BSS99] Ian Blake, Gadiel Seroussi, and Nigel Smart. Elliptic Curves in Cryptography.
Number 256 in LMS Lecture Note Series. Cambridge University Press, 1999.
MR 2001i:94048.
[BW00] David Bressoud and Stan Wagon. A Course in Computational Number Theory.
Springer-Verlag, 2000.
[CW93] K.W. Campbell and M.J. Wiener. DES is not a group. In Ernest F. Brickell,
editor, Advances in Cryptology – CRYPTO ’92 Proceedings, volume 740 of
Lecture Notes in Computer Science, pages 280–291. Springer-Verlag, 1993.
MR 95b:94001.
[DH76] Whitfield Diffie and Martin E. Hellman. New directions in cryptography. IEEE
Trans. Information Theory, IT-22(6):644–654, 1976. MR 55 #10141.
[Fei73] Horst Feistel. Cryptography and computer privacy. Scientific American, pages
15–23, May 1973.
[Kob94] Neal Koblitz. A Course in Number Theory and Cryptography. Number 114 in
GTM. Springer-Verlag, second edition, 1994. MR 95h:94023.
[Len87] H.W. Lenstra, Jr. Factoring integers with elliptic curves. Annals of Math.,
126:649–673, 1987. MR 89g:11125.
[LL93] A.K. Lenstra and H.W. Lenstra, Jr., editors. The development of the number
field sieve, volume 1554 of Lecture Notes in Mathematics. Springer-Verlag,
1993. MR 96m:11116.
[Mat94] Mitsuru Matsui. Linear cryptanalysis method for DES cipher. In Tor Helleseth,
editor, Advances in Cryptology–EUROCRYPT ’93, number 765 in Lecture
Notes in Computer Science, pages 386–397. Springer-Verlag, 1994.
[Mat95] Mitsuri Matsui. On correlation between the order of S-boxes and the strength
of DES. In Alfredo de Santis, editor, Advances in Cryptology–EUROCRYPT
’94, number 950 in Lecture Notes in Computer Science, pages 366–375.
Springer-Verlag, 1995.
[Pom96] Carl Pomerance. A tale of two sieves. Notices of the AMS, 43(12):1473–1485,
1996. MR 97f:11100.
[Sch96] Bruce Schneier. Applied Cryptography. John Wiley & Sons, second edition,
1996.
[Sin99] Simon Singh. The Code Book: The Evolution of Secrecy from Mary, Queen of
Scots to Quantum Cryptography. Doubleday, 1999.
[Wil01] Jennifer E. Wilcox. Solving the Enigma: History of the Cryptanalytic Bombe.
National Security Agency, 2001.
[YKS+ 02] T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen. SSH Transport
Layer Protocol. Network working Group, Internet Engineering Task Force
(IETF), 2002. http://www.ietf.org/internet-drafts/.