Quanto è sicuro un codice crittografico? Le nostre informazioni sono protette abbastanza nell’era della condivisione globale? In questo articolo andremo a vedere le regole che governano l’eterno scontro tra crittoanalisti e crittografi.
Da quando la crittografia ha fatto la sua comparsa è subito sorto il quesito inerente la sua efficacia nel celare l’informazione nei confronti di chi non deve giungere a conoscenza delle informazioni nascoste attraverso un codice (crittografico appunto). Inizialmente la sicurezza veniva mantenuta attraverso la segretezza dell’algoritmo utilizzato per occultare l’informazione ma, nel corso dei secoli, tale sicurezza si è spostata dalla segretezza dell’algoritmo impiegato alla segretezza della chiave (principio di Kerckhoffs). Infatti, una regola fondamentale della crittografia moderna consiste nel supporre che il crittoanalista conosca il metodo di cifratura impiegato. L’ammontare degli sforzi necessari per sostituire un vecchio metodo, ogni volta che esso risulti compromesso, ha sempre reso poco pratico il mantenimento della segretezza della comunicazione crittografata, ed il fatto di pensare che l’algoritmo sia segreto, quando in realtà non lo è, rappresenta più un danno che un vantaggio.
Quanto fin qui detto vale per tutti i moderni algoritmi crittografici siano essi simmetrici (in cui la chiave di criptazione e quella di decriptazione coincidono) siano essi asimmetrici (in cui le due chiavi non coincidono).
Tecniche di crittoanalisi matematiche
Come accennato all’inizio, ciò che interessa maggiormente ai progettisti di sistemi crittografici risiede nella valutazione del livello di sicurezza e di robustezza dell’algoritmo crittografico nei confronti degli attacchi condotti da parte dei crittoanalisti. Ma in base a cosa possiamo dire che un codice crittografico è sicuro?
Da un punto di vista informazionale, possiamo dire che:
- una tecnica crittografica è incondizionatamente sicura se il testo cifrato non contiene informazioni sufficienti a determinare in modo univoco il testo in chiaro;
- una tecnica crittografica è computazionalmente sicura se il costo della violazione del codice supera il valore delle informazioni crittografate ed il tempo richiesto per la violazione è maggiore del tempo di vita utile delle informazioni criptate.
I crittoanalisti cercano di forzare i codici crittografici mediante un procedimento che prende il nome di crittoanalisi.
Abbiamo visto che oggigiorno l’analista è a conoscenza del funzionamento dell’algoritmo crittografico e l’azione crittoanalitica, condotta su un testo cifrato EK(Pt), si prefigge i seguenti obiettivi:
- determinare il testo in chiaro Pt;
- trovare la chiave K.
Questi risultati possono essere conseguiti mediante quattro tipologie di attacco crittoanalitico:
- attacco mediante conoscenza del solo testo cifrato, in cui si conoscono solo l’algoritmo crittografico ed il testo cifrato (tecnica che si basa sull’analisi statistica del testo);
- attacco mediante testo cifrato selezionato, in cui si sceglie il testo cifrato da cui si cerca di ottenere il relativo testo in chiaro;
- attacco mediante testo in chiaro noto, in cui si conosce una particolare parte del testo in chiaro (metodo che rappresenta l’attacco più probabile, in grado di riconoscere la posizione di precise parole);
- attacco mediante testo in chiaro scelto, in cui si cerca di ottenere la versione cifrata di un messaggio noto.
Tecniche di crittoanalisi non matematiche
E’ anche possibile tentare si forzare un testo cifrato mediante un attacco a forza bruta (brute force), in cui, noti l’algoritmo di codifica ed i testi in chiaro Pt e cifrato EK(Pt), si vuole individuare la chiave di codifica K.
In questo tipo di attacco si procede in modo esaustivo; questo fu, ad esempio, il metodo utilizzato dal controspionaggio polacco ed inglese per decifrare i messaggi tedeschi della macchina Enigma, ideata da Arthur Scherbius. Per ottenere il risultato infatti, gli alleati utilizzarono la famosa “Bomba” ideata da Marian Rejewski, una speciale macchina calcolatrice in grado di sottoporre il messaggio cifrato ad un attacco di forza bruta, fino a trovare la soluzione. La macchina venne poi perfezionata dagli inglesi, grazie al contributo del grande matematico Alan Turing.
Questo tipo di attacco, però, è vincolato da limiti di tipo temporale; infatti il triplo DES, ad esempio, costituisce un codice per il quale l’approccio della forza bruta richiede 2112 tentativi: anche con un miliardo di chips che effettuano un miliardo di operazioni al secondo, ci vorrebbero 100 milioni di anni per un attacco di forza bruta.
A quanto pare, almeno per il momento, sembra che i crittografi abbiano vinto sui crittoanalisti.

