In che modo lo schema di padding influisce sulla sicurezza della crittografia

10

Dopo aver scavato un po 'più in profondità nella crittografia, mi chiedo quale impatto abbiano i diversi schemi di padding sulla sicurezza di un algoritmo di crittografia. Prendiamo AES-128 in modalità CBC come esempio, perché attualmente sto lavorando con questo.

Wikipedia elenca diversi schemi di riempimento, ma non menziona nulla sull'impatto sulla sicurezza della scelta di uno di essi . La libreria che sto attualmente utilizzando fornisce riempimento PKCS5 , che non viene nemmeno menzionato nell'articolo di Wikipedia. Ci sono ovviamente diversi schemi di imbottitura in più.

Non sono un esperto in crittografia, quindi forse ho torto totalmente, ma non riesco a vedere come i diversi schemi di padding dovrebbero avere un impatto significativo. Sono fondamentalmente libero di sceglierne uno e di essere felice o ci sono alcune cose che devo considerare?

    
posta Demento 04.05.2011 - 21:44
fonte

2 risposte

8

Risposta breve : non preoccuparti. Nella maggior parte dei casi, la scelta del metodo di riempimento non ha importanza.

Risposta più lunga: perché non ha importanza. Finché utilizzi le pratiche di progettazione crittografica appropriate, in particolare, purché i testi crittografati siano correttamente autenticati, non sono a conoscenza di in modo che la scelta del padding influenzi la sicurezza (con una eccezione, vedi sotto).

È vero che se non riesci ad autenticare i testi cifrati, allora ci possono essere degli attacchi, come spiega @Thomas. Poi di nuovo, se i testi cifrati non sono correttamente autenticati, probabilmente hai una serie di altri problemi, quindi non dovresti incolparlo sullo schema di riempimento. I crittografi sanno che se si cripta qualcosa, davvero dovrebbe essere l'autenticazione del testo cifrato ; non farlo è un classico errore da principiante che può aprire gravi falle nella sicurezza .

In breve, se stai seguendo buone pratiche di crittografia, la scelta del padding non dovrebbe avere un gran che per la sicurezza (e se non segui buone pratiche di crittografia, potresti avere problemi più grandi).

L'eccezione: un caso in cui è importante. OK, ora siamo pronti per la stampa fine. È qui che ammetto che quanto sopra è un po 'troppo semplicistico. C'è una situazione in cui la scelta del padding può essere molto importante per la sicurezza: resistenza all'analisi del traffico.

La crittografia non nasconde la lunghezza dei messaggi crittografati: il messaggio crittografato in genere rivela la lunghezza (o la lunghezza approssimativa) del messaggio crittografato. In alcuni contesti, questo può essere molto problematico. Per esempio, ci sono contesti in cui le informazioni rivelanti la lunghezza rivelano l'intero negozio: rivela le cose che stavi cercando di mantenere riservate. (Vedi, ad esempio, gli attacchi ai canali laterali di Chen et al sorprendenti su applicazioni Web crittografate SSL . cose, hanno dimostrato che un intercettatore che osserva le lunghezze dei pacchetti di rete mentre l'utente sta digitando una query di ricerca web può dedurre quale sia la query di ricerca. Penso che Google abbia risolto il problema, ma è stato un esempio sbalorditivo di un rischio generale precedentemente noto.)

Se ti trovi in un contesto in cui le lunghezze dei messaggi rivelano informazioni riservate, allora hai un problema. La difesa standard consiste nel riempire i messaggi prima della crittografia, in modo che la lunghezza del testo cifrato non rivelhi nulla sulla lunghezza dei messaggi. Un modo per farlo è quello di riempire tutti i messaggi a una lunghezza fissa, prima della crittografia. Un altro (meno sicuro) modo di farlo è aggiungere padding di una lunghezza casuale, con sufficiente riempimento casuale che il rumore casuale oscuri il segnale e impedisca a un utente malintenzionato di apprendere informazioni sufficienti sulle lunghezze per fare del male. Quindi, in un contesto in cui dobbiamo evitare l'analisi del traffico, la progettazione dello schema di riempimento diventa critica e gli schemi di riempimento standard probabilmente non saranno sufficienti: potresti dover fare qualcosa di speciale.

    
risposta data 05.05.2011 - 09:38
fonte
6

Ci possono essere alcuni problemi con il padding:

  • Un padding casuale può essere utilizzato per alcuni tipi di steganografia, consentendo a un mittente corrotto di divulgare dati segreti per l'utilizzo da parte di terzi. Questa non è una grande preoccupazione in situazioni normali, ma sembra ancora male.

  • Ci sono stati alcuni attacchi a padding che gestiscono . Vale a dire, il ricevitore potrebbe decifrare e trovare un padding valido, o qualche spazzatura dall'aspetto casuale. Se il ricevitore riporta un codice di errore distinto in quest'ultimo caso, questo è un "oracle di riempimento" e può essere utilizzato per attaccare il sistema. Questo è stato spiegato a lungo da Vaudenay nel 2002 ed è stata la base del attacco oracle padding ASP.NET otto anni più tardi.

Le modalità di crittografia senza riempimento (ad es. CTR) evitano la complessità e l'overhead di rete del padding.

    
risposta data 04.05.2011 - 22:25
fonte

Leggi altre domande sui tag