Nel mio programma, ho un database crittografato sul file system con una password. Viene decrittografato nella RAM e i dati sensibili vengono distribuiti troppo nella RAM, in modo che l'errore possa essere verificato abbastanza facilmente. (Che escludono l'azzeramento della memoria manualmente e l'uso di SecureString dappertutto)
Quindi quello che penso di fare è generare un nuovo processo in un nuovo desktop di Windows, chiedendo all'utente di inserire la sua password qui, quindi decrittografare il database, fare le mie cose, quindi chiudere immediatamente il processo figlio.
Questo rende tutto molto facile da controllare. I dati sensibili non tralasciano mai il processo secondario e l'intervallo di tempo in cui i dati sensibili sono nella RAM è limitato a qualche milli secondi.
La domanda è: la mia soluzione funziona alla grande solo se Windows sta effettivamente azzerando la memoria dopo che il processo è stato chiuso. È una cosa sicura da assumere? (So che il sistema operativo libera la memoria, ma liberare e azzerare non è la stessa cosa)
Vedi una soluzione migliore? (facile da controllare)