【问题标题】:Does knowledge about value length compromise hash integrity关于值长度的知识是否会损害哈希完整性
【发布时间】:2013-09-11 02:59:58
【问题描述】:

如果我将散列值存储在数据库中,但被散列的原始值的长度是固定的(例如,始终为 4 个字符),这是否会损害散列函数的单向特性?

更准确地说,我有敏感字符串,然后我将其加密并存储在数据库中。为了搜索这些字符串,我不想解密数据库中的每个条目,所以我还将字符串的前 4 个字符的哈希值存储在另一列中。当我想搜索数据库时,我会生成搜索词前 4 个字符的哈希值,并将其与存储的哈希值进行比较,以查找哪些条目匹配或可以匹配,然后解密这些条目以检查冲突并获取其余部分与该条目相关的数据。

我担心的是,由于攻击者知道被散列的字符串的长度是恒定的(4 个字符),他/她只需要生成一个包含所有可能的 4 个字母字符串及其散列和查找的表存储在我的数据库中的散列值(从而放弃原始敏感字符串的前 4 个字符)。

【问题讨论】:

    标签: database security encryption hash


    【解决方案1】:

    您的结论非常正确。如果攻击者知道您的哈希是 4 个字符的字符串,那么通过蛮力找到纯文本是非常简单的。除了让攻击者了解您的敏感数据的前 4 个字符之外,它还可以让他们了解您用于加密数据的部分密钥(在简单的级别上,加密是密钥 XOR 明文,这意味着明文XOR 加密 = 密钥)。虽然使用这些信息来破解其余的加密是具有挑战性的,但加密攻击已经建立在更少的基础上。

    【讨论】:

      【解决方案2】:

      根据您要执行的搜索类型,您可以使用几个选项来改进您的方案:

      1. 搜索完整字符串:您可以对搜索词进行加密并对其进行查询。或者存储加密字符串的哈希值,如果您的字符串很长,请对其进行查询。

      2. 搜索部分字符串:通过使用键控散列而不是简单散列来更改方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 2021-12-14
        相关资源
        最近更新 更多