Introducción a la seguridad informática y criptografía clásica

TEMA IV: ALGORITMOS DE CIFRA CLÁSICA


LECCIÓN 7: ALGORITMOS DE CIFRA POR TRANSPOSICIÓN O PERMUTACIÓN

Autor: Dr. Jorge Ramió Aguirre.
Fecha de publicación: 13 de junio de 2016.
Colaboración diseño Web: D. Jaime Sánchez Pedrós, becario Talentum Startups.

Esta séptima lección está dedicada a la cifra por permutación o transposición, método de cifra que consiste en cambiar de lugar los elementos del texto en claro en el criptrograma, logrando de este modo que se difuminen o difundan las estadísticas del lenguaje en el texto cifrado. Con un recorrido muy corto en la criptografía clásica, no así en la cifra moderna, esta técnica tiene como algoritmos más conocidos a la escítala lacedemonia, los sistemas de cifra por permutación de filas, columnas, rail fence o vallas y, por último, a los cifradores por permutación de grupos y series. La cifra por permutación puede ser criptoanalizada mediante la técnica conocida como anagramación, un ataque que hace uso de las estadísticas de frecuencia de los digramas más comunes del lenguaje, debido a la redundancia del mismo. Cabe recordar que en este tipo de cifra el criptograma contará con los mismos elementos o letras que el texto en claro.

Especial reconocimiento corresponde hacer en este momento a D. Juan Contreras Rubio, Ingeniero en Informática de Sistemas, del que fui su tutor del Trabajo Fin de Carrera en el que renovó completamente el antiguo software Criptoclásicos, y que usaremos como plataforma de prácticas en las 4 lecciones finales de este curso. Indicar, además, que entre febrero y junio de 2016, meses dedicados a la revisión del software, se han llevado a cabo una gran cantidad de mejoras al mismo.

Temario


APARTADO 1. ¿QUÉ ES LA CIFRA POR TRANSPOSICIÓN O PERMUTACIÓN?

1.1. Cambiamos las letras de lugar

La manera más sencilla de cifrar un texto y crear por tanto un criptograma, consiste en cambiar de lugar las letras de ese texto en claro, es decir desordenándolas de forma que su lectura nos lleve a algo sin sentido. Como ya sabemos por lecciones anteriores, con ello se logra el efecto de difusión pero, en cambio, su talón de Aquiles es que el criptograma contiene exactamente las mismas letras que el texto en claro y, por lo tanto, se manifiesta de forma patente en dicho criptograma la redundancia característica del lenguaje que aparece en el texto en claro.

Como es ampliamente conocido, el ejemplo más antiguo de cifra es la transposición mediante la escítala, vista en el apartado segundo de la lección 2 de este MOOC, que recomiendo vuelvas a leer para repasar algunos conceptos.

En la criptografía clásica este método de cifra por permutación muestra un corto recorrido y, por lo tanto, conocemos muy pocos algoritmos. Los sistemas clásicos se centrarán preferentemente en el método de cifrado por sustitución, donde sí encontramos una gran variedad de algoritmos de cifra que veremos en los tres siguientes capítulos de este MOOC.

No sucederá lo mismo en la cifra moderna, orientada como es obvio a bits y a bytes, en donde la técnica de permutación se usa frecuentemente. Como ejemplo, baste nombrar al algoritmo DES, que presenta varias operaciones de permutacion de bits, tanto en el texto en claro como en las claves de cada vuelta, e incluso en el algoritmo AES -actual estándar mundial de cifra simétrica-, dentro de la operación denominada ShiftRows, aunque en este caso la permutación se haga sobre bytes. Puedes comprobarlo viendo las diapositivas número 491, 492, 493, 502, 503 y 565 del capítulo 12 "Cifrado Simétrico en Bloque" de mi libro electrónico de seguridad informática y criptografía, de libre distribución en Internet.


APARTADO 2. ALGORITMOS DE CIFRA

2.1. Recordando a la escítala



Figura 2.1. Cifrador de permutación escítala.

Como se supone ya has repasado la escítala en esa lección 2, a continuación sólo vamos a realizar un par de prácticas en el laboratorio para fortalecer conceptos usando el software Criptoclásicos.

Si no has descargado e instalado aún la última versión y actualización del freeware Criptoclásicos v 2.1, este es el momento de hacerlo desde esta url de descarga: Criptoclásicos v 2.1.

Nos vemos en el laboratorio...
Enunciado:
Tenemos una cinta que al enrollarla en el bastón nos permite escribir hasta 25 letras de forma longitudinal y en cada vuelta de dicha cinta podemos escribir hasta 6 letras. Es decir, podemos cifrar como máximo un mensaje de 150 letras. Conociendo esto, cifra con el alfabeto de 27 letras y con esa escítala el siguiente mensaje de 140 letras:
CIFRAREMOS CON ESTE ARTILUGIO DEL SIGLO V ANTES DE CRISTO USANDO UN BASTON CON UNA CINTA QUE SE ENROLLA VEINTICINCO VECES SOBRE EL MISMO Y PERMITE ESCRIBIR EN SEIS CARAS.
Realiza la cifra con el software Criptoclásicos.
Solución:
En Criptosistemas -> Transposición -> Escítala (por defecto tendrá mod 27) elegimos la clave que nos dan, introducimos el texto en claro como Entrada y damos a Cifrar. Cuando el software nos pregunte si queremos ver el informe de la cifra, le decimos que sí. Las siguientes capturas de pantalla muestran la cifra y el informe que nos entrega el software.




Más adelante verás que este método de cifra con la escitala será muy parecido al cifrado por permutación de columnas.

