SHA256安全问题

4

假设某个字符串STR的结果为:

SHA256(STR)=3f7c54571faee024e3fd68603c5c95f6a4c8ef73a398840b974f3f57737a116f 

是否可以得到 SHA256(myOwnString+STR) 的结果?('+' 用作连接符)

这种情况下是否存在已知的攻击方式?


1
安全哈希算法被明确设计为防止攻击,尽管当然有可能找到成功的攻击(成功=比暴力破解快得多)。到目前为止,我们还不知道任何合理的攻击方式, "合理" 的意思是“在我们对物理学的理解范围内可能发生”。 - Damon
从您提出的问题来看不太清楚您的立场。但是,如果您想确保消息的真实性,真正应该使用HMAC(甚至基于公钥的签名)。这样可以防止在SHA-256中发现碰撞攻击的情况。http://en.wikipedia.org/wiki/HMAC - pmdj
2个回答

3

myOwnString+STRSTR完全不同,因此这两个字符串将具有完全不同的哈希值。通过查看这些哈希值,您无法猜测哈希函数应用于STR及基于STR的某些内容所产生的结果。

这正是为什么我们通常建议在哈希密码时使用盐(salt)-- 请参见关于此的Salt (cryptography)


2
您描述的是评估哈希函数的“雪崩效应”;如果您稍微更改一下输入,输出会发生多少变化?任何合适的哈希函数都应该能够完全混淆结果,即使输入只改变了一个比特。这就是为什么像盐和nonce这样的东西很有效,因为将几个字节添加到初始字符串(本身可能弱、短或可预测,如密码)会将哈希的结果更改为与原始结果完全不同且无关的内容。
直接回答您的问题: 2008年的攻击可以在SHA-512的80轮中破解46轮,以及在SHA-256的64轮中破解41轮。对于SHA-256的前24步进行碰撞攻击。
还有两种针对SHA-2的中间人预像攻击,其轮数减少。第一种攻击41轮SHA-256(64轮中)的时间复杂度为2253.5,空间复杂度为216,并攻击46轮SHA-512(80轮中)的时间复杂度为2511.5,空间复杂度为23。第二种攻击42轮SHA-256(64轮中)的时间复杂度为2251.7,空间复杂度为212,并攻击42轮SHA-512(80轮中)的时间复杂度为2502,空间复杂度为222。
所以是的,它已经被削弱了,但它还远没有无用。我没有发现任何特定于处理输入长度扩展的攻击。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接