Solución Kriptojuego 20080131: La vergüenza española (II)
Tal y como comenté en la entrega anterior, y por sorprendente que parezca, la resolución por fuerza bruta de un simple cifrado de sustitución con clave (como el de nuestro kriptojuego) resultaría impracticable incluso haciendo uso de los recursos computacionales de que hoy en día disponemos. Sin embargo, algunos de nuestros lectores lo reventaron en pocos minutos. ¿Cómo puede ser esto?
La "culpa" de todo la tienen los criptoanalistas árabes del califato abbasí, iniciado hacia el año 750 y que dio paso a la Edad de Oro de la civilización islámica, que por entonces dominaba la mitad del mundo conocido. Estos califas estaban menos interesados en la conquista que en el establecimiento de una sociedad civil pacífica y próspera, donde florecieron las matemáticas y otras ciencias, como la medicina o la propia criptografía. Así, se ha documentado que en esta época se protegían las declaraciones de impuestos mediante criptografía, en concreto con un sistema de sustitución monoalfabética con alfabeto mixto.
Sin embargo el mayor mérito de estos antecesores árabes es el descubrimiento del criptoanálisis, es decir, la rama de la criptología que se encarga de reventar los mensajes cifrados sin necesidad de contar con la clave...
Curiosamente, el origen de la invención es religioso, ya que los teólogos de Bagdag y Basora (ciudades de triste fama actualmente, pero que en aquella época constituían auténticos centros del saber y la erudición) se dedicaron a analizar en profundidad la escritura de las revelaciones atribuidas a Mahoma, a fin de poder establecer su autenticidad y clasificarlas según su cronología. Para ello estudiaban minuciosamente la estructura de palabras y frases, buscando patrones de coincidencia con los escritos disponibles atribuidos al Profeta. No tardaron mucho en darse cuenta de que algunas letras del idioma árabe eran mucho más frecuentes que otras, revelando un patrón de frecuencias que también se conservaba en los textos cifrados.
El origen del criptoanálisis estaba así servido en bandeja y el primer tratado del que se tiene constancia lo firma Al-Kindi, un científico "todoterreno" del siglo IX, autor de cientos de obras relevantes en varias disciplinas diferentes. El texto clave de Al-Kindi se titula "Sobre descifrar mensajes criptográficos" y fue redescubierto en Estambul en 1987. Su revolucionario método de criptoanálisis está resumido en dos párrafos, cuya traducción al castellano (ver Simon Singh, "Los Códigos Secretos", Ed. Debate) dice:
Una manera de resolver un mensaje cifrado, si sabemos en qué lengua está escrito, es encontrar un texto llano diferente escrito en la misma lengua y que sea lo suficientemente largo para llenar una hoja, y luego contar cuántas veces aparece cada letra. A la letra que aparece con más frecuencia la llamamos "primera", a la siguiente en frecuencia la llamamos "segunda", a la siguiente la llamamos "tercera", y así sucesivamente, hasta que hayamos cubierto todas las letras que aparecen en la muestra de texto llano.
Luego observamos el texto cifrado que queremos resolver y clasificamos sus símbolos de la misma manera. Encontramos el símbolo que aparece con más frecuencia y lo sustituimos con la forma de la letra "primera" de la muestra de texto llano, el siguiente símbolo más corriente lo sistituimos por la forma de la letra "segunda", y el siguiente en frecuencia lo cambiamos por la forma de la letra "tercera", y así sucesivamente, hasta que hayamos cubierto todos los símbolos del criptograma que queremos resolver."
Este texto describe perfectamente la técnica de criptoanálisis denominada Análisis de Frecuencias, que es necesario utilizar para resolver nuestro kriptojuego 20080131.
Como es de suponer, en la actualidad esta técnica está perfectamente implementada mediante programas de ordenador (ejemplos: un analizador on-line, código fuente de un contador de caracteres en C y otro en Java, un completo analizador freeware para Windows cuyo pantallazo muestro más abajo...), lo que sin duda nos evita la parte más tediosa (contar letras y símbolos), pero debido a la diferencia existente entre los textos llanos utilizados para establecer las frecuencias características del lenguaje (aquí una tabla de frecuencias de caracteres en español) y los textos llanos que se cifran, no cabe esperar una solución totalmente automática mediante software. Por ejemplo: si ciframos un texto breve, donde aparezca varias veces el término "Kriptópolis" es muy probable que haya una proporción de letras K anormalmente alta en relación a lo esperable en un texto estándar en castellano. Como consecuencia tenemos siempre que contar con la necesidad de realizar unos cuantos ajustes "a mano" sobre el resultado que nos proporcione la mera sustitución de unos caracteres por otros en función de sus frecuencias de aparición.

