Testuję pomysł wykorzystania metod System.Security.Cryptography.ProtectedData() i. UnprotectData() z zakresu DataProtectionScope.LocalMachine, aby zapewnić, że plik może być zaszyfrowany/odszyfrowany tylko na jednym komputerze. Oto ogólny pomysł co robię ...W jaki sposób DPAPI i ProtectedData.Protect() obsługują obrazy dysków/klony w .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);
Zrobiłem mnóstwo badań, aby uzyskać oczekiwane zachowanie, gdy robi to i wydaje się doskonale pracować, że każdy użytkownik na tym samym maszyna może szyfrować/odszyfrowywać plik, korzystając z połączeń metod wymienionych powyżej.
Moje pytanie brzmi, co się stanie, jeśli ktoś zrobi obraz dysku lub sklonuje (używając Acronis, Ghost, itp.) System, który zawiera plik zaszyfrowany za pomocą tego mechanizmu, a następnie przywróci ten obraz do innego komputera? (Jeden przykład to istota i dział IT wstępne ładowanie pojedynczego systemu, który staje się podstawowym obrazem dla armii maszyn z identycznymi konfiguracjami sprzętowymi). Czy przywrócony system operacyjny na innym urządzeniu może odszyfrować plik zaszyfrowany w "oryginalnym" systemie? Mam nadzieję, że ze względu na inny sprzęt odszyfrowywanie się nie powiedzie, ale może mieć sens, jeśli wszystkie niezbędne informacje do wykonania kryptografii w rejestrze lub w systemie plików zadziałają.
Oczywiście, mógłbym przetestować to dla siebie, ale tak naprawdę nie mam środków, aby to zrobić w tej chwili i nieustannie szukam, czy ktoś inny na zewnątrz może już znać odpowiedź. Wszelkie porady są mile widziane!