我正在测试使用.net v4的System.Security.Cryptography.ProtectedData()和UnprotectData()方法与DataProtectionScope.LocalMachine范围的想法,以确保只能在一台机器上加密/解密文件.以下是我正在做的事情的一般概念......
//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);
Run Code Online (Sandbox Code Playgroud)
我已经完成了大量的测试,以确保我在执行此操作时获得预期的行为,并且它似乎完美地工作,因为同一台计算机上的任何用户都可以使用上面列出的方法调用来加密/解密文件.
我的问题是,如果有人制作磁盘映像或克隆(使用Acronis,Ghost等等)包含使用此机制加密的文件的系统,然后将该映像还原到其他计算机,会发生什么?(一个例子是IT部门预先加载单个系统,然后成为具有相同硬件配置的大量机器的基本映像).在不同的硬件上恢复的操作系统是否能够解密在"原始"系统上加密的文件?我的希望是,由于硬件不同,解密将失败,但如果在注册表或文件系统中存在加密所需的所有必要信息,则可能会有效.
显然,我可以为自己测试一下,但我现在并没有真正有资源这么做,并且一直在不停地搜索,看看那里的其他人是否已经知道答案.任何建议都非常感谢!