【问题标题】:Is it secure to use SHA hash of the secret value as its external ID?使用秘密值的 SHA 哈希作为其外部 ID 是否安全?
【发布时间】:2019-03-28 17:19:11
【问题描述】:

我正在尝试设计需要将用户的秘密值存储在数据库中的系统(私钥和公钥字符串)。机密本身的存储将在 HashiCorp Vault 的帮助下完成。但是我还有一个要求不允许存储两个相等的对(私钥+公钥)。 就我无法在存储之前检查密钥的唯一性而言,我必须存储原始秘密的哈希值。我的想法是从秘密数据中计算 SHA 哈希并将其与已保存的哈希进行比较。所以,我想知道它是否可行,我是否可以将此摘要用作访问数据的外部 ID(因为哈希意味着数据条目的唯一性)。希望得到您的帮助。

【问题讨论】:

    标签: encryption cryptography sha secret-key hashicorp-vault


    【解决方案1】:

    我的想法是根据秘密数据计算 SHA 哈希并将其与已保存的哈希进行比较

    我认为加密散列是没有其他唯一标识符时的最佳选择

    (因为哈希暗示了数据条目的唯一性)

    这是错误的假设。不管密码散列被设计成具有可忽略的冲突概率(两个输入具有相同散列值的概率),原则上仍然存在一些(非常小的)概率。

    对于受控(格式化)输入,我会说碰撞概率非常小,您可以大胆地使用散列作为唯一标识符,但准备处理发生碰撞的极少数情况(可能您可以发布它并成名)

    根据秘密数据计算 SHA 哈希

    关于安全性 - 根据其哈希计算输入值非常困难(=不可能)(假设加密哈希当前被认为是安全的)

    注意空间大小 - 如果您有 1000 个已知值,则检查哪个秘密值具有一定的哈希值是很简单的。假设您存储密钥对,应该没问题

    【讨论】:

    • 谢谢。我决定使用 Bcrypt 而不是 SHA-256 以获得更好的熵。
    猜你喜欢
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2015-05-11
    相关资源
    最近更新 更多