Ir al contenido principal

Criptografía (CLXI): Solución Reto id0-rsa "Vigenère"

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. En este ocasión, al contrario que en los posts anteriores, lo voy a resolver sólo utilizando herramientas, una aplicación de escritorio y otra 'online', ya que su resolución de forma manual ("lápiz y papel") sería laboriosa por el gran tamaño del texto cifrado.

No obstante lo anterior, utilizo la aplicación de escritorio porque en ella se puede ver de forma muy didáctica la manera en la que se resolvería de forma manual. Además, aquellos lectores que estén interesados en saber cómo se resolvería manualmente pueden empezar por leer este post.

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

Su enunciado dice lo siguiente: 'One of the most difficult problems to pronounce'.

El criptograma a descifrar es el siguiente:

UHVGMEFNVCIAJPYPVGTKZYHYMIBPXFFCRPWYSCZALCSOEWCRIEELQCJSYLVBFRKZWNFLCTQCBNTLIQBRZDEIJNULXPJCBJAMSDKZSZFCRFWCJACHEWTFFCKCUTYPEZFFFCIRIEVMYJMSYTXZVTMTKCOEIPMKFAETHMOTVGILSERWPWLNFHLMXTFAVMOOLYGCUHRESLFTYPWMMUKTSLUHZDXGNEZDXFFKVJELENFHLCSEZDWMNEKPBRGRFXQMCYUTGINERYXGNERSEZPUKZJFFAITREPFYTWMGFZNIPTHRGMLHSZOIBUHVQYPUHVDXRPWZYHUBRUHEQTTZWPPBNXTREBHVLHMGTYPSRIEIMSYUSRNMPDUDDXYOCVMIQQERVMLHHFHTMUEEEEASENHEQQUCWMLHHZXXFPSVEMEFRPPPJPWTCIYUUIPWMGHZDWCFMVOEJMSKPIJBNUHLYMESZRCMIBPJGWEKCMNIADXIPTTYPCPPSVLRBGECWAGUHIPKSMAIDXPPKVDSDTTIPREUHNSMAIPVCMMEITLPJZSKLVRFDKSIZPAKLPMOGKSIUBTVCPGLERSSPJZFYXYMBLCWRCOZWIPPUKZJYNIJDMQTIGAMQUERXIPBSWZVDFDRWPYIWYZAYTSVPRNVLCTREUHVSEPQOFYICSORCLCIAUELPPWELWGEEYTWZMATVNYDKVEELEDZDTJBYVOLGTNRVIBDHVDXUJTYELCXHFWINBRKZJFJSSZHWBBFGIRIEXFRUBLVNPCBRCJGSUAXLMLTTKSIYMTVCRYUIERHCQRVDWGPNJZJRIENLXCSYYZVGAOEHLGMEREXFFOKSIPFNUZJRIESZERBHRMAGUHFYIYSMCTOCBFVYGCSSKSVMXNYLPDCATVAYSDZYXMUHVLMPBSZQXMDOLYXCSBRWELDERYCRFNUPRAZTFEVGQAYLFUBSJPILTTVLHGMYDLRYHIERLGTSKPIPJNXZEPBSZYERIOLDELEBFLXJPWVCMLHSVCIRIENSMRFWYLPCIAUESPOHZXEJMAKZRAFTYPSSUSKCIRDHVOEPNGRGIYQETFPGBRDZXGPNRYHRIEECIKBIEPHDJXVOAFJLVELCCOREWDJVVZEPTWVCIQFEEDMKVLKLRCPUJWCNFABPHZPAKLRBDRVHWYUMFEMMOLVDWMOTYPWCBIEDXYOTCJXFFTYCICTPIPEBCOREWGOTYPVCBRGLYQFDFYXFFIIHEWUHVHLYMEJSEBJRIPKSMAIWCQFTKWIBCOUTPWEONYMLUOKSIZMUVELSTGZGMLHNFOMQUAEEPWEIJNIPOISWIRPKVYSDUHVXSTFMVYXRIOLRLDSODSMQDLFDIPWITTRGUYRSEZIAUZFQFRMPHGUEMPVWNAEWSMLOLEEJPNXSMQPAIDGPJEUDXYSBLNORIOLBYCFQLPKQUAEOYNOIDMPWTPITREJNXFTMOTYPXPJAERYJBRILMQFDSZBGOTYPFMXTYPWYWAXPWRPOUPVCDTKSIPFAEOAGUHZYXCOSVWCCBGVCIWFSXLDCEOWQXMXAIOWRIEJASRXHVCIRIETSEQFHROPYTTSPILEEJNVGFDCTOCXIJPYNPNKSICYTIPQCTTVCRMGTYPFMBTNSIPFIKHEQBLJZXPJAERYJBRCJTJBTWZVKFDCPZCMWZELRIEXFRUBLVDXYSBLNOFJMJPPDXAJDICOCFZPJZAEOEBSOZEPWCACLRAJNXSMKTECQXMUHVUIPLIERXMTSZYKQPFYTWAIIGZJYDRRQXYODJTPCOTCJIWFIERXFFVRDXZMUVPCCPFKSIQFAEZXTFRPQEPEIJEELUFCLWITBFLXUBSRWWMMYZYKZSERELJFSJWCQUICWMRTCFXQYODVCVCDKCPWQMYJEELEIERYNPNKSIRPPFQXFFLFRKCSHVLHYTTFFXQPRKZJNPSKCSMUEUTRRIEBPIJBNUCMQJNXDSKFTNZJCFTRMSTFTYPPCWECZJRIEJEIPOPCLXDPRDTXGTUJPHDPRTLXAIIERXSSNJHMRITYPAFBLVWMLFIKDXMQIJYSRNOIPWNBCZZYQUHRYXFFPRWQMGADLRQIAEOELESKLRBJNXFTMOSLNLYCAJPEQUHREJJBSBDICNEUAIPDHVOERUHVXEQUHVLHMGSFXIQIIGHLGDHYLHQVNBESYMLSFXFFRKCYALSSFXJJTKWIIJNXASQUWRDWKBLCLRBTHFCXYODREXFFSRXIRJMVWMRULVVMLHPFDXUBSWFPJPFRWEPHERYHRBLCLQZJTZZRQPTYLXRIIJWSEHEISIYESKLRBQOZYXMGHZDHGEBPYSKFAEDWYUIJQCIJNXASQUITLRRTEVELPFEJPEQPFWEMNVSLAELPAIELCSERYHJFTDPSLUOKSERVPFYXFJSULKEPONTXFFIKSIPIAEOYNPNKSIEVNNLPCUOJEIYEYYTWUBYJHMDULPDPGEAWEELETYPRCSETEMLHHZXWCMFMZPSOTVPVCEHZDPMGTPDLMVLUPVQGOILTCEEJEEJ