Solución de nuestro Kriptojuego mediante CrypTool
Por supuesto CrypTool representa una importante ayuda en el criptoanálisis de un texto cifrado por sustitución, realizando por nosotros un análisis de frecuencia detallado, tanto del texto llano de referencia como de nuestro texto cifrado, y mostrando correlaciones e histogramas con los resultados. Además realiza automáticamente la sustitución de los caracteres y trata de adivinar la clave, por lo que el resultado que nos proporciona sólo suele necesitar algunos ajustes manuales por nuestra parte hasta convertirse en el texto llano original.
Para resolver nuestro kriptojuego empezaremos por proporcionar al programa un texto llano es español que pueda utilizar como referencia. Nos podemos arreglar con uno que viene con CrypTool, en el fichero genesis-es.txt de la carpeta references. Hay que cargarlo desde el menú Options -> Text Options -> Reference file for statistical applications. Pulsar luego Apply.
Vamos ahora a File -> Open y cargamos el fichero (o copi-pegamos) con el texto cifrado del kriptojuego:

Vamos ahora al menú Analysis -> Symmetric Encryption (classic) -> Ciphertext-only -> Substitution:

En la siguiente pantalla dejamos la opción por defecto: un análisis de frecuencia de digramas (es decir, basado en pares de caracteres y la posibilidad de que aparezcan juntos o no en nuestro lenguaje):

Dejamos sin marcar las dos opciones que nos ofrece el siguiente cuadro de diálogo:

Como podemos observar, el resultado ya es bastante bueno:

Nos basta retocar algunos defectos y reordenar las palabras para evitar su confusa (e intencionada ;) agrupación de cinco en cinco para obtener el resultado buscado. El resultado no es exacto porque el alfabeto de cifrado adivinado por CrypTool no es exacto (ya comentamos antes por qué). Basta fijarse en la sección "Current substitution Key". La clave correcta debería ser:
K R Y P T O S A B C D E F G H I J L M N Q U V W X Z
y no la que se muestra.
Si el resultado fuera aún incomprensible y quisiéramos mejorarlo, podríamos jugar con diferentes opciones sin más que pulsar ahora el botón "Manual Analysis" de esta misma pantalla. Como, por el contrario, lo consideramos bastante aceptable, pulsamos "Accept Substitution", lo que nos lleva a un cuadro de edición donde podemos retocar a mano el resultado hasta que tenga pleno sentido (he remarcado en rojo los pocos errores que aún existen):

Muestro a continuación el comienzo del trabajo:

El texto final que resuelve el criptograma es el siguiente:
Aunque los sistemas clasicos estén en desuso, no por ello deben ser pasados por alto por el criptoanalista. En realidad, sería bastante poco agradable perder horas de esfuerzo en la intención de romper una cifra, suponiendo de antemano que el criptosistema en cuestión empleado es de los denominados modernos, para luego caer en la cuenta que aquel complicado enigma se trataba simplemente de un cifrado elemental, que puede romperse facilmente con herramientas básicas. No quedaríamos muy bien ante nuestros superiores. Por lo tanto la primera acción que realizará todo criptoanalista será la de contabilizar los caracteres que aparecen en el criptograma para obtener información sobre el tipo de cifra monoalfabético o polialfabético e intentar aplicar las técnicas que describiremos más adelante para romper dicha cifra. Si esto no entrega los resultados esperados buscará otros caminos, yendo como es lógico siempre desde la dificultad menor a la mayor.
Se trata de un instructivo párrafo (el resaltado es mío) del libro del Dr. Ramió, que recomiendo de nuevo para los que queráis profundizar en éste y otros criptosistemas, y no tengáis demasiado miedo a un tratamiento matemático de los mismos a un nivel universitario.
Como me he extendido más de lo previsto, queda para una última entrega el remate histórico que os había prometido. Mis disculpas.
Continuará...