Vamos a pensar un poco:
¿Qué pasaría si con ese mismo bastón y con la misma longitud de la cinta, que permite escribir 25 letras en longitudinal y en 6 caras o filas, queremos cifrar ahora este mensaje de tan sólo 51 letras? QUE LA TROPA DUERMA Y DESCANSE ATACAREMOS MAÑANA AL AMANECER. ¿Cómo se te ocurre que podríamos solucionar este problema?
Ayuda: una solución podría estar relacionada con un relleno de tantas letras como longitud tenga ese bastón, hasta que se acabe la cinta; piensa cómo lo harías. La otra solución y la más adecuada, tiene que ver con la longitud real de esa cinta, que puede ser mayor o menor en función del tamaño del mensaje. Es decir, no tiene por qué enrollarse toda la cinta hasta el final del bastón sino sólo la longitud justa que permita que el bastón tenga letras del texto en claro en todo su contorno. Comprueba que es precisamente esto último lo que hace el programa Criptoclásicos, realizando este nuevo el cifrado con la misma cinta e igual bastón (25 de longitud y 6 de diámetro) y pidiendo que te muestre el informe de cómo lo ha hecho.

Vamos ahora a descifrar y a criptoanalizar diferentes criptogramas obtenidos con la escítala, haciendo uso de este software.

Nos vemos en el laboratorio...
Enunciado:
Práctica 1. Nos dan como clave que en emisión la cinta se enrolló hasta 12 veces en un bastón cuyo diámetro era igual a 4 y el criptograma era: RULIE LHLFA ELRRR OAERD NNEEE CRPRA OAOSC LPAUO ODCZP EHZ. Recupera el texto en claro.
Práctica 2. Recibimos ahora este misterioso criptograma LBONA AYOSN ESSPL OOOMT MRIRB AEORQ DSAUO ZSESZ SLEZE CAZAE PZRMO ZREDZ ANEZS TRZTE OZRRD ZAIEZ del que sólo sabemos que se ha obtenido cifrando con la escítala. Con la ayuda de Criptoclásicos criptoanaliza la cifra hasta que encuentres un texto con sentido. ¿Qué texto era y cuáles eran las claves del sistema de cifra?
Solución:
Práctica 1. En el descifrado simplemente se introducen los datos de entrada y se descifra.
Mensaje descifrado: REFRANERO POPULAR EN CASA DEL HERRERO CUCHILLO DE PALO.
Práctica 2. En el criptoanálisis, introducimos el criptograma como Entrada y damos a Criptoanalizar. Criptoclásicos nos va presentando distintas opciones de dimensión o longitud del bastón (2, 4, 5, 8, 10, 16, 20, 40) y, al elegirlas, nos indica el posible diámetro del bastón así como el posible texto en claro. Con la dimensión 20 se rompe la cifra al obtener un texto en claro con sentido.
Mensaje criptoanalizado: LAS SOMBRAS SE ARRASTRABAN POR AQUEL CEMENTERIO Y EL MIEDO SE APODERÓ DE NOSOTROS (dimensión 20, diámetro 4).
Las siguientes capturas de pantalla muestran el descifrado y el criptoanálisis de la práctica.




2.2. Cifrado por transposición de filas, columnas y vallas o rail fence

2.2.1. Cifrando por filas

Si un texto en claro se escribe letra a letra hacia abajo con un nivel Fl de filas y luego se lee el resultado por filas de izquierda a derecha, diremos que se trata de una cifra por permutación de filas.

La figura 2.2 muestra un sistema de cifra por permutación de filas.



Figura 2.2. Cifrador por permutación de filas.

Observa que se escribe el texto en claro hacia abajo, en columnas, definiendo previamente con cuántas filas Fi se va a cifrar el texto en claro. En el ejemplo se han definido 4 filas de forma que si el mensaje a cifrar es M = TRANSPOSICION POR FILAS, éste se escribe de arriba hacia abajo como TRAN, SPOS, ICIO, NPOR, FILA, SXXX. Como se observa, si nos quedan cuadrículas en blanco, éstas se rellenan con una letra poco común que se haya asignado previamente como de relleno; en nuestro caso se ha elegido la letra X.

Un sistema similar de relleno se usará en los sistemas de cifra moderna conocidos como simétricos por bloques, como sería el caso por ejemplo del DES, el IDEA, el AES, etc. En estos sistemas el relleno del último bloque a cifrar se realizará mediante un conjunto de bits en 0, varios bytes indicando cada uno el número de bytes que faltan para completar ese último bloque, etc.

Hecho esto y como el cifrado es por filas, vamos leyendo las 4 filas que se han definido, ahora sí de izquierda a derecha, dando como resultado al agruparlo en bloques de 5 letras al criptograma C = TSINF SRPCP IXAOI OLXNS ORAX.

Observa que, dependiendo de la longitud del texto en claro y del número de filas que vamos a utilizar como clave para la cifra, obtendremos el número de columnas de la matriz resultante. En este ejemplo como el texto en claro TRANSPOSICION POR FILAS tenía 21 letras, al dividirlo por la clave 4 filas obtenemos 21/4 = 5,25 es decir 6 columnas (como se aprecia en la figura 2.2) y la última de ellas con relleno al darnos esa división un número con decimales.

Como has podido ver en este ejemplo y en lecciones anteriores, el criptograma se ha agrupado en bloque de 5 letras, también conocido por su nombre en inglés group by five. Vas ahora a averiguar por qué.

Vamos a pensar un poco:
¿Por qué en criptografía clásica se estilaba escribir el criptograma en bloques de 5 letras? ¿Qué tiene que ver esto con la telegrafía y el código Baudot? Busca en Internet la relación entre telegrafía y código Baudot para encontrar la respuesta.

