【发布时间】:2011-12-31 17:27:56
【问题描述】:
我已经阅读了这两个主题,但我似乎无法完全理解加盐和随机散列之间的区别。
【问题讨论】:
-
对于在登录认证过程中使用 salt+nonce,请参阅此答案:stackoverflow.com/a/24978909/43615
标签: security hash cryptography
我已经阅读了这两个主题,但我似乎无法完全理解加盐和随机散列之间的区别。
【问题讨论】:
标签: security hash cryptography
nonce = 使用一次的数字。如果您为要散列的每一位数据生成一个唯一的盐,那么它本质上也是一个随机数。
【讨论】:
盐是一个非秘密的随机值,用于确保相同的明文不会始终如一地散列到相同的输出值;用于防止Rainbow Tables等预计算攻击。
nonce(“使用一次的数字”)是一个 - 通常是随机生成的 - 与加密方案中的消息相关联的值,并且在某个指定范围内(例如给定的时间间隔或会话)必须是唯一的.它通常用于防止replay attacks。
Nonce 和 salt 是相似的并且服务于相关的目的,但并不相同。两者通常是随机生成的,不是秘密的,用于防止可能针对系统的攻击。它们的不同之处主要在于使用它们的上下文以及重复的后果 - 重复的盐并不重要,但重复的随机数可能会产生可怕的后果。
【讨论】:
散列是一种不同于加密的方式(使用我们可以解密的密钥)。固定大小和数据的轻微变化会产生全新的哈希值。这就像指纹。示例:MD5,MD6,SHA-1,SHA-2 等等..
Rainbow 表、字典攻击和蛮力(GPU 每秒可以计算数十亿个哈希值)以哈希格式将密码存储在数据库中也不安全。为了避免这些问题,我们需要使用 Salt。
使用 Salt(随机数),因此相同的密码不会总是生成相同的密钥。即简单地添加盐以使通用密码不常见。
Salt 是我们添加到哈希中以防止使用彩虹表进行彩虹攻击的东西,彩虹表基本上只是将哈希转换为密码的巨大查找表,如下所示:
dffsa32fddf23safd -> passwordscrete
f32ksd4343fdsafsj -> stackoverflow
所以黑客可以找到这个彩虹表,为了避免这个问题,我们必须用密码和盐的组合来存储哈希。
hash= hashFunction(passowrd+salt)
Nonce(N编号仅使用一次)不需要是秘密或随机的,但它不能与同一把钥匙。这用于防止重放攻击(也称为重放攻击)。
【讨论】: