您的位置:首页 > 其它

生日攻击

2020-03-01 01:28 92 查看

生日攻击相关学习

  • 2.生日悖论
  • 3.第二类生日攻击
  • 1.第一类生日攻击

    描述:

    假设一个哈希函数H有n个可能的输出,H(x)是其中一个特定的输出,如果对H随机取k个输入,则至少有一个输入y使得H(y)=H(x)的概率为0.5时,k有多大?

    解析:

    仅知道H是哈希函数,且输出为n个的情况下,试图使用一定数量的输出涵盖特定输出,推算最小数量。

    计算:

    1.首先确定函数存在碰撞,对于输入y,H(y)有可能等于特定H(x),由于H有n个输出,H(x)有n个可能。
    所以H(y)=H(x)的概率为 1n\frac1nn1​,不相等的概率为1−1n1-\frac1n1−n1​
    2.取k个值全都不碰撞,(1−1n)k{(1-\frac1n)}^k(1−n1​)k
    3.至少一个,则减掉全都不碰撞的概率,(1−(1−1n)k 20000 )(1-{(1-\frac1n)}^k)(1−(1−n1​)k)
    4.根据二项式定理:
    (x+y)n=Cn0xny0+Cn1xn−1y1+Cn2xn−2y2+......+Cn0x0yn{(x+y)}^n=C_n^0x^ny^0+C_n^1x^{n-1}y^1+C_n^2x^{n-2}y^2+......+C_n^0x^0y^n(x+y)n=Cn0​xny0+Cn1​xn−1y1+Cn2​xn−2y2+......+Cn0​x0yn
    (1+x)n=Cn0x0+Cn1x1+Cn2x2+......+Cn0xn{(1+x)}^n=C_n^0x^0+C_n^1x^1+C_n^2x^2+......+C_n^0x^n(1+x)n=Cn0​x0+Cn1​x1+Cn2​x2+......+Cn0​xn
    当x的取值远小于1时,可以发现带有x高次项对主体的影响越来越小,因此
    当∣x∣&lt;&lt;1\left|x\right|&lt;&lt;1∣x∣<<1,(1+x)n≈1+nx{(1+x)}^n\approx1+nx(1+x)n≈1+nx
    5.因此(1−(1−1n)k)≈kn(1-{(1-\frac1n)}^k)\approx\frac kn(1−(1−n1​)k)≈nk​,当概率为0.5时,k=n2k=\frac n2k=2n​

    当输入为消息:

    当H的输出为m长,则所有可能的输出为2m2^m2m个,第一类生日攻击的k值为2m−12^{m-1}2m−1

    2.生日悖论

    描述:

    已知在1~n之间均匀分布的整数型随机变量,随机取k个,至少有两个取值相同的概率大于0.5,k至少有多大?

    解析:

    当人数k给定时,人数比想象中要少很多,因此被称为悖论。

    计算:

    1.所有项都不相同的方式为:
    n!(n−1)!...(n−k+1)!=n!(n-1)!...(n-k+1)!=n!(n−1)!...(n−k+1)!=n!(n−k)!\frac{n!}{(n-k)!}(n−k)!n!​
    2.总的取值方式为:
    nkn^knk
    3.因此任意两个都不相同的概率为:
    n!(n−k)!nk\frac{n!}{(n-k)!n^k}(n−k)!nkn!​
    4.至少两个相同的概率为:
    1−n!(n−k)!nk1-\frac{n!}{(n-k)!n^k}1−(n−k)!nkn!​
    5.若P&gt;0.5P&gt;0.5P>0.5,则k≈nk\approx\sqrt{n}k≈n​,生日为例,即n=365,k=23

    3.第二类生日攻击

    描述:

    寻找哈希函数的具有相同输出的两个任意输入的攻击方式为第二类生日攻击,即寻找碰撞

    解析:

    如生日悖论中所描述的,对于哈希函数H,有2m2^m2m个可能的输出,那么至少有两个输入产生相同输出的概率大于0.5,
    则选取的随机输入数量为2m\sqrt{2^m}2m​,即2m−12^{m-1}2m−1

    • 点赞 1
    • 收藏
    • 分享
    • 文章举报
    霍跑跑 发布了1 篇原创文章 · 获赞 1 · 访问量 327 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: