En parvulitos de criptografía: pasatiempos para hackers nóveles

 Colaborador: andatux
criptografia

Hola compañeros,

Hoy compartimos con vosotros esta humilde entrada sobre las bases del cifrado, algo sencillo sin demasiada complicación y os proponemos un reto al final del artículo que deberéis saber solucionar con lo visto aquí…  ¡Pues bien, comenzamos!

La criptografía proviene de la palabra griega “kryptos” (oculto) y “graphein” (escribir), es decir, un tipo de escritura oculta. La criptografía es entonces un arte que ayudada por la ciencia se transforma en toda una potente herramienta para las comunicaciones ininteligibles entre dos puntos: emisor (cifra el mensaje) y receptor (descifra el mensaje para su lectura). A diferencia de los lenguajes que utilizamos día a día, si el mensaje es captado por terceros no deberían saber interpretarlo…

Los mensajes cifrados se usan desde tiempos inmemoriales para transferir mensajes sin que terceras personas puedan acertar lo que pone. Desde los egipcios utilizando jeroglíficos hasta los tiempos de la Roma Imperial de Julio César (100 aC – 44 aC). Éste usaba mensajes cifrados bajo un código que se ha denominado César en su nombre.

El famoso emperador romano utilizaba dicho código para escribir mensajes secretos sustituyendo las letras del mensaje original por la letra del alfabeto correspondiente a tres posiciones (desplazamiento) más allá. Es decir, la A sería sustituida por la D, la B por la E, la C por la F y así sucesivamente.

Así, un mesnaje como Obsequium amicos, veritas odium parit (en castellano “El servilismo produce amigos, la verdad odio”), podría escribirse cifrado bajo este código César como:

“Revhtxlxo dolfrv, yhulwdv rglxo sdulw”

Como ya sabemos que procede del cifrado mediante código César, descifrarlo nos resultaría fácil invirtiendo la permutación aplicando la regla vista anteriormente. Tan solo debemos sustituir cada letra por su correspondiente desplazándonos tres posiciones en el alfabeto. Podríamos crearnos una tabla para facilitar este trabajo, con las oportunas correspondencias.

Pero imagina que desconoces cual es el código bajo el que se cifra el mensaje, de primeras pensarías que un niño ha estado jugando con el teclado de tu ordenador o que tu mascota se ha paseado sobre el teclado… Sería difícil detectar que tras esas letras o símbolos sin sentido se esconde un mensaje oculto. Y más aun con los avances y complejos algoritmos de cifrado que existen en la actualidad.

Pues bien, esto es lo que usan las agencias de espionaje, ejercito, gobiernos, sistemas de cifrado, comunicaciones con embajadas, etc., pasándose información cifrada para que otros no puedan saber de que se trata, o al menos tarden en conseguir descifrar los mensajes.

enigma-maquina

En las guerras se suelen usar máquinas de cifrado para las ordenes y objetivos que se transmiten desde el mando al batallón, evitando que si el mensaje es interceptado por el enemigo, éste pueda saber cuales son las intenciones o que tarde en descifrarlo, para cuando ya se ha perpetrado el ataque.
Por ejemplo, el ejercito alemán utilizó una máquina de cifrado llamada Enigma para cifrar los mensajes, evitando que cualquier otro que no poseía los discos rotatorios de cifrado pudiese descubrir el mensaje oculto. Esto hizo que se desentrañase una de las primeras “batallas” criptográficas por descifrar mensajes, tanto de un bando como del otro.

CRIPTOANÁLISIS: ¿cómo descifrar mensajes?

El criptoanálisis es un método por el cual se van probando todas las permutaciones posibles en el texto cifrado hasta lograr captar lo que dice.
Cifrar mensajes empleando fuentes de texto como la Widing (que emplea símbolos en sustitución de las letras) en un editor de texto o los códigos de desplazamiento como los vistos anteriormente puede resultar un juego de niños para un analista criptográfico. Seguro que todos hemos hecho en algún momento algo así, o crear un tipo de fuente propia con un editor de fuentes para pasar mensajes ocultos con un amigo…

