在
密码学中,
密码杂凑函数上的原像攻击用于寻找有着特定哈希值的讯息。一个密码杂凑函数应该抵御对其
原像的攻击。
根据定义,使用最快方法计算出原像或次原像破解理想的杂凑函数的方法是使用暴力破解法。对于一个n位哈希,此攻击对于典型输出n= 128位的大小有着过高的
时间复杂度2。若这种复杂度最佳且可被被攻击者达到,这种哈希函数就被认为是抗原像的。然而,
量子计算机可在√2= 2内执行原像攻击,也就意味着可进行次原像攻击即碰撞攻击。
通过
分析特定杂凑函数可找到对此函数更快原像攻击。学者找到了部分重大的原像攻击,但它们并不实际。若找到了实际的原像攻击,它将极大地影响诸多
互联网协议。此例中,“实际”意味着可被攻击者使用可行数量的资源执行。例如,一个花费几万亿与数十年来找出一条哈希值或信息的原像攻击是不实际的;而一个仅花费几千块且只需要几周时间的攻击可能是非常实际的。
所有对
MD5与
SHA-1已知的实际或近乎实际的攻击均为
碰撞攻击。总之,碰撞攻击相比原像攻击更易进行,碰撞攻击不被任何设定的值(任意两个值均可用于碰撞)所限制。相反,碰撞攻击的时间复杂度为2。
为提高对原像攻击的抗性,双重散列是一种抵御某种情况攻击者破解了首个哈希的好策略。
比特币系统使用双重散列
SHA256,一种2000年代减缓哈希破解的常见手段。