Sto lavorando a un progetto che divide file di grandi dimensioni in diversi blocchi crittografati a dimensione fissa (ad esempio 4KiB). Questi blocchi devono essere utilizzati per essere memorizzati in modo persistente su un dispositivo di archiviazione.
I blocchi sono crittografati simmetricamente e ogni blocco ha il proprio vettore di inizializzazione. Sfortunatamente non sono sicuro di come "generare" correttamente i vettori di inizializzazione:
Come spiegato qui e qui ci sono diversi algoritmi di generazione del vettore di inizializzazione. Ovviamente, deve essere distinto tra quelli privati (ad esempio ESSIV) e quelli pubblici (ad esempio Plain). Ho anche letto che gli algoritmi IV come Plain non devono essere combinati con la modalità operativa CBC.
Quale algoritmo di generazione IV dovrei usare? O in altre parole: cosa NON dovrei assolutamente fare?
Non voglio usare nonce casuali per ogni blocco, dato che questi non dovrebbero essere memorizzati da qualche parte - un algoritmo di generazione IV sarebbe molto più comodo per me.