Ir al contenido principal

Criptografía (CLXII): Solución Reto id0-rsa "Affine Cipher"

Solución de otro de los retos de la plataforma id0-rsa, la cual está dedicada exclusivamente a desafíos de criptografía.

Se trata de otro de los retos de criptografía clásica que en ella aparecen y, como en posts anteriores, lo voy a resolver tanto de forma manual ("lápiz y papel") como de forma automatizada mediante la utilización de una herramienta.

El reto en cuestión lleva por título "Affine Cipher" y, en mi opinión, presenta un nivel de dificultad bajo (☆☆☆).

Su enunciado dice lo siguiente: 'Can you brute force this classical cipher?'.

El criptograma a descifrar es el siguiente:
Solución:

a) De forma manual:

Parece que el enunciado nos sugiere utilizar la fuerza bruta para resolver este reto y efectivamente es posible solucionarlo utilizando ese método, pero yo lo voy a hacer de otra manera. No hay que olvidar que el cifrado afín es un cifrado simple por sustitución monoalfabética y, como tal, vulnerable a un ataque mediante el análisis de frecuencias, pero ni siquiera necesito realizar un análisis completo de este tipo, sino que me basta con conocer la correspondencia de dos caracteres del criptograma con sus respectivos caracteres del texto en claro, cosa que es muy fácil de conseguir.

Si hago un análisis de frecuencias de un criptograma correspondiente a un texto escrito en inglés será muy fácil identificar los caracteres del criptograma que se corresponden en el texto en claro con las dos letras más frecuentes en dicho idioma, ya que las frecuencias de aparición de los 2 caracteres del criptograma que se correspondan con la 'E' y la 'T', respectivamente, serán significativamente superiores a las del resto. Así, en el criptograma del reto obtengo lo siguiente (hay que considerar que en él también figuran espacios, además de la ',' y el  '.', por lo que el carácter que aparece con más frecuencia en el criptograma se corresponderá muy probablemente con el espacio, siendo los dos siguientes caracteres más frecuentes los que probablemente se correspondan con la 'E' y 'T', respectivamente):
Así que establezco como hipótesis inicial que el carácter  'I' en el criptograma se corresponde con la letra 'E' en el texto en claro y que el carácter 'R' en el criptograma se corresponde con la letra 'T' en el texto en claro. Pruebo a descifrar el criptograma con esta hipótesis de partida y si no obtengo un texto inteligible probaré con otra hipótesis.

El alfabeto empleado en el reto tiene 29 caracteres (letras mayúsculas A-Z, más el espacio, la coma y el punto), así que asocio a cada uno de ellos un número de orden:

'A' = 0; 'B' = 1; 'C'= 2; ...; '.' = 28

Por tanto, la función de cifrado (E) es la siguiente:

E(mi) = ci = (a x mi + b) mod 29

Donde:
a: constante de multiplicación o constante de decimación.
b: constante de adición o constante de desplazamiento.

la función de descifrado (D) es la siguiente:

D(ci) = mi = ((ci - b) x a-1) mod 29

Donde:
a: constante de multiplicación o constante de decimación.
a-1: inverso multiplicativo modular de a.
b: constante de adición o constante de desplazamiento.

Entonces, conforme a la hipótesis inicial que he establecido: 'I' (8) se corresponde con E (4) y 'R' (17) con 'T' (19), tengo que:

(a x 4 + b) mod 29 = 8
(a x 19 + b) mod 29 = 17

Por tanto:

a = (27 x (8 - 17)) mod 29 = -243 mod 29 = 18
b = (27 x ((4 x 17) - (19 x 8))) mod 29 = -2.268 mod 29 = 23

Y procedo al descifrado del criptograma con a = 18, a-1 = 21 y b =23:

- Primer carácter del criptograma ('B'):

m1 = ((c1 - b) x a-1) mod 29 = ((1 - 23) * 21) mod 29 = -462 mod 29 = 2 = ‘C’

- Segundo carácter del criptograma ('O'):

m2 = ((c2 - b) x a-1) mod 29 = ((14 - 23) * 21) mod 29 = -189 mod 29 = 14 = ‘O’

- Tercer carácter del criptograma ('H'):

m3 = ((c3 - b) x a-1) mod 29 = ((7 - 23) * 21) mod 29 = -336 mod 29 = 12 = ‘M’

- Cuarto carácter del criptograma ('H'), igual que el anterior:

m4 = ((c4 - b) x a-1) mod 29 = ((7 - 23) * 21) mod 29 = -336 mod 29 = 12 = ‘M’

- Quinto carácter del criptograma ('I'):

m5 = ((c5 - b) x a-1) mod 29 = ((8 - 23) * 21) mod 29 = -315 mod 29 = 4 = ‘E’

