Secure Desktop e processo separato sono sufficienti per nascondere le informazioni sensibili nella RAM?

3

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)

    
posta Nicolas Dorier 23.03.2015 - 02:16
fonte

1 risposta

1

Devi decidere cosa stai proteggendo e contro chi.

In primo luogo, scambia. I dati sensibili della tua applicazione possono arrivare al file di scambio ed essere estratti da lì in seguito. Pertanto, è necessario abilitare il file di scambio di azzeramento all'arresto.

In secondo luogo, chi sta attaccando la tua domanda. Sono abbastanza sicuro che quando l'applicazione ring3 alloca la memoria è già azzerata. Tuttavia, se l'attaccante ha accesso come amministratore, può:

  • applica una patch al file binario dell'applicazione in modo che esegua il dump della password / dei dati segreti sul file
  • applica una patch all'applicazione caricata in memoria, quindi vedi sopra
  • controlla continuamente la memoria della tua applicazione fino a quando non espone i dati sensibili non crittografati
  • accedi direttamente alla memoria fisica e cerca i dati sensibili

Notare che alcuni di questi scenari non richiedono privilegi amministrativi: l'esecuzione con lo stesso utente dell'applicazione sarà sufficiente!

    
risposta data 04.05.2015 - 21:07
fonte

Leggi altre domande sui tag