免责声明:我知道这个问题可能有点业余,因为我对密码学的知识有限,但请你容忍我一分钟。
问题:假设用户Alice生成一个密码短语"hello",而用户Bob生成另一个密码短语"world“。
我需要创建一个加密/散列管道,将Alice的pass短语映射到Bob的pass短语。我将说明我正在努力实现的目标的基本思想:
"hello" --> [encryption pipeline] -> "world"如图所示,管道是单向的。托管管道的服务器的数据库不能存储纯文本传递短语。它可以存储密码短语的散列或加密修改,基本目标是在不知道原始输入是"hello“的情况下,使导出"world”变得不可能/非常困难(例如,在数据库被破坏的情况下)。
一个人如何能够安全地执行这样的管道,并遵守共同的安全原则?我刚刚开始深入研究哈希/加密算法、Levenshtein距离等等,但我真的很想从一个比我更了解这个领域的人那里获得一个洞察力。
发布于 2019-10-04 10:29:05
对此,最简单的解决方案是在Alice的pass短语下加密Bob的密码短语。
为此,将特别采取以下步骤:
SKSK对称加密鲍勃的密码短语,例如使用AES-GCM如果您想要花哨并允许Bob更新他的密码短语,您还可以在步骤2中对称加密私有非对称密钥,并在Bob更新时使用相应的公钥对新的密码短语进行加密。
通过使用SHA256的快速散列作为存储的数据库哈希值,这也可以集成到标准的基于密码的身份验证流中。
https://crypto.stackexchange.com/questions/74818
复制相似问题