Crypto

Introducción §

El cifrado César es uno de los primeros cifrados conocidos y más simples. Es un tipo de cifrado de sustitución en el que cada letra en el texto plano se ‘desplaza’ un cierto número de lugares por el alfabeto. Por ejemplo, con un cambio de 1, A sería reemplazado por B, B se convertiría en C, y así sucesivamente. El método lleva el nombre de Julio César, que aparentemente lo usó para comunicarse con sus generales.

Los esquemas de cifrado más complejos, como el cifrado Vigenère, emplean el cifrado César como un elemento del proceso de cifrado. El conocido ‘cifrado’ ROT13 es simplemente un cifrado César con un desplazamiento de 13. El cifrado César esencialmente no ofrece seguridad de comunicación, y se mostrará que se puede romper fácilmente incluso a mano.

Ejemplo §

Para pasar un mensaje cifrado de una persona a otra, primero es necesario que ambas partes tengan la ‘clave’ para el cifrado, de modo que el remitente pueda cifrarlo y el receptor pueda descifrarlo. Para el cifrado césar, la clave es el número de caracteres para cambiar el alfabeto cifrado.

Aquí hay un ejemplo rápido de los pasos de cifrado y descifrado involucrados con el cifrado césar. El texto que cifraremos es ‘defender la pared este del castillo’, con un cambio (tecla) de 1.

plaintext: defend the east wall of the castleciphertext: efgfoe uif fbtu xbmm pg uif dbtumf

Es fácil ver cómo cada carácter en el texto plano se desplaza hacia arriba en el alfabeto. El descifrado es igual de fácil, utilizando un desplazamiento de -1.

plain: abcdefghijklmnopqrstuvwxyzcipher: bcdefghijklmnopqrstuvwxyza

Obviamente, si se utiliza una clave diferente, el alfabeto cifrado se desplazará una cantidad diferente.

Descripción matemática §

Donde k es la tecla (el cambio) aplicada a cada letra. Después de aplicar esta función, el resultado es un número que luego debe ser traducido de nuevo a una letra. La función de descifrado es:

JavaScript Ejemplo de cifrado César §

Texto plano

shift:

Texto cifrado

Otras implementaciones §

Para el código de cifrado César en varios lenguajes de programación, consulte la página de Implementaciones.

Para cifrar sus propios mensajes en python, puede utilizar el módulo pycipher. Para instalarlo, utilice pip install pycipher. Para cifrar mensajes con el cifrado César (u otro cifrado, vea aquí la documentación):

Criptoanálisis §

Vea Criptoanálisis del cifrado César para una forma de romper automáticamente este cifrado.

El criptoanálisis es el arte de romper códigos y cifrados. El cifrado César es probablemente el más fácil de descifrar. Dado que el cambio tiene que ser un número entre 1 y 25, (0 o 26 resultarían en un texto plano sin cambios), simplemente podemos probar cada posibilidad y ver cuál resulta en un fragmento de texto legible. Si sabe qué es una pieza del texto cifrado, o puede adivinar una pieza, esto le permitirá encontrar inmediatamente la clave.

Si esto no es posible, un enfoque más sistemático es calcular la distribución de frecuencia de las letras en el texto cifrado. Consiste en contar cuántas veces aparece cada letra. El texto natural en inglés tiene una distribución muy distinta que se puede usar para ayudar a descifrar códigos. Esta distribución es la siguiente:

Frecuencias de letras en inglés

Esto significa que la letra e es la más común, y aparece casi el 13% de las veces, mientras que z aparece mucho menos del 1% de las veces. La aplicación del cifrado César no cambia estas frecuencias de letras, simplemente las desplaza un poco (para un cambio de 1, la letra de texto cifrado más frecuente se convierte en f). Un criptoanalista solo tiene que encontrar el cambio que hace que las frecuencias de texto cifrado coincidan estrechamente con las frecuencias naturales en inglés, y luego descifrar el texto usando ese cambio. Este método se puede utilizar para romper fácilmente los cifrados César a mano.

Si sigue teniendo problemas, pruebe la sección criptoanálisis de la página cifrado de sustitución. Todas las estrategias que funcionan con el cifrado de sustitución también funcionarán con el cifrado César (pero los métodos que funcionan con el cifrado César no necesariamente funcionan con el cifrado de sustitución general).

Para un método que funcione bien en computadoras, necesitamos una forma de averiguar cuál de los 25 descifrados posibles se parece más al texto en inglés. Consulte Criptoanálisis del cifrado César para obtener un resumen de cómo descomponerlo utilizando estadísticas de quadgram. La clave (o desplazamiento) que resulta en un descifrado con la mayor probabilidad de ser texto en inglés es probablemente la clave correcta. Por supuesto, cuanto más texto cifrado tenga, más probable será que sea cierto (este es el caso de todas las medidas estadísticas, incluido el enfoque de frecuencia anterior). Por lo tanto, el método utilizado es tomar el texto cifrado, intentar descifrarlo con cada clave, y luego ver qué descifrado se ve mejor. Este método simplista de criptoanálisis solo funciona en cifrados muy simples, como el cifrado César y el cifrado de valla de riel, incluso los cifrados un poco más complejos pueden tener demasiadas claves para verificarlas todas.

Referencias §

  • Wikipedia tiene una buena descripción del proceso de cifrado / descifrado, la historia y el criptoanálisis de este algoritmo
  • El libro de códigos de Simon Singh es una excelente introducción a los cifrados y códigos, e incluye una sección sobre los cifrados césar.Singh, Simon (2000). The Code Book: The Science of Secrecy from Ancient Egypt to QuantumCryptography (en inglés). ISBN 0-385-49532-3.



Deja una respuesta

Tu dirección de correo electrónico no será publicada.