Pero los códigos de cifrado actuales hacen que se tengan que utilizar sofisticadas tecnologías para descifrar los mensajes. El método humano a seguir, suele constar de unos pasos relativamente sencillos, pero que requiere de paciencia e inteligencia para lograr descifrar el mensaje oculto. Los pasos son:

  1. Contabilizar el número de veces que se repite una letra o símbolo en un mensaje cifrado.
  2. Identificar cual o cuales se repiten mayor número de veces (frecuencia).
  3. Escribir el mensaje secreto dejando un espacio bajo él para ir escribiendo las posibles permutaciones.
  4. Ahora imaginemos que esas letras o símbolos que se repiten con mayor frecuencia son las letras más repetidas del idioma en el que está escrito el mensaje. Cada lengua tiene unas letras que se repiten con mayor frecuencia. Por ejemplo, en inglés la letra que más utiliza es la E, seguida de la T y luego la A. En castellano (si consultamos la “Frecuencia de aparición de letras” en la RAE) podemos apreciar como las más repeditdas son la E, seguida de la A y después la O. Si nuestro mensaje cifrado estuviese en inglés (date cuenta que varía en función del idioma), probaríamos a sustituir las letras o símbolos que más se repiten por estas letras para ver si el mensaje cobra algún sentido.
  5. Una vez hechas las estimaciones anteriores, debemos captar cual es el código bajo el que se cifra el mensaje o directamente completar el resto del texto.
  6. Luego podrás identificar como se ha cifrado el mensaje, es decir, qué patrón sigue para futuros descifres.

Si tu presa o enemigo no se diese cuenta de que alguien lo ha logrado descifrar, tú podrás seguir captando los mensajes ocultos para chafarle sus planos o saber que pretende. Por eso, es una buena práctica, variar el código de cifrado a menudo para evitar este tipo de fallos de seguridad.

Caso práctico:

Imagina que has interceptado un mensaje cifrado y este pone algo así como:

 Fp hpa py wm ñmem op mw wmoa, wwmxmxp

Vamos a aplicar lo dicho en el primer punto, suponiendo que el mensaje lo han escrito compatriotas con el nivel de idiomas de Ana Botella, es decir, en castellano.

Para descifrar el mensaje, lo primero que debemos es contabilizar el número de veces que se repite cada carácter, tenemos que la M se repite 7 veces, luego la P se repite 5 veces, seguida de la W que se repite 5 veces. Si sabemos que el mensaje en un idioma determinado, castellano en nuestro caso, podemos probar a sustituir esas letras por las tres letras más repetidas de dicho idioma: E, A, O. Quedaría algo así:

Con la M=E: “Fp hpa py we ñeee op ew weoa, wwexexp”
Con la M=A: “Fp hpa py wa ñaea op aw waoa, wwaxaxp”
Con la M=O: “Fp hpa py wo ñoeo op ow wooa, wwoxoxp”
Con la P=E: “Fe hea ey wm ñmem oe mw wmoa, wwmxmxe”
Con la P=A: “Fa haa ay wm ñmem oa mw wmoa, wwmxmxa”
Con la P=O: “Fo hoa oy wm ñmem oo mw wmoa, wwmxmxo”
Con la W=E: “Fp hpa py em ñmem op me emoa, eemxmxp”
Con la W=A: “Fp hpa py am ñmem op ma amoa, aamxmxp”
Con la W=O: “Fp hpa py om ñmem op mo omoa, oomxmx
p”

Pero estos mensajes no son nada legibles. Deberíamos seguir probando letras y combinaciones de varias para ver si el mensaje cobra algún sentido…  En castellano además existen sonidos como la “ll” o la “rr” o la “cc” que producen bigramas de letras seguidas repetidas. Este tipo de sonidos nos facilitan el descifrado, puesto que descartaría muchas posibilidades. Aplicando esto al mensaje cifrado, vemos como ww no tendría sentido que fuese ninguna vocal de las elegidas (E, A, O). Si volvemos a analizar la frecuencia de repetición de ciertas letras en castellano, tenemos que de las consonantes que integran esos tres bigramas vistos, el orden de frecuencia es R, seguida de L y luego C. Como CC y RR al inicio de una palabra no tiene sentido, nos quedaría LL por descarte. Así que ya sabemos que la W se corresponde con la L.

Esta pista nos ha abierto una brecha interesante hacia el descifrado. Ahora sabemos con total seguridad que W=L:

“Fp hpa py lm ñmem op ml lmoa, llmxmxp” 

Si con este nuevo mensaje repetimos las combinaciones anteriores, obtendremos esto (sin contar la W, ya que sabemos de qué letra se trata):

Con la M=E: “Fp hpa py le ñeee op el leoa, llexexp”
Con la M=A: “Fp hpa py la ñaea op al laoa, llaxaxp”
Con la M=O: “Fp hpa py lo ñoeo op ol looa, lloxoxp”
Con la P=E: “Fe hea ey lm ñmem oe ml lmoa, llmxmxe”
Con la P=A: “Fa haa ay lm ñmem oa ml lmoa, llmxmxa”
Con la P=O: “Fo hoa oy lm ñmem oo ml lmoa, llmxmxo”

Si analizamos el resultado, podemos ver datos curiosos. En el caso de M=E, aparecen sonidos posibles en castellano y con sentido (le, el, lle), igual ocurre con M=A (la, al, lla). No es así con M=O, que podríamos descartarla, puesto que “lo” si que existe, pero “ol” no. Así vamos reduciendo las posibilidades. Si intuimos que M puede ser o A o E, entonces se puede descargar que P sea una de estas dos letras. Recopilamos, si M puede ser A o E y W es L:

