我有一个.NET Windows服务,需要在机器上存储一个秘密,并保护本地系统pipe理员的秘密。 如果域pipe理员有权访问,那也行。
这个秘密不是用户input的。 它在安装时生成,安装可以自动化。
我的第一个想法是使用EFS。 如果我将Windows服务作为域帐户运行,并将密钥存储在EFSencryption文件中,则即使本地系统pipe理员也不能访问该文件,除非他们也是域pipe理员并使用了EFS恢复证书。
有更好的select吗? 有没有办法做到这一点,而不需要Windows服务作为域帐户运行?
我认为使用公钥密码学将是一个很好的select。
生成密钥,然后用公钥对其进行encryption。 保存在本地。 分享给所有人关心的地方。 如果您的初始encryption足够好,本地pipe理员就可以访问encryption的密码。
这当然假设你不与你的本地pipe理员共享encryption的私钥:)
registry是为此而构build的。 您可以在关键级别指定权限。