我可以通过攻击场景为您激发差异。
在第一次原像攻击中,我们要求仅给定的对手找到m或某个m ',使得H (m ') = H (m )。假设某个网站存储了{ u s e r n a m e ,H (p a s s w o r d )r n a m e ,p aH(m)mm′H(m′)H(m)在其数据库中,而不是 { ü 小号Ë{username,H(password)}。该网站仍然可以通过接受用户的密码并比较 H (i n p u t )= ?来验证用户的真实性。ħ (p 一个小号小号瓦特ø - [R d ) (具有概率 1 / 2 Ñ对于一些大型 Ñ为假阳性)。现在,假设此数据库已泄漏或受到破坏。一种{username,password}H(input)=?H(password)1/2nn第一个原像攻击是指攻击者只能访问消息摘要并试图生成散列为该值的消息的情况。
在第二次原像攻击中,我们允许敌方提供更多信息。具体来说,我们不仅给他而且给他m。考虑哈希函数H (m )= m dH(m)m其中 p和 q是大质数,而 d是公共常数。显然,对于第一个原像攻击,这将成为RSA问题,并且被认为很难。然而,在第二次原像攻击中,发现碰撞变得容易。如果一组 m ' = m p q + m,则 H (m p q + m )= (m p q + m )dH(m)=mdmodpqpqdm′=mpq+m。因此,对手发现冲突很少,甚至没有计算。H(mpq+m)=(mpq+m)dmodpq=mdmodpq
我们想一个单向散列函数是对耐第二原像攻击,因为数字签名方案的,在这种情况下被认为是公共信息,并沿着传递(通过一个间接层)与文件的每个副本。这里,攻击者同时访问d ö Ç ù 中号Ë Ñ 吨和ħ (d ö ç Ù 米ë Ñ 吨)H(document)documentH(document)。如果攻击者可以对原始文档(或全新的邮件),以使H (d ')= H (d o c u m e nd′他可以公布他的文件,仿佛他是原始签名者。H(d′)=H(document)
一个碰撞攻击让对手甚至更多的机会。在此方案中,我们要求对手(我可以称他为Bob吗?)找到任意两个消息和m 2,使得H (m 1)= H (m 2)。由于信鸽原理和生日悖论,即使是“完美”哈希函数在碰撞攻击方面也比原像攻击要弱一些。换句话说,给定一个不可预知的和不可逆的消息摘要函数˚F ({ 0 ,1 } *)= { 0m1m2H(m1)=H(m2)f({0,1}∗)={0,1}n花费了时间用于蛮力,总是可以在预期时间O (s q r t (2 n))= O (2 n / 2)中发现碰撞。O(2n)O(sqrt(2n))=O(2n/2)
鲍勃可以通过多种方式利用碰撞攻击来发挥自己的优势。这是最简单的方法之一:Bob发现两个二进制文件和b '(H (b )= H (b '))之间发生冲突,因此b是有效的Microsoft Windows安全补丁,而b '是恶意软件。(鲍勃适用于Windows)。鲍勃将他的安全补丁发送到命令链中,在金库后面,他们在代码上签名并将二进制文件运送给世界各地的Windows用户以修复漏洞。Bob现在可以使用b '和Microsoft为b计算的签名来接触并感染世界各地的所有Windows计算机。bb′H(b)=H(b′)b′b′b。除了这些类型的攻击方案之外,如果哈希函数被认为具有抗冲突性,那么该哈希函数也更有可能具有抗原像的能力。