Hola a todos. Estos días he estado desarrollando una aplicación de análisis de frecuencia. Me interesó tras estudiar un poco este tipo de análisis para descifrar algoritmos simples de sustitución de caracteres como por ejemplo la cifrado César. Para el que no lo sepa...
En el criptoanálisis, el análisis de frecuencias es el estudio de la frecuencias de las letras o grupos de letras en un texto cifrado. Es un método de apoyo para la ruptura de cifrados clásicos.
El análisis de frecuencias está basado en el hecho de que, dado un texto, ciertas letras o combinaciones de letras aparecen más a menudo que otras, existiendo distintas frecuencias para ellas. Es más, existe una distribución característica de las letras que es prácticamente la misma para la mayoría de ejemplos de ese lenguaje. Por ejemplo, en inglés la letra E es muy común, mientras que la X es muy rara. Igualmente, las combinaciones ST, NG, TH y QU son pares de letras comunes, mientras que NZ y QJ son raros. La frase mnemotécnica "ETAOIN SHRDLU" agrupa las doce letras más frecuentes en los textos ingleses. En español, las vocales son muy frecuentes, ocupando alrededor del 45% del texto, siendo la E y la A las que aparecen en más ocasiones, mientras que la frecuencia sumada de F, Z, J, X, W y K no alcanza el 2%.
En algunos cifradores, las propiedades naturales del texto plano se preservan en el texto cifrado. Dichos esquemas pueden ser potencialmente objeto de ataques de sólo texto cifrado.
El caso es que estudié un poco todo esto y busqué alguna aplicación que me permitiese hacer este tipo de análisis pero no encontré ninguna, encontré una en inglés que me aconsejaron en el foro de criptografía, pero sólo funcionaba con sustitución de letras, y yo, basándome en el libro de "El Escarabajo de Oro" de Edgar Allan Poe quería hacer un análisis de frecuencia del mensaje cifrado del libro, y ese programa no me servía. Así que como no encontraba nada, ni en inglés ni en Español, me he dedicado a hacer yo uno mismo. Es muy sencillo, simplemente escribes un texto o bien lo importas desde un txt y el programa realiza un análisis de la frecuencia con la que aparecen los caracteres en el texto y muestra una gráfica con el resultado. Luego permite abrir unas gráficas con las letras más frecuentes en el inglés y en el español y con comparativas se puede deducir el significado de estos textos. Para quien no lo entienda muy bien, tiene un ejemplo que explicaron hace un tiempo en este mismo foro:
http://foro.elhacker.net/criptografia/criptografia_el_escarabajo_de_oro_uso_de_analisis_de_frecuencia-t212428.0.htmlEsta aplicación nos ayudaría a hallar la tabla de caracteres que obtiene el autor de dicho relato por lógica.
Bueno, siento haberme extendido tanto, pero quería explicar bien qué hace esta herramienta, y aquí la comparto con vosotros. Se aceptan críticas, sugerencias y modificaciones del código.
The Golden Bug Source.zipCon el Source adjunto el libro de "El Escarabajo de Oro" en pdf para quien quiera leerlo, es un relato muy cortito. También lo pueden encontrar en wikisource ya que es de libre distribución.
PD: Para todo aquel que crea que este tipo de cifrado está obsoleta que investigue como funciona la cifrado WEP (para redes wifi) y que investigue qué método usa aircrack para crackear las contraseñas
Saludos!