Le tecniche odierne, tra 10 o 20 anni saranno brutalmente abbattute, per l’introduzione dei Computer Quantistici, che avranno (in teoria) velocità superiori a 100.000 volte le CPU attuali.
Ma a quel punto le lunghezze delle chiavi aumenteranno e si adotteranno chiavi hash di 10000 bit.
Quindi l’uso della forza bruta è sempre una partita persa, mentre una risoluzione intelligente (magari con la scoperta della formula magica dei Numeri Primi) potrebbe essere adottata con successo con un piccolo computer dalla CPU limitata….
Come dire, Sansone contro Golia………..
Giovanni Di Maria
Interessante… chissà però quando sarà scoperta questa formula.
Comunque… Davide contro Golia 😀
C’è una cosa che non capisco nell’attacco a forza bruta condotto su un testo cifrato da cui, con la forza bruta, si voglia ottenere un testo in chiaro. Come fa la macchina a sapere quando il testo è stato realmente decriptato?
Faccio un esempio per spiegarmi meglio.
Per semplicità prendiamo un algoritmo banale la traslitterazione e la chiave è il numero di lettere di cui ci si debba spostare.
Dato l’alfabeto:
ABCDEFGHILMNOPQRSTUVZ0123456789 con chiave 4 il testo CIAO diventa GOES (la lettera ‘C’ è sostituita con la lettera successiva di 4 posti che è ‘G’ e via dicendo)
Dato che in questo esempio il numero massimo di chiavi è 31, con 31 tentativi a “forza bruta dovremmo poter decrittare il messaggio cifrato.
La domanda a questo punto è come fa la macchina a fermare l’algoritmo a forza bruta (ovvero sia scegliere tra le 31 decodifiche possibili quella corrispondente alla chiave usata): in altre parole la macchina non è capace di riconoscere “CIAO” come messaggio buono a meno che non sappia che il messaggio originale è in italiano e abbia un dizionario di tutte le parole italiane. Ma supponiamo ora che il messaggio in chiaro sia un pin ad esempio ‘12357’ e quello codificato dia ‘34579’ (chiave 2). La macchina non ha strumenti per sapere se la chiave è davvero 2 perché anche la chiave 1 potrebbe essere valida! Dunque in questo caso la macchina non ha nemmeno le informazioni per scegliere quando fermare l’algoritmo di decrittazione a forza bruta.
Per me dunque questa “forza bruta” resta un mistero.
Qualcuno mi può aiutare?
Buongiorno Alberto,
sicuramente il “senso” della decriptazione è legata al contesto.
Una macchina può essere istruita a “contestualizzare” i risultati,
ma sicuramente l’essere umano è più adatto ad interpretare i
risultati delle decriptazioni rispetto ad un computer.
Buongiorno Daniele,
grazie per la risposta. Tuttavia continuo a non capire: se è l’utente umano che deve “interpretare i risultati delle decriptazioni” è chiaro che l’attacco a forza bruta è una “bufala” perché, nei casi reali, le decriptazioni possibili sono innumerevoli e il “collo di bottiglia” del sistema di decriptazione non è più computer ma l’essere umano. In caso contrario la domanda che ho posto mi pare che resti senza risposta.
Faccio una proposta: perché non scrive un nuovo articolo di approfondimento in cui si conduce in pratica un attacco a “forza bruta” così che ogni dubbio possa essere fugato?
Dato che i moderni algoritmi crittografici sono intrinsecamente robusti rispetto ad un attacco a forza bruta non credo che questo argomento possa in qualche modo essere non adatto ad essere trattato in pubblico. Tuttavia, per migliore sicurezza, si potrebbe adottare un sistema di criptazione giocattolo così che non ci sia nessun legame con anche i più deboli algoritmi di codifica normalmente utilizzati.
Gentile Alberto,
La ringrazio per la proposta . La inoltrerò a chi di dovere.
Buona giornata
Confermo la disponibilità a pubblicare un articolo approfondito sul “brute force”