Solución:

a) Aplicación de escritorio:

La aplicación que voy a utilizar es Criptoclásicos v2.1, una herramienta muy didáctica y que como su nombre indica tiene diversas funcionalidades con respecto a ciertos criptosistemas clásicos.

Lo primero que hago en la aplicación es seleccionar el alfabeto utilizado (el texto en claro está escrito en inglés y en el criptograma sólo se observan caracteres alfabéticos, es decir, no se ven dígitos ni otro tipo de caracteres):
Después selecciono el criptosistema:
Y, finalmente, para iniciar el ataque, copio y pego en "Entrada" el criptograma del reto y pulso sobre el botón "Criptoanalizar":
Una vez hecho lo anterior se me muestra la siguiente ventana:
Tal y como decía en el post al que he hecho referencia, lo primero que deberíamos hacer para intentar descifrar el criptograma de forma manual sin conocer la clave es averiguar la longitud de esta última, y eso es precisamente lo que hace este software.

Para ello utilizaríamos el método Kasiski, que se basa en la búsqueda de secuencias de caracteres repetidos en el texto cifrado, lo cual significa, casi con toda probabilidad, que dichas secuencias no sólo eran también iguales antes del cifrado sino que además la clave ha debido coincidir en la misma posición; y lo que se puede observar en la parte superior izquierda de la figura anterior es precisamente eso: las cadenas repetidas en el criptograma, el número de veces que se repite cada una de ellas y el número de posiciones que las separan.