Nos vemos en el laboratorio...
Enunciado:
Usa Criptoclásicos v2.1 para cifrar por permutación de filas el texto en claro M = DIME CON QUIÉN ANDAS, Y TE DIRÉ QUIÉN ERES, teniendo como clave 6 filas.
Solución:
El resultado se observa en las capturas de pantalla que se muestran a continuación.
Repite ahora la práctica ya sin ayuda, usando como clave de cifra 7 filas. ¿Cuántas columnas tenías en el caso anterior y cuántas ahora?

2.2.2. Descifrando por filas

Recibido el criptograma y conocida la clave, para descifrar se procederá de la siguiente manera:

1. Se contabilizan las L letras del criptograma
2. Se divide este número por la clave Fl de Filas, obteniendo el valor de las columnas Cl
3. Se va escribiendo el texto cifrado en filas de izquierda a derecha hasta la columna Cl
4. Cuando se llega a la última columna, se continúa en la fila de abajo
5. Y así sucesivamente hasta la última letra del criptograma

Ejercicio 2.1:
Siguiendo el método indicado, descifra el siguiente criptograma C = DCUAS DQNSI OINYI UEXMN EDTRI RXEQN AEEEE X, si sabes que se ha cifrado por permutación de filas y que la clave es 4. ¿Cuántas columnas has tenido que utilizar y cuál era el texto en claro?
Solución:
Como el criptograma tiene 36 letras y la clave era Fl = 4 filas, dividimos 36/4 = 9, que son las columnas Cl en las que debemos escribir el criptograma. Es decir, la primera fila será DCUASDQNS, la segunda fila IOINYIUEX, la tercera fila MNEDTRIRX y la cuarta fila EQNAEEEEX. Terminado de escribir el criptograma nos queda:

Leemos por columnas, de arriba hacia abajo y de izquierda a derecha, obteniendo nuevamente el texto en claro DIME CON QUIEN ANDAS Y TE DIRE QUIEN ERES.

Nos vemos en el laboratorio...
Enunciado:
Comprueba el resultado del ejercicio anterior con Criptoclásicos.
Solución:

Ahora vamos a pedirle a Criptoclásicos que nos eche una mano en un simple ataque por fuerza bruta.

Nos vemos en el laboratorio...
Enunciado:
Usando Criptoclásicos, descifra el criptograma C = NSCLA NUTUA EANAA DSXCR NIBXA DDCUX EEOHE X si sólo sabes que el texto en claro ha sido cifrado mediante permutación de filas pero no conoces la clave.
Ayuda:
En el ataque por fuerza bruta intentarás descifrar el criptograma suponiendo primero que la clave son 2 filas y presionas Descifrar. Si falla el descifrado, aumenta la clave a 3, etc., repitiendo el proceso hasta dar con el resultado deseado. Comprueba que al llegar a 6 obtienes un texto en claro con sentido: NUNCA ES TARDE CUANDO LA DICHA ES BUENA.

2.2.3. Cifrando por columnas

Por el contrario, si el texto en claro se escribe ahora por filas, letra a letra de izquierda a derecha y hasta un nivel de columnas Cl, y luego se lee el resultado por columnas, hablaremos de una cifra por permutación de columnas.

La figura 2.3 muestra un sistema de cifra por permutación de columnas.



Figura 2.3. Cifrador por permutación de columnas.

Observa que ahora se escribe el texto en claro de la forma común a como lo hacemos, esto es de izquierda a derecha y en filas, definiendo previamente con cuántas Columnas Cl se va a cifrar el texto en claro. En este ejemplo se ha definido como clave 5 columnas, de forma que si el mensaje a cifrar fuese M = TRANSPOSICION POR COLUMNAS, éste se escribe de izquierda a derecha como TRANS, POSIC, IONPO, RCOLU, MNASX.

Para obtener el criptograma, al ser un cifrado por columnas, leemos las 5 columnas por orden obteniendo C = TPIRM ROOCN ASNOA NIPLS SCOUX.

Aunque no suele ser muy habitual, en este ejemplo ha coincidido el número de las columnas con el número de la filas, dando lugar a una matriz cuadrada.

Nos vemos en el laboratorio...
Enunciado:
Con Criptoclásicos cifra por columnas el texto en claro M = ANDE YO CALIENTE Y RÍASE LA GENTE, siendo la clave 8 columnas.
Solución:
El criptograma es C = ALINN IATDE SEENE XYTLX OEAXC YGXAR EX. El resultado se observa en las capturas de pantalla que se muestran a continuación.


2.2.4. Cifrando por columnas con clave

Una opción muy interesante que se suele asociar -por simplificación- sólo a la cifra de permutación por columnas, es realizar la cifra tal y como lo hemos visto en este apartado, pero al terminar de cifrar reordenaremos las columas resultantes de acuerdo al orden alfabético de una palabra clave que hemos intercambiado previamente con nuestro interlocutor.

En la figura 2.4 se recoge el ejemplo de la cifra reflejada en figura 2.3, pero en este caso le añadimos la clave MARIO de 5 letras para reordenar el criptograma.

   

Figura 2.4. Cifrador por columnas con clave

Por lo tanto el texto en claro M = TRANSPOSICION POR COLUMNAS ya no se cifrará como C = TPIRM ROOCN ASNOA NIPLS SCOUX, sino como C = ROOCN NIPLS TPRIM SCOUX ASNOA.

Vamos a pensar un poco:
¿Crees que añadiendo una clave tiene mayor fortaleza el cifrado de permutación por columnas? Para fortalecer tu repuesta, con la ayuda de Criptoclásicos intenta hacer un descifrado del criptograma C = ROOCN NIPLS TPRIM SCOUX ASNOA, aplicando fuerza bruta probando con todas las claves posibles, al igual que se hizo con el cifrado de filas. ¿Obtienes algún resultado positivo?

