L'uso della stessa chiave e IV coppia per la crittografia di più file è molto pericoloso perché la crittografia dei due file con lo stesso contenuto risulterà lo stesso testo cifrato per qualsiasi crittografia in modalità blocco. Ecco alcuni post correlati su questo argomento:
Perché le coppie di chiavi IV / non devono essere riutilizzate in modalità CTR?
Pericoli dell'utilizzo della modalità CTR per la crittografia
AES-CBC e IV - Crittografia di più blocchi di un file con lo stesso IV?
It is insecure to reuse the IV with AES-CBC. At the very least, if the
files have a common prefix, this will be revealed as a common prefix
of the ciphertexts. For AES-CBC, the only way to ensure
confidentiality is to use random IVs.
Quali sono i vincoli per un IV che utilizza AES in modalità CBC?
The IV for a block cipher in CBC mode must not only be "uniquely used
for each message encrypted with the same key". It is usually assumed
to be indistinguishable from random by an adversary.
Tieni presente che l'utilizzo di la stessa chiave e iv pair per la modalità GCM comporterebbe conseguenze disastrose in ogni caso. Puoi verificare la seguente domanda (in realtà, nella maggior parte delle domande relative alla modalità GCM, vedresti persone che menzionano questo caso di utilizzo errato).
Quanto male sta usando la stessa IV due volte con AES / GCM?
Il mio consiglio è di usare chiave simmetrica casuale e IV casuale per ogni crittografia di file e memorizzarli nel file crittografato usando Cryptographic Message Syntax (CMS) , puoi usare EnvelopedData tipo di contenuto in cui memorizzi il contenuto cifrato. In questo caso, la chiave di crittografia del contenuto ( CEK ) ( chiave simmetrica casuale ) viene crittografata utilizzando la chiave pubblica dell'utente (che può essere raggiunta dal certificato dell'utente) e archiviata come crittografata con il contenuto crittografato. Per quanto riguarda random IV , è archiviato come open perché non ha bisogno di essere privato, ma deve solo essere imprevedibile. Quando un utente ha bisogno di decrittografare un file, decodifica basicamente CEK usando la chiave privata che ha. Da lì, usando CEK e IV puoi decodificare il contenuto crittografato.
Se non puoi o non vuoi utilizzare CMS, puoi utilizzare la stessa chiave con diversi IV per la crittografia di più file. Non conosco alcuna debolezza per questo uso. È necessario memorizzare la chiave come crittografata, ma è possibile memorizzare gli IV come non crittografati. Nota, potresti volerli archiviare come firmati per vedere se sono cambiati o meno senza preavviso.