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

  1. Abre el monitor serie. ¿Qué números aparecen en “Cifrado”? ¿Los puedes leer como texto?
  2. ¿Aparece HOLA en “Descifrado”?
  3. Cambia CLAVE a 7 y 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.