Después, probando con un "tamaño de la repetición" (longitud de las cadenas de caracteres que se repiten) igual o mayor de 5 caracteres (parte superior central de la ventana que se muestra a continuación) vemos que la longitud más probable de la clave es 6 (parte superior derecha de la ventana), ya que ése es el máximo común divisor (mcd) o mayor número entero que divide sin dejar resto a todas las posiciones que separan las cadenas de longitud igual a 5 o superior que se repiten en el texto cifrado:
Tal y como se observa en la figura anterior, una vez conocida la probable longitud de la clave (L), en este caso 6, se divide el criptograma en L subcriptogramas (en nuestro caso: C1, C2, C3, C4, C5 y C6), ya que éstos habrían sido cifrados por una misma letra de la clave, a partir de lo que se puede realizar un ataque simple de tipo estadístico monoalfabético en cada uno de ellos.

Aunque no se ve en la ventana anterior:

- El
primer subcriptograma (C1) contiene los siguientes caracteres del criptograma: 1º, 7º, 13º, etc.
- El segundo subcriptograma (C2) contiene los siguientes caracteres del criptograma: 2º, 8º, 14º, etc.
- El tercer subcriptograma (C3) contiene los siguientes caracteres del criptograma: 3º, 9º, 15º, etc.
- El cuarto subcriptograma (C4) contiene los siguientes caracteres del criptograma: 4º, 10º, 16º, etc.
- El quinto subcriptograma (C5) contiene los siguientes caracteres del criptograma: 5º, 11º, 17º, etc.
- El sexto subcriptograma (C6) contiene los siguientes caracteres del criptograma: 6º, 12º, 18º, etc.

