NIST指定具有截断输出的SHA-2散列函数.这些散列使用与SHA-256或SHA-512不同的初始化值。沙224是基于SHA-256。SHA-384、SHA-512/224和SHA-512/256都是基于SHA-512的。
虽然我看到了关于截断的SHA-2函数为什么使用不同的初始值的松散评论,但我没有看到任何强有力的推理。我唯一能正式找到的就是引用RFC 3874:“A 224位单向散列函数: SHA-224”,第1.1节.使用考虑的话:
使用不同的初始值可以确保截断的SHA-256消息摘要值不会被误认为是在同一数据上计算的SHA-224消息摘要值。
但这句话并没有列出任何具体的攻击,也不是SHA-2安全审查的一部分。
有人能解释通过为SHA-2变体选择不同的初始值来防止哪些攻击吗?
我特别寻找的答案表明初始值如何帮助减轻攻击。更重要的是,我正在寻找<#>authoritative答案,即:可以指向安全性评估或有关此主题的SHA-2证明的答案。
发布于 2018-07-20 16:45:16
这个问题的引用很可能是为什么对相同内部块大小的SHA-2变量选择不同的初始起始值的原因。不同的哈希函数产生独立的结果,只知道它们的共同输入,这本身就是一个有效的目标。为了做出保守的选择,没有必要考虑具体的攻击。
否则说明:对于知道某些秘密的SHA-1的攻击者来说,找到该秘密的SHA-256的最佳选择是找到该秘密。如果攻击者知道SHA-224哈希而不是SHA-1哈希,则使用不同的初始值使其保持不变。这可以称为(域)散列函数分离。
在这种预防措施可以节省时间的情况下,构建人工协议是容易的。例如: Alice绘制一个80字节的随机字符串$S$,显示它的SHA-224 (例如,作为承诺或键检查值),然后使用$S$作为HMAC键,SHA-256作为底层散列。HMAC将从使用SHA-256散列$S$开始,然后使用它作为其内部密钥。使用SHA-224和SHA-256中不同的初始化值,Alice是安全的.如果没有,她将走向灾难,因为除了32位的HMAC密钥与泄露的SHA-224相吻合。
https://crypto.stackexchange.com/questions/60966
复制相似问题