Crittoanalisi differenziale è il nome di una varietà di metodi di attacco crittografico su cifrari a blocchi che utilizzano un attacco di testo in chiaro noto. La crittoanalisi differenziale funziona crittografando il testo in chiaro noto o il testo non crittografato, utilizzando una chiave di crittografia scelta per determinare come funziona il processo di crittografia. Vengono selezionati due ingressi con una differenza costante tra loro, dove la differenza tra i due ingressi può essere determinata da operazioni diverse incluso l’uso dell’operazione eXclusive OR (XOR). Quando la coppia di input viene eseguita attraverso il codice di crittoanalisi differenziale, viene formata una coppia di output utilizzando una chiave di cifratura. L’input è noto, quindi il crittografo controlla i modelli di cambiamento nell’output.
Una volta ricevuto l’output, il crittografo assegna le probabilità a determinate coppie input-output per determinare quale chiave di cifratura ha causato particolari cambiamenti nelle coppie di output. Chiavi di cifratura diverse hanno probabilità diverse che si verifichino determinati output per ciascun input. Queste probabilità consentono al crittografo di fare ipotesi informate su vari aspetti della chiave in base ai modelli di input e output.
Questo metodo è stato originariamente sviluppato alla fine degli anni ‘1980 da Eli Bidham e Adi Shamir. Aveva lo scopo di attaccare i cifrari a blocchi e verificare la presenza di punti deboli nell’algoritmo Data Encryption Standard (DES) del National Bureau of Standards degli Stati Uniti, utilizzato come standard di elaborazione delle informazioni federale per crittografare dati sensibili non classificati. Nel 1994, Don Coppersmith, uno degli ingegneri del software IBM che ha aiutato a progettare il DES, ha affermato che IBM aveva già familiarità con la crittoanalisi differenziale e aveva lavorato per rendere il DES resistente agli attacchi.
Per determinare correttamente quale chiave di crittografia viene utilizzata con questo processo, è necessario soddisfare determinati requisiti. Ha più successo quando il crittografo può scegliere lui stesso il testo in chiaro e ricevere il testo cifrato in uscita. La crittoanalisi differenziale è più adatta per i cifrari a blocchi iterativi. Questi tipi di cifrari crittografano il testo in chiaro utilizzando la stessa trasformazione in più turni utilizzando una sottochiave.
I progettisti di cifrari e codici crittografici lavorano per garantire che il loro codice non sia vulnerabile a questo tipo di attacco noto. Uno di questi è l’uso di chiavi di messaggio e limitazioni alla quantità di testo cifrato ricevuto utilizzando una singola chiave di messaggio. Questa è una debolezza della crittoanalisi differenziale a causa della sua dipendenza da grandi quantità di testo in chiaro.
Il metodo di crittoanalisi differenziale si basa sull’uso di tabelle particolari per scegliere la coppia di input. Sapendo questo, un sistema di crittografia può proteggersi dall’attacco in vari modi. Non importa se il codice è impostato per selezionare da un numero di tabelle maggiore del previsto, per selezionare da tutte le diverse tabelle o per mescolare i risultati della tabella non appena i risultati sono determinati.