If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Operación XOR bit a bit

El cifrado por desplazamiento definitivo

Si ya viste la lección acerca de la libreta de un solo uso, sabes qué 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 indescifrable 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 a usar dígitos binarios. Si olvidaste por qué, puedes revisar este video acerca de la Memoria de la Computadora.

Cifrar colores

Empecemos con un ejemplo visual al cifrar el color del avatar de la hoja verde de Khan Academy.
¿Cómo convertimos un color en un número? Bueno, lo que ves son colores HTML definidos por 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 al usar 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, vamos a tomar una muestra del color verde que aparece en la hoja del logotipo de Khan Academy con cualquier herramienta de edición de imágenes:
Captura de pantalla del selector de color de Photoshop, con verde seleccionado.
Observa que lo almacena como RED (ROJO)=156, GREEN (VERDE)=181, BLUE (AZUL)=58.
Si expresamos estos números en binario, obtenemos:
RED (ROJO)=10011100, GREEN (VERDE)=10110101, BLUE (AZUL)=00111010.
Podemos comprimirlos todos juntos como: 100111001011010100111010
Representación RGB binaria del verde de Khan Academy:
Fondo verde con 100111001011010100111010 encima

Aplicación de los desplazamientos aleatorios

Ahora digamos que generas una secuencia de desplazamiento al usar 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 mediante el uso de la libreta de un solo uso:
100111001011010100111010 + 010110100001101111011000 = ?
Para hacer que la libreta de un solo uso funcione, tenemos que elegir la operación correcta de modo que la secuencia resultante sea igualmente probable de ser cualquier color. Vamos a ver tres operaciones diferentes, AND, OR y XOR .

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 probarlo:
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 probarlo:
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 probarlo:
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, vamos a hacer una demostración visual para que podamos ver la libreta de un solo uso en acción. ¡Entonces podremos ganar más puntos de energía!

¿Quieres unirte a la conversación?

¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.