Riutilizzare una flebo è una cattiva idea. Ogni modalità di crittografia ha i propri requisiti sulla gestione IV, ma per la maggior parte di essi, le conseguenze del riutilizzo IV vanno dal problematico al mortale. Non farlo.
Il metodo "normale" consiste nell'utilizzare una singola chiave e un IV per record: ogni elemento crittografato riceverà la propria IV, che verrà archiviata lungo il risultato della crittografia. Generando sia la chiave che la IV da un segreto globale e un "sale" per-record di solito funziona (risulta in pseudocasuale IV, che va bene per la maggior parte delle modalità di crittografia) ma aggiunge complessità, che è, di per sé, una cosa negativa. p>
Effettuare correttamente la crittografia è un'arte difficile, soprattutto perché nella maggior parte dei contesti che garantiscono la crittografia, deve essere verificata anche l'integrità. La soluzione migliore sarebbe una modalità di crittografia autenticata - in pratica, GCM . GCM prende come input:
- Una IV di dimensione nominalmente arbitraria, ma è raccomandata una IV di 12 byte.
- Una chiave adatta per AES (128, 192 o 256 bit)
- Il messaggio m per crittografare
L'output quindi consiste in c , la crittografia di m (con la stessa esatta dimensione) e t , il "tag di autenticazione" ", che ha le stesse dimensioni di un blocco AES (128 bit, ovvero 16 byte). Quello che devi poi memorizzare è l'IV, l'output criptato c e t .
Quando decodificano, il motore di decrittografia userà la IV e c , e produrrà t di nuovo, che dovrai confrontare con t per verificare le modifiche.
La cosa buona di GCM è che l'unico requisito per la versione IV è no riuse . Non è necessario rendere IV casuale o imprevedibile, ma NON DEVI riutilizzare lo stesso IV due volte. Potresti utilizzare un indicatore orario o un contatore o un indice di riga del database, a condizione di assicurarti di non riutilizzare mai un valore IV.