Edgar Allan Poe, que además de escritor era criptoanalista, pensaba que no podía haber un método de cifrado, creado por el hombre, que no pudiese resolverse. Pero estaba equivocado aunque para ello debieron de pasar muchos años para demostralo. Y aunque hemos visto métodos de cifrado variados, los cuales todos se pueden descifrar, hay uno que simplemente es imposible, pero tiene tantas dificultades prácticas que no se usa realmente.
A este método se le llama el de la “libreta de un solo uso” o one time pad cipher. El texto a cifrar se combina con una llave, la cual es aleatoria totalmente y que no se reutiliza. Fue Gilbert Vernam (1890-1960) quien diseñó un cifrado que se denominó “de flujo”, en el que el texto a cifrar se combina vía la operación binaria XOR con un flujo de datos al azar (o pseudoaleatorio). Joseph Mauborgne, por su parte, fue quien propuso que se tuviese información de la clave aleatoria en una cinta de papel. Así, el método era muchísimo más seguro.
Pero fue Claude Shannon (1916-2001) quien demostró que este método era indescifrable, publicando sus hallazgos en el Bell System Technical Journal 1948/49. De hecho, es el único método de cifrado que ha demostrado ser inviolable. Shannon llamó a esto “el secreto perfecto”.
El problema es que, aunque el método no es descifrable por un tercero, se requiere de tener libretas aleatorias de un solo uso, además, la clave debe ser tan larga como el mensaje. Así, si se quiere mandar un mensaje cifrado de esta manera, también hay que mandarle –por algún medio– la llave única, que sólo se usará una vez. Una vez que quien debe recibir el mensaje lo descifra con el cuaderno de claves, debe destruirlo. Por ello, probablemente, no sea un esquema útil en la práctica, pues representa un número de problemas que muchas veces no tienen solución, sobre todo cuando se habla de conflictos militares.
¿Cómo se cifra un mensaje con este método?
Una persona A quiere mandar un mensaje a una persona B. Para ello, ya ambos tienen una libreta de papel donde están impresas secuencias de letras aleatorias (que son idénticas en ambos cuadernos). Supongamos que se quiere mandar el mensaje: “HOLA”. Si ambos emisor y receptor, saben que la clave es XMCK, por ejemplo, el sistema cifra la palabra HOLA de la siguiente manera:
Cabe decir que se usa aritmética modular, en donde la operación módulo me dice el residuo de una división entera. Así, 4 mod 2 = 0 (par) y 5 mod 2 = 1 (impar). En consecuencia, el receptor recibe el texto cifrado “EANK”.
¿Y ahora, cómo desciframos el texto recibido?
El receptor, la persona B, entonces ve su libro de claves teniendo que poner la misma clave:
Pero… ¿qué tan seguro es este método de cifrado?
Por una parte, las libretas de códigos son seguras, pues no le dice nada al criptoanalista sobre dónde empieza y termina la clave. Incluso, como ya dijimos, Shannon demostró que no es posible descifrar un mensaje cifrado con este método aunque se tenga un poder de computación infinitamente grande. Por ejemplo, si un criptoanalista usara un sistema para decodificar, podría llegar a la conclusión que “XMCK” es la clave que decodifica el texto, pero también encontraría que la clave FCJR produciría el texto “ZYES”.
En principio, un analista podría descifrar cualquier mensaje con el mismo número de caracteres cambiando la clave tantas veces como fuese necesario, pero no existe información que le diga al criptoanalista (el personaje C), cuál es el mensaje descifrado en realidad.
El siguiente programa –gratuito y de código abierto– me lo pueden pedir a mi correo a morsa@la-morsa.com. A vuelta de correo les llegará de forma gratuita.