【发布时间】:2011-01-18 20:58:20
【问题描述】:
我们希望在我们的数据库中以加密方式 (SHA-256) 散列一个秘密值。由于我们想用它作为在我们的数据库中查找单个记录的一种方式,我们不能为每个加密值使用不同的随机盐。
我的问题是:如果可以无限制地访问我们的数据库,并且攻击者至少知道一个秘密值和散列值对,那么攻击者是否有可能对加密密钥进行逆向工程? IE,那么攻击者是否能够反转所有哈希值并确定所有秘密值?
如果是这样的话,这似乎违背了加密哈希的全部目的,所以也许我遗漏了一些东西。
【问题讨论】:
-
SHA-256 不是键控散列。 SHA256 HMAC 是。
-
是的,这是我遗漏的要点之一——散列函数和 HMAC 之间的区别。只要我们使用 HMAC,攻击者就不可能确定其他秘密值,即使他们知道给定的秘密值及其对应的 HMAC。对吗?
-
嗯,这与使用 HMAC 无关——一个普通的散列就足以防止确定其他散列值。 HMAC 添加了盐(但在计算过程中,这比将其添加到您的秘密中更好) - 这可以防止预先计算的彩虹表。看看这里chargen.matasano.com/chargen/2007/9/7/…,也许谷歌彩虹表,你会发现很多信息
-
哦,顺便说一句 - 当您评论自己的问题时,除非您写 @recursive 或 @tanascius ,否则没有人会收到通知 :) 请参见此处:blog.stackoverflow.com/2010/01/new-improved-comments-with-reply
标签: security encryption