Ejercicio 2.2
Cifra el mensaje M = PUEDO ESCRIBIR LOS VERSOS MÁS TRISTES ESTA NOCHE con 6 columnas y la clave NERUDA. No uses aquí Criptoclásicos; lo usarás en la próxima práctica. ¿Alguno de los siguientes criptogramas es válido?
C1 = PSRRS ENUCL STSOE ROORE CDISS ISHOB VMSTE EIEAT AX
C2 = EIEAT AXOBV MSTEE ROORE CUCLS TSOPS RRSEN DISSI SH
C3 = OBVMS TEEIE ATAXP SRRSE NUCLS TSOER OOREC DISSI SH
C4 = EIEAT AXOBV MSTEU CLSTS OPSRR SENER OOREC DISSI SH
C5 = EIEAT AXOBV MSTEU CLSTS ODISS ISHPS RRSEN EROOR EC
Solución:
No aplica.

Si la clave en cuestión tiene letras repetidas, como sería el caso por ejemplo de las claves MADRID (con dos letras D) y BARCELONA (con dos letras A), al reordenar las columnas las letras repetidas se ubicarán de acuerdo a la posición relativa que ocupan en la clave. Esto lo puedes comprobar en la siguiente práctica de laboratorio.

Nos vemos en el laboratorio...
Enunciado:
Ahora sí usando Criptoclásicos, comprueba tu respuesta del ejercicio 2.2. Hecho esto, primero que nada cambia en Opciones el alfabeto a ASCII 191, y después cifra con la clave GABRIELA el siguiente texto en claro. Observa cómo se ordenan las dos columnas con letra A de la clave.
Piececitos de niño,
azulosos de frío,
¡cómo os ven y no os cubren,
Dios mío!
Solución:
El criptograma es C = isadc nbsto o,vci Xedze óyrmc ioíoo ,!Po, s¡euo enlro onoiñ sossD Xceuf mneí. El resultado se observa en las capturas de pantalla que se muestran a continuación.


2.2.5. Descifrando por columnas

Para descifrar un criptograma que está cifrado por columnas, se procede de manera análoga a lo hecho con filas, es decir, recibido el criptograma y conocida la clave, se procederá de la siguiente manera:

1. Se contabilizan las L letras del criptograma
2. Se divide este número por la clave Cl de Columnas, obteniendo el valor de las filas Fl
3. Se va escribiendo el texto cifrado en columnas de izquierda a derecha hasta la fila Fl
4. Cuando se llega a la última fila, se continúa en la siguiente columna
5. Y así sucesivamente hasta la última letra del criptograma

Ejercicio 2.3:
El criptograma es MPNEV AAMCO SJAIL VANEA ARONN LOQTD EEUOO y sabes que el texto en claro se ha cifrado módulo 27 por permutación de columnas y que la clave es 7. ¿Cuántas filas se han utilizado en la cifra y cómo se hace el descifrado?
Solución:
Como el criptograma tiene 35 letras y la clave es Cl = 7, el número de filas Fl será igual a 35/7 = 5. Escribimos entonces el criptograma por columnas de arriba hacia abajo y de izquierda a derecha en 5 filas, de forma que la primera columna será MPNEV, la segunda columna AAMCO, la tercera columna SJAIL, la cuarta columna VANEA, la quinta columna ARONN, la sexta columna LOQTD y la séptima columna EEUOO. Para descifrar, procedemos ahora a leer por filas de arriba hacia abajo y obtenemos el texto en claro M = MÁS VALE PÁJARO EN MANO QUE CIENTO VOLANDO.

Vamos a pensar un poco:
Como has podido comprobar, en el descifrado de filas y columnas hemos usado como dato que la matriz de cifra era rectangular, es decir, sabemos que en la cifra se ha usado relleno si hubiese sido necesario. De esta manera, conociendo el número de caracteres del criptograma y el número de filas o de columnas -según sea el tipo de cifra- podíamos encontrar inmediatamente el número de columnas o de filas, respectivamente. Si no se usara relleno, ¿cómo harías para encontrar este último dato y así descifrar el criptograma?

Nos vemos en el laboratorio...
Enunciado:
Comprueba con Criptoclásicos que el ejercicio anterior es correcto.
Solución:
Respuesta en la captura de pantalla.

En el caso de que la cifra sea con clave, el proceso es el mismo; simplemente una vez escrito el texto cifrado en columnas de izquierda a derecha hasta la fila Fl (paso 3), se procede a reordenar las columnas de acuerdo a la clave.

Nos vemos en el laboratorio...
Enunciado:
Con Criptoclásicos descifra el criptograma LENDO LOLEO WTMIL ONAAL MNOGN GINSE NBIAÑ SFCAA OCIGI CUERE OORAI NIMTC ODIDI SDAIO VTDSI TEREI CACAO PTEOT IEUMM WBOMO OOOTO QEJNR ATOOA ICOMO MSIFU CEFSR ERX si se sabe que la cifra era por columnas, módulo 27 y con la clave MALIGNO.
Solución:


Texto en claro: EL MALWARE TAMBIEN CONOCIDO COMO CODIGO MALIGNO O CODIGO MALICIOSO ES UN TIPO DE SOFTWARE QUE TIENE COMO OBJETIVO INFILTRARSE O DAÑAR UN SISTEMA INFORMATICO.

Para terminar este apartado, vamos ahora a descifrar por fuerza bruta un criptograma cuyo texto en claro estaba en inglés. Por tanto, seguramente estarás pensando que lo lógico sería trabajar en módulo 26. No obstante, como en este tipo de cifra no se sustituye nada, aunque estemos cifrando en módulo 27 nunca aparecerá una letra Ñ y el resultado será el mismo se cifre en mod 26 o en mod 27.

Vamos a pensar un poco:
¿Por qué se ha afirmado en el párrafo anterior que en este caso, en que el texto en claro está en inglés en mayúsculas, sería lo mismo cifrar en módulo 27 que en módulo 26? ¿Se podría dar el caso contrario, es decir, que un mensaje en español con mayúsculas se cifrara en módulo 26 en vez de módulo 27 y diera lo mismo?

Nos vemos en el laboratorio...
Enunciado:
Con Criptoclásicos rompe por fuerza bruta el criptograma C = TOHEO OTAQN BTTUX EOIEX OBSSX RETTX NTHIX descifrando con diferentes claves posibles, pero en este caso vas a comenzar por 10 columnas y vas a ir disminuyendo ese número columnas hasta dar con la clave que te entrega un texto en inglés con sentido.
Solución:
En Opciones de Criptoclásicos, definimos primero el alfabeto como inglés módulo 26 y luego en Criptosistemas elegimos Transposición por Columnas. Comenzamos a descifrar con una clave igual a 10. La captura de pantalla muestra una fase intermedia del ataque donde aún no hemos encontrado el texto en claro. Encuéntralo tú.

Vamos a pensar un poco:
Una vez hecha la práctica anterior y roto la cifra, ¿por qué crees que se ha afirmado en la presentación de esta leccion que para la cifra por permutación en algunos casos se facilita el ataque por fuerza bruta si se cuenta con medios informáticos? ¿Cómo generalizarías el ataque que acabas de hacer para cualquier cifrado por permutación de filas o columnas?

2.2.6. Cifrando por vallas o rail fence

Por último, si el texto en claro se escribe formando una figura típica de una valla de campo, estaremos frente a una cifra de permutación por vallas o rail fence. El número de raíles o líneas internas de esa valla será la clave.

La figura 2.5 muestra el cifrado en valla del texto en claro M = CIFRA RAIL FENCE, definiendo 3 líneas o raíles en esa valla imaginaria, la línea superior, la línea interior y la línea inferior. Por lo tanto, vamos escribiendo el texto en claro haciendo un zig-zag y recorriendo dicha valla como si fuese una onda que se propaga.



Figura 2.5. Cifrador por vallas o rail fence.

Terminado de escribir el texto en claro, vamos leyendo cada fila de arriba hacia abajo y de izquierda a derecha, obteniendo el criptograma C = CALC IRRIFNE FAE = CALCI RRIFN EFAE.

Observa que en este caso, en principio no sería necesario incluir relleno, puesto que debido a la forma en que se descifra el criptograma esto no daría lugar a dudas sobre el mensaje en claro que esconde, siempre y cuando sigamos la misma figura de valla usada en la cifra. No obstante, veremos que sí es recomendable incluir rellenos de manera que se formen olas u ondas completas, que permiten obtener el texto en claro más fácilmente.

Como en este cifrado la forma de la figura con la cual se cifra generará olas, que se definirán en el siguiente párrafo, si fuera el caso habrá que introducir un relleno para que existan n olas completas, usando por ejemplo la letra Z para dicho cometido. Por lo tanto, para que se cumpla que la cifra tenga n olas exactas y todas del mismo tamaño, el cifrado de la figura 2.5 deberá tener un relleno de dos letras Z como se muestra en la figura 2.6.



Figura 2.6. Cifrador por vallas o rail fence con relleno por olas.

Siguiendio la figura 2.6, se denominará ola a la forma que describe un recorrido, precisamente en forma de ola invertida, desde el carácter superior, descendiendo hasta el fondo de la valla y subiendo nuevamente hasta llegar al carácter inmediatamente anterior donde este recorrido se vuelve periódico, o bien comienza una nueva ola. En el caso de la figura 2.6, se observan 4 olas completas. Estas son: la ola 1 formada por CIFR, la ola 2 formada por ARAI, la ola 3 formada por LFEN y la ola 4 formada por CEZZ, donde ZZ es el relleno aplicado.

El criptograma resultante será C = CALC IRRIFNEZ FAEZ = CALCI RRIFN EZFAE Z.

Es fácil comprobar que para 2 raíles las olas tendrán 2 elementos, para 3 raíles las olas tendrán 4 elementos, para 4 raíles las olas tendrán 6 elementos, para 5 raíles las olas tendrán 8 elementos, para 6 raíles las olas tendrán 10 elementos, etc. Es decir, el número de elementos de la ola vendrá dado por la siguiente expresión:

Elementos de una ola = (número de raíles x 2) - 2

Nos vemos en el laboratorio...
Enunciado:
Con Criptoclásicos cifra por vallas el mensaje de 28 letras M = VISTEME DESPACIO QUE TENGO PRISA con una valla que tenga 4 raíles.
Solución:
En Criptosistemas elegimos Transposición Rail fence y como elegimos como clave 4 raíles. La figura muestra la distribución de las letras del texto en claro en cada uno de esos 4 raíles cuando el recorrido es en zig zag, comenzando desde arriba. Por lo tanto, el criptograma será C = VECTR IMDAI EEPIX SEEPO UNOSX TSQGA.
Al indicar que se cifrará con 4 raíles, el programa sabe que los elementos de cada ola van a ser 2x4 - 2 = 6. Por lo tanto, divide las 28 letras del texto en claro entre 6 y le sale 4,66. Es decir, 5 olas y en la última de ellas deberá aplicar un relleno de dos letras, de forma que tenga 5 olas cada una con 6 elementos, lo que suma 28+2 = 30 caracteres.
La siguiente figura muestra el informe de Criptoclásicos sobre esta cifra.

2.2.7. Descifrando por vallas o rail fence

En el descifrado por vallas, se procede de la siguiente manera:

1. Se calcula la longitud del texto y con el número de raíles se calcula cuántos letras tiene una ola.
2. Se divide el número de letras del criptograma entre las letras de una ola y se obtiene el número de olas
3. Con este dato de letras por ola, se sabe cuáles son los elementos de la cresta de la ola, el primero de cada ola.
4. De la misma manera, se sabe cuáles son los elementos de la base de la ola, el último de cada ola.
5. Los restantes elementos se distribuirán por el cuerpo de la valla o los raíles centrales.

