El sistema Caesar
El cifrado Caesar (o César) es uno de los más antiguos que se conocen. Debe su nombre al emperador Julio César, que presuntamente lo utilizó para establecer comunicaciones seguras con sus generales durante las Guerras Gálicas.
Matemáticamente, para trabajar con el cifrado Caesar, tomamos el alfabeto (enteros de módulo ). Cuando y son primos entre sí, la aplicación , , recibe el nombre de codificación módulo m con parámetros a, b, donde el par es la clave de este criptosistema. Así, trabajando con el alfabeto inglés (para nosotros resulta conveniente tomar este alfabeto, de uso más extendido en informática que el español; la única diferencia radica en el uso de la letra `ñ'), podemos tomar el alfabeto definido por , para lo cual asignamos a cada letra un entero módulo 26, de la siguiente forma:
|| A=0 || B=1 || C=2 || D=3 || E=4 || F=5 ||
|| G=6 || H=7 || I=8 || J=9 || K=10 || L=11 ||
|| M=12 || N=13 || O=14 || P=15 || Q=16 || R=17 ||
|| S=18 || T=19 || U=20 || V=21 || W=22 || X=23 ||
|| Y=24 || Z=25 || || || || ||
El cifrado Caesar siempre utiliza la clave , es decir, siempre tomaremos . De esta forma, la anterior aplicación quedará , lo cual se traduce sencillamente en que para encriptar una letra hemos de tomar su entero correspondiente y sumarle (la clave del criptosistema) para obtener el texto cifrado. Análogamente, y gracias al hecho de que siempre ha de ser biyectiva, independientemente del valor de , para descifrar un texto tomamos la función inversa, definida por . Veamos un ejemplo sencillo, en el que se toma : queremos cifrar, con la clave , la palabra CESAR; en primer lugar, tomando el valor de cada letra, tenemos el equivalente numérico de la palabra:
|| C || E || S || A || R ||
|| 2 || 4 || 18 || 0 || 17 ||
A cada uno de los números anteriores le aplicamos la función , de forma que obtenemos el texto cifrado:
|| 6 || 8 || 22 || 4 || 21 ||
|| G || I || W || E || W ||
Este texto (GIWEV) es el resultado de cifrar la palabra CESAR con la clave elegida (): es lo que enviaríamos al receptor, que conociendo la clave acordada sería capaz de descifrarlo.
Veamos ahora el ejemplo contrario: somos los receptores de un mensaje del que sabemos que ha sido cifrado con la misma clave , y buscamos descifrar la cadena que nos ha sido enviada, FVYXYW. El valor de cada letra es
|| F || V || Y || X || Y || W ||
|| 5 || 21 || 24 || 23 || 24 || 22 ||
Tomando , tenemos el resultado
|| 1 || 17 || 20 || 19 || 20 || 18 ||
|| B || R || U || T || U || S ||
Como vemos, retornando cada número al alfabeto inglés obtenemos el texto en claro que nuestro emisor nos ha enviado: BRUTUS, equivalente al cifrado FVYXYW.
Si en el cifrado de un mensaje obtuviéramos que (genéricamente, ), como trabajamos con enteros de módulo , deberíamos dividir por , considerando el resto entero como la cifra adecuada. Así, si , tomamos (el resto de la división entera), por lo que situaríamos una `A' en el texto cifrado.
Es obvio que el cifrado Caesar tiene 26 claves diferentes (utilizando el alfabeto inglés), incluyendo la clave de identidad (), caso en el que el texto cifrado y el texto en claro son idénticos. Así pues, no resultaría muy difícil para un criptoanalista realizar un ataque exhaustivo, buscando en el texto cifrado palabras en claro con significado en el lenguaje utilizado. Por este motivo, y por otros muchos, este criptosistema es claramente vulnerable para un atacante, no ofreciendo una seguridad fiable en la transmisión de datos confidenciales.
El criptosistema de Vigènere
El sistema de cifrado de Vigenère (en honor al criptógrafo francés del mismo nombre) es un sistema polialfabético o de sustitución múltiple. Este tipo de criptosistemas aparecieron para sustituir a los monoalfabéticos o de sustitución simple, basados en el Caesar, que presentaban ciertas debilidades frente al ataque de los criptoanalistas relativas a la frecuencia de aparición de elementos del alfabeto. El principal elemento de este sistema es la llamada Tabla de Vigenère, una matriz de caracteres cuadrada, con dimensión , que se muestra en la tabla 20.1.
Tabla 20.1: Tableau Vigènere||
|| || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || || A || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || || B || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || || C || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || || D || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || || E || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || || F || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || || G || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || || H || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || || I || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || || J || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || || K || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || || L || l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || || M || m || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || || N || n || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || || O || o || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || || P || p || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || || Q || q || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || || R || r || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || || S || s || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || || T || t || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || || U || u || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || || V || v || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || || W || w || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || || X || x || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || || Y || y || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || || Z || z || a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p || q || r || s || t || u || v || w || x || y || ||
La clave del sistema de cifrado de Vigenère es una palabra de letras, , del alfabeto utilizado anteriormente; esta palabra es un elemento del producto cartesiano ( veces), que es justamente el alfabeto del criptosistema de Vigenère. De esta forma, el mensaje a cifrar en texto claro ha de descomponerse en bloques de elementos - letras - y aplicar sucesivamente la clave empleada a cada uno de estos bloques, utilizando la tabla anteriormente proporcionada.
Veamos un ejemplo de aplicación del criptosistema de Vigenère: queremos codificar la frase La abrumadora soledad del programador utilizando la clave prueba. En primer lugar, nos fijamos en la longitud de la clave: es de seis caracteres, por lo que descomponemos la frase en bloques de longitud seis; aunque el último bloque es de longitud tres, esto no afecta para nada al proceso de cifrado:
laabru madora soleda ddelpr ograma dor
Ahora, aplicamos a cada bloque la clave prueba y buscamos los resultados como entradas de la tabla de Vigenère:
laabru madora soleda ddelpr ograma dor
prueba prueba prueba prueba prueba pru
arufsu brxhsa igfiea suyoqr exmena sgm
Por ejemplo, la primera `a' del texto cifrado corresponde a la entrada , o, equivalentemente, de la tabla de Vigenère. Finalmente, vemos que el texto cifrado ha quedado arufsu brxhsa igfiea suyoqr exmena sgm.
Este método de cifrado polialfabético se consideraba invulnerable hasta que en el S.XIX se consiguieron descifrar algunos mensajes codificados con este sistema, mediante el estudio de la repetición de bloques de letras: la distancia entre un bloque y su repetición suele ser múltiplo de la palabra tomada como clave.
Una mejora sobre el cifrado de Vigenère fué introducida por el sistema de Vernam, utilizando una clave aleatoria de longitud igual a la del mensaje; la confianza en este nuevo criptosistema hizo que se utilizase en las comunciaciones confidenciales entre la Casa Blanca y el Kremlin, hasta, por lo menos, el año 1987.