¿Son Secure Desktop y un proceso separado suficientes para ocultar información confidencial en la RAM?

2

En mi programa, tengo una base de datos cifrada en el sistema de archivos con una contraseña. Se descifra en la RAM, y los datos confidenciales se distribuyen demasiado en la RAM para que los errores puedan auditarse con la suficiente facilidad. (Lo que descarta la puesta a cero de la memoria manualmente y el uso de SecureString en todo el lugar)

Entonces, lo que pienso hacer es generar un nuevo proceso en un nuevo escritorio de Windows, pedirle al usuario que ingrese su contraseña aquí, luego descifrar la base de datos, hacer mis cosas y luego cerrar el proceso secundario de inmediato.

Esto hace que todo sea muy fácil de auditar. Los datos confidenciales nunca omiten el proceso hijo, y el intervalo de tiempo en el que los datos confidenciales están en la RAM se limita a algunos mili segundos.

La pregunta es: Mi solución funciona bien solo si Windows está efectivamente poniendo a cero la memoria después de que se cierre el proceso. ¿Es una cosa segura de asumir? (Sé que el sistema operativo libera la memoria, pero liberar y poner a cero no es lo mismo)

Sé que el subproceso Zero Paging se está ejecutando para poner a cero las páginas sucias, pero no sé si se realiza de forma preventiva o perezosa, ni si las páginas sucias no utilizadas se intercambian en el disco. Pero quizás sea demasiado paranoico, ya que, si el atacante tiene acceso a mis páginas sucias, entonces no importa lo que esté haciendo, siempre hay una forma de obtener los datos confidenciales.

¿Ves una mejor solución? (que es fácil de auditar y limita la cantidad de datos sensibles al tiempo que se encuentran en la RAM)

    
pregunta Nicolas Dorier 28.03.2015 - 01:04
fuente

0 respuestas

Lea otras preguntas en las etiquetas