Se il sistema di crittografia è valido, anche notando che due messaggi crittografati con chiavi distinte sono, in effetti, identici, sarebbe considerata una "interruzione". Un algoritmo di crittografia ha un "livello di sicurezza" espresso in bit; quando il livello di sicurezza è k , significa che lo sforzo computazionale per attuare una "pausa" dovrebbe essere sulla quantità di 2 k-1 invocazione della funzione di crittografia sottostante (per essere precisi, la probabilità di successo dovrebbe essere e * 2 -k dove e è lo sforzo, quindi e = 2 k-1 implica una probabilità di successo del 50% per l'attaccante).
Ad esempio, se si utilizza AES con una chiave a 128 bit, allora si suppone di ottenere un "128- bit "livello di sicurezza. Ciò significa che se l'attaccante è pronto a investire abbastanza potenza della CPU per calcolare, ad esempio, 2 70 invocazioni di AES, allora ha probabilità di 2 -58 , alias "1 in 288230376151711744", per avere successo. 2 70 Le invocazioni AES sono uno sforzo notevole; una buona CPU multi-core può produrre circa 2 30 chiamate AES al secondo, quindi stiamo parlando di circa diecimila PC in esecuzione per ... tre anni. E questo raggiunge un tasso di successo considerevolmente inferiore rispetto a vincere milioni di dollari alla lotteria.
Ciò che conta come interruzione è tutto ciò che fa allontanare il sistema dal suo modello teorico, cioè una permutazione pseudocasuale : la crittografia con una determinata chiave è simile alla selezione di una permutazione nello spazio dei messaggi, e una nuova chiave dovrebbe significare una nuova selezione casuale, indipendentemente dalla precedente. Notare che due messaggi cifrati, con due chiavi distinte, procedono dallo stesso messaggio in chiaro, sarebbe un'interruzione, e il miglior metodo di attacco dovrebbe essere quello generico, cioè provare tutte le chiavi possibili finché non viene trovata una corrispondenza. Questo metodo produce le probabilità spiegate sopra, cioè "non funziona realisticamente".
Al momento, non è noto un tale metodo di rottura per AES.
Attenzione ai pensieri obsoleti. Sembra che tu usi le nozioni di "correlazione" e "metodo sconosciuto" che erano adeguate circa cinquanta anni fa, ma la ricerca crittografica è andata avanti un po 'da allora. In particolare:
-
Ora siamo molto severi riguardo alle perdite di informazioni accettabili (le tue "correlazioni"), ovvero non ne accettiamo nessuna. Eppure abbiamo algoritmi candidati (ad esempio AES) che sembrano raggiungere questo alto livello di qualità.
-
I metodi di crittografia sono stati suddivisi in un algoritmo e un tasto . L '"algoritmo" è ciò che diventa codice. L'algoritmo dovrebbe essere pubblico, perché tutta la segretezza è concentrata nella chiave; almeno, non dovrebbe esserci alcun danno nel pubblicare l'algoritmo, se è un bene, e sarebbe molto difficile prevenire tale pubblicazione comunque. Vedi questa risposta per i dettagli.
Ovviamente, se l'algoritmo è stato usato in modo approssimativo, allora tutto va bene. Un algoritmo core come AES è solo un mattone elementare; Elabora blocchi da 16 byte. Per crittografare un messaggio (una possibile lunga sequenza di byte), devi usare il codice a blocchi con una modalità di operazione , che è una questione di sottigliezza e può essere fatta male - sufficientemente male da implicare una perdita di sicurezza totale.
Ci possono essere anche attacchi side-channel che sfruttano le fughe di informazioni attraverso il comportamento dell'implementazione della crittografia, ad es. attraverso tempistiche . Ad esempio, molte implementazioni AES utilizzano tabelle in memoria, che implicano accessi alla memoria dipendenti dai dati e dalle chiavi, quindi il comportamento della cache; in condizioni di laboratorio, a volte questo è stato sfruttato per estrarre la chiave. Questo non è un attacco contro l'algoritmo ma contro la sua implementazione . In conclusione, l'implementazione di algoritmi crittografici è un compito difficile.
Tutto quanto sopra riguarda la crittografia simmetrica, ma lo stesso tipo di ragionamento può essere applicato a crittografia asimmetrica , ad es. con RSA. Una chiave RSA a 2048 bit, correttamente generata e utilizzata, dovrebbe offrire un livello di sicurezza di circa 112 bit, che è più che sufficiente.