生日攻击
目的:构造出报文m和报文m2,使得
H(m)=H(m2)
第I类生日攻击
给定一个散列函数H,有n个可能的输出。若固
定一个输出值为H(x),随机选取H的k个输入,k必须
为多大才能使至少存在-一个输入y,使H(y)=H(x)的概
率大于0.5?
对于长度为mbit的散列码,共有2^m个可能输出,
要使p(n,k)>0.5, 只须取k =2^m-1
生日悖论
■
问题:在k个人中,要至少有两个人生日相同的
概率大于0.5,k的最小值为多少
k=23
结论:对于杂凑值为mbit的散列函数来说,所有可能的输出为2m个,
要以超过1/2的概率找到一一个碰撞,所需的随机输入的个数至少为
k=2^(m/2)
印证了,随机找到一个结果H(x)的x难度,比较
找到固定一个结果H(x)的x难度要小很多。
对杂凑函数的自由起始碰撞攻击算法
Step1:随机选取N个报文m,m my;
Step2:以这N个报文作为杂凑函数的输入,计算出相应
的杂凑值,得到集合S={(mk,Hk(m));k= =1,2,, N};
Step3:根据H(mk)的大小对集合S进行排序,并利用该
算法,寻找使H(m1)=H(m2)成立的不同元m1和m2;
如果找到,就将(m1,m2)作为结果输出,算法终止;