martes, 2 de julio de 2024

Cifrado: Vigenère

En esta nueva entrega de "Criptografía para todos", descubriremos el cifrado Vigenère. Ya vimos el cifrado homofónico como una posible solución al análisis de frecuencias que rompía el cifrado de sustitución general. Otra posible solución es el Vigenère, aunque también es posible romperlo mediante análisis de frecuencias (un análisis mucho más complejo que involucra ciclos).

Decimos que el cifrado Vigenère es "polialfabético", que es una palabra bonita y sofisticada que quiere decir "que utiliza diferentes alfabetos de sustitución cada vez". Clarísimo, ¿verdad? Recordemos lo que era un cifrado monoalfabético, como el César, el Atbash, el Polibio (y, englobando a todos, el cifrado de sustitución general),... Tenemos un método de cifrado que coge una letra y nos devuelve otra. Por ejemplo, la A va a la C, la B va a la Z, la C va a la R,... Si ciframos muchos mensajes con nuestro método, el enemigo (pues siempre hay un enemigo cuando hablamos de criptografía y criptoanálisis) podrá determinar esas correspondencias entre las letras, tal y como vimos con el análisis de frecuencias. PERO... ¿y si tuviéramos varios métodos de cifrado de ese tipo y aplicáramos uno distinto a cada letra de nuestro mensaje? ¡Eso frustraría los planes del enemigo! Como estamos usando varios alfabetos de cifrado, llamamos a este tipo de cifrado de sustitución "polialfabético". Por ejemplo, si estamos cifrando AA, a lo mejor el resultado que obtenemos son dos letras distintas, a pesar de que en el texto plano ambas eran iguales. Y, en la dirección contraria, si desciframos XX, posiblemente se trate de dos letras planas diferentes. Esto es así porque, para cada letra, hemos ido por un camino diferente. Vigenère es uno de estos cifrados polialfabéticos. ¿Mejor ahora?

En la práctica, Vigenère es mucho más sencillo y no tendrás que recordar nada de lo que acabamos de hablar. ¡Menos mal! Sólo necesitarás la siguiente tabla (o, sabiendo cómo se construye, te la puedes dibujar en un momento):


Cada fila consiste en el alfabeto, pero cada vez corrido un lugar hacia la izquierda. Fíjate que el alfabeto utilizado en la tabla es el inglés, sin la Ñ. Podríamos haberlo hecho incluyendo esta letra, con una tabla con una fila y una columna extras. El proceso no cambiaría en absoluto.

En primer lugar, como en otros cifrados, necesitaremos una clave. Por ejemplo, GATO. Supongamos que el mensaje que queremos cifrar es A LAS CINCO. Escribimos la clave justo encima del texto plano y la repetimos tantas veces como sea necesario:

GATOGATOG
ALASCINCO

Cada letra de nuestro mensaje está ahora asociada a una letra de la clave, la que tiene justo encima. Comencemos por la primera letra. Buscamos verticalmente la fila que empieza por la letra de la clave, G, y, horizontalmente, la columna que empieza por la letra del mensaje, A. Miramos en la intersección y encontramos la letra cifrada, G. Pasemos a la segunda letra. Buscamos en vertical la A y en horizontal la L y llegamos a la L. Para la tercera letra, buscamos la T en vertical y la A en horizontal: la letra cifrada es T. Estas tres primeras han sido muy sencillas, porque había A's involucradas y era como si no le hiciéramos nada a la otra letra. Con la cuarta letra, buscamos la O en vertical y la S en horizontal: la intersección es una G. Siguiendo el mismo proceso, terminamos de cifrar el mensaje:

GATOGATOG
ALASCINCO
GLTGIIGQU

Para descifrar, el proceso es el contrario. Veámoslo con nuestro ejemplo de antes y la última de las letras. Buscamos en vertical la letra de la clave, G, y, dentro de esa fila, llegamos hasta la letra cifrada, la U. Ahora, no tenemos más que mirar hacia arriba y ver la primera letra de esa columna, la O. Así, hemos recuperado la letra original.

Y, ahora, ¿sabrías resolver el criptograma de ayer? En el siguiente post, tienes una herramienta en JavaScript para que te sea más sencillo resolver este tipo de criptogramas y con la que usar el cifrado Vigenère sin necesidad de la tabla.


No hay comentarios:

Publicar un comentario