Así, en el caso de la cifra de la figura 2.6 se tenía como datos: 16 letras en el criptograma (dos de ellas de relleno) y cifrado por tres raíles. Con esto, al descifrar se calcula que cada ola tendrá 3x2 - 2 = 4 elementos y como 16/4 = 4 habrá cuatro olas. Por tanto los primeros 4 elementos del criptograma serán la cresta de la ola, los últimos 4 elementos del criptograma serán la base de la ola, y los restantes 8 elementos se distribuirán entre los raíles itermedios, en este caso sólo uno. Como el criptograma era CALCI RRIFN EZFAE Z, entonces CALC formará la cresta de la ola, FAEZ formará la base de la ola, e IRRIFNEZ formará el raíl central. Se procede a escribir esto en el formato Rail fence y se lee en forma de zig zag, obteniendo el texto en claro: CIFRARAILFENCEZZ = CIFRA RAIL FENCE.

Nos vemos en el laboratorio...
Enunciado:
Con Criptoclásicos descifra el siguiente criptograma si sabes que la clave eran 5 raíles: EERCO TNRLU ASDVE VEONE SUAOB INUZL TBZTR IVITR YSALR CILUC AYSAZ AALOG NRRTB ATHVL REONE SUTLE EAOEA ROT.
Solución:
La figura que verás más abajo es una captura de pantalla del programa, pero vamos a justificar qué operaciones ha realizado Criptoclásicos para el correcto descifrado.
Como el criptograma tiene 88 letras y la clave son 5 raíles, entonces cada ola tendrá 5x2 - 2 = 8 letras. Como tenemos 88 letras y cada ola tiene 8 letras, habrán 88/8 = 11 olas.
Entonces las 11 primeras letras (EERCOTNRLUA) corresponderán a la cresta de la ola y las 11 últimas letras (TLEEAOEAROT) corresponderán a la base de la ola. Nos quedan 88 - 22 = 66 elementos que ocuparán los 3 raíles centrales, cada uno con 66/3 = 22 letras, de arriba hacia abajo SDVEVEONESUAOBINUZLTBZ en el raíl central primero, TRIVITRYSALRCILUCAYSAZ en el raíl central segundo y AALOGNRRTBATHVLREONESU en el raíl central tercero.
Se han introducido en la cifra dos letras Z como relleno y el texto en claro era:
Esta tarde vi llover, vi gente correr y no estabas tú. La otra noche vi brillar un lucero azul y no estabas tú.


2.3. Cifrado por transposición de grupos y de series

Si el texto en claro se agrupa en bloques de un cierto tamaño y sobre ese bloque se realiza alguna operación de permutación que se repite periódicamente, el sistema de cifra se conoce como transposición por grupos. Por ejemplo, si agrupamos el texto en claro en bloques de 8 letras y estos bloques sufren la permutación 13572468, es decir en cada bloque se transmiten primero las letras en posiciones impares de izquierda a derecha (1357) y a continuación las letras de las posiciones pares también de izquierda a derecha (2468), que obviamente son las que quedan de ese conjunto, el mensaje UN SECRETO ALGO EXTRAÑO se cifraría de la siguiente manera:

Texto en claro en bloques de 8 letras: UNSECRET OALGOEXT RAÑOXXXX (siendo XXXX el relleno)
Texto cifrado en bloques de 8 letras: USCENERT OLOXAGET RÑXXAOXX
Texto cifrado en formato group by five: USCEN ERTOL OXAGE TRÑXX AOXX

Ejercicio 2.4:
Cifra el mensaje MÁS DIFÍCIL TODAVÍA de 17 letras, formando bloques de 6 letras y ordenando cada bloque según la clave 615432. Solución:
No habrá ayuda en este caso.

Otra posibilidad es realizar una cifra no periódica utilizando series. Esta forma de cifra puede alcanzar una mayor fortaleza, pero como contrapartida requiere recorrer previamente todo el texto en claro para comenzar a cifrar.

Por ejemplo, se podría cifrar el texto de 22 caracteres AHORA CIFRAMOS POR SERIES usando primero la serie de números primos (2, 3, 5, 7, 11, 13, 17, 19), después los números pares (4, 6, 8, 10, 12, 14, 16, 18, 20, 22) y, por último, el resto de números no utilizados (1, 9, 15, 21). Es decir, se reordenan las letras del texto en claro según el siguiente orden:

Orden de permutación: 2, 3, 5, 7, 11, 13, 17, 19, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1, 9, 15, 21

Quedando el criptograma así: HOAIM SSRRC FAOPR EISAR OE.

Comprueba tú mismo con la tabla de la figura que la cifra es correcta.

Vamos a pensar un poco:
Si un mensaje secreto es muy largo y además muy urgente, ¿qué sistema de cifra recomendarías usar, un cifrado por grupos con bloques o uno por series? ¿Por qué? Este mismo dilema se nos plantea cuando trabajamos con sistemas de cifra moderna, si es mejor usar un cifrado simétrico por bloques o un cifrado simétrico por flujo.


APARTADO 3. FORTALEZA DE LA CIFRA POR TRANSPOSICIÓN

3.1. ¿Cómo se atacan los sistemas de cifra por transposición?

En el caso de los cifradores por filas o columnas sin clave, el criptoanálisis puede realizarse mediante la técnica conocida como anagramación, que consiste en la comparación de bloques de caracteres del criptograma con el objeto de encontrar digramas comunes del lenguaje, destruidos por la transposición.

