Como se explicó en el artículo “Conceptos generales para estudiar la criptografía” la criptografía simétrica agrupa los algoritmos que utilizan la misma clave para cifrar y descifrar la información. Estos tienen la característica de ser eficientes para el cifrado de grandes volúmenes de datos y su objetivo es lograr la confusión y difusión en el texto cifrado, generando un resultado visiblemente aleatorio.
Los algoritmos que utilizamos en la actualidad surgen de la evolución de los algoritmos de cifra simétrica utilizados en la criptografía clásica. Aunque en la criptografía moderna se utilizan herramientas informáticas y en la criptografía clásica se cifraba a mano, los principios y objetivos son los mismos.
En el presente artículo vamos a analizar el funcionamiento de 5 algoritmos de criptografía clásica. Vamos a estudiar su funcionamiento y en que se basa su seguridad para facilitar la comprensión de los algoritmos de la criptografía moderna.
Sustitución y transposición
De forma general la seguridad del texto cifrado en los algoritmos simétricos se logra combinando 2 técnicas:
Sustitución: Se refiere a sustituir el símbolo del texto claro por otro en el texto cifrado, por ejemplo sustituir la “a” por la “s”. Mediante la sustitución se logra la confusión en el texto cifrado.
Transposición: La transposición consiste en cambiar la posición del símbolo en el texto cifrado por otra en el texto cifrado cambiando el orden de los símbolos en el texto cifrado. Mediante esta técnica de logra la difusión o “regar” el texto cifrado.
Aplicando correctamente la sustitución y la transposición el texto cifrado debe tener una apariencia aleatoria de símbolos sin sentido y debe ser difícil descubrir un patrón en los mismos.
Cifrado por Polibios
El cifrado por Polibios es el cifrado por sustitución más antiguo que existe, data del (Siglo II a.d.C). Su funcionamiento es muy sencillo.
Teniendo una tabla de sustitución similar a la que se muestran en la figura 1:
figura: 1 Tabla de Polibios
Se sustituye el símbolo del texto claro por su intercepción en las filas y columnas en el texto cifrado. Vamos a tomar primero la fila y luego la columna y para facilitar la lectura agruparemos los símbolos del texto cifrado de 4 en 4 como se muestra en el Ejemplo1. Para descifrar se realiza el proceso inverso.
Ejemplo1:
Texto claro T: LA CASA ES GRANDE.
Texto cifrado Tx: 3211 6313 1145 1163 1545 6322 4411 3414 1564
Como se puede apreciar es un método muy sencillo de sustitución, si se fueran a diferenciar las minúsculas de las mayúsculas entonces haría falta una tabla más grande. El principal inconveniente de este método es que el texto cifrado ocupado el doble de espacio del texto claro.
Otro método de sustitución muy interesante es el que utilizaba el emperador Julio Cesar para comunicarse con sus tropas en el Imperio Romano:
Cifrado de César
Consiste en sustituir el símbolo del texto claro por el que ocupa la 3ra posición después de él dentro del alfabeto1.
Revisemos el siguiente ejemplo. En este caso, usaremos el alfabeto que se muestra a continuación.
Figura: 2 Alfabeto para cifrar con Cesar
Texto claro T: la pelota.
Texto cifrado Tx: ñdashñrwdb
Como se pueden dar cuenta, si se acaba el alfabeto, como cuando se cifra el “.” entonces se comienza por el principio. A este comportamiento en criptografía se le llama operaciones modulares.
Es común cuando se está estudiando criptografía encontrar mucha documentación llena de fórmulas. Vamos a tratar de entender la fórmula del algoritmo Cesar del Ejemplo2.
C = símbolo cifrado.
M = posición del símbolo del texto claro.
Formula
Quiere decir que el símbolo cifrado C es el símbolo que está en la tercera posición después del símbolo del texto claro todo eso módulo 30 en el alfabeto. Cuando se programa un algoritmo criptográfico las operaciones modulares son muy importantes para que no un error “fuera de rango”.
Criptoanálisis a los algoritmos mono-alfabéticos
Los algoritmos como Cesar y Polibios tienen la característica de que a cada símbolo del texto claro le corresponde un mismo símbolo en el texto cifrado. Eso quiere decir por ejemplo que la “a” siempre va a ser sustituida por la “d”. El problema es que eso crea un patrón.
En los lenguajes las letras tienen una frecuencia de aparición, por ejemplo en el español letra que más se utiliza es la “e”. Una forma de romper este tipo de cifrado es contando la cantidad de veces que se repite cada símbolo. Mientras más extenso sea el texto la frecuencia de repetición se va a asemejar más a la del lenguaje y se va posibilitando descubrir el texto original.
Algoritmos poli-alfabéticos
Para hacerle frente a esa vulnerabilidad los criptógrafos crearon la cifra poli-alfabética mediante el empleo de una clave. En la cifra poli-alfabética un símbolo del texto claro puede ser sustituido por símbolos diferentes en el texto cifrado.
Un ejemplo de este tipo de algoritmo es el cifrado de Vigenére en el siglo XVI.
Cifrado de Vigenére
Ahora haremos al revés, primero mostraremos la formula y luego lo explicaremos a ver si lo puede deducir.
E: Es el mensaje cifrado.
m: es texto claro.
i: es la posición.
k: es la clave.
n: es el número de símbolos del alfabeto del texto claro.
d: es el número de símbolos de la clave.
Explicación de funcionamiento de Vigenére:
En el algoritmo Vigenére aparece un concepto nuevo que es la clave. La clave en dicho algoritmo es una palabra secreta que se utiliza para cifrar y descifrar el mensaje. De todo el algoritmo lo único que es secreto es la “clave” al igual que ocurre en los sistemas de cifrado de criptografía moderna.
Antes de seguir explicando es importante dejar un concepto claro.
Para definir un sistema criptográfico como seguro se debe asumir que quien desea violar la seguridad del mismo conoce a la perfección el algoritmo, sus parámetros, su funcionamiento y si no tiene la clave aunque conozca todo lo demás no debe poder descifrar el mensaje.
El cifrado de Vigenére es como un cifrado de Cesar donde la cantidad de posiciones que se mueve hacia la derecha depende de la posición del símbolo que le corresponde la clave.
Veamos el funcionamiento en el Ejemplo 3.
Ejemplo 3 Cifrando con Vigenére:
Utilizaremos el mismo alfabeto que utilizamos en el algoritmo Cesar.
Clave: azul
Texto claro: carmelita y negro.
Pasos para el cifrado:
- Ciframos la letra “c” con el 1er símbolo de la clave “a”.
- Para ello movemos “c” tantas posiciones como indique la posición de “a” en el alfabeto. En este caso son 0 posiciones, así que “c” sigue siendo “c”.
- Lo mismo haremos con “a” y “z” y símbolo cifrado es “z”.
- Ahora “r” con “u” son 21 posiciones y obtenemos “j”. Recuerde que como son operaciones módulo 30 en caso de acabarse el alfabeto comenzamos por el principio.
- La clave usualmente es más pequeña que el texto a cifrar, si se acaba la clave comenzamos nuevamente por el 1er símbolo de la clave hasta que concluyamos con el texto a cifrar.
Posición del símbolo cifrado = posición del símbolo a cifrar + posición del símbolo de la clave.
Si el valor es mayor que 30 entonces se divide entre 30 y se queda con el resto.
El valor es el símbolo que está en la posición del resto.
Matemáticamente la operación modular se traduce en dividir el valor entre el modulo y quedarse con el resto.
Una vez terminado el texto cifrado es el siguiente: czjweh,bawpina ,ox
Par descifrar se realiza lo mismo en orden inverso: texto cifrado – clave = texto claro.
Si la posición del texto cifrado es menor que la de la clave entonces primero sume 30 a la posición del texto cifrado.
(Posición del texto cifrado + 30) – pos. de la clave = pos. del texto claro.
Como pudo darse cuenta en el algoritmo Vigenére, el símbolo en el texto claro puede ser sustituido por símbolos diferentes en el texto cifrado. Por ejemplo la “r” en el texto claro en su primera aparición es sustituida por la “j” y en su segunda aparición por la “,”. Eso dificulta mucho el análisis de la frecuencia de aparición.
Algoritmos de sustitución organizados por categorías
En la diagrama 1 se muestran otros algoritmos de cifrado por sustitución organizados por categorías. El código “enigma” fue el que marcó el cambio de la criptografía clásica a la moderna, ya que no se realizaba manualmente, sino a través de una máquina “máquina Enigma”. Lo utilizaron los alemanes en la segunda guerra mundial. Fue necesario construir otra máquina para romper su seguridad “la máquina de Turing”, quien se considera uno de los padres de la inteligencia artificial.
Diagrama: 1 Algunos algoritmos de cifrado por sustitución
Algoritmos de transposición
Ahora se va a explicar el funcionamiento de dos algoritmos de transposición. En el diagrama 2 se muestran algunas categorías.
Diagrama: 2 Algunos cifrados por transposición
Escítala
Es uno de los métodos de cifrado más antiguos que existe, data del siglo V. Lo utilizaba el pueblo griego de los Lacedemonios. Consistía en coger una tira de cuero y enrollarla en un bastón. El mensaje se escribía a lo largo del bastón por encima de la tira de cuero. Al desenrollar la tira las letras perdían el orden dentro del mensaje.
Para descifrar se necesitaba otro bastón con el mismo diámetro. Se enrolla la tira en el otro bastón y se puede leer el mensaje enviado. Si busca en google hay muchas imágenes de ejemplo de este método de cifrado. En ese caso la clave es el diámetro del bastón utilizado.
Permutación de columnas
El método consiste en escribir el mensaje en una tabla. Luego cambiar el orden de las columnas y escribir el texto que se encuentra en la columna como una línea del texto cifrado. La clave es la cantidad de filas y columnas utilizadas y el orden en que se seleccionan. A continuación mostramos un ejemplo.
Ejemplo 4:
Mensaje: EL SOL ES AMARILLO Y BRILLANTE.
Colocamos el mensaje en la tabla de permutación:
Tabla de Permutación
La clave que vamos a utilizar es : 3,5,1,4,6,2
Para cifrar realizaremos los siguientes pasos:
- Ahora tomamos la columna 3 y escribimos la 1ra parte del texto cifrado: “ LBN”. Es importante que se tengan en cuenta los espacios.
- Luego tomamos la columna 5 y la ponemos a continuación del texto cifrado anterior quedando así “ LBNOMOIE”.
- Hacemos lo mismo hasta terminar con todo el mensaje.
El texto cifrado es el siguiente: “ LBNOMOIEEERYLSALRTLA L.LSI A”
Para Descifrar se realiza el proceso inverso.
- Creamos una tabla en blanco.
- Tomamos los primeros 5 elementos y llenamos la columna 3.
- Luego hacemos lo mismo con la columna 5.
- Si hemos realizado el proceso bien debemos llegar al mensaje original.
Conclusiones
Como se ha podido apreciar, existen varios métodos para proteger la información de forma manual. Las técnicas fundamentales son la sustitución y la transposición y dentro de cada una hay una gran cantidad de algoritmos para realizarlo.
A medida que aumenta la seguridad del algoritmo también aumenta su complejidad y por lo tanto es necesario dedicarle más tiempo y esfuerzo a su ejecución. Esa característica también se cumple los algoritmos modernos.
Un algoritmo más seguro requiere mayor capacidad de procesamiento, más espacio de memoria y generalmente toma más tiempo. El truco esta en definir cuánto necesito ganar en seguridad y cuánto estoy dispuesto a sacrificar en rendimiento.
Los algoritmos estudiados no son excluyentes entre sí. Se puede por ejemplo cifrar con Vigenére con una clave, luego el resultado colocarlo en una tabla de permutación con otra clave y al texto cifrado resultante aplicarle César. Luego el descifrado se realizada en orden inverso. Cada una de las “capas de cifrado” aumenta la confusión y difusión dentro del mensaje cifrado y por lo tanto su seguridad. Aplicar varias “capas de cifrado” es una técnica que se utiliza en la criptografía moderna para fortalecer el cifrado contra el criptoanálisis.
Los algoritmos de cifrado a mano actualmente no se utilizan porque la capacidad de cómputo de las computadoras modernas permite probar miles de mensajes y combinaciones por segundos. Por ejemplo una operación que a un humano le toma 2 segundos realizar, una computadora puede realizarla en 1 milisegundo, quiere decir que podría realizar 2000 de operaciones ese tipo en 2 segundos.
Entonces un mensaje que a un humano le tomaría 1 hora cifrarlo, tomando en cuenta el algoritmo y la clave que utiliza, la computadora realizando un ataque de fuerza bruta probando claves aleatorias podría obtener el mensaje original en un tiempo razonablemente corto.
Sin embargo la criptografía simétrica moderna funciona sustituyendo y transponiendo bits para lograr un alto nivel de confusión y difusión al igual que se hacía mediante el cifrado a mano, solo que con algoritmos más potentes y longitudes de claves más grandes.
La comprensión de estos principios de la criptografía clásica facilita mucho el estudio de los algoritmos de criptografía simétrica que se utilizan en la actualidad.
1 Alfabeto: Conjunto de símbolos que integran el mensaje.