我有一个 .NET Windows 服务,需要在机器上存储机密,并保护该机密不被本地系统管理员获取。如果域管理员有访问权限,那就没问题了。
此密钥不是用户输入的。它是在安装时生成的,并且可以自动安装。
我的第一个想法是使用 EFS。如果我以域帐户身份运行 Windows 服务并将机密存储在 EFS 加密文件中,那么即使是本地系统管理员也无法访问该文件,除非他们也是域管理员并使用 EFS 恢复证书。
有更好的选择吗?有没有办法做到这一点而不需要以域帐户运行 Windows 服务?
答案1
我认为使用公钥加密非常适合这种情况。
生成密钥,然后使用公钥加密。将其保存在本地。将其分享给所有人。只要您的初始加密足够好,本地管理员就可以访问加密的密钥。
这当然假设您不与本地管理员共享加密的私钥:)
答案2
注册表就是为此而构建的。您可以在密钥级别指定权限。