Supponiamo di avere una chiave master e vogliamo crittografare alcuni file. Quindi generiamo una chiave una tantum per quel file, la usiamo per crittografare il contenuto del file e infine criptiamo una chiave una tantum usando la chiave principale (con IV, padding e così via). Schema abbastanza comune, vero?
Quindi, ora vogliamo generare una chiave una tantum e archiviarla da qualche parte nel file crittografato. L'approccio diretto consiste nel generare una chiave una volta e IV e utilizzare un codice (nel mio caso è AES in modalità CBC) per crittografare la chiave una tantum con la chiave principale. Dopodiché, memorizziamo IV e una chiave cifrata in alcuni file. Anche questo è abbastanza standard.
Quindi, in breve, passiamo da un valore casuale non criptato a uno crittografato.
Ma possiamo anche muoverci nella direzione opposta. Possiamo riempire alcuni buffer con byte casuali, quindi fingere che questo buffer sia serializzato una sola volta, decodificare una sola volta una chiave da quel buffer e usarlo per crittografare il nostro file. In tal caso, invece di avere due procedure separate per la crittografia e la decrittografia delle chiavi singole, possiamo mantenere solo la procedura di decrittografia.
La domanda: va bene usare quel trucco? Eventuali avvertimenti o insidie? È stato utilizzato qualsiasi vincolo aggiuntivo applicato a RNG?
Fondamentalmente, voglio solo assicurarmi che una tale semplificazione non infranga la sicurezza.