zoukankan      html  css  js  c++  java
  • 哈希函数与生日攻击

    (1.) 哈希函数概念

    哈希函数 (H) 公开,将任意长度消息 (M) 映射成固定长度的值 (H(M)),这说明的是哈希函数的压缩性

    除此之外,哈希函数还需要满足安全性

    • 单向性 给定 (H(M)),计算 (M) 计算不可行
    • 抗弱碰撞 给定 (M),找到 (M') 使得 (H(M') = H(M)) 计算不可行
    • 抗强碰撞 找到两个消息 (M, M') 满足 (H(M) = H(M')) 计算不可行

    (2.) 哈希函数的应用

    (2.1) 数字签名

    哈希函数用于压缩消息得到摘要 ((digest))

    发送方用自己的私钥加密消息和摘要,一同发给接收方

    接收方拿到消息后,用发送方的公钥解密消息和摘要,并用相同的 (hash) 函数(例如 (MD5))对消息进行压缩,检查两个摘要是否一致,如果一致,证明未被篡改过

    (2.2) 口令认证

    数据库存储的是用户密码被散列后的值,用户登录时输入密码,数据库检查输入密码的散列值存储的散列值是否一致

    (3.) 攻击哈希函数——生日攻击

    考虑一个哈希函数 (f: D ightarrow left{0, 1 ight}^{n}),哈希空间为 (2^n),只需要 (O(2^{frac{n}{2}})) 级别的哈希值便能构成碰撞

    (3.1) 问题背景

    给定 (n) 个人,一年有 (m) 天,为了使得至少有两人生日相同的概率大于等于 (epsilon),计算 (n) 的大小

    (3.2) 推导

    (P(n, m)) 表示至少两个人生日相同的概率,则

    [egin{aligned} P(n, m) & = 1 - frac{A_{n}^{m}}{m^n}\ & = 1 - frac{1cdot 2cdots (m - n + 1)}{m^n}\ & = 1 - (1 - frac{1}{m})(1 - frac{2}{m})cdots (1 - frac{n - 1}{m}) end{aligned} ]

    [1 - P(n, m) = (1 - frac{1}{m})(1 - frac{2}{m})cdots (1 - frac{n - 1}{m}) ]

    根据 (1 + xleq e^x),有 (1 - frac{i}{m}leq e^{-frac{i}{m}}),所以

    [1 - P(n, m)leq prod_{i = 1}^{n - 1}e^{-frac{i}{m}} = e^{-frac{n(n - 1)}{2m}} ]

    [1 - e^{-frac{n(n - 1)}{2m}}leq P(n, m) ]

    若要使 (P(n, m)geq epsilon),只需要

    [1 - e^{-frac{n(n - 1)}{2m}}geq epsilon ]

    对上式变换,取对数得到

    [ln(1 - epsilon)geq -frac{ncdot (n - 1)}{2m} ]

    [n^2 - n + 2mcdot ln(1 - epsilon)geq 0 ]

    由于 (0 < epsilon < 1),所以一元二次不等式的判别式 (Delta = 1 - 8mcdot ln(1 - epsilon) > 0),所以方程组有解,具体为

    [ngeq frac{1 + sqrt{1 - 8mcdot ln(1 - epsilon)}}{2}approx sqrt{2mcdot lnfrac{1}{1 - epsilon}} ]

    具体的,若考虑 (epsilon = 50\%, m = 365),那么只需要 (ngeq 1.177sqrt{365}approx 23),便可以以 (0.5) 概率构成生日碰撞

  • 相关阅读:
    工具函数(代码块的大小,代码块起始地址,提升进程权限)
    在共享DLL中使用MFC 和在静态库中使用MFC的区别
    虚拟机检测绕过总结--不定时更新
    OSGI原形(.NET)
    iOS开发技术分享(1)— iOS本地数据存储
    将JSON映射为实体对象(iOS篇)
    灵活的路由(上)
    github开源项目
    EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
    实体能否处于非法状态
  • 原文地址:https://www.cnblogs.com/ChenyangXu/p/14169170.html
Copyright © 2011-2022 走看看