gpt4 book ai didi

.net - DPAPI 和 ProtectedData.Protect() 如何处理 .net 4 中的磁盘镜像/克隆?

转载 作者:行者123 更新时间:2023-12-02 03:23:47 25 4
gpt4 key购买 nike

我正在测试使用 .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);

我已经完成了大量测试,以确保在执行此操作时获得预期的行为,并且它似乎工作得很好,因为同一台计算机上的任何用户都可以使用上面列出的方法调用来加密/解密文件。

我的问题是,如果有人制作包含使用此机制加密的文件的系统的磁盘镜像或克隆(使用 Acronis、Ghost 等),然后将该镜像恢复到另一台计算机,会发生什么情况? (一个例子是 IT 部门预加载一个系统,然后该系统成为具有相同硬件配置的一组机器的基础镜像)。不同硬件上恢复的操作系统是否能够解密在“原始”系统上加密的文件?我的希望是,由于硬件不同,解密会失败,但如果进行加密所需的所有信息都存在于注册表或文件系统中,解密就会起作用,这可能是有意义的。

显然,我可以自己测试一下,但我现在确实没有资源这样做,并且一直在无休止地搜索,看看其他人是否已经知道答案。非常感谢任何建议!

最佳答案

我的答案仅适用于DataProtectionScope.LocalMachine,因为显然DataProtectionScope.CurrentUser使用存储在Active Directory或其他一些漫游源中的 key ,并且是明确设计的,而不是绑定(bind)到单个物理 key 。

LocalMachine 而言,计算机的克隆将能够打开相同的文件,因为计算 secret 钥存储在计算机的 HDD 上,并且是使用“sysprep”阶段生成的安装 Windows(这就是为什么企业 Windows 部署可以使用相同的系统镜像,但只要运行 sysprep,每个系统就会有自己的 key )。

计算机可以重新创建其机器 key (并且还可以保留旧 key ,以便旧数据仍然可以解密)。但是,我不知道如何让它重新创建 key ,然后删除旧的 key 。

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

关于.net - DPAPI 和 ProtectedData.Protect() 如何处理 .net 4 中的磁盘镜像/克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com