Cifrado simple con XOR
Cifra un mensaje con una operación XOR, descífralo con la misma clave y observa por qué una clave corta es insegura.
Qué vas a construir
Un programa que cifra la palabra HOLA con una clave, muestra el mensaje cifrado en el monitor serie y luego lo descifra con la misma clave.
Lo que aprendes
- Qué es el cifrado: transformar un mensaje para que solo lo lea quien tiene la clave.
- Cómo funciona la operación XOR (
^) en Arduino. - Por qué una clave corta y repetida es insegura.
Idea clave
XOR combina dos bits: si son iguales da 0, si son distintos da 1. Si aplicas XOR dos veces con la misma clave, recuperas el valor original:
(mensaje ^ clave) ^ clave = mensaje
Así, el mismo programa cifra y descifra. Pero un cifrado con una clave de un solo byte se rompe con facilidad: un atacante prueba las 256 claves posibles.
Materiales en Tinkercad
- Arduino Uno R3
- Monitor serie
Paso 1: Cifrar y descifrar
const byte CLAVE = 42;
const int N = 4;
void setup() {
Serial.begin(9600);
}
void loop() {
char mensaje[] = "HOLA";
byte cifrado[N];
for (int i = 0; i < N; i++) {
cifrado[i] = mensaje[i] ^ CLAVE;
}
Serial.print("Cifrado: ");
for (int i = 0; i < N; i++) {
Serial.print(cifrado[i]);
Serial.print(" ");
}
Serial.println();
Serial.print("Descifrado: ");
for (int i = 0; i < N; i++) {
Serial.print((char)(cifrado[i] ^ CLAVE));
}
Serial.println();
delay(3000);
}
Paso 2: Observa
- Abre el monitor serie. ¿Qué números aparecen en “Cifrado”? ¿Los puedes leer como texto?
- ¿Aparece
HOLAen “Descifrado”? - Cambia
CLAVEa7y vuelve a ejecutar. ¿Cambia el cifrado? ¿Sigue funcionando el descifrado?
Paso 3: Rompe el cifrado
Con la clave de 1 byte, prueba todas las claves de 0 a 255 y busca la que convierte los números cifrados en letras legibles. Anota cuál clave funciona.
Modifica el programa así: para cada clave de 0 a 255, descifra el primer número y muestra el carácter resultante. La clave correcta da H.
Cómo sabes que lo lograste
- El descifrado muestra
HOLA. - Puedes explicar por qué aplicar XOR dos veces devuelve el original.
- Encontraste la clave probando las 256 posibilidades.
Qué salió mal
El descifrado no muestra HOLA. Revisa que CLAVE sea la misma en el cifrado y en el descifrado (en este ejemplo es la misma constante).
Aparecen caracteres raros. Es normal: los números cifrados no son letras. Revisa solo el descifrado.
Siguiente clase
En la siguiente clase vas a comprobar que un mensaje no fue alterado, usando una etiqueta calculada con una clave secreta.