A partir de aquí, considerando el alfabeto inglés con 26 caracteres y que en él: la posición relativa de la letra "A" es el valor 0, la letra "E" está 4 espacios a la derecha de la "A", la letra "O" está 10 espacios a la derecha de la letra "E" y la letra "T" está a 5 espacios de la letra "O", es decir, teniendo en cuenta los cuatro caracteres más frecuentes en inglés, buscamos en cada subcriptograma (Ci) los caracteres más frecuentes que cumplan con esa distribución: 0, +4, +10, +5 mod 26, y esto es precisamente lo que se ve en la parte central de la figura anterior en el "Diagrama de frecuencias de los subcriptogramas"; según el cuál, por ejemplo, C1 contiene 38 caracteres "B", 52 caracteres "F", 34 caracteres "P" y 42 caracteres "U", y la suma de estos números de caracteres es la mayor de todas las sumas de los números de los caracteres que cumplen con la distribución indica (si la posición relativa de la letra "B" es el valor 0, la letra F" está 4 espacios a la derecha de la "B", la letra "P" está 10 espacios a la derecha de la letra "F" y la letra "U" está a 5 espacios de la letra "P") y por esa razón la primera letra de la clave de cifrado sería la "B", y así sucesivamente. El software nos dice que la posible clave es: "BARLEY" (parte inferior de la figura anterior).

Y, finalmente, ya sólo queda descifrar el criptograma utilizando la tabla del cifrado de Vigenère con la clave hallada (ver este post). El software lo hace automáticamente pulsando sobre el botón "Descifrar":
ya tengo el texto en claro:

THEVIGENERECIPHERISKINDALIKETHECAESARCIPHERONLYTHENAMEISHARDERTOSPELLIMEANCAESARISAKINDATRICKYWORDTOOBECAUSEIALWAYSFORGETTHEABEFORETHEEBULLSHITBUTVIGENEREIMEANIDONTEVENREALLYKNOWHOWTOPRONOUNCETHATONETHESOLUTIONTHISTIMEISTHEKEYANDNOWHEREISSOMETEXTFROMMOBYDICKMEANTIMEAHABOUTOFHEARINGOFHISOFFICERSHAVINGSIDEDTHEFURTHESTTOWINDWARDWASSTILLRANGINGAHEADOFTHEOTHERBOATSACIRCUMSTANCEBESPEAKINGHOWPOTENTACREWWASPULLINGHIMTHOSETIGERYELLOWCREATURESOFHISSEEMEDALLSTEELANDWHALEBONELIKEFIVETRIPHAMMERSTHEYROSEANDFELLWITHREGULARSTROKESOFSTRENGTHWHICHPERIODICALLYSTARTEDTHEBOATALONGTHEWATERLIKEAHORIZONTALBURSTBOILEROUTOFAMISSISSIPPISTEAMERASFORFEDALLAHWHOWASSEENPULLINGTHEHARPOONEEROARHEHADTHROWNASIDEHISBLACKJACKETANDDISPLAYEDHISNAKEDCHESTWITHTHEWHOLEPARTOFHISBODYABOVETHEGUNWALECLEARLYCUTAGAINSTTHEALTERNATINGDEPRESSIONSOFTHEWATERYHORIZONWHILEATTHEOTHERENDOFTHEBOATAHABWITHONEARMLIKEAFENCERSTHROWNHALFBACKWARDINTOTHEAIRASIFTOCOUNTERBALANCEANYTENDENCYTOTRIPAHABWASSEENSTEADILYMANAGINGHISSTEERINGOARASINATHOUSANDBOATLOWERINGSERETHEWHITEWHALEHADTORNHIMALLATONCETHEOUTSTRETCHEDARMGAVEAPECULIARMOTIONANDTHENREMAINEDFIXEDWHILETHEBOATSFIVEOARSWERESEENSIMULTANEOUSLYPEAKEDBOATANDCREWSATMOTIONLESSONTHESEAINSTANTLYTHETHREESPREADBOATSINTHEREARPAUSEDONTHEIRWAYTHEWHALESHADIRREGULARLYSETTLEDBODILYDOWNINTOTHEBLUETHUSGIVINGNODISTANTLYDISCERNIBLETOKENOFTHEMOVEMENTTHOUGHFROMHISCLOSERVICINITYAHABHADOBSERVEDITEVERYMANLOOKOUTALONGHISOARSCRIEDSTARBUCKTHOUQUEEQUEGSTANDUPNIMBLYSPRINGINGUPONTHETRIANGULARRAISEDBOXINTHEBOWTHESAVAGESTOODERECTTHEREANDWITHINTENSELYEAGEREYESGAZEDOFFTOWARDSTHESPOTWHERETHECHASEHADLASTBEENDESCRIEDLIKEWISEUPONTHEEXTREMESTERNOFTHEBOATWHEREITWASALSOTRIANGULARLYPLATFORMEDLEVELWITHTHEGUNWALESTARBUCKHIMSELFWASSEENCOOLLYANDADROITLYBALANCINGHIMSELFTOTHEJERKINGTOSSINGSOFHISCHIPOFACRAFTANDSILENTLYEYEINGTHEVASTBLUEEYEOFTHESEANOTVERYFARDISTANTFLASKSBOATWASALSOLYINGBREATHLESSLYSTILLITSCOMMANDERRECKLESSLYSTANDINGUPONTHETOPOFTHELOGGERHEADASTOUTSORTOFPOSTROOTEDINTHEKEELANDRISINGSOMETWOFEETABOVETHELEVELOFTHESTERNPLATFORMITISUSEDFORCATCHINGTURNSWITHTHEWHALELINEITSTOPISNOTMORESPACIOUSTHANTHEPALMOFAMANSHANDANDSTANDINGUPONSUCHABASEASTHATFLASKSEEMEDPERCHEDATTHEMASTHEADOFSOMESHIPWHICHHADSUNKTOALLBUTHERTRUCKSBUTLITTLEKINGPOSTWASSMALLANDSHORTANDATTHESAMETIMELITTLEKINGPOSTWASFULLOFALARGEANDTALLAMBITIONSOTHATTHISLOGGERHEADSTANDPOINTOFHISDIDBYNOMEANSSATISFYKINGPOSTICANTSEETHREESEASOFFTIPUSUPANOARTHEREANDLETMEONTOTHATUPONTHISDAGGOOWITHEITHERHANDUPONTHEGUNWALETOSTEADYHISWAYSWIFTLYSLIDAFTANDTHENERECTINGHIMSELFVOLUNTEEREDHISLOFTYSHOULDERSFORAPEDESTAL

Como se dice en el texto en claro la solución es la clave empleada en el cifrado, por lo que la solución a este resto es: "BARLEY".

b) Herramienta 'online':

Utilizo una de las muchas herramientas 'online' existentes sobre el cifrado de Vigenère:
obtengo el mismo texto en claro que con la aplicación de escritorio y, por tanto, la solución a este reto es la clave empleada en el cifrado.

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