"..., y es en realidad,
dudoso que el género humano pueda crear un enigma de ese
género que el mismo ingenio humano no resuelva con una
aplicación adecuada." (Edgar Allan Poe, El escarabajo
de oro)
Desde la antigüedad hasta nuestros
días se han mandado mensajes secretos. La necesidad de
comunicarse secretamente ha ocurrido en la diplomacia y entre
militares. Con la llegada de las comunicación electrónica
el interés por mantener mensajes ininteligibles para todos
salvo el receptor no ha hecho sino aumentar.
Para introducir unos términos
antes de entrar en materia, diremos que criptología es
la disciplina dedicada a comunicarse secretamente. Criptografía
es la parte de la criptología que trata del diseño
e implementación de sistemas secretos y criptoanálisis
la que se dedica a "romper" dichos sistemas.
Quisiera empezar con un sistema muy sencillo
que puede explicarse matemáticamente hablando mediante
aritmética modular. Quizás el primero de estos sistemas
tuvo su origen con Julio Cesar, su cifrado consistía simplemente
en sustituir una letra por la situada tres lugares más
allá en el alfabeto esto es la A se transformaba en D,
la B en E y así sucesivamente hasta que la Z se convertía
en C. A lo largo de este articulo usaré por simplicidad
el alfabeto ingles estándar de 26 letras:
A=00, B=01, C=02, ... Z=26
lo cual es suficiente para la mayoría de los cifrados
basados en texto y tiene la ventaja de que ocupan posiciones sucesivas
en el código ASCII lo que lo hace muy ventajoso para programar.
Pues bien, el cifrado de Julio Cesar podría expresarse
así C=P+3 (mod 26) donde hemos asignado a la A el número
0 a la B el 1...a la Z el 25, y (mod 26) indica que debemos tomar
el resto de dividir por 26 (en lenguaje C utilizamos el operador
% ) C es el texto cifrado y P el original. Pongamos un ejemplo:
MENSAJE ENVIADO AYER.
rompemos la estructura en palabras del mensaje eliminando signos
ortográficos si los hubiera, poniendo por ejemplo MENSAJEENVIADOAYER
y obtenemos los equivalentes numéricos de estas letras:
12 4 13 18 0 9 4 4 13 21 8 0 3 14 0 24 4 17
que aplicando la transformación P+3 (mod 26) se convierten
en
15 7 16 21 3 12 7 7 16 24 11 3 6 17 3 1 7 20
es decir el mensaje cifrado es ahora
PHQVDMHHQYLDGRDBHU.
Ejemplo cifrado de Cesar generalizado. ¡Pruébalo
tu mismo!
Si pones como clave D
quiere decir que A-->D, B-->E y así sucesivamente.
No se cifran signos de puntuacion letras acentuadas o eñes.
|
Un cifrado de este tipo
es ridículamente fácil de romper (pero recordad
que también fue muy muy fácil de hacer), basta con
probar los 25 posibles desplazamientos desde P+1 hasta P+25 y
con una ojeada sabremos cual es el mensaje. Hemos utilizado en
este caso un criptoanálisis llamado de "fuerza bruta"
porque probamos todas las claves (en este caso desplazamientos)
posibles.
Hay algunas formas de mejorar este método
sin complicarlo demasiado; la primera se basa en elegir una palabra
clave con todas sus letras diferentes, supongamos que elegimos
VIRTUAL ZONE :). Escribimos entonces el alfabeto normal junto
con el transformado siguiente:
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
V I R T U A L Z O N E B C D F G H J K M P Q S W X Y
y ahora el mensaje junto con el cifrado serían
MENSAJEENVIADOAYER
CUDKVNUUDQOVTFVXUJ
ahora un ataque de fuerza bruta es "algo"
más costoso pues se debería intentar con todos los
alfabetos de sustitución posibles que son 26!=403.291.461.126.605.635.584.000.000
o sea unos cuantos más que los 25 de antes :-)
Este método tiene la siguiente
debilidad: con ciertas claves, las letras finales del alfabeto
quedan sin modificar y esto facilita mucho la labor del criptoanalista.
La clave en nuestro ejemplo está escogida de modo que aparezcan
en ella letras como V U Z cercanas al final del alfabeto y que
producen un mayor "desorden" en el alfabeto transformado.
En todo caso en un cifrado como este
se utiliza lo que se llama un análisis de frecuencias.
Consiste en: sabiendo la frecuencia de las letras en español
(si no sabes en que idioma en que está escrito el original
te puede costar más trabajo) intentar adivinar a que letra
corresponde cada una de ellas. Por ejemplo en el último
mensaje cifrado CUDKVNUUDQOVTFVXUJ se observa que la letra más
repetida es la U, como la letra más frecuente en español
es la E podríamos conjeturar que U se corresponde con la
E como en efecto así es, siguiendo con las demás
letras pueden averiguarse las suficientes como para poder leer
el mensaje original.
Las letras que más aparecen en
español son (por orden de mas a menos frecuente) las siguientes:
E A O L S N D
R U I T C P M
Y Q B H G F V W J Z X K
El primer grupo (E,A,O...) está
formado por letras de muy frecuente aparición, este grupo
constituirá habitualmente un 68% de las letras de un mensaje,
en concreto la E y la A destacan abrumadoramente en castellano
y son las dos primeras que debes intentar identificar. El siguiente
grupo lo constituyen letras de aparición menos frecuente
(un 25% aproximadamente en su conjunto). En el último grupo
aparecen letras muy poco frecuentes que a menudo puedes descartar
sin que importen demasiado para entender el mensaje.
Se podrían decir muchas más
cosas, por ejemplo del análisis que se hace en "El
escarabajo de oro" un cuento de Edgar Allan Poe donde se
descubre un tesoro resolviendo una clave de este tipo (te recomiendo
que lo leas si aún no lo has hecho) o como el algebrista
Viete fue acusado de practicar la brujería por descifrar
la clave utilizada por Felipe II en el siglo XVI, que él
creía indescifrable, pero para un primer artículo
es suficiente. Os dejo con un pequeño texto cifrado por
el último método descrito para que probéis
que tal se os da. Para facilitar las cosas he respetado la estructura
de palabras del texto original.
UK EUAK GQCOTMDQLNM QASMIVAQCL ASTM ELSTLKTA RAOQCSL
Hasta otra, espero que me digais lo que
os interesaría ver en una sección de criptografía,
lo que echáis de menos y lo que sobra.
|