jueves, 23 de julio de 2020

Cifrado: Rail Fence

Hoy descubriremos otro cifrado. Se llama "Rail Fence" y es una generalización del cifrado zigzag, del que ya hablamos.

Éste es también un cifrado de transposición, es decir, lo único que varía es el orden de las letras del mensaje.

Recordemos que, para el cifrado zigzag, utilizábamos 2 líneas e íbamos escribiendo el mensaje alternando entre las dos, como si fuera una serpiente.


Para el Rail Fence, haremos exactamente lo mismo, pero emplearemos un número diferente de líneas. Ese número, llamémoslo "k", será precisamente la clave del cifrado. Es fácil ver que cuando k=2, estamos de nuevo ante el zigzag.

Veamos un ejemplo, con k=3. Escribimos el mensaje "BAJANDO Y SUBIENDO POR TRES RAILES", sin espacios y en tres líneas de la forma:


Ahora, simplemente, leemos cada una de las líneas en orden y obtenemos el texto cifrado: BNSEPRASAADYUINOOTERIEJOBDRSL.

Podemos observar que k tiene que ser mayor que 1, o si no, el texto cifrado será idéntico al original y no servirá de nada el proceso. Por la misma razón, k tiene que ser menor que la longitud total del mensaje. Vemos, por tanto, que la clave está bastante acotada, lo cual ayuda a la hora de descifrar por fuerza bruta, si no se conoce, por lo que el cifrado Rail Fence no es muy seguro.

Pero, ¿cómo se descifra un mensaje? A la vez que explico el proceso, vamos a resolver el criptograma de ayer como ejemplo.

En primer lugar, necesitamos saber cuál es la clave k, el número de líneas (o raíles). Si, como ocurre en nuestro caso, no lo conocemos, deberemos probar por tanteo algunos valores. Comenzaremos por k=2.

Nuestro principal problema es cómo recuperar el dibujo de zigzagueo a partir del mensaje cifrado. Un dato que es muy importante conocer es el ciclo, es decir, el número de letras que forman una "V", desde arriba del todo, bajando en diagonal y volviendo a subir, acabando justo antes de volver a empezar el siguiente ciclo. En la imagen de arriba, el ciclo es de 4 letras (BAJA, NDOY, SUBI, etc). Existe una fórmula para calcular el ciclo: 2k-2 (2 líneas en diagonal, una hacia abajo y otra hacia arriba, cada una con k letras, pero sin contar la última letra de cada una de ellas). En nuestro ejemplo, en el que habíamos supuesto que k era igual a 2, tenemos que el ciclo es 2*2-2=2.

¿Cuántas veces se ha producido el ciclo en un mensaje? No tenemos más que dividir la longitud total del mensaje entre el valor del ciclo y obtendremos la respuesta. En nuestro caso, 38/2=19. Como el resultado es un número sin decimales, se han producido exactamente 19 ciclos y no hay ninguno que haya empezado y se haya quedado incompleto (después veremos un ejemplo de esto).

Por lo tanto, la primera línea tendrá una anchura de 19 letras. ¡Ya podemos reconstruir el dibujo!


El mensaje descifrado sería IAIVLSNARDASERNSTEGSOOOWENEEBNITLDSTSA que, obviamente, no tiene ningún sentido. Nos hemos equivocado al suponer que la clave era 2. Probemos ahora con k=3.

Repetimos el mismo proceso. Calculamos el ciclo: 2*3-2=4, y el número de ciclos producidos: 38/4=9.5. En esta ocasión, hay 9 ciclos y sobran 2 letras, que comienzan uno nuevo pero no llegan a acabarlo. Así, la primera y segunda líneas tendrán una letra extra, por lo que la anchura de la primera será de 9+1=10 letras.


Ahora, el mensaje descifrado sería IOOOIEWELBNINLESRSNAAVTSEADDNSTRTSAEGS que, de nuevo, no tiene ningún sentido. La clave no es 3. Probemos con k=4.

El ciclo ahora es 2*4-2=6 y el número de ciclos producidos es 38/6=6.33. Hay 6 ciclos completos y sobran 2 letras, por lo que las dos primeras líneas tienen una extra. La anchura de la primera es 6+1=7.


El mensaje es INVESTIGANDOLOSTRENESDEBRISTOLASWANSEA, es decir, INVESTIGANDO LOS TRENES DE BRISTOL A SWANSEA. ¡Hemos resuelto el criptograma!

Como ves, el proceso de descifrado tan simple que vimos con el zigzag cuando k=2 se complica aquí un poco, pero eso no nos impide seguir resolviendo nuestros criptogramas.

¿Te atreves a intentar éste?

BOAFIHYNSIRECAIECANEDMSEDHOTO

En este post, puedes utilizar un programa que he escrito para cifrar y descifrar con Rail Fence.



No hay comentarios:

Publicar un comentario