A041 · RSA · XOR

Laboratorio di crittografia

Quattro modi di trasformare un messaggio: sostituzione, trasposizione, XOR e chiave pubblica RSA.

Leggi l’articolo completo →

Esperimenti didattici, non strumenti di sicurezza: le chiavi sono piccole o ripetute e i risultati non vanno usati per dati riservati.

1. Sostituzione

Sposta ogni lettera latina di un numero fisso di posizioni; spazi e segni restano invariati.

2. Trasposizione con chiave

Scrivi le lettere in righe sotto la chiave, poi leggi le colonne in ordine alfabetico della chiave; in caso di lettere uguali, conserva l’ordine originale.

In questo esperimento si usano A–Z: spazi, accenti e punteggiatura vengono eliminati; durante la decifratura non si recuperano.

3. XOR simmetrico

Ogni byte UTF-8 viene combinato con lo stesso byte di chiave mediante XOR. Il risultato è mostrato in esadecimale.

Ripetere un solo byte di chiave è insicuro: questo esempio serve soltanto a capire la reversibilità di XOR.

4. RSA: Alice e Bob

Bob crea una coppia di chiavi. Alice usa la chiave pubblica di Bob per cifrare; Bob usa la sua chiave privata per decifrare.

Come Bob costruisce le chiavi

  1. Bob sceglie p = 61 e q = 53; n = p × q = 3233.
  2. Calcola φ(n) = (61 − 1) × (53 − 1) = 3120.
  3. Sceglie e = 17, coprimo con 3120. La chiave pubblica è (n = 3233, e = 17).
  4. Trova d = 2753 perché 17 × 2753 = 46801 = 15 × 3120 + 1. La chiave privata è d = 2753.

Chiave pubblica di Bob: (3233, 17)
Chiave privata di Bob (visibile qui solo per imparare): 2753

Per la lettera A: UTF-8 = 65; Alice calcola 65^17 mod 3233 = 2790; Bob calcola 2790^2753 mod 3233 = 65 e rilegge A.

I primi 61 e 53 sono volutamente minuscoli. Ogni byte è cifrato separatamente e non viene usato padding: questo RSA “da lavagna” è insicuro. Nelle applicazioni reali servono librerie collaudate e RSA-OAEP.