Lección 2 de 13
XOR y la libreta de un solo uso
Bits, bytes y XOR; la libreta de un solo uso como cifrado perfecto (Shannon), por qué reutilizar la clave la destruye y por qué necesitamos claves cortas.
Al terminar sabrás:
- Pasar entre binario, hexadecimal y texto ASCII, y calcular el XOR de dos bloques
- Cifrar y descifrar con la libreta de un solo uso
- Explicar con un solo bit por qué la libreta no filtra nada (secreto perfecto)
- Ver qué pasa si se reutiliza la clave y por qué eso obliga a buscar claves cortas
Si sabes qué es un número en binario y sumar módulo 2 (sin llevadas), puedes seguirlo. Lo demás (hexadecimal, XOR, permutaciones, polinomios módulo 2 y cuerpos finitos) se explica sobre la marcha.
En la lección anterior vimos que Alicia y Bernardo comparten una clave y que Eva, si el espacio de claves es pequeño, puede probarlas todas. Pues bien: existe un cifrado contra el cual la fuerza bruta no sirve de nada, porque ni siquiera una Eva con tiempo infinito aprende algo. Es la libreta de un solo uso, el punto de partida del curso. Veremos qué la hace perfecta y qué la hace impracticable. Esa tensión es la que empuja, lección tras lección, hasta AES.
La idea
Un mensaje es una sucesión de bits. Imagina que Alicia tiene una sucesión de bits completamente al azar, tan larga como el mensaje, y que Bernardo tiene una copia. Alicia combina cada bit del mensaje con el bit de la clave en la misma posición, de modo que el resultado sea el contrario cuando el bit de clave es 1 y el mismo cuando es 0. Bernardo repite la operación con su copia y recupera el mensaje.
La operación se llama XOR (o exclusivo) y es la suma módulo 2. Lo único que hay que saber de ella es que aplicada dos veces con la misma clave se deshace. Y lo sorprendente: si la clave es al azar y se usa una sola vez, el criptograma es también una sucesión al azar, que no depende del mensaje. No hay nada que Eva pueda aprender.
Binario, hexadecimal y bytes
Repaso Bits, bytes y hexadecimal
Un bit es 0 o 1. Un byte son 8 bits y permite 256 valores, de 0 a 255. Escribir 8 ceros y unos es pesado, así que se agrupan de 4 en 4 y cada grupo se escribe con un dígito hexadecimal: los dígitos a y las letras a para 10 a 15. Un byte son entonces dos dígitos hexadecimales. Por ejemplo,
En este curso escribimos los bytes y bloques en hexadecimal, en monoespaciado y sin prefijo: . Los bits van como .
El código ASCII asigna un byte a cada letra: es la letra O. Las otras tres letras de nuestro ejemplo son (H), (L) y (A).
El XOR
El XOR de dos bits, que escribimos , es 1 si los bits son distintos y 0 si son iguales. Es la suma módulo 2:
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Para bloques de bits se hace posición a posición. Sus propiedades clave, para cualquier , y :
- y .
- : sumar ceros no cambia nada.
- : cualquier cosa se cancela consigo misma.
De las dos últimas sale el truco central:
Hacer XOR con y volver a hacerlo deshace la operación. Por eso, con el mismo bloque , cifrar y descifrar son la misma operación.
El XOR en hexadecimal. Cada dígito hexadecimal son 4 bits que no se mezclan con los vecinos, así que el XOR se puede hacer dígito a dígito: , y por tanto . Con un poco de práctica no hace falta escribir los bits. A partir de la lección 5 haremos así el XOR de bloques enteros.
La libreta de un solo uso
La libreta de un solo uso (en inglés, one-time pad) funciona así. Alicia y Bernardo comparten una clave formada por bits al azar, de la misma longitud que el mensaje .
Las dos reglas que no se pueden saltar:
- es uniformemente al azar (cada bit es 0 o 1 con la misma probabilidad, independientemente de los demás).
- se usa una sola vez. De ahí el nombre.
El cifrado de teletipo de Gilbert Vernam, ingeniero de AT&T, ya usaba este XOR: lo patentó en 1919.
Secreto perfecto
En 1949, Claude Shannon publicó «Communication Theory of Secrecy Systems» y dio la definición precisa. Un cifrado tiene secreto perfecto si el criptograma no da a Eva información alguna sobre el mensaje: lo que Eva sabe sobre tras ver es lo mismo que sabía antes. Shannon demostró que la libreta de un solo uso lo cumple y que cualquier cifrado con secreto perfecto necesita al menos tantas claves posibles como mensajes posibles. Con claves y mensajes de bits al azar, eso quiere decir una clave al menos tan larga como el mensaje.
La razón, con un solo bit. Alicia envía con una clave al azar, es decir, o con probabilidad cada una. El criptograma es .
| 0 | ||
| 1 |
Si , el criptograma es 0 con probabilidad y 1 con probabilidad . Si , ocurre exactamente lo mismo. Eva ve, por ejemplo, : eso es igual de probable tanto si como si . No sabe más que antes. Con un mensaje de bits el argumento es idéntico, bit a bit: para cada mensaje posible y cada criptograma existe exactamente una clave que los une, , y todas las claves son igual de probables.
Eso significa que la fuerza bruta no sirve de nada, por muy potente que sea el ordenador de Eva. Si prueba todas las claves, obtendrá todos los mensajes posibles de esa longitud, sin forma de distinguir el verdadero.
Ejemplo resuelto
Alicia envía el mensaje «HOLA» con la clave . Los cuatro bytes del mensaje son . Se hace XOR byte a byte, en bits:
| byte 1 | byte 2 | byte 3 | byte 4 | |
|---|---|---|---|---|
En hexadecimal, . Por ejemplo, el primer byte, dígito a dígito: y , así que .
Bernardo recibe y hace XOR con su copia de :
que es HOLA.
Ahora lo notable. Si Eva intercepta y prueba una clave cualquiera, obtiene un mensaje de cuatro bytes. Para leer «MUSA» () le basta la clave . Cada uno de los mensajes posibles de cuatro bytes corresponde a una clave y solo una.
Reutilizar la clave lo rompe
La segunda regla, «una sola vez», no es un adorno. Imagina que Alicia, descuidada, cifra un segundo mensaje, «CHAO» (), con la misma clave:
Eva escucha los dos criptogramas. No conoce , pero hace XOR de ambos:
porque . Numéricamente:
que es exactamente HOLA CHAO. La clave ha desaparecido. Lo que queda es el XOR de dos textos en español, y eso se ataca: si Eva adivina una palabra de un mensaje (un saludo, una cabecera), obtiene la parte correspondiente del otro. Si sabe que HOLA, hace y lee CHAO. Con textos largos y suposiciones sobre el idioma se llega a leer los dos enteros.
Es el mismo fenómeno que hunde a un cifrado de flujo mal usado. Lo retomaremos en la última lección.
El precio
La libreta es perfecta, pero impracticable para casi todo. El motivo:
- La clave es tan larga como el mensaje. Para cifrar un vídeo de un gigabyte, hace falta un gigabyte de clave.
- No se puede reutilizar. Cada mensaje consume clave nueva.
- Hay que repartir esa clave de forma segura, y es el problema de la lección 1: si tuvieran un canal seguro para mandar la clave, lo usarían para mandar el mensaje.
- La clave debe ser realmente aleatoria. Producir tantos bits al azar es difícil.
Shannon demostró que esto es inevitable para el secreto perfecto: hacen falta tantas claves como mensajes. Entonces la pregunta pasa a ser: ¿podemos conformarnos con algo menos que perfecto a cambio de una clave corta, por ejemplo de 128 bits, que cifre mensajes mucho más largos? La respuesta son los cifrados de bloque, que empezamos a estudiar en la lección siguiente.
Ejercicios
Ejercicio 1
Calcula , primero en bits y luego pasando a hexadecimal. Comprueba que, haciendo XOR con otra vez, vuelves a .
Ver la solución
y . Posición a posición:
Dígito a dígito sale lo mismo: y . Haciendo XOR con de nuevo: .
Ejercicio 2
Eva intercepta y sabe que el mensaje era HOLA (). ¿Qué clave se usó? ¿Y qué clave habría hecho que el mismo fuese el cifrado de BESO ()?
Ver la solución
Como , entonces :
Para BESO, . Comprobación: , que es BESO.
Ejercicio 3
Alicia reutiliza la clave y cifra «ADIO» (), con lo que . Eva conoce también (el cifrado de HOLA) y sabe que el primer mensaje es HOLA. ¿Qué obtiene al hacer y cómo llega a leer el segundo mensaje?
Ver la solución
, que es = HOLA ADIO. Como Eva sabe , hace
que es ADIO. Sin conocer la clave, ha leído el segundo mensaje.
En resumen
- El XOR () es la suma módulo 2 bit a bit; cumple y , de modo que hacerlo dos veces con la misma clave deshace el cifrado.
- La libreta de un solo uso cifra con , con al azar, tan larga como y usada una sola vez.
- Tiene secreto perfecto (Shannon, 1949): no dice nada sobre ; ni la fuerza bruta ayuda, porque cada mensaje posible corresponde a una clave.
- Reutilizar la clave la destruye: , y la clave desaparece de la cuenta.
- Para el secreto perfecto hacen falta tantas claves como mensajes posibles, es decir, una clave tan larga como el mensaje: ese es el precio, y por eso buscamos cifrados con claves cortas.
Siguiente lección: Cifrados de bloque
Para profundizar
- C. E. Shannon, Communication Theory of Secrecy Systems (1949).
- G. S. Vernam, Secret Signaling System (patente US 1.310.719) (1919).
- J. Katz y Y. Lindell, Introduction to Modern Cryptography, 3.ª ed. (2020).
- D. Boneh y V. Shoup, A Graduate Course in Applied Cryptography (2023).