Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Cifrado por sustitución monoalfabética

Criptografía (CCLXXIV): Ataque de diccionario 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 . Cuando se utiliza una clave (alfabeto de sustitución) aleatoria este criptosistema gana en robustez comparado con otros sistemas criptográficos anteriores , imposibilitando, por ejemplo, un ataque de fuerza bruta , ya que el espacio de claves es muy grande. Sin embargo, una clave aleatoria complica recodar la clave por parte del emisor y receptor de los mensajes, ya que tienen que recordar la disposición, sin ningún sentido, de todas las letras del alfabeto de sustitución, por lo que en la práctica éstos solían acordar una clave fácil de recordar a partir de la que se construía el alfabeto de sustitución , de la siguiente forma: primero se colocaba la clave acordada sin repetir le...

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 (CCLIII): Cifrado por 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 . En este post incluyo un  script en python para el cifrado y descifrado utilizando la   sustitución simple monoalfabética . Hay muchos cifrados de este tipo: cifrado atbash (de alfabeto invertido), cifrado César (de alfabeto desplazado), etc., pero en esta entrada me voy a referir al cifrado que utiliza un alfabeto de sustitución o alfabeto clave para determinar por qué letra se sustituye cada carácter del alfabeto. En una primera línea se colocan las letras del alfabeto en su posición normal y justo debajo de ellas las letras del alfabeto de sustitución o alfabeto clave, de forma que para cifrar y tomando como referencia la imagen que sirve para ilustrar este post: la "A" se sustituiría por la "C", la "B" por la "L" y así sucesivamente, y para descifrar: la "C" por la "A", la "L" por la "B...