Perché dovrei mai usare AES-256-CBC se AES-256-GCM è più sicuro?

21

Credo che il nocciolo della mia domanda sia: ci sono casi in cui CBC è migliore di GCM?

Il motivo per cui lo chiedo è leggendo questo post di Matthew Green e questa domanda sullo scambio di stack di crittografia e questa spiegazione di un attacco a XML (dal momento che sto crittografando JSON nel mio lavoro, anche se non è in streaming da nessuna parte, ma a quanto pare è possibile un attacco di testo cifrato scelto), quindi non dovrei mai, mai usare CBC e semplicemente usare GCM.

In altre parole: non c'è motivo di usare CBC, purché esista GCM ( che fa su OpenSSL , la libreria che utilizzo per il mio lavoro di crittografia). Perché:

GCM = CBC + Autenticazione.

Qualcuno potrebbe dirmi se le mie conclusioni sono corrette?

AGGIORNAMENTO IMPORTANTE: Poiché questa domanda sta diventando molto popolare, vorrei sottolineare dalla mia ricerca che GCM NON È UN SILVER BULLET . C'è un grosso problema con GCM, che è che se si utilizza lo stesso IV due volte può compromettere la chiave (a causa dell'uso di GMAC, quindi non è a prova di infallibile). Se sei paranoico (come me), CBC con HMAC ( encrypt then MAC ) è probabilmente il migliore se si vuole essere sicuri. (Inoltre, correggimi se ho torto su questo aggiornamento).

    
posta The Quantum Physicist 22.04.2018 - 16:47
fonte

4 risposte

20

CBC e GCM sono piuttosto diversi. Entrambi sono sicuri se usati correttamente, ma CBC non è parallelizzabile e manca dell'autenticazione. Per questo motivo, CBC è davvero pratico per la crittografia di file locali che non necessitano di accesso casuale.

Per quanto riguarda i vantaggi che potrebbe avere, CBC non fallisce in modo catastrofico se viene riutilizzato l'IV e può essere più veloce se implementato su hardware di base.

Come per GCM, è fondamentalmente GCM = CTR + Authentication (non CBC). È veloce e sicuro se usato correttamente e molto versatile, quindi la sua popolarità.

    
risposta data 22.04.2018 - 17:23
fonte
10
  1. CBC è più vecchio, il che significa maggiore compatibilità e solo motivi storici generali.
  2. Ci sono vantaggi prestazionali , se non hai bisogno di GCM per l'autenticità. Spesso potresti volere il tuo sistema per autenticità con alcune caratteristiche aggiuntive o potresti non averne affatto bisogno.
risposta data 22.04.2018 - 17:21
fonte
6

In poche parole - CBC è arrivato per primo. È possibile che si disponga di sistemi che supportano solo CBC.

Questa sarebbe la stessa domanda di "Perché dovrei mai usare RC4 e MD5 se sono disponibili AES e SHA-2?" Compatibilità e storia. (Lo stesso con molte altre scelte di cifratura.)

Se tutti i sistemi supportano AES-256-GCM e dispongono delle risorse per eseguirlo e hanno esigenze di sicurezza più elevate, utilizzare AES = 256-GCM.

Ad esempio, ho sistemi che non supportano nulla di più recente di SSL3, RC4 e MD5, con certificati a 1024 bit. (Nel 2018, sì). Certo, non è molto meglio di ROT13 in questi giorni, ma fa abbastanza per questi dati che in realtà non richiedono alcuna crittografia. (In questi giorni la gente chiama queste cose IoT.)

    
risposta data 22.04.2018 - 23:05
fonte
5

Big nitpick:

GCM = CBC + Authentication.

No, GCM = CTR + Autenticazione.

Ma in generale hai ragione; La CBC è una modalità più antica che è stata inventata in epoche buie dal punto di vista crittografico (non più tardi degli anni '70), ed è ora sfavorita a causa della mancanza di autenticazione integrata e di tutti i problemi causati dagli oracoli di riempimento. Un buon esempio pratico di questo è che TLS 1.3 ha eliminato il supporto per CBC.

GCM non è una panacea, comunque. In senso stretto, è corretto, ma nella pratica si è dimostrato tutt'altro che infallibile:

  1. Fallisce in modo spettacolare se riutilizzi un nonce. Un singolo nonce ripetuto consente ad un avversario di recuperare la sua sottochiave di autenticazione, oltre ad apprendere lo XOR dei due messaggi con lo stesso nonce.
  2. I suoi nonce sono scomodamente brevi (96 bit), che può essere difficile da usare con nonces casuali .

CBC non ha questi problemi. Gli IV casuali funzionano bene (e sono di fatto richiesti), e se si ripete una IV non si ottiene un errore catastrofico, si perdono solo informazioni su uguali prefissi di testo in chiaro.

    
risposta data 23.04.2018 - 07:46
fonte

Leggi altre domande sui tag