Sto scrivendo un programma Java che crittografa le stringhe con la crittografia AES-CBC. (Alla fine aggiungerò anche funzioni di steganografia).
Come ben sai, CBC ha bisogno di un IV per cifrare il primo blocco poiché non ci sono blocchi precedenti da cui ereditare.
Ho fatto qualche ricerca sugli IV e da quello che riesco a trovare:
- L'IV dovrebbe essere casuale
- L'IV dovrebbe cambiare da messaggio a messaggio
Attualmente, per motivi di test / debug, sto usando un IV fisso.
Tuttavia, ora che ho risolto la maggior parte degli errori nel mio programma, sto cercando di migliorare la sicurezza rimuovendo quella versione fissa.
Quello che mi piacerebbe sapere è: È sicuro usare una seconda chiave per la IV?
Ad esempio, il mio programma richiede attualmente all'utente una chiave della lunghezza appropriata per il processo di crittografia.
Che cosa succede se ho chiesto all'utente di:
A) 2 chiavi (della stessa lunghezza, una per IV e l'altra per la crittografia effettiva)
B) 1 tasto due volte più lungo (dividendolo in due parti: il primo per la IV e il secondo per la chiave effettiva)
Sarebbe sicuro?