Increible
Increible! No se mucho sobre criptología. Llevo unos meses haciendo un programa multiplataforma de linea de comandos para encriptar y desencriptar textos usando diversos algoritmos. Actualmente lo estoy portando a Qt4 para disponer de GUI.
Para aprender más, ¿hay algún método que te permita saber que algoritmo se ha podido usar? Porque cuando pones los kriptojuegos me quedo mirándolos y me vienen a la cabeza muchos algoritmos, pero pocas veces el correcto.
Saludos!~
En eso estamos
Bueno; sólo llevamos dos ejercicios, pero ya podemos sacar algunas conclusiones de los métodos vistos:
-> Lo primero, un análisis de frecuencias:
-> Si la distribución de frecuencias en el cifrado es idéntica a la de un lenguaje, pensemos en una transposición.
-> Si la distribución de frecuencias es superponible a la de un lenguaje, pero con otro alfabeto distinto, pensemos en un sustitución.
"encriptar"...
La palabra "encriptar" no existe en castellano. Se dice cifrar, y su contrario descifrar.
Saludos.
Palabritas
Tampoco existen en castellano las palabras array, password, download, login, etc... y son el pan nuestro de cada día.
La informática es así. ¿O me dice que tu no "descargas" diariamente contenidos de internet y lo dices normalmete? (descarga = mala traducción de download)
y descriptar
Pues Jorge Ramió utiliza "descriptar" repetidas veces en la segunda edición de su libro en 1999.
"descriptar" :S
Eso ya es el no va más.. ¡"descriptar"! Hace daño solo con oírlo.
El hecho de que ese palabro esté en un libro no le da validez (si no, mira las traducciones mejicanas de texto informáticos, en los que utilizan sin rubor "arreglo" como traducción de "array").
Cuestion de culturas
Es cuestion de culturas, mas no significa que esté mal. No creo que te hayan dicho que debe ser Mexicanos y no Mejicanos. Sin embargo, sé que la mayoría de los europeos así lo escriben, y se ha aceptado de esa manera. A mi en lo personal no me gusta que los españoles hablen las palabras inglesas que no tienen traducción tal como se diría en español en lugar de dejarlas en su pronunciación original
Pero no es solo "un libro"
Pero no es solo "un libro"; es una obra del responsable de la mayor red hispana de criptografía universitaria.
Y George Bush
Y George Bush es el presidente (esperemos que por poco tiempo) de la potencia más poderosa del planeta, pero esto no es motivo para que sus decisiones sean las correctas.
La informática es así..
La informática será así para tí. Yo prefiero decir, por ejemplo, contraseña en lugar de "password". O identificarme en el sistema en vez de "loguearme".
El idioma...
Más te vale saber que para tu desgracia y nuestra suerte el mundo no se rige por tus tabús. Seguiremos logueándonos en webs con nuestros passwords encriptados aunque venga Pérez-Reverte a atizarnos con el diccionario en la cabeza.
tabús...
Ahora entiendo lo de la vergüenza española.. Eres el más claro exponente de esos tabús, que entienden como bueno todo lo que venga de fuera.
Qué pena...
Cierto!
Cierto! No me había dado cuenta. Es la costumbre de leer textos sobre criptología en inglés.
Saludos! ;-)
¿Y lo de la vergüenza española?
Que me teneis intrigado. Prometísteis revelarlo en esta entrega.
Ahí está el kriptojuego...
El kriptojuego es precisamente esa frase...
está tan bien hecho que se ha conseguido hacer a todos mirar hacia el otro texto... y conseguir que discutan sobre qué es mejor, sí "cifrar" o "encriptar".
Qué gente...
¿Y cambiando el numero de rotación?
Supongo que no descubro nada nuevo, pero ¿no se dificultaría el analisis si se fuera cambiando el número con el que se hace la sustitución? Por ejemplo, tenemos la clave 1237 (12 sustitución inicial, 3 incremento y 7 número de incrementos). Esto significa que la primera letra la ciframos con rot-12, la segunda con rot-15 (incrementamos de 3 en 3), y así hasta la letra 8 que se haría con rot-12 de nuevo.
Poe describe este metodo
El metodo que describes de Al Kindi esta muy detallado en un cuento de Edgar A Poe, me refiero a "El escarabajo de oro". Recuerdo que cuando lo lei en mi adolescencia me llamo la atencion.
Ya lo dije
Lo mencioné en la entrega anterior.
Magnifico
Encontre de casualidad el libro de Simon Singh cuando buscaba unos libros para preparame un examen de análisis de algoritmos, y me llamo la atención a leer la contraportada, así que me lo anote para sacarlo cuando terminara los exámenes.
Acabé los exámenes y me saqué el libro de la biblioteca, y es muy interesante (lo recomiendo encarecidamente al que le esté gustando el tema), ya llevo mas de la mitad.
Más tarde buscando en la red sobre criptografía me he encontrado con estos juegos que estais haciendo, que por cierto son muy entretenidos, pero me causa cierta sensación de ser un tramposo por utilizar el criptotool, ¿les pasa a Vds.? En el libro cuenta como rompian las claves sin mas medios que el ingenio, lápiz y papel.
Será que las mentes de ahora estamos tan habituadas a las máquinas que no podemos razonar como antes :-P
Aunque también es cierto que algunas de estas personas fueron mentes privilegiadas. (Me remito a la historia de Charles Babbage y la cifra Vigenere, que es genial).
Y es que con el cryptool, este segundo minijuego me ha durado escasos 5 minutos. (El primer mini juego no lo logre, ya que al igual que muchos me fui directamente a la sustitución olvidandome de la transposición)
Un saludo
Vamos a ver
Si no utilizáramos herramientas como CrypTool, explicar cómo resolver el segundo juego nos llevaría a escribir "El Escarabajo de Oro", segundo tomo. Además, la solución variaría completamente incluso para resolver otro criptograma similar, porque el criptoanálisis requiere intuición, ingenio y suerte. Mi método de lápiz y papel no tendría por qué coincidir con el tuyo, con lo que entraríamos en una dinámica absurda sobre si es mejor contar antes los "XD" o los "NJ".
De hecho a partir de los comentarios que me van llegando detecto varias confusiones en algunos lectores.
Por ejemplo hay quien parece creerse que esto es una especie de competición, en que se intenta enfrentar el "talento" del editor de Kriptópolis al de sus lectores. Según esa lógica absurda, resolver un criptograma en un par de horas significaría una especie de derrota para quien lo plantea. Utilizar CrypTool, una vergüenza. Bueno, pues mi idea era otra: presentar un reto didáctico, para ir adentrándonos en la criptografía, a la vez que aprovechamos la mejor herramienta informática disponible para aprender criptografía.
Sin embargo a la vista del exceso de trabajo que supone preparar este tipo de retos (sobre todo si siguieramos progresando), la pobre acogida de la idea y los absurdos comentarios que he tenido que leer (y no lo digo por el tuyo), empiezo a pensar que podríamos estar arrojando margaritas a los cerdos. Si el trabajo serio y el contenido original no interesa, os aseguro que conozco mil formas más efectivas para hacer que el sitio rebose de visitas y comentarios y continúe subiendo en todos los ránkings.
Parece que el daño que ha hecho la LOGSE es irreversible, amigos.
nope nope
Llevo tiempo sin escribir nada, pero es que no me puedo callar
Me parecen muy interesantes estas dos entregas, tanto que me he instalado el CrypTool y me he leído la presentación. Te puedo decir que no se me va a escapar ninguna de las entregas.
Daniel
Razón hay que dar al que la tiene
No es por "meter la pelota al admin" tanto él como yo nos vamos a pagar las mismas cañas, ninguna; pero chicos, el admin tiene más razón que un santo.
Se trabaja un parrafo bien majo y claro explicando una historia, además nos desglosa paso a paso como hay que hacer para desencriptar un texto, de forma que hasta yo puedo entenderlo (no soy informático ni matemático, ni siquiera de Ciencias...); y nosotros terminamos hablando de Bush...
Sobre Cryptotools y/o cualquier herramienta informática en general, son eso herramientas, facilitan el trabajo pero si uno quiere usar lapiz o papel, e incluso, ni siquiera eso... se pueden hacer los posicionamientos mentalmente. Adelante, mi más sincera admiración, que lo resuelves un día después de que otro lo haya publicado al usar el ordenador, bueno, no pasa nada, contrasta el resultado, ¿has acertado?, te das una palmadita en la espalda -Que bueno eres tío, y sin ordenador-, que no, miras donde está el fallo, corrige y siguiente capítulo.
No puedo dedicarle mucho tiempo a los cryptojuegos y los sigo "a remolque", pero por lo menos quiero dejar constancia que se agradece el esfuerzo
Se agradece
Se agradece saber que al menos alguien aprecia el esfuerzo. Respecto al planteamiento, creo que lo has definido mejor que yo mismo, sobre todo con esta frase:
Lo que me vengo temiendo es que cuando haya que explicar RSA o las curvas elípticas el esfuerzo de simplificación habrá de ser mucho mayor, y resultaría bastante frustrante recibir tan poco feedback positivo. Quién sabe, a lo mejor tenía razón aquel que decía que "lo regalado no lo aprecia nadie" y lo que tengo que hacer es currarme un libro a 36 euritos + IVA.
Venga. Muchas gracias de nuevo.
Yo creo que bastantes más que uno...
...apreciamos el esfuerzo. Sobre lo de descifrar "a pelo" que sugería el compañero, con la sustitución monoalfabética se puede y es divertido (aunque hace falta un domingo MUY lluvioso) porque es un poco como hacer el juego del ahorcado. Pero con transposiciones y sistemas polialfabeticos la cosa ya depasa un poco lo que es un juego.
O sea que usar el cryptool es trampa pero si no vamos a poder hacer trampas, nuestra carrera como criptoanalistas termina aquí.
Yo estoy en contra de los 4x4 sustituyendo a la mochila, de los teleskís que detrozan toda la ladera solo para que los urbanitas puedan disfrutar sin sudar y del uso de oxigeno en el Himalaya tirando las botellas por allí cuando se acaban, pero creo que este caso particular, teniendo en cuenta que no perjudicamos el medio ambiente, los que el tarro no nos alcanza mucho más allá quedamos legitimados para usar software. Los que se vean con fuerzas, adelante con el làpiz, que el mundo es de los valientes.
Magnífico v2.0 (es decir otra vez)
Soy yo de nuevo, el de "me causa cierta sensación de ser un tramposo" (Me voy a registrar para no tener que estar diciendo quien soy cada vez).
Creo que me habeis mal interpretado, lo de hacer trampas no lo decia por la explicación ni mucho menos, lo decia por mi mismo, que para descifrar el cripto juego me he sorprendido lo rapido que lo he logrado con el criptool. Y tramposo me estaba autodenominando a mi mismo ("ser un" -> me referia a mi mismo).
Los juegos estan genial y las explicaciones aún mejor, y por supuesto que doy las gracias a admin por el trabajo que realiza al explicar, de forma que todos lo entiendan, el funcionamiento de las diferentes formas de criptoanalisis.
Tanto los criptojuegos, como sus soluciones y el propio software criptool me parecen geniales (de ahí el titulo del comentario que va por ellos).
Dios me libre de menospreciar el trabajo de admin, a mi personalmente me parece un trabajo magnífico, no solo los juegos y sus soluciones sino todo el site en general. Yo también he tenido varias páginas y siempre he terminado abandonando por que después de mucho trabajo la gente ni siguiera me alentaba a seguir.
Me sentiría muy apenado si un simple comentario que pretendian ser palabras de ánimo, se tergiversaran y dieran a entender lo contrario, asi pués espero que esto sirva de aclaración.
Y por cierto creo que no soy el único que esta mirando cada dos por tres, esperando impaciente a ver la entrega final de este último juego (y otro nuevo más a ser posible).
Un saludo a todos.
Y yo insisto
Y yo insisto en que mi comentario no iba por ti, sino por una sensación general de que mi planteamiento no se entiende, de que proponer CrypTool ha sido un error y de todo lo que ya dije y ahora no voy a repetir.
Bien; ahora ya sé que hay dos personas a las que el asunto les interesa. Quizás hasta puedan ser tres o cuatro. ¿Es suficiente para justificar el esfuerzo que hay que hacer?
Eso es lo que ahora me estoy pensando...
Apuntame a la lista...
...porque yo también lo sigo con mucho interés. Lo que pasa es que leo mucho más de lo que escribo (imagino que le pasará lo mismo a muchos de los anónimos )
Por cierto lo del Cryptool...es la bomba y muy didáctico.
Un saludo
(Agur eta ondo ibili)
Mon el del Ibiza
Pues yo secundo la opinión
Pues yo secundo la opinión de mos.
Por favor, no nos quites las entregas de kriptojuegos que, la verdad, estoy aprendiendo con ellas (y obviamente con el resto de la página) más cosas sobre criptografía y algoritmos de encriptación de lo que creo que me vayan a enseñar nunca, y eso por no hablar del esfuerzo que realizas para hacerlo comprensible al resto de mundo mortal ;)
Saludos
Apunta a otro
Yo tambien sigo los juegos y me parecen geniales. tampoco se nada de criptografia pero con esto algo se aprende.
No dejes de hacer estos juegos por favor
que tal cuatro?
Pues eso, que por lo menos semos cuatro.
Saludos ;-)
Hola que tal bueno por mi parte lo que puedo decir es que de momento no puedo expresar una opinion concreta sobre el tema de la criptología pues apenas quiero empezar a hacer mis primeros pasos.
Pero antes que nada me gustaria ampliamente felicitar a Administrador pues tiene una forma muy clara y precisa para explicar cada tema.
Por cierto lei al principìo de los comentarios que ya son dos trabajos que han elaborado me gustaría poder tener tambien el primero y asi poder agarrar el hilo de el asunto ;-).
Tambíen me gustaría saber cada cuando se hacen las entregas para poder conectarme a la pagina
Bueno por lo pronto creo que es todo lo que puedo decir espero seguir en contacto y ya con mas conocimiento de el tema poder expresar mis opiniones.
Opinar