Affinché un attacco di forza bruta abbia effettivamente successo (anche in modo teorico), l'attaccante deve sapere "qualcosa" sul testo in chiaro, per sapere se ha trovato o meno la chiave giusta. Detto altrimenti: se tutto l'hacker sa del testo in chiaro è che è un mucchio di byte casuali, quindi, per ogni chiave provata, è esattamente quello che otterrà: un mucchio di byte dall'aspetto casuale.
D'altra parte, se l'attaccante ha trovato utile attaccare il sistema (perché una ricerca esaustiva 2 56 è, anche se fattibile, piuttosto costosa), allora deve avere una conoscenza a priori di ciò che troverà. Questo può essere qualsiasi cosa come un formato standard (ad esempio, i dati sono XML, a partire da un'intestazione XML, oppure i dati sono compressi con gzip
e quindi inizia con un'intestazione gzip
) o anche alcune informazioni di base come "il testo in chiaro è un testo che 'ha senso' ".
Il testo inglese con codifica ASCII utilizzerà solo alcuni valori di byte, vale a dire valori di byte da 32 a 126 (inclusi), ed eventualmente anche 9 (tabulazione orizzontale), 10 e 13 (LF e CR, rispettivamente, per fine linee), 12 (tabulazione verticale), e possibilmente 26 (fine del file su sistemi DOS / Windows). Quindi questo è 100 su 255 possibili valori di byte. Una decrittografia di un singolo blocco DES (8 byte) con una chiave errata ha una probabilità su (100/255) 8 di consistere solo in questo insieme di "caratteri plausibili". Poiché l'utente malintenzionato ha 2 chiavi 56 da provare, deve decrittografare i blocchi n in modo che la probabilità di accettare una chiave errata non sia superiore a 2 -56 . Questo viene ottenuto non appena n = 6 (perché (100/255) 8 * 6 & leq; 2 -56 ). Questo porta ad un esauriente attacco di ricerca in cui l'attaccante decrittografa i blocchi 6 per chiave potenziale, filtrando le chiavi sbagliate osservando i caratteri ottenuti.
Ora, diciamocelo, "8g;; = 7Zf" non è esattamente "testo che abbia senso". Quindi l'hacker conosce molto più di quanto "il testo in chiaro consiste solo in caratteri ASCII stampabili". Poteva filtrare la decrittazione sbagliata che produce solo caratteri stampabili ma non brani di testo plausibili. Potrebbe anche ottenere, diciamo, un migliaio di "chiavi possibili" (ciascuna che produce qualcosa che, dal punto di vista di un computer, è testo-con-senso-simile) e finisce il lavoro a mano (il cervello umano è molto buono per individuare il testo reale tra una lista di caratteri dall'aspetto gibberesco). Quindi un utente malintenzionato potrebbe usare, ad esempio, due o tre blocchi e continuare a fare le cose.
È molto difficile quantificare l'efficienza dell'attaccante nel filtrare la decifrazione errata, perché dipende da ciò che l'hacker "indovina", qualcosa che è nel regno della psicologia, non del computer scienza. Pertanto, gli accademici usano la "convenzione sicura" di considerare che l'attaccante ha un blocco di testo in chiaro noto: sa con certezza al 100% un testo in chiaro a 8 byte per il quale ha anche il testo cifrato corrispondente. Questo potrebbe non essere vero in una situazione di attacco reale, ma non puoi davvero prevederlo.