2012-11-30 21 views
7

Sto testando l'idea di utilizzare i metodi System.Security.Cryptography.ProtectedData() e UnprotectData() di .net con l'ambito DataProtectionScope.LocalMachine per garantire che un file possa essere crittografato/decodificato su una singola macchina. Ecco l'idea generale di quello che sto facendo ...In che modo DPAPI e ProtectedData.Protect() gestiscono Immagini disco/Cloni in .net 4?

//Encrypt  
byte[] outBytes = ProtectedData.Protect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine); 
File.WriteAllBytes(fileOut, outBytes); 

//Decrypt  
byte[] outBytes = ProtectedData.Unprotect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);    
File.WriteAllBytes(fileOut, outBytes); 

ho fatto un sacco di test per garantire che ottengo il comportamento previsto quando si fa questo e sembra funzionare perfettamente in che ogni utente sullo stesso la macchina può crittografare/decifrare un file usando le chiamate di metodo elencate sopra.

La mia domanda è cosa succederà se qualcuno fa un'immagine disco o clona (usando Acronis, Ghost, ecc.) Di un sistema che contiene un file crittografato usando questo meccanismo, quindi ripristina l'immagine su una macchina diversa? (Un esempio è che il reparto IT precarica un singolo sistema che diventa quindi l'immagine di base per un esercito di macchine con configurazioni hardware identiche). Il sistema operativo ripristinato su un altro componente hardware sarà in grado di decrittografare il file che è stato crittografato sul sistema "originale"? La mia speranza è che a causa dell'hardware diverso, la decifrazione fallirà, ma potrebbe avere senso che se tutte le informazioni necessarie per fare la crittografia esistessero nel registro o nel file system, funzionerebbe.

Ovviamente, potrei testarlo da solo, ma in realtà non ho le risorse per farlo in questo momento e ho cercato all'infinito di vedere se qualcun altro là fuori potrebbe già sapere la risposta. Qualche consiglio è molto apprezzato!

risposta

4

La mia risposta si applica solo a DataProtectionScope.LocalMachine perché ovviamente DataProtectionScope.CurrentUser utilizza le chiavi memorizzate in Active Directory o un'altra sorgente di roaming ed è esplicitamente, in base alla progettazione, non legata a una singola chiave fisica.

Per quanto riguarda lo LocalMachine, un clone di un computer sarà in grado di aprire gli stessi file perché la chiave della macchina è memorizzata nell'HDD della macchina e viene generata utilizzando la fase "sysprep" di installazione di Windows (questo è perché un'implementazione aziendale di Windows può utilizzare la stessa immagine di sistema, ma fintanto che eseguono sysprep ogni sistema avrà la propria chiave).

Un computer può ricreare il proprio codice macchina (e può anche conservare le vecchie chiavi in ​​modo che i dati meno recenti siano ancora decifrabili). Non so come farlo per ricreare la chiave e poi cancellare quelli vecchi, comunque.

Fonte: http://www.windows-server-answers.com/microsoft/Security-Cryptography/30350079/local-machine-masterkey-in-dpapi.aspx

0

Buona domanda - caccia in giro sembra che la chiave master viene rigenerata automaticamente ogni ca. 90 giorni. C'è un ottimo analysis su Passcape.com - il cuore della sicurezza di DPAPI è collegato al SYSKEY del sistema che è memorizzato nel registro sotto l'hive di SISTEMA.

perché si può usare il apparently CryptProtectData() con il flag CRYPT_PROTECT_REGENERATE per aggiornare la chiave master DPAPI su un sistema clonato sembra che il vostro caso d'uso per la protezione DPAPI rappresenta un rischio per la sicurezza.

La mia opinione è che mentre DPAPI è ottimo per la sicurezza su una macchina locale (ma si veda questo post su Epyx Forensics sul ripristino della password), probabilmente sarà necessario implementare ulteriori misure di sicurezza durante la clonazione, soprattutto se si non può controllare come i sistemi saranno clonati.

Questa domanda probabilmente otterrà una risposta migliore su https://security.stackexchange.com/ quindi potresti voler chiedere anche lì.

Problemi correlati