Archivo de 2 abril 2011

El cifrado César y la aritmética modular

 

 

 

Desde la antigüedad se cultivaron los métodos de cifrado y descifrado de mensajes, ya que era de vital importancia que algunas informaciones relevantes llegaran a manos de un destinatario del mismo bando, sobre todo en épocas de guerra, cuando el líder de las tropas necesitaba comunicarse mediante un mensajero con cada uno de los corresponsales de los diversos destacamentos. Así pues, era preciso un convenio para el cifrado y después para el descifrado. Los mensajes podían cifrarse por sustitución –sustituyendo cada letra original por otra letra o símbolo que le correspondía-, o bien por trasposición. El cifrado por trasposición consistía en alterar el orden de las letras del mensaje. Ya en la antigüedad clásica se usaba la escítala, que no era otra cosa que una vara de cierto diámetro convenido entre emisor y receptor. Se enrollaba una tira de papel alrededor de la escítala y se escribía el mensaje sobre líneas consecutivas en el papel enrollado. Cuando se desenrollaba dicho papel aparecía un galimatías de letras –las letras del mensaje-, en el cual el orden de las letras había sido totalmente violado. Pero cuando este papel era vuelto a enrollar en una vara de idéntico diámetro aparecía el mensaje perfectamente legible.

Por lo que se refiere a los métodos de sustitución, existe constancia de que uno de los primeros algoritmos de sustitución fue el cifrado de Polibio, aunque aproximadamente 50 años después, el propio Julio César hacía uso de uno bastante simple, que pasó a ser llamado cifrado César. Este cifrado consiste en establecer una clave común a emisor y receptor, que era un número, y dada una letra a cifrar se desplazaban en el alfabeto tantas posiciones como indicaba el número y se tomaba la letra de esa posición final como carácter cifrado. Para el descifrado podía usarse un rectángulo de cartón en el que estuviesen en orden las letras del alfabeto, por debajo de las cuales se podía deslizar una tira con dos alfabetos consecutivos, y así al mover la tira inferior una cantidad de caracteres igual al número clave, se ponían en correspondencia el alfabeto sin cifrar con el cifrado.

Entre el cifrado César y la aritmética modular –o “aritmética del reloj”- hay una correspondencia clara. La aritmética modular, que es una de las bases del actual sistema de encriptación Rivest-Shamir-Adellman (RSA) utilizado para cifrar y firmar digitalmente la información privada en las comunicaciones de Internet, se basa en atribuir la equivalencia entre un número menor que el tope numérico que consideremos al resultado de efectuar cualquier número entero de pasadas al ciclo que va desde 1 hasta el tope (que en un reloj sería el número 12) más los avances hacia el número considerado. Por ejemplo, podemos decir que las 4 horas equivalen a las 16 horas o a las 28 horas, si damos respectivamente 1 y 2 vueltas al reloj y contamos 4 unidades más. La arimética modular viene a darnos equivalencias basadas en un ciclo que se repite y que es rebasado en la última vuelta la misma cantidad de posiciones que las del carácter a cifrar. Escrito matemáticamente, de una forma rigurosa, se dice que 16 es congruente con 4 en módulo 12, o que 28 es también congruente con 4 en módulo 12. Esta misma forma de razonar la podemos emplear con medidas angulares, diciendo por ejemplo que 380 es congruente con 20 en módulo 360.

De esta manera el cifrado César se puede expresar mediante una fórmula matemática del siguiente modo. Si llamamos C(x) al ordinal de la letra cifrada y a x el ordinal de la letra sin cifrar, y si consideramos una aritmética modular módulo 27 (el número de letras del alfabeto), se puede escribir :

C(x) = (x + k) (módulo 27), donde k es la clave empleada.

Por ejemplo, si la clave es 3, el carácter de ordinal 4, que sería la letra E (se empieza a contar con 0 para el primer carácter) quedará cifrado mediante el carácter de ordinal 7, que sería la letra H. Pero la clave k puede ser todo lo grande que queramos. Así, por ejemplo, si k es igual a 58, el carácter de ordinal 4 (letra E) sería cifrado por el carácter de ordinal 4 + 58 (módulo 27), que es el ordinal 8 (letra I).

Para el desciframiento también podemos usar una fórmula, que sería de la forma O(c) = (c – k) (módulo 27). Ésta sería la fórmula inversa a la anterior, que nos permitiría conocer el ordinal del carácter original a partir del cifrado c.

En principio el cifrado César no sería difícil de romper, si nos basamos en análisis de frecuencia, pero podríamos complicarlo algo más si utilizamos el conocido como cifrado afín, que responde a la fórmula :

C(x) = (ax + b) (módulo 27), siendo a y b dos números menores que el número de caracteres del alfabeto. Para que un carácter fuese cifrable unívocamente mediante este esquema, sería preciso que el mcd(a, b) fuese 1, esto es, que a y b fuesen coprimos.

¿Por qué es más potente el cifrado afín que el cifrado César original?. Pues la razón estriba en que ahora hay dos claves para el cifrado, que son los números a y b, mientras que antes sólo había 1 número clave (k). El número de claves distintas para el cifrado afín será igual a la cantidad de 26 x 26 para un alfabeto de 27 letras, mientras que el número de claves para el cifrado César sería sólo de 26. Es decir, hay una notoria mejoría a favor del cifrador, puesto que existen más claves potenciales con las cuales practicaría un hipotético interceptor del mensaje hasta dar con el mensaje descifrado siguiendo la filosofía afin. Aún así, ninguna de las dos formas de encriptación es invulnerable, basta con emplear fuerza bruta para romperlas.

En la imagen superior se observa una representación de la forma de cifrado por trasposición mediante escítala. En la imagen inferior, un busto de Julio César.