JDK 8在KeyStore.load中使用SHA哈希算法是否安全?

JDK8 uses the SHA algorithm in its JavaKeyStore class.

From the sources, you see that during engineLoad - if a password is given - it generates a SHA MessageDigest based on the provided password. If I get the code correctly, the entries of the keystore are signed with the password in advance. The SHA-Password-MessageDigest is used to check integrity by comparing the stored hashes with the calculated ones - for each entry.

由于众所周知SHA是不安全的,因此可以通过相应的运行时扫描程序来生成安全性发现。

我问自己这是一个真正的安全问题还是误报? 由于我不是安全专家,所以我想听听他人的评估。

评论
  • Jared
    Jared 回复

    JavaDoc特别指出,这样做的目的是

    防止篡改密钥库

    这一切都取决于您的安全目标是什么。

    由于众所周知SHA是不安全的

    SHA不是“不安全的”。这是一个过于简化的评估。它太快了,无法用于哈希密码。对于许多其他用例来说,它是完全“安全的”。

    显然,密钥库不是密码,因此安全性目标是不同的。密钥库是本地文件。通常,如果恶意用户可以物理访问您的计算机,那么战斗就已经失败了。

    在这种情况下,散列比其他任何东西都更多地用于完整性和真实性。在这种情况下,SHA是一个不错的选择。