Un'analisi formale è stata fatta da Phil Rogaway nel 2011, qui . La sezione 1.6 fornisce un riepilogo che trascrivo qui, aggiungendo la mia enfasi in grassetto (se sei impaziente, allora la sua raccomandazione è utilizzare la modalità CTR, ma ti suggerisco di leggere i miei paragrafi sull'integrità del messaggio rispetto alla crittografia di seguito).
Si noti che la maggior parte di questi richiede che l'IV sia casuale, il che significa che non è prevedibile e quindi dovrebbe essere generato con sicurezza crittografica. Tuttavia, alcuni richiedono solo un "nonce", che non richiede tale proprietà ma richiede solo che non venga riutilizzato. Pertanto, i progetti che si basano su un nonce sono meno soggetti a errori rispetto ai progetti che non lo fanno (e credetemi, ho visto molti casi in cui CBC non è implementato con una corretta selezione IV). Quindi vedrai che ho aggiunto grassetto quando Rogaway dice qualcosa come "la riservatezza non è raggiunta quando il IV è un nonce", significa che se scegli il tuo IV crittograficamente sicuro (imprevedibile), allora nessun problema. Ma se non lo fai, allora stai perdendo le buone proprietà di sicurezza. Non riutilizzare mai un IV per nessuna di queste modalità.
Inoltre, è importante comprendere la differenza tra integrità del messaggio e crittografia. La crittografia nasconde i dati, ma un utente malintenzionato potrebbe essere in grado di modificare i dati crittografati e i risultati possono essere potenzialmente accettati dal software se non si controlla l'integrità del messaggio. Mentre lo sviluppatore dirà "ma i dati modificati torneranno come spazzatura dopo la decrittazione", un buon ingegnere della sicurezza troverà la probabilità che la spazzatura causi comportamenti avversi nel software, e poi trasformerà quell'analisi in un vero attacco. Ho visto molti casi in cui è stata utilizzata la crittografia, ma l'integrità del messaggio era davvero necessaria più della crittografia. Comprendi di cosa hai bisogno.
Dovrei dire che sebbene GCM abbia sia la crittografia che l'integrità del messaggio, è un design molto fragile: se riutilizzi un IV, sei fregato: l'attaccante può recuperare la tua chiave. Altri progetti sono meno fragili, quindi ho personalmente paura di raccomandare GCM in base alla quantità di codice di crittografia scadente che ho visto in pratica.
Se hai bisogno di entrambi, l'integrità dei messaggi e la crittografia, puoi combinare due algoritmi: di solito vediamo CBC con HMAC, ma nessun motivo per legarti a CBC. La cosa importante da sapere è crittografare prima, quindi MAC il contenuto crittografato , non viceversa. Inoltre, il IV deve far parte del calcolo MAC.
Non sono a conoscenza di problemi di PI.
Ora alle cose buone del professor Rogaway:
Blocca le modalità di crittografia, crittografia ma non integrità del messaggio
BCE : un blockcipher, la modalità codifica i messaggi che sono un multiplo di n bit codificando separatamente ogni pezzo n-bit. Le proprietà di sicurezza sono deboli , il metodo perde l'uguaglianza dei blocchi in entrambe le posizioni e il tempo del blocco. Di notevole valore legacy e di valore come elemento costitutivo di altri schemi, ma la modalità non raggiunge alcun obiettivo di sicurezza generalmente desiderabile a sé stante e deve essere utilizzata con notevole cautela; La BCE non dovrebbe essere considerata una modalità di riservatezza "per scopi generici" .
CBC : uno schema di crittografia basato su IV, la modalità è sicura come uno schema di crittografia probabilistico, ottenendo l'indistinguibilità dai bit casuali, assumendo un IV casuale. La riservatezza non si ottiene se l'IV è semplicemente un nonce , né se è un nonce codificato con la stessa chiave utilizzata dallo schema, come lo standard suggerisce erroneamente di fare. I ciphertexts sono altamente malleabili. Nessuna sicurezza di attacco cifrato (CCA) scelta. La riservatezza è perduta in presenza di un oracolo di imbottitura corretta per molti metodi di imbottitura. Crittografia inefficiente per essere intrinsecamente seriale. Ampiamente usato, le proprietà di sicurezza della sola privacy della modalità comportano un uso improprio frequente. Può essere utilizzato come blocco predefinito per algoritmi CBC-MAC. Non riesco a identificare alcun vantaggio importante rispetto alla modalità CTR.
CFB : uno schema di crittografia basato su IV, la modalità è sicura come uno schema di crittografia probabilistico, ottenendo l'indistinguibilità dai bit casuali, assumendo un IV casuale. La riservatezza non viene raggiunta se l'IV è prevedibile , né se viene creato da un nonce codificato con la stessa chiave utilizzata dallo schema, come lo standard suggerisce erroneamente di fare. I cifrati sono malleabili. Nessuna sicurezza CCA. Crittografia inefficiente per essere intrinsecamente seriale. Lo schema dipende da un parametro s, 1 ≤ s ≤ n, in genere s = 1 o s = 8. Inefficace per la necessità di una chiamata a blocchi di blocchi per elaborare solo i bit. La modalità raggiunge un'interessante proprietà di "auto-sincronizzazione"; l'inserimento o la cancellazione di qualsiasi numero di caratteri s-bit nel testo cifrato interrompe temporaneamente solo la decrittografia corretta.
OFB : uno schema di crittografia basato su IV, la modalità è sicura come uno schema di crittografia probabilistico, che consente di ottenere l'indistinguibilità dai bit casuali, assumendo un IV casuale. La riservatezza non viene raggiunta se l'IV è un nonce, sebbene una sequenza fissa di IV (ad es. Un contatore) funzioni correttamente. I ciphertexts sono altamente malleabili. Nessuna sicurezza CCA. La crittografia e la decrittografia sono inefficienti dall'essere intrinsecamente seriali. Crittografa nativamente stringhe di qualsiasi lunghezza di bit (nessuna imbottitura necessaria). Non riesco a identificare alcun vantaggio importante rispetto alla modalità CTR.
CTR : uno schema di crittografia basato su IV, la modalità raggiunge l'indistinguibilità dai bit casuali assumendo un nonce IV. Come uno schema sicuro non-based, la modalità può anche essere utilizzata come uno schema di crittografia probabilistico, con un IV casuale. Completo fallimento della privacy se un nonce viene riutilizzato per crittografia o decrittografia. La parallelizzabilità della modalità spesso la rende più veloce, in alcune impostazioni molto più velocemente, rispetto ad altre modalità di riservatezza. Un elemento importante per gli schemi di crittografia autenticata. Nel complesso, di solito è il modo migliore e più moderno per ottenere la crittografia solo della privacy.
XTS : uno schema di crittografia basato su IV, la modalità funziona applicando una blockcipher ottimizzabile (sicura come un PRP forte) a ogni blocco n-bit. Per i messaggi con lunghezze non divisibili per n, gli ultimi due blocchi vengono trattati in modo speciale. L'unico utilizzo consentito della modalità è la crittografia dei dati su un dispositivo di archiviazione strutturato a blocchi. La larghezza ridotta del PRP sottostante e il cattivo trattamento dei blocchi finali frazionari sono problemi. Sarebbe più efficiente ma meno desiderabile di una blockcipher protetta da PRP (a blocco largo).
MAC (integrità del messaggio ma non crittografia)
ALG1–6 : una raccolta di MAC, tutti basati sul CBC-MAC. Troppi schemi. Alcuni sono dimostrabili come PRF VIL, altri come PRF FIL e altri non hanno una sicurezza dimostrabile. Alcuni schemi ammettono attacchi dannosi. Alcune delle modalità sono datate. La separazione delle chiavi è inadeguatamente gestita per le modalità che lo hanno. Non dovrebbe essere adottato in massa, ma è possibile scegliere selettivamente i "migliori" schemi. Sarebbe anche bene adottare nessuna di queste modalità, a favore del CMAC. Alcuni dei MAC ISO 9797-1 sono ampiamente standardizzati e utilizzati, specialmente nel settore bancario. Una versione rivista dello standard (ISO / IEC FDIS 9797-1: 2010) sarà presto rilasciata [93].
CMAC : un MAC basato sul CBC-MAC, la modalità è decisamente sicura (fino al limite del compleanno) come PRF (VIL) (supponendo che il blockcipher sottostante sia un buon PRP). Spese generali sostanzialmente minime per uno schema basato su CBCMAC. La natura intrinsecamente seriale di un problema in alcuni domini applicativi e l'uso con una blockcipher a 64 bit richiederebbe occasionalmente una nuova codifica. Più pulito della raccolta ISO 9797-1 di MAC.
HMAC : un MAC basato su una funzione hash crittografica piuttosto che su una blockcipher (sebbene la maggior parte delle funzioni hash crittografiche siano esse stesse basate su blockcipher). Il meccanismo gode di forti limiti di sicurezza dimostrabile, sebbene non da ipotesi preferite. Molteplici varianti strettamente correlate in letteratura complicano la comprensione di ciò che è noto. Non sono mai stati suggeriti attacchi dannosi. Ampiamente standardizzato e usato.
GMAC : un MAC non-based che è un caso speciale di GCM. Eredita molte delle caratteristiche buone e cattive di GCM. Ma un non-requisito non è necessario per un MAC, e qui offre pochi vantaggi. Attacchi pratici se i tag vengono troncati a ≤ 64 bit e l'estensione della decrittazione non viene monitorata e ridotta. Errore completo in caso di non riutilizzo. L'uso è implicito comunque se viene adottato GCM. Non raccomandato per la standardizzazione separata.
crittografia autenticata (sia crittografia che integrità del messaggio)
CCM : uno schema AEAD basato su nonce che combina la crittografia in modalità CTR e il CBC-MAC non elaborato. Inerentemente seriale, limitando la velocità in alcuni contesti. Sicuro, con buoni limiti, supponendo che la blockcipher sottostante sia un buon PRP. Costruzione sgraziata che dimostra chiaramente il lavoro. Più semplice da implementare rispetto a GCM. Può essere utilizzato come MAC non basato suce. Ampiamente standardizzato e usato.
GCM : uno schema AEAD basato su nonce che combina la crittografia in modalità CTR e una funzione hash universale basata su GF (2128). Buone caratteristiche di efficienza per alcuni ambienti di implementazione. Buoni risultati provabili e sicuri che presuppongono il minimo troncamento dei tag. Attacchi e scarsi limiti di sicurezza dimostrabili in presenza di sostanziali troncamenti dei tag. Può essere utilizzato come MAC non basato suce, che viene quindi chiamato GMAC. Scelta discutibile per consentire nonces diversi da 96 bit. Consiglia di limitare i nonces a 96 bit e i tag ad almeno 96 bit. Ampiamente standardizzato e usato.