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!