- Sexto carácter del criptograma ('K'):

m6 = ((c6 - b) x a-1) mod 29 = ((10 - 23) * 21) mod 29 = -273 mod 29 = 17 = ‘R’

- Séptimo carácter del criptograma ('B'), igual que el primer carácter:

m7 = ((c7 - b) x a-1) mod 29 = ((1 - 23) * 21) mod 29 = -462 mod 29 = 2 = ‘C’

- Octavo carácter del criptograma ('I'), igual que el quinto carácter:

m8 = ((c8 - b) x a-1) mod 29 = ((8 - 23) * 21) mod 29 = -315 mod 29 = 4 = ‘E’

...

Por lo que parece que voy bien, ya que se puede leer la palabra 'COMMERCE', y sigo hasta obtener el texto en claro:
Ya tengo el texto en claro, pero piden introducir como solución el 'hash' md5 de éste, por lo que utilizo un software para el cálculo de 'hashes':
Con lo que la solución a este resto es: 880cabd53df2f03050a7214d3ae30a07.

b) De forma automatizada:

Utilizo una de las muchas herramientas 'online' existentes sobre el cifrado simple por sustitución monoalfabética, no olvidar lo que he dicho anteriormente sobre que el cifrado afín no deja de ser un cifrado de ese tipo:
Como se ve en la figura anterior la herramienta sólo ha considerado los caracteres alfabéticos, dejando como están en el criptograma los espacios, las comas y los puntos, pero es muy fácil darse cuenta de que la coma se corresponde con el espacio en el texto en claro, el punto con la letra 'S' y el espacio con la 'F'.

Y obtengo el mismo texto en claro que en el descifrado manual.

Comentarios

Entradas populares de este blog

Criptografía (I): cifrado Vigenère y criptoanálisis Kasiski

Hace unos días mi amigo Iñaki Regidor ( @Inaki_Regidor ), a quien dedico esta entrada :), compartió en las redes sociales un post titulado "Criptografía: el arte de esconder mensajes"  publicado en uno de los blogs de EiTB . En ese post se explican ciertos métodos clásicos para cifrar mensajes , entre ellos el cifrado de Vigenère , y , al final del mismo, se propone un reto consistente en descifrar un mensaje , lo que me ha animado a escribir este post sobre el método Kasiski  para atacar un cifrado polialfabético ( conociendo la clave descifrar el mensaje es muy fácil, pero lo que contaré en este post es la forma de hacerlo sin saberla ). El mensaje a descifrar es el siguiente: LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC Como ya he dicho el método de Vigenère es un sistema de sustitución polialfabético , lo que significa que, al contrario que en un sistema de

Criptografía (XXIII): cifrado de Hill (I)

En este post me propongo explicar de forma comprensible lo que he entendido sobre el cifrado de Hill , propuesto por el matemático Lester S. Hill , en 1929, y que se basa en emplear una matriz como clave  para cifrar un texto en claro y su inversa para descifrar el criptograma correspondiente . Hay tres cosas que me gustan de la criptografía clásica, además de que considero que ésta es muy didáctica a la hora de comprender los sistemas criptográficos modernos: la primera de ellas es que me "obliga" a repasar conceptos de matemáticas aprendidos hace mucho tiempo y, desgraciadamente, olvidados también hace demasiado tiempo, y, por consiguiente, que, como dice  Dani , amigo y coautor de este blog, me "obliga" a hacer "gimnasia mental"; la segunda es que, en la mayoría de las ocasiones, pueden cifrarse y descifrase los mensajes, e incluso realizarse el criptoanálisis de los criptogramas, sin más que un simple lápiz y papel, es decir, para mi es como un pasat

¿Qué significa el emblema de la profesión informática? (I)

Todas o muchas profesiones tienen un emblema que las representa simbólicamente y en el caso de la  informática: " es el establecido en la resolución de 11 de noviembre de 1977  para las titulaciones universitarias superiores de informática, y  está constituido por una figura representando en su parte central  un  núcleo toroidal de ferrita , atravesado por  hilos de lectura,  escritura e inhibición . El núcleo está rodeado por  dos ramas : una  de  laurel , como símbolo de recompensa, y la otra, de  olivo , como  símbolo de sabiduría. La  corona  será la  de la casa real  española,  y bajo el escudo se inscribirá el acrónimo de la organización. ". Veamos los diferentes elementos tomando como ejemplo el emblema del COIIE/EIIEO (Colegio Oficial de Ingenieros en Informática del País Vasco/ Euskadiko Informatikako Ingeniarien Elkargo Ofiziala ) . Pero no sólo el COIIE/EIIEO adopta el emblema establecido en dicha resolución, sino que éste se adopta también como im