Sicurezza di AES contro un attacco di testo in chiaro noto se non si usa IV?

3

Comprendo l'affermazione che "AES non è attualmente vulnerabile all'attacco di testo in chiaro" ma io presumo che ci sia un cavaliere implicito in quella affermazione che dovrebbe essere letta "se usato in un appropriato la modalità AES non è attualmente vulnerabile all'attacco di testo normale ".

Nota: al momento non lo facciamo e sto solo cercando di costruire un argomento (se valido) per mostrare perché continueremo a non farlo ....

Se disponiamo di un database che memorizza stringhe brevi (meno di 256 bit). Ogni input di testo semplice deve avere lo stesso codice - questo esclude l'uso di nonce o IV e qualsiasi concatenamento che utilizza più blocchi diversi dai due richiesti per memorizzare la stringa.

Assumiamo che un utente malintenzionato possa determinare il testo in chiaro originale per qualsiasi dato testo cifrato (per ragioni a cui non intendo entrare, ma sembra una buona pratica).

In questo caso, dove abbiamo rimosso alcuni degli input aggiuntivi, e ci rimane solo la chiave, il testo in chiaro conosciuto e il testo della nota conosciuta: perché AES è ancora sicuro? Cosa mi manca nella mia comprensione che significa che l'algoritmo non può essere invertito?

EDIT: la risposta di John Deters rende molto chiaro che se il sistema è disponibile per l'attaccante, allora sono in grado di "pescare" per le coppie di cifratura: testo semplice. Ma assumerò che noteremmo tale attività (cioè l'uso del registro di sistema e questo non può essere sovvertito, potrebbe essere un'ipotesi pericolosa, ma per il momento mi trovo a mio agio perché desidero concentrarmi su aree al di fuori del mio controllo) .

Quindi vorrei riformulare la domanda: Supponiamo di aver dato via / perso alcuni dei valori di cifratura a una parte esterna che non ha accesso al sistema stesso. Supponiamo che la terza parte possa indovinare uno o più valori del testo normale e associare quelli con i loro codici.

Sono (e se sì perché) il resto dei cifrari ancora sicuri? Perché non è possibile calcolare la chiave e decifrare il resto dei cifrari? È necessario determinare l'intera chiave?

    
posta user2195559 29.09.2016 - 15:13
fonte

1 risposta

5

Hai descritto un sistema Electronic Code Book (ECB), che è intrinsecamente vulnerabile indipendentemente dalla crittografia algoritmo utilizzato per crittografare i dati. Con un sistema ECB, a un utente malintenzionato non interessa quale sia l'algoritmo crittografico utilizzato, passa semplicemente il testo in chiaro al sistema, quindi confronta i risultati del testo cifrato con il resto dei dati già crittografati, cercando una corrispondenza. È irrilevante se il sistema crittografa i dati con AES, DES, usa un hash SHA-256, o addirittura usa il testo in chiaro come chiave per cercare un numero casuale da un database.

Viceversa, ciò significa che questo tipo di attacco non rivela praticamente alcuna informazione sulla crittografia utilizzata. Pertanto, non sta rivelando alcuna informazione che potrebbe essere utilizzata per recuperare la chiave.

EDIT:

In base ai tuoi commenti di seguito, sei interessato a ciò che viene chiamato " Adaptive Chosen-Ciphertext Attack ", che è dove l'autore dell'attacco può ottenere il testo in chiaro per qualsiasi messaggio cifrato desiderato e usarlo per tentare di recuperare informazioni sulla chiave e quindi richiedere ulteriori informazioni in base a quanto appreso dalle precedenti iterazioni. Questo è il "più potente" della famiglia di attacchi agli algoritmi crittografici. Gli algoritmi di crittografia sono progettati specificamente per resistere ai tipi esatti di attacco che stai descrivendo.

Avere una prova matematica che un algoritmo è sicuro contro questo è passare un "test di indistinguibilità". Dati due messaggi di testo cifrato e un messaggio di testo in chiaro e la consapevolezza che il testo in chiaro è stato crittografato per creare uno dei due messaggi, l'utente malintenzionato non deve essere in grado di fare meglio di fare un'ipotesi 50/50 a quale messaggio crittografato è associato il testo in chiaro . Nonostante oltre 20 anni di intense ricerche da parte di legioni di crittografi e matematici ben rispettati, nessuno ha dimostrato la capacità di attaccare AES-256 (o anche AES-128) in questo modo.

Ovviamente molti sistemi crittografici che utilizzano AES sono stati infranti, ma quelli sono dovuti ad altri fattori: debolezza nei progetti di protocollo (attacco di POODLE, attacco BEAST, ecc.); debolezze nelle implementazioni del protocollo (attacchi di heartbleed, attacchi di cache timing, ecc.) e debolezze nelle implementazioni che portano ad attacchi di canale laterali (attacchi di temporizzazione del castello di Bouncy, analisi differenziale della potenza, ecc.)

Il punto di forza di AES (e della maggior parte dei codici a blocchi) deriva dal fatto che il testo in chiaro viene ciclato attraverso "giri" di crittografia. Ogni round è dove i bit di testo in chiaro sono codificati in modo diverso in base ai bit della chiave. Questi dati codificati vengono quindi reinseriti nell'algoritmo di scrambling ancora e ancora. Dopo 10, 12 o 16 round di scrambling, l'output criptato viene considerato crittografato al punto in cui ogni singolo bit è indistinguibile dai dati casuali.

Un modo diverso di pensarlo potrebbe essere guardare una scacchiera dopo che una partita è stata giocata. Lo stato finale ti dice esattamente ogni mossa che è stata usata per arrivare lì? Per un principiante, no, ma un esperto di scacchi potrebbe probabilmente capirlo. Quindi prendi quella scacchiera mista, lasciando tutti i pezzi ancora su di essa e aggiungi altri pezzi e gioca un'altra partita sulla precedente; mescolando tutti i pezzi ancora e ancora, e ripetere che altre 9 volte. Persino un grande maestro di scacchi non può svelare lo stato finale della scacchiera dopo tutti quei giochi misti.

Molte ricerche sono state condotte utilizzando attacchi a "round ridotto" sull'algoritmo, in cui deliberatamente indeboliscono AES riducendo il numero di loop fino al punto in cui possono identificare i bit della chiave. Ad esempio, AES-128 normalmente esegue iterazioni per 10 round, ma invece possono iterare solo 8 volte, e quindi imparare abbastanza sul tasto in modo che possano battere il test di indistinguibilità. Ma nessuno è stato in grado di svolgere l'intero algoritmo in modo tale da aver imparato qualcosa sui tasti.

    
risposta data 29.09.2016 - 15:44
fonte

Leggi altre domande sui tag