Para ello se elige una cadena de letras sucesivas en el inicio del criptograma llamada ventana, de al menos 4 letras para poder aplicar estadísticas con cierta confianza. Dicha ventana se va desplazando por todo el criptograma en incrementos de una letra o una posición hacia la derecha, procediéndose a ver los digramas que resultan entre esa ventana y el texto cifrado, tal y como se muestra la figura 3.1 y que se explicará a continuación.



Figura 3.1. Ataque por anagramación. Captura de Píldora formativa Thoth 15.

Como se observa en la figura 3.1, al cifrar el texto en claro ESTO NO HAY QUIEN LO ARREGLE por columnas, se ha obtenido el criptograma de 24 letras ENYEA GSOQN RLTHU LREOA IOEX. Vamos a elegir una ventana de tamaño 4 con las letras ENYE. Se desplaza esta ventana una posición a la derecha (L = 1) y se compara con la cadena del criptograma NYEA por lo que aparecen los digramas EN, NY, YE, EA, cuya frecuencia típica en español se muestra más adelante. Se desplaza la ventana otro espacio a la derecha (L = 2) y ahora nos aparecen los digramas EY, NE, YA, EG. Repetimos este proceso hasta encontrar cuatro digramas que tengan una media alta unida a una desviación típica baja, señal de que podrían ser parte del texto en claro. En este ejemplo esto sucede tras 6 desplazamientos (L = 6) al aparecer los digramas ES, NO, YQ y EN como se observa en la figura 3.1.

En la siguiente tabla se muestran los digramas encontrados en esos seis desplazamientos, con la media y la desviación típica de cada ventana.



Figura 3.2. Medias y desviaciones típicas de los digramas del ejemplo.

Nota: para tener valores de desviación típica que permitan tomar decisiones acertadas con ese dato, es necesario que la ventana sea mayor, por ejemplo unas 7 letras. En este ejemplo hemos elegido una ventana muy pequeña (4 letras) porque el texto cifrado era también muy pequeño y porque se ha optado por ir a mínimos, con el objeto de demostrar que incluso ante un escenario de ataque desfavorable, el algoritmo de anagramación funciona de manera satisfactoria.

Para los valores de K igual a 2, 4 y 5, la media es muy baja al igual que la desviación típica (poco frecuentes y todos de valor bajo) por lo cual podemos suponer que no se trata de digramas característicos del lenguaje. Sin embargo, para K igual a 1, 3 y 6, observamos desviaciones típicas muy parecidas (entre 1,0 y 1,2) si bien en el caso de K = 6 la media ha sido muy alta: 1,32625. Dicha media nos lleva a pensar que podríamos haber dado con la clave.

Pero, ¿cómo se encuentra ahora la clave? Una vez encontrada esa ventana que nos entrega varios digramas comunes de nuestro lenguaje, procedemos a calcular cuántas ventanas hemos probado hasta dar con la adecuada, que en nuestro caso han sido 6: las ventanas NYEA, YEAG, EAGS, AGSO, GSOQ y SOQN. Como han sido necesarios 6 desplazamientos y la cifra era por columnas, esto nos sugerirá que el número de filas que tiene la matriz puede ser 6.

Suponiendo que el número de filas fuese igual a 6, podemos comprobar si la nueva ventana (última comparación SOQN) comparada con otra ventana separada 6 letras a la derecha nos entrega también una media alta y una desviación baja. En este caso, comparamos la nueva ventana SOQN con THUL, separada 6 letras, obteniendo los digramas y frecuencias ST (1,108 %), OH (0,045 %), QU (0,873 %) y NL (0,282 %) con una media igual a 0,577 y una desviacion típica igual a 0,49652. La media no ha sido muy alta, pero sí mayor que las encontradas para K igual a 2, 4 y 5. En cambio tenemos una desviación típica baja, lo que nos indica que no hay una excesiva diversidad entre esos 4 números. Otro tanto ocurre si nos desplazamos con la nueva ventana THUL otros seis espacios a la derecha y lo comparamos con la cadena OAIO, obteniendo los digramas y frecuencias TO (0,743 %), HA (0,286 %), UI (0,258 %) y LO (0,793 %), con una media igual a 0,52 y una desviación típica igual a 0.28732, unos valores también interesantes.

Finalmente llegamos a la conclusión de que el número de filas de la matriz de cifra es 6. Puesto que el criptograma tiene 24 letras, entonces el número de columnas o clave buscada será 24/6 = 4, que fue la clave utilizada para la cifra.

El hecho de que el tamaño de la clave sea igual que el de la ventana elegida, en este ejemplo 4, es sólo una coincidencia. En realidad, como ya se ha dicho, es recomendable elegir ventanas de tamaños algo mayores para que las estadísticas sean más confiables.

En la figura 3.3 se recoge el informe que entrega Criptocásicos ante el criptoanálisis del ejemplo anterior, donde se observa el período (filas en este caso) encontrado igual a 6, así como la clave de 4 columnas y el texto en claro.




Figura 3.3. Informe del criptoanálisis de ENYEA GSOQN RLTHU LREOA IOE.

Nos vemos en el laboratorio...
Enunciado:
Con Criptoclásicos realiza un ataque por anagramación al siguiente criptograma si se sabe que la cifra ha sido por columnas módulo 27: CZEAE POATR UVBTO CSNNO DNASE EEINA PDTPA OEILL RNDÑO AOAVC LNAEG XIORV EAEOM OURAX ENBIN TLRAV NONX.
Solución:
La figura recoge las capturas de pantalla del software. Los informes que entrega el programa para el "Ataque rápido" y el "Ataque exhaustivo" quedan como ejercicio para el lector.

Que, efectivamente, se corresponde a la siguiente cifra:

