Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Criptoanálisis

Criptografía (CCLXXII): Ataque 'Hill Climbing' a la sustitución simple monoalfabética

Decía en este post que iba a desarrollar el algoritmo 'Hill Climbing' para atacar criptogramas cifrados mediante sustitución simple monoalfabética utilizand o  la calificación o puntuación basada en las estadísticas de tetragramas de la aptitud ( 'fitness' ) de los textos que se vayan descifrando con las sucesivas claves a probar. Todo ello, con objeto de obtener la clave correcta empleada en el cifrado. El algoritmo que voy a implementar puede representarse gráficamente de la siguiente manera: 1.- En primer lugar,  se generará la clave con la que se iniciará la secuencia de descifrados , pero no será aleatoria, sino que como clave inicial se generará aquella conforme a la frecuencia relativa de los caracteres (monogramas) del criptograma con respecto a las letras del idioma en el que esté escrito el texto en claro . Es decir, si el idioma es el español, la letra "E" de la clave (el alfabeto de sustitución) será la que aparezca con mayor frecuencia en el c...

Criptografía (CCLXXI): El algoritmo 'Hill Climbing'

Tal y como nos cuenta wikipedia   el algoritmo 'Hill Climbing' , también llamado algoritmo de "ascenso de la colina" e s un algoritmo iterativo que comienza con una solución arbitraria a un problema, un punto actual en un espacio de búsqueda,  para luego intentar encontrar una mejor solución , un nuevo punto mejor en el espacio de búsqueda, variando incrementalmente un único elemento de la solución . Si el cambio produce una mejor solución, otro cambio incremental se realizará a la nueva solución, repitiendo este proceso hasta que no se puedan encontrar mejoras o se hayan alcanzado un número predefinido de iteraciones. ¿Podemos aplicar un algoritmo de este tipo para el criptoanálisis automatizado de criptogramas? Pensemos en un cifrado de sustitución simple monoalfabética , en el que cada carácter del texto en claro o texto plano se sustituye siempre por un mismo carácter en el texto cifrado o criptograma. En este tipo de cifrados, cuando el alfabeto de sustitución ...

Criptografía (CCLXIX): Calificación de la aptitud ('fitness') de un texto en python

Continúo poniendo scripts de programación en python para automatizar tareas que tengan relación con la  criptografía . En este post incluyo un  script en python que implementa la calificación de un texto  respecto al español o inglés, es decir para la obtención de una calificación o puntuación de un texto dado con objeto conocer si éste se asemeja más o menos a un texto escrito en uno de los citados idiomas. Como decía en este post , esto nos puede servir para automatizar el criptoanálisis de cifrados clásicos. El script que pondré a continuación utiliza estadísticas de tetragramas , es decir, la frecuencia relativa de aparición de grupos de cuatro letras consecutivas en ambos idiomas. De tal forma que  se divide el texto que se desea calificar en tetragramas y se suman los logaritmos de las probabilidades de aparición de cada uno de ellos en el idioma correspondiente. Cuanto mayor sea el valor obtenido mayor probabilidad de que el texto sea del idioma al que quer...

Criptografía (CCLXVIII): Criptoanálisis mediante análisis de frecuencias (III)

Decía en el post anterior  sobre el análisis de frecuencias que conocer la frecuencia relativa de  los monogramas (letras), bigramas (grupos de dos letras), trigramas (grupos de tres letras) y tetragramas (grupos de cuatro letras)  en un determinado idio ma puede ayudarnos a  determinar cuánto se parece un texto descifrado a un texto escrito en ese idioma y, por tanto, que nos  puede servir para automatizar el criptoanálisis , por ejemplo, de los cifrados por  sustitución simple monoalfabética . Para romper un cifrado de este tipo mediante la técnica del  análisis de frecuencias   iremos descifrando el criptograma objeto de análisis con diferentes claves (alfabetos de sustitución) y comprobando si los textos que se van produciendo se van pareciendo cada vez más a un texto escrito en el idioma en el que se escribió el mensaje . Si esto ocurre vamos por el buen camino y continuaremos probando más claves hasta encontrar un texto en claro total o...

Criptografía (CCLXVII): Criptoanálisis mediante análisis de frecuencias (II)

Decía en el  post anterior que iba a poner más información sobre el criptoanálisis mediante  el análisis de frecuencias y que éste  consiste , básicamente,  en estudiar la frecuencia de aparición en el criptograma de caracteres o símbolos y de grupos de ellos (monogramas:  un carácter o símbolo; bigramas o digramas: dos caracteres o símbolos consecutivos; trigramas: secuencias de tres caracteres o símbolos, tetragramas: cuatro caracteres o símbolos consecutivos, etc.) con relación a la frecuencia de las letras y grupos de éstas en el idioma en el que está escrito el texto en claro. Pues bien, lógicamente, lo primero que tenemos que saber es la frecuencia de las letras y de grupos de éstas (n-gramas)  en los idiomas en los que estén escritos los textos en claro correspondientes a los mensajes cifrados que vayamos a criptoanalizar y, tomando como referencia lo indicado en Wikipedia para la frecuencia de aparición de las letras , construyo la siguiente tabl...

Criptografía (CCLXVI): Criptoanálisis mediante análisis de frecuencias (I)

Allá por el siglo IX, Al-Kindi , un filósofo y matemático árabe, fue el primero que se dio cuenta, o al menos que lo documentó, de que se podía atacar un texto cifrado mediante la estadística del lenguaje en el que estuviera escrito el texto en claro, ya que ciertas características del mismo se trasladaban al criptograma. Por ello, entiendo que podría ser considerado como el padre del criptoanálisis e incluso como el primer 'hacker' de la historia. El análisis de frecuencias consiste , básicamente, en estudiar la frecuencia de aparición en el criptograma de caracteres o símbolos y de grupos de ellos (monogramas: un carácter o símbolo; bigramas o digramas: dos caracteres o símbolos consecutivos; trigramas: secuencias de tres caracteres o símbolos, tetragramas: cuatro caracteres o símbolos consecutivos, etc.) con relación a la frecuencia de las letras y grupos de éstas en el idioma en el que está escrito el texto en claro. La técnica del  análisis de frecuencias   es muy...