“Fp hpa py la ñaea op al laoa, llaxmxp” 
“Fp hpa py le ñeee op el leoa, llexexp” 

Ambos podrían ser válidos. Si nos fijamos en la X de la última palabra, debería de ser una consonante. Mirando la frecuencia de la RAE, vemos que las ocho consonantes más usadas son la S, R, N, D, L, C, T y M. Sustituyamos ahora X por estas a ver que nos aparece:

Si X=S “Fp hpa py la ñaea op al laoa, llasmsp”
“Fp hpa py le ñeee op el leoa, llesesp”
Si X=R “Fp hpa py la ñaea op al laoa, llarmrp”
“Fp hpa py le ñeee op el leoa, llererp”
Si X=N “Fp hpa py la ñaea op al laoa, llanmnp”
“Fp hpa py le ñeee op el leoa, llenenp”



Si X=M “Fp hpa py la ñaea op al laoa, llammmp”
“Fp hpa py le ñeee op el leoa, llememp”

Con ayuda de un diccionario, podemos buscar palabras tipo “llas-s-”, “lles-s-”, “llar-r-”, etc. Todas las combinaciones que nos han salido. Como vemos, se podría descartar X=S, X=R, X=D, evidentemente X=L (ya descubierta anteriormente), X=C y X=T. No existen ese tipo de palabras en castellano. Nos quedamos con la N y la M como posibles candidatas. Descartando más palabras que no tendrían sentido, parece que lo más posible es que X=M, ya que el diccionario nos aporta datos que autodescartan al resto de posibilidades.
Parece que ya tenemos una cosa clara, que M puede ser A o E y W es L, mientras que X parece ser M. Analizando esto matemáticamente para buscar alguna correlación, vemos la distancia que existen entre correspondencias:

De M a A =  13 (desplazamiento)
De M a E =  19 (desplazamiento)
De W a L= 15 (desplazamiento)
De X a M= 15 (desplazamiento)

Parece que el número que predomina es el 15, que se repite dos veces. Vamos a crear un abecedario con ese desplazamiento, comenzando por W=L:
W=L, X=M (esta también coincidiría), Y=N, Z=Ñ,…

diccionario

Seguimos chicos, ya falta menos. En nuestro mensaje cifrado existe una Y, si la sustituimos por N veamos las consecuencias:

“Fp hpa pn la ñaea op al laoa, llamamp”

Delante de la N que hemos sustituido existen una P, si la sustituimos por alguna de las vocales más frecuentes podemos obtener nuevas pistas. Como A, I, O quedan descartadas (no existe an, in y on en castellano), solo nos queda P=E o P=U, pero lo más frecuente es que sea E:

“Fe hea en la ñaea oe al laoa, llamame”

Empieza a cobrar sentido, tenemos algo así como “#e #e# en la #a#a #e al la##, llamame”. ¿Qué letra podría preceder a la “e” el inicio? Podría ser la “L” (Le), la “M” (Me), la “S” (Se), la “D” (De)  o la “T” (Te). La L y la M ya están pilladas, así que la T sería lo más evidente, además coincide con el patrón de desplazamiento de 15 posiciones en el alfabeto.

“Te hea en la ñaea oe al laoa, llamame”

La siguiente palabra comienza por H cifrada, que si también sigue el patrón de 15 posiciones de desplazamiento, debería corresponder a la V:

“Te vea en la ñaea oe al laoa, llamame”

Las A cifradas ya no tienen sentido, puesto que hemos descubierto que la M correspondía a la A. Así que aplicando la regla del 15, tendríamos que A puede ser O (recuerda no sustituir las A ya decodificadas anteriormente):

“Te veo en la caea oe al laoa, llamame”

El mensaje se vuelve legible ahora, intuitivo para una persona. Siguiendo con la regla del 15, la E puede corresponderse a una S, la O a una S y la Ñ a D:

“Te veo en la casa de al lado, llamame.”

¡¡¡Ya hemos descubierto el mensaje cifrado!!! Compruebalo con la tabla de la imagen posterior…

Ahora te propongo un reto:

¿Eres capaz de descifrar esto? (deja un comentario si sabes la solución):

Qe issioixe kw qe qiilk

Te doy pistas: está en castellano… y a lo largo del artículo hay dos pistas más.

Un comentario en «En parvulitos de criptografía: pasatiempos para hackers nóveles»

  1. Uau! Gracias!
    Muy completo y asequible, espero que nadie se asuste por la longitud del artículo (TL:DR?), ya que es una muy buena introducción a este mundo.
    Gracias de nuevo!

Los comentarios están cerrados.