Vamos a pensar un poco:
Dando por supuesto que has analizado los informes de los dos tipos de ataques por anagramación de la práctica anterior, ¿crees que el ataque por anagramación es lo mismo que un ataque por fuerza bruta en el que vamos buscando la clave de filas o columnas una a una? Piensa en esta respuesta antes de leer los párrafos siguientes.

Cuando se hizo un ataque por fuerza bruta a un cifrado por filas en una práctica del apartado 2.2.2 , comenzamos descifrando el criptograma con dos filas, si no se obtenía un texto en claro con sentido, aumentamos la clave a 3 filas, y así sucesivamente hasta que con 6 filas se obtenía un texto en claro con sentido.

Como hemos visto, algo parecido sucede con el ataque por anagramación puesto que buscando digramas comunes, al final damos con los digramas originales del texto en claro. Así, conocida la longitud del texto cifrado y el período o ventanas que hemos recorrido, obtenemos el dato que nos falta de filas o columnas, según sea la cifra que atacamos. Por lo tanto, a simple vista parece que ambos ataques, el de fuerza bruta y este de anagramación, son en el fondo la misma operación, pero no es así. Hay ciertas diferencias que vamos a aclarar.

En el ataque por fuerza bruta, se debe descifrar el criptograma con cada una de las claves posibles y leer el resultado para interpretar si se trata de texto en claro o no. En cambio, en el ataque por anagramación no hace falta descifrar el criptograma. Una vez obtenemos una ventana con digramas comunes al alfabeto utilizado (en nuestro caso solamente español mod 27), podemos deducir la clave sin tener la necesidad de descifrar el criptograma en aquellas posibles soluciones cuyos resultados eran falsos.

Concluimos, por tanto, que aunque ambos ataques son parecidos y que consumen en la práctica los mismos recursos informáticos, es más elegente el ataque por anagramación y por ello a dicho ataque se le llama criptoanálisis, porque hace uso de las estadísticas del lenguaje, a diferencia de la fuerza bruta.

Para terminar la lección, te recomiendo repases todos estos temas de la cifra por transposición en la píldora formativa Thoth 15: ¿Qué es la cifra por transposición o permutación? de la figura 3.4.


Figura 3.4. Píldora formativa Thot 15: ¿Qué es la cifra por transposición o permutación?


APARTADO 4. EVALUACIÓN DE LA LECCIÓN 7

4.1. Test de evaluación personal

En las siguientes 10 preguntas, elige la respuesta correcta. Sería muy recomendable que la primera vez que contestes este test lo hagas sin repasar la lección.

Para confirmar si tus respuestas son las correctas, accede y consulta las redes sociales de Crypt4you en twitter y en facebook. Las soluciones al test de esta séptima lección se publicarán en dichas redes sociales el mismo día en que se publique la próxima lección 8. Recuerda que en twitter se publican sólo las respuestas correctas y en facebook, además, se justifica la respuesta correcta y se indica por qué son incorrectas las demás.

1. En permutación las operaciones de cifra se realizarán en:

a) Módulo 27 si son mayúsculas en español.
b) Módulo 26 si son mayúsculas en inglés.
c) No tiene aquí importancia el módulo de cifra.
d) Módulo 27 desplazando las letras un valor constante.

2. La clave de la escítala estaba en:

a) La longitud del bastón.
b) El diámetro del bastón.
c) El peso del bastón.
d) El alfabeto utilizado.

3. En la cifra por filas:

a) Se escribe el texto en claro por filas y después se lee por columnas.
b) Se escribe el texto en claro por filas y se lee en saltos de dos.
c) Se escribe el texto en claro por columnas y después se lee por filas.
d) Se escribe el texto en claro por filas y se lee a revés.

4. Si se cifra el mensaje ESTO ES UNA PRUEBA con 3 filas, el criptograma será:

a) EOUPE SENRB TSAUA.
b) ETEUA REASO SNPUB X.
c) EEAES SPBTU RAONU X.
d) ESRSU UTNEO ABEPA.

5. Para descifrar por filas, lo primero que se hace es:

a) Contabilizar las letras del criptograma y encontrar sus frecuencias.
b) Contabilizar las letras del criptograma y multiplicarlo por el número de filas.
c) Contabilizar las letras del criptograma y buscar las 4 letras más frecuentes.
d) Contabilizar las letras del criptograma y dividirlo por el número de filas.

6. En la cifra por columnas:

a) Se escribe el texto en claro por columnas y después se lee por filas.
b) Se escribe el texto en claro por filas y después se lee por columnas.
c) Se escribe el texto en claro por filas y se lee en saltos de dos.
d) Se escribe el texto en claro por columnas y se lee al revés.

7. El criptograma DUELA EBNAV SRDCE CIOLX es el resultado de:

a) Cifrar el mensaje DESCUBRIENDO LA CLAVE con permutación de 6 columnas.
b) Cifrar el mensaje DESCUBRIENDO LA CLAVE con permutación de 5 columnas.
c) Cifrar el mensaje DESCUBRIENDO LA CLAVE con permutación de 4 columnas.
d) Cifrar el mensaje DESCUBRIENDO LA CLAVE con permutación de 3 columnas.

8. El hecho de incluir una clave en la cifra por filas o columnas:

a) Dificulta la operación de cifra.
b) Dificulta la operación de descifrado.
c) Dificulta el ataque por anagramación.
d) Dificulta la codificación del algoritmo.

9. Si ciframos por permutación mediante la técnica conocida como rail fence:

a) Simulamos una valla de campo.
b) Simulamos una línea de ferrocarril.
c) Simulamos un cilindro.
d) Simulamos una tela de araña.

10. El método con el que se criptoanalizan las cifras por transposición de filas y columnas:

a) Se denomina permutación.
b) Se denomina concatenación.
c) Se denomina difusión.
d) Se denomina anagramación.


Ir a: [Portada c4y]    [Lección 6] [Índice] [Lección 8]