3

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

我一直在阅读,主要是在 SO 中,但其中大多数都超过 2 年,我们都知道安全世界正在快速变化。

根据我的阅读,我得出的结论是,大多数人建议使用 SHA-XXX 对密码进行哈希处理和/或建议使用jasypt来加密和解密密码

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

4

1 回答 1

9

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

由于您的应用程序需要能够解密密码才能使用它,因此获得配置文件访问权限的攻击者将能够以与您的应用程序相同的方式解密密码。不管你做什么,你只能让获取密码变得更烦人(即通过模糊来混淆/安全)。

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

  • 以某种专有方式对其进行加密。它不需要是安全的,因为无论你做什么,它都不会如果有人想知道你是怎么做到的,他们可以编写一个工具来显示密码。你对此无能为力。您只是在防止随意阅读,即使是简单的 XOR 也足够了。(米兰达
  • 使用静态密钥(任何获得密钥的人都可以解密它)使用适当的加密(再次,不要太担心,您只是使用它,因为它比自己做更容易)对其进行加密.
  • 使用适当的加密和随机密钥对其进行加密,并将密钥存储在密码旁边。(火狐
  • 使用从跨系统更改的某些数据(例如 Windows 上的用户或系统 SID)派生的密钥,使用某种适当的加密对其进行加密。这样做的好处是,如果有人窃取了配置(仅此而已)然后试图解密它,他就不能。这样做的缺点是将配置文件复制到另一个安装会破坏密码,因此您需要处理这种情况。
  • 不要对其进行加密以避免提供虚假的安全性。(洋泾浜
  • 将密码存储在某种操作系统提供的钱包/凭证管理器(Windows 凭证管理器、Gnome 密钥环、KDE ​​钱包)中
于 2013-09-28T04:12:42.557 回答