Supongamos que tenemos una clave maestra y queremos cifrar algunos archivos. Luego generamos una clave única para ese archivo, la usamos para cifrar el contenido del archivo y, finalmente, ciframos una clave única utilizando la clave maestra (con IV, relleno y así sucesivamente). Esquema bastante común, ¿no?
Por lo tanto, ahora queremos generar una clave única y almacenarla en algún lugar del archivo cifrado. El enfoque directo es generar una clave de un solo uso e IV y usar algunos cifrados (en mi caso es AES en modo CBC) para cifrar una clave de un solo uso con la clave maestra. Después de eso almacenamos IV y la clave de un solo cifrado en algún archivo. Esta es una forma bastante estándar también.
En resumen, pasamos de un valor aleatorio no cifrado a uno cifrado.
Pero también podemos movernos en sentido inverso. Podemos rellenar algunos búferes con bytes aleatorios, luego simular que este búfer se serializa por única vez, descifrar la clave única de ese búfer y usarlo para cifrar nuestro archivo. En ese caso, en lugar de tener dos procedimientos separados para el cifrado y el descifrado de claves de un solo uso, solo podemos mantener el procedimiento de descifrado.
La pregunta: ¿está bien usar ese truco? ¿Alguna advertencia o trampa? ¿Alguna restricción adicional aplicada al RNG usado?
Básicamente, solo quiero asegurarme de que tal simplificación no rompa la seguridad.