Disk Security
Puoi lasciare wipe utility fare il lavoro per voi.
Se si esegue ASP.NET su Mono/Linux, è possibile utilizzare il comando wipe
tramite la classe Process
(assicurarsi che il pacchetto di pulizia sia installato).
Se si esegue Windows, l'approccio è lo stesso. Utilizzare un'utilità wipe.exe
che esegue la pulizia completa quando è necessario disporre in modo sicuro del file.
Mi piace il sito Web this che distribuisce un wipe.exe gratuito, che non è incluso nell'installazione standard di Windows (troppo male).
Il secondo modo è implementare lo Guttman algorithm, ma penso che sia più economico utilizzare il codice di qualcun altro.
Ricordare che la pulizia è molto intensa per I/O, non aspettare che si completi o si può rallentare notevolmente l'applicazione. Inoltre, su siti Web con carichi elevati potresti riscontrare un rallentamento significativo.
sicurezza memoria
La classe SecureString
aiuta a non lasciare traccia di una stringa in memoria. Ma quando lavori con i file lavori effettivamente con i flussi. Non sono sicuro di preoccuparmi del contenuto della memoria volatile (anche se gestisci documenti di Wikileaks).
È necessario innanzitutto eseguire un'analisi delle minacce indicando quali sono le principali minacce alla memoria. Ecco alcune domande:
- Qualcuno può accedere al server con un account amministratore/root con la possibilità di eseguire un dump della memoria? (Gli utenti normali non possono leggere la memoria e .NET impedisce il sovraccarico del buffer a causa di puntatori non utilizzati)
- Qualcuno può accedere fisicamente al server? Non ti fidi abbastanza del tuo hosting provider? Esegui invece un server virtuale?
Se la risposta non è sì non si deve preoccupare per la sicurezza memoria
sicurezza Lo spazio di swap
Anche se si esegue su Windows, fammi chiamare "swap" il file di paging, o file di memoria virtuale o altro. Potresti pensare a disabilitarlo (assicurati di disporre di abbondanti quantità di RAM) o, altrimenti, potresti pensare a crittografarlo (ma ottieni una riduzione delle prestazioni).
Tuttavia, per consentire a qualcuno di eseguire la scansione del file di scambio in fase di runtime, deve essere root o avere accesso fisico al server di spegnimento.
Se i dati sono troppo sensibili, vorrei disattivare lo swap.
[Aggiungi] Sono sicuro che si già uso SSL per caricare il file, nel caso in cui si dimentica alcuni principi ...
+1 per una domanda ben definita. risposta djechelon colpire su un aspetto che si dovrebbe dare un'occhiata più da vicino a "fiducia". Devi ricordare che ci sarà sempre una superficie esposta e devi fidarti di qualcuno. Se sei così preoccupato che hai bisogno di un server dedicato fisicamente sicuro e di un kill switch (un modo per distruggere fisicamente i dati), allora non dovrai preoccuparti troppo della meccanica interna. – Robert
Nota: .Net è un runtime gestito e la memorizzazione temporanea dei dati è specifica per l'implementazione e, in quanto tale, qualsiasi tentativo di cancellare dati da un sistema in esecuzione sarà una sfida senza fine, poiché qualsiasi aggiornamento potrebbe modificare l'implementazione effettiva. – Robert