El cifrado por desplazamiento definitivo

Si has visto la lección acerca de la libreta de un solo uso, sabes que es el cifrado por desplazamiento definitivo. Involucra la aplicación de una lista aleatoria de desplazamientos iguales a la longitud del mensaje. Es importante entender exactamente cómo y por qué la libreta de un solo uso es irrompible o perfectamente secreta.
Para entender por qué, primero necesitamos introducir las operaciones bit a bit AND, OR y XOR. Específicamente por qué XOR debe usarse cuando se realiza el cifrado de libreta de un solo uso en computadoras. Bit a bit significa que estamos tratando con bits individuales o números binarios. En cualquier esquema de cifrado moderno/computarizado representamos nuestros símbolos usando dígitos binarios. Si olvidaste por qué, puedes revisar este video acerca de la Memoria de la Computadora.

Cifrando colores

Empecemos con un ejemplo visual encriptando un color en el logo de Khan Academy.
¿Cómo convertimos un color en un número? Bueno, lo que estás viendo son colores HTML definidos usando el modelo de color RGB. Este es un modelo aditivo basado en la mezcla de cierta cantidad de luz roja, verde y azul.
Podemos definir exactamente cuánto de ROJO, VERDE y AZUL usando un número entre 0 y 255. Negro es todo apagado (0,0,0), mientras que blanco es todo encendido (255,255,255). En medio hay 16 millones de colores posibles (256 * 256 * 256). A continuación tomemos una muestra del color verde que aparece en la hoja del logotipo de Khan Academy con cualquier herramienta de edición de imágenes:
selector de color
Observa que se guarda como  ROJO=156, VERDE=181 & AZUL=58. Si expresamos estos números en código binario tenemos:
 10011100 + 10110101 + 00111010. Que podemos juntar como: 100111001011010100111010
Representación RGB binaria del verde de Khan Academy:
greeg

Aplicación de Cambios al Azar

Ahora digamos que generas una secuencia de desplazamiento usando lanzamientos de monedas convertidos a binarios, así:
ASASSASAAAASSASSSSASSAAA = 010110100001101111011000
Pensemos acerca de cómo podríamos aplicar esta secuencia de desplazamiento a nuestro color para poder cifrarlo usando la libreta de un solo uso.
100.111.001.011.000.000.000.000 + 10.110.100.001.100.000.000.000 = ?
Para hacer que funcione la libreta de un solo uso, necesitamos escoger la operación correcta para que la secuencia resultante sea igualmente probable de ser cualquier color. Veamos tres operaciones diferentes:

AND

El operador AND también es conocido como conjunción lógica, y funciona como una multiplicación. 
Su salida es 1 solo si todas las entradas son 1. Aquí está la tabla de verdad:
0 AND 0 = 0
0 AND 10
1 AND 0 = 0
1 AND 1 = 1
Vamos a probarla: 100111001011010100111010 AND 010110100001101111011000 = 000110000001000100011000
Este resultado es un morado muy oscuro. Observa que cuando hacemos la operación AND en cualquier número binario, la secuencia resultante no puede ser más larga. En nuestro color de ejemplo esto elimina muchos posibles tonos pues empuja el color hacia el negro.

OR

El operador OR también es conocido como disyunción lógica. Da como salida 1 siempre que una o más de sus entradas sean 1. Aquí está la tabla de verdad:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
Vamos a probarla: 100111001011010100111010 OR 010110100001101111011000 = 110111101011111111111010
El resultado es un morado claro. Observa que cuando hacemos la operación OR en cualquier secuencia binaria, la secuencia resultante no puede ser más corta. Esto elimina muchas posibilidades pues empuja el color hacia el blanco.

XOR

El operador XOR tiene como salida un 1 siempre que las entradas no coincidan, lo cual ocurre cuando una de las dos entradas es exclusivamente verdadera. Esto es lo mismo que la suma mod 2. Aquí está la tabla de verdad:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Vamos a probarla: 100111001011010100111010 XOR 010110100001101111011000 = 110001101010111011100010
morado oscuro
El resultado es un morado un poco más oscuro comparado con el de la operación OR. Observa que cuando utilizamos el operador XOR en una secuencia binaria, la secuencia resultante podría ser cualquier secuencia posible. Dado un color cifrado, todo lo que sabemos es que el color original es “igualmente probable de ser cualquier color”. No tenemos información que podría mejorar un elección a simple vista (1 entre 16 millones).
Finalmente, hagamos una demostración visual para que podamos ver la libreta de un solo uso en acción. ¡Entonces podemos ganar más puntos de energía!