首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"SHA-256“和”任何256位的SHA-512",哪个更安全?

"SHA-256“和”任何256位的SHA-512",哪个更安全?
EN

Cryptography用户
提问于 2012-07-06 05:03:41
回答 1查看 25.7K关注 0票数 60

在安全性方面,使用SHA-256算法与使用SHA-512算法输出的任意256位有什么区别吗?

类似地,使用SHA-224和使用SHA-256输出的任意224位的安全性差别是什么?

EN

回答 1

Cryptography用户

发布于 2020-11-08 16:43:26

其他的答案没有提到长度扩展攻击梅尔克-达格路建筑上。长度扩展给出了一个哈希值h

h = \operatorname{SHA-256}(\text{IV},\text{secret_key}\mathbin\|\text{known_data}\mathbin\|pad1)

攻击者可以生成一个扩展为;

\operatorname{SHA-256}(\text{IV},\text{secret_key}\mathbin\|\text{known_data}\mathbin\| \text{pad1}\mathbin\| \text{appended_data} \mathbin\| \text{pad2})

这可以通过将\operatorname{SHA-256}函数的初始值更改为h和散列扩展来执行。

\operatorname{SHA-256}(h, \text{appended_data} \mathbin\| \text{pad2})

这一攻击首次出现在2009年9月28日的“Flickr签名锻造 over MD5”上。这要归功于\operatorname{MD5}(\text{SECRET}\mathbin\|\text{message})开头的秘密

任何选择的256位的截断版本的\operatorname{SHA-512/256},正如另一个答案所指出的那样,预期与\operatorname{SHA-256}具有相同的预图像、二次预映像和碰撞电阻。但是,\operatorname{SHA-512/256}的截断(任何选择的位或作为标准)使其能够抵抗长度扩展攻击,因为攻击者必须预测截断的256位才能扩展哈希。由于\operatorname{SHA-512/256}是为64位CPU设计的,所以如所指应该使用\operatorname{SHA-512/256}而不是\operatorname{SHA-256}

总之,如果我们考虑长度扩展攻击,\operatorname{SHA-512/256}是一个更好的选择。

注意:长度扩展攻击不需要执行secret_key。没有它它就能工作。与H(key\mathbin\|\text{message})签名不同,我们更喜欢没有长度扩展攻击且有安全证明和KMAC的HMAC。在这种情况下,基于SHA3的KMAC在设计上是安全的,可以抵抗长扩展攻击,并且它的构造和证明要比HMAC容易得多。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/3153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档