Windows 服务注册表项是否安全存储 - 在磁盘上加密,默认情况下受 ACL 或类似保护?
密钥在HKLM\System\CurrentControlSet\Services\{SERVICE_NAME}
或类似。
例如,假设我有一个在 Windows 上作为服务运行的 java 应用程序,它在启动时需要特定于环境的密码/密码,将这些作为服务的启动参数放在注册表中是否安全?
我的猜测是否定的,它们是磁盘深处某个地方的明文,c:\windows
并且 ACL 不适用于正常的注册表项,但我真的无法以一种或另一种方式找到任何信息..
后续问题 - 在服务启动时将秘密传递给服务的好方法是什么?
非管理员无法访问注册表,因此注册表机密对他们来说是安全的。
HKEY_LOCAL_MACHINE\SYSTEM
注册表配置单元物理位于文件中 ,C:\Windows\System32\config\SYSTEM
并且在 Windows 运行时无法访问。用户始终可以启动 Linux 并挂载文件,但具有这种知识水平的人在任何情况下都不会被阻止,如果他可以物理访问计算机。恶意的系统服务可以在计算机上做任何事情,所以对它保密是没有意义的。
唯一可能的保护是加密数据,但这也不能阻止有能力反汇编您的程序并提取算法的人。
没有确定的方法来保护数据。您所能做的就是让没有一定知识水平或不愿意亲自投入所需时间的任何人都很难做到。