存储敏感信息

时间:2016-03-07 20:39:51

标签: java security java-ee encryption

我的一个java类将连接到另一个服务器并使用rest服务执行一些操作。 Java类需要 - 用户名和密码才能连接到远程服务器。在其他机器上,我们使用oracle cwallet.sso存储凭证,但这不是当前机器的选项。我想将加密的密码存储在添加一些盐的属性文件中。我还需要将密钥和盐串存储到某个安全的地方。我们在RHEL中有任何替代方法可以进行密码管理,例如cwallet或任何建议应该是实现这一目标的最佳方法吗?

请注意,我将使用shell脚本调用此类。

谢谢

1 个答案:

答案 0 :(得分:2)

这很棘手,因为如果有人访问您的服务器已经游戏结束了。所以解决方案不仅仅是加密数据,因为它不会做太多,但你需要深入的安全性。

要将其置于上下文中,您可以将密码加密,加密等等......当攻击者访问服务器时,他无法读取任何这些文件(即使加密密码也是如此) )除非他能够成为运行应用程序的用户。如果他设法做到这一点,他只需要进行内存转储然后捕获密码(这并不难)。

现实世界的解决方案是:

  • 仅允许有限数量的人登录服务器。
  • 只允许更小的数字成为运行应用程序服务器的用户。
    • 这群人是可以阅读/更新属性文件的人
  • 禁用包含机密文件的任何类型的备份。

同样,加密文件上的密码可能会让您感觉安全,但是,如果您按照上述步骤操作,任何能够读取该文件的人也将能够读取该应用程序的内存内容。即使有人做了正确的事情并将密码存储在一些offheap内存中,一些linux工具也可以读取进程的整个内存映射,所以再次游戏结束。

在这种情况下使用加密只会增加隐蔽性并且没有真正的保护。