Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Hill Climbing

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

Continúo poniendo scripts de programación en python para automatizar tareas que tengan relación con la  criptografía . Ya puse una  entrada  con un script en python para cifrar y descifrar textos en claro y criptogramas, respectivamente, utilizando la sustitución simple monoalfabética , y también puse  un post  con la explicación de la implementación del algoritmo 'Hill Climbing' que me propongo realizar para atacar criptogramas cifrados mediante este criptosistema   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 durante el ataque . Para que el script con este ataque funcione se necesita importar el siguiente módulo en el programa principal, que se encargará, precisamente, de  la calificación de la aptitud ('fitness')  de los textos que se vayan obteniendo en el descifrado con respecto  al idioma en el que se escr...

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 ...