使用秘密值的SHA哈希作为外部ID是否安全?

问题描述 投票:1回答:1

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

encryption cryptography sha secret-key hashicorp-vault
1个回答
4
投票

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

我认为当没有其他唯一标识符时,加密哈希是最佳选择

(因为哈希意味着数据条目的唯一性)

这是错误的假设。无论加密哈希设计具有可忽略的冲突概率(两个输入具有相同哈希值的概率),主要仍然存在一些(非常小的)概率。

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

从秘密数据计算SHA哈希

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

注意空间大小 - 如果你说1000个已知值,那么检查哪个秘密值具有特定散列是微不足道的。假设您存储密钥对,它应该没问题

© www.soinside.com 2019 - 2024. All rights reserved.