加密首选项/属性文件中的密码 - Java

时间:2013-09-27 23:22:29

标签: java security encryption

我不是加密技术,破解密码和安全性方面的专家。 我需要在首选项中存储我将用于将客户端连接到SQL服务器的SQL服务器的密码和用户名。

我一直在读书,大部分时间都在这里,但大多数都超过2年,我们都知道安全世界正在快速变化。

根据我的阅读,我得出结论,大多数人建议使用SHA-XXX散列密码和/或建议使用jasypt来加密和解密密码

所以我的问题是保护首选项文件中密码的最安全方法是什么? 我可以只使用带盐的SHA-512并将盐保存在首选项文件中吗?这样安全吗?

1 个答案:

答案 0 :(得分:9)

您似乎希望稍后解密并使用该密码对服务器进行身份验证。这意味着您无法对其进行哈希处理 - 如果您希望用户输入密码然后检查密码是否正确,则哈希很好,但您无法解密哈希密码以将其呈现给服务器。

由于您的应用程序需要能够解密密码才能使用它,因此获得访问配置文件的攻击者将能够以与应用程序相同的方式解密密码。无论你做什么,你都只能让密码变得更加烦人(即模糊不清/安全隐蔽)。

您可以采取的步骤(在大括号中采用该方法的程序名称):

  • 以某种专有方式加密。它不需要是安全的,因为无论你做什么,都不会如果有人想知道你是怎么做的,他们可以编写一个显示密码的工具。你无能为力。你只是在防范随意阅读,即便是简单的XOR就足够了。 (Miranda
  • 使用一些正确的加密加密它(再次,不要过于担心它,你只是使用它,因为它比自己更容易)使用静态密钥(任何获得密钥的人都能够解密它)。
  • 使用适当的加密和随机密钥对其进行加密,并将密钥存储在密码旁边。 (Firefox
  • 使用从一些跨系统更改的数据(例如Windows上的用户或系统SID)派生的密钥使用适当的加密对其进行加密。这样做的好处是,如果有人窃取了配置(没有别的),后来又试图解密它,他就不能。这样做的缺点是将配置文件复制到另一个安装会破坏密码,因此您需要处理这种情况。
  • 不加密它以避免给出错误的安全性。 (Pidgin
  • 将密码存储在某种操作系统提供的钱包/凭证管理器中(Windows凭据管理器,Gnome密钥环,KDE钱包)