He estado observando cómo se utiliza PBKDF para generar la clave de cifrado para AES. Una cosa que no pude entender es cómo esos sistemas operativos mantienen segura la clave de cifrado además de usar módulos de hardware.
Hasta ahora, tengo entendido que el sistema operativo, como Windows, almacena la contraseña de usuario con hash en un archivo (archivo SAM). El hash de contraseña se usa para generar la clave de cifrado para las aplicaciones que necesitan cifrar datos. Esto se hace en DPAPI y las aplicaciones pueden simplemente llamar a la API y la biblioteca del sistema extraerá automáticamente la contraseña de usuario (hash) del contexto actual y derivará una clave de ella (de una manera sencilla, tal vez más complicada que esto). Pero, ¿cómo garantiza Windows la seguridad de la clave de cifrado, incluso si la clave solo se genera sobre la marcha, siempre que el atacante obtenga el hash, no comprometería la clave de cifrado de alguna manera, ya que pueden aplicar el mismo PBKDF2? si de alguna manera pueden probar aquellos con posibles casos).
Si un atacante toma el archivo de contraseña de Windows y extrae el hash (no debería ser demasiado difícil), ¿puede aplicar PBKDF2 (o cualquier posible función de derivación) encima para obtener la clave de cifrado? ? . ¿Es algún valor de sal codificado cuando el PBKDF2 se aplica al hash en la fuente de Windows?
Gracias