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).