# Cifrado de Alberti

El cifrado de Alberti es el método de cifrado descrito por Leon Battista Alberti en su tratado De Cifris en 1466. Constituye el primer cifrado por sustitución polialfabético conocido. El modo en el que se cambiaba de alfabeto no era periódico (a diferencia de otros cifrados posteriores como el de Vigenère). Para facilitar el proceso de cifrado/descifrado, propone unos artilugios conocidos como discos de Alberti.

## Discos de Alberti

Los discos de Alberti son artilugios que sirven de herramienta para realizar el cifrado. Estos discos consisten en un armazón fijo en el que está grabado un alfabeto latino convencionalmente ordenado y al final están las cifras 1, 2, 3 y 4. Está unido a él por una pieza circular concéntrica y móvil con otro alfabeto grabado, de forma que este círculo podía moverse con respecto al otro. De esta manera el usuario puede emparejar, mediante un giro del anillo móvil, el alfabeto del círculo de arriba con tantos alfabetos del círculo de abajo como giros distintos del anillo dé, hasta un máximo igual a los caracteres del alfabeto empleado.
El anillo fijo tiene 24 celdas iguales y en cada una de ellas hay grabado un símbolo del alfabeto latino en letras mayúsculas en el orden habitual. A continuación están los números 1, 2, 3, 4 por este orden. Este alfabeto se usará para el texto en claro.
El anillo móvil tiene 24 celdas iguales y en cada una de ellas hay grabado un símbolo del alfabeto latino en letra minúscula o los símbolos '&', 'y', 'k' y 'h'. El orden de las celdas puede ser cualquiera. Este alfabeto se usará para el texto cifrado.
Por tanto, el número de alfabetos distintos usables para un disco de Alberti determinado es de 24.

## Código de recifrado y caracteres nulos

En el anillo fijo (el del alfabeto del texto en claro) aparecen las cifras del 1 al 4. Alberti aprovecha todas las combinaciones de 2, 3 y 4 cifras de estos números (336=4^2+4^3+4^4 grupos) para poder establecer un código y así aumentar la seguridad del sistema. A este código se le llama «código de recifrado» (en inglés superencipherment). Para aprovechar esta potencialidad, tanto el receptor como el emisor deben compartir un «libro de códigos» que indique el significado de cada código usado. En este libro de códigos estarían aquellas palabras o frases de especial trascendencia en el ámbito de uso del cifrado y, por tanto, a las que hay que dar mayor seguridad. Por ejemplo, el libro de códigos podría atribuir al código «21» el significado «Lanzar ataque» y al código «23» asignar el significado «Replegarse».
Por otro lado, las cifras son introducidas para despistar y serán descartadas cuando el receptor realice el descifrado. Por eso se dice que son «caracteres nulos».

## Algoritmo de cifrado/descifrado

La clave del sistema viene definida por el orden de los símbolos en el anillo móvil y por la situación inicial relativa de los dos anillos. Para descifrar, el receptor tiene que realizar operaciones inversas a las que realiza el que cifra. Para ello, los giros que hay que ir realizando en el anillo móvil se indican en el texto cifrado siguiendo cierto convenio que el que descifra tiene que ir siguiendo. Hay dos algoritmos para cifrar. Para explicarlos veamos un ejemplo de aplicación de ambos.

### Ejemplo
#### Texto plano

    Texto plano original: «La guerra».

#### Preprocesado

Para adaptar el texto plano a las posibilidades de nuestro cifrador, es necesario realizar un proceso de preprocesado. En este proceso convertimos al alfabeto del texto plano, aplicamos el código de recifrado (en este caso vamos a suponer que el libro de códigos no es aplicable) y si es necesario usamos caracteres nulos.
En un primer paso obtenemos el texto plano: «LAGVERRASIFARA» Vemos que la R doble puede producir problemas y entonces podemos considerar dos estrategias: eliminarla o introducir un carácter nulo. Con la primera estrategia obtendremos «LAGVERASIFARA» y con la segunda «LAGVER2RASIFARA».

#### Cifrado

Vamos a usar uno de los dos textos obtenidos en el preprocesado para cifrar en cada uno de los algoritmos de cifrado.

##### Primer método de cifrado

Texto a cifrar: I c o n R e s o u r c e = C : \ P r o g r a m F i l e s \ G o o g l e \ D r i v e F i l e S t r e a m \ 8 5 . 0 . 2 6 . 0 \ G o o g l e D r i v e F S . e x e , 2 5.tarandacuao