
Versione semplificata dell'attacco crittografico basato sul paradosso del compleanno: Sweet32 (CVE-2016-2183)
Questa è una dimostrazione dell'attacco Sweet32 (CVE-2016-2183): https://sweet32.info/
L'attacco è un esempio di attacco del compleanno che sfrutta algoritmi crittografici con dimensioni di blocco piccole (64 bit) in modalità CBC, come 3DES e Blowfish. L'attacco richiede la generazione di molti blocchi cifrati con testo in chiaro noto. Dopo la generazione, è possibile identificare i blocchi cifrati identici e usarli per risalire al valore in chiaro dei blocchi con testo in chiaro sconosciuto.
Questa implementazione utilizza 3DES (Triple DES) come algoritmo di cifratura, che ha una dimensione del blocco di 64 bit (8 byte) — la stessa dimensione del blocco che rende il 3DES reale vulnerabile all'attacco Sweet32.
Quando due blocchi di testo cifrato collidono (c_i = c_j), possiamo recuperare il testo in chiaro sconosciuto usando:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
Dove:
p_i è il testo in chiaro sconosciuto (ad es., cookie segreto)p_j è il testo in chiaro noto (ad es., intestazioni HTTP)c_{i-1} e sono i precedenti blocchi di testo cifratoc_{j-1}Questo funziona perché in modalità CBC, una collisione significa che gli ingressi del cifrario a blocchi erano uguali, consentendo il recupero tramite XOR senza conoscere la chiave di cifratura.
Esegui la demo con una collisione garantita:
# Step 1: Generate encrypted packet with secret cookie
python generate_rigged_packets.py rigged_demo.bin
# Step 2: Execute the attack to recover the cookie
python sweet32.py --block-size 8 rigged_demo.bin
L'attacco mostrerà il valore del SECRET COOKIE e poi lo recupererà usando solo il testo cifrato!
generate_rigged_packets.pyCrea un pacchetto con una collisione garantita a scopo dimostrativo. Il valore del cookie è costruito in modo che collida con un blocco di testo in chiaro noto.
sweet32.pyEsegue l'attacco del compleanno Sweet32 per recuperare il cookie.
L'attacco Sweet32 sfrutta il paradosso del compleanno. Per un cifrario a blocchi a 64 bit:
Questo rende il 3DES (e altri cifrari a blocchi a 64 bit) vulnerabile nelle sessioni HTTPS di lunga durata.
Per il vero attacco Sweet32 su 3DES (blocchi a 64 bit):
| Dimensione blocco | Dimensione blocco | Num. pacchetti | Dati necessari | Conteggio blocchi |
|---|---|---|---|---|
| 8 byte | 64 bit | ~785GB | ~785GB | ~2^32 blocchi |
Il vero attacco richiede che circa 785GB di dati vengano cifrati con la stessa chiave, motivo per cui colpisce principalmente le connessioni HTTPS di lunga durata.