Hay una función SecureZeroMemory() en WinAPI que está diseñada para borrar la memoria utilizada para almacenar contraseñas/claves de cifrado/cosas similares cuando el búfer ya no es necesario. Difiere de ZeroMemory() en que su llamada no será optimizada por el compilador.¿El uso de SecureZeroMemory() realmente ayuda a que la aplicación sea más segura?
¿Es realmente tan necesario borrar la memoria utilizada para almacenar datos confidenciales? ¿Realmente hace que la aplicación sea más segura?
Entiendo que los datos podrían escribirse en archivo de intercambio o en archivo de hibernación y que otros procesos podrían leer la memoria de mi programa. Pero lo mismo podría pasar con los datos cuando todavía está en uso. ¿Por qué se usa , luego borre mejor que solo use?
Entiendo eso, pero también es posible que la contraseña se copie en swapfile/hibernated cuando está en uso. ¿Cuál es la diferencia: la duración de almacenarlo en la memoria? – sharptooth
Sí. estás reduciendo la superficie de ataque. Recuerde: la seguridad se trata de elevar el listón. Cuanto más suba la barra, mejor. –