生日悖论与密码学威胁
生日悖论不是趣味谜题,它把哈希函数的抗碰撞能力从 n 位压缩到 n/2 位,成为密码学中必须正视的现实威胁。
A complete interactive classroom, not just a preview.
Start when you are ready to enter this Stage's 10 scenes and explore, respond, and learn as you go.
一个 23 人的房间里,至少有两个人生日相同的概率超过 50%——这怎么可能?
- birthday-paradox
- 在 N 个等概率类别中,样本数 k 约达到 √N 时,出现重复样本的概率就接近 50%。
- hash-function
- 将任意长度输入映射为固定长度输出的函数,密码学中需要抗碰撞等性质。
- collision-resistance
- 寻找两个不同输入产生同一哈希输出在计算上不可行。
- birthday-attack
- 利用生日悖论,通过约 2^(n/2) 次随机查询寻找哈希碰撞,使 n 位输出只提供约 n/2 位抗碰撞强度。
- cryptographic-threat
- 生日攻击在真实系统中可利用碰撞伪造签名、证书或内容一致性,威胁安全协议。
只有当样本量接近所有生日(365 人)时,碰撞概率才会超过 50%。
用生日悖论模拟和公式展示 23 人时碰撞概率已超 50%,样本规模只需约 √N。
n 位哈希函数的抗碰撞安全级别就是 n 位。
利用生日攻击,找到碰撞只需约 2^(n/2) 次,因此安全级别约为 n/2 位。
哈希碰撞只是理论问题,实际攻击者不可能利用。
以 MD5、SHA-1 真实碰撞为例,说明攻击者已能利用碰撞伪造签名和证书。
- 基础概率知识(补事件、独立事件)
- 简单指数与对数运算
- 哈希函数基本概念(摘要、固定长度输出)
- 密码学证明的形式化细节
- 特定算法实现代码
- 量子计算下的生日攻击
- 生日攻击自动化工具实操
- 能解释为什么 23 人时生日碰撞概率已超过 50%,并说出 √N 量级。
- 能说明生日攻击如何把 n 位哈希的抗碰撞强度降到约 n/2 位。
- 能列举一个真实碰撞攻击案例及其对密码系统的威胁。
- 能为给定场景选择足够长的安全哈希输出(如 SHA-256)。
- 在评估或设计包含哈希的系统时,能先用 n/2 位估算碰撞攻击成本,再决定是否使用更长的输出或额外防护。
具备基础概率和简单指数运算、了解哈希函数基本概念的计算机或信息安全学习者。
- 01生日悖论:开场问题slideOrientationObserve
用一个反直觉的概率问题引入课程:23 人房间中至少两人生日相同概率超过 50%。
- 问题:一个房间至少有多少人,两人生日相同的概率超过 50%?
- 答案是 23 人,远小于 365
- 直觉与数学的冲突:这不是魔术,而是概率
- 本课将看到它如何威胁密码学
- 02你的直觉有多准?quizPredictionPredict
让学习者在看到答案前先选择一个自己认为正确的概率,激活直觉。
- 单选题:23 人中至少两人生日相同概率约为?
- 选项:5% / 25% / 50% / 99%
- 先凭直觉作答,后面揭晓
- 03互动模拟:碰撞概率可视化interactiveModel buildingObserve
通过改变房间人数,实时观察至少两人生日相同的概率如何增长,建立直觉。
- [Chart] 概率曲线:横轴人数(1-80),纵轴碰撞概率
- 操作人数滑块,观察 50% 对应的临界点
- 验证 23 人时概率超过 50%,50 人时约 97%
- 04数学推导:为什么是 23 人?slideModel buildingObserve
从补事件出发推导碰撞概率公式,并用近似式说明碰撞规模与样本空间的关系。
- 无碰撞概率:(365/365)×(364/365)×…×((365-k+1)/365)
- 碰撞概率 P ≈ 1 - e^{-k(k-1)/(2N)}
- P=0.5 时 k≈1.177√N,生日问题中 N=365 → k≈23
- [Chart] 概率曲线:横轴人数 k,纵轴 P(k)
- 05从生日到哈希函数slideModel buildingObserve
把生日问题映射到哈希碰撞:哈希输出空间等价于“生日”,寻找两个输入等价于随机抽取样本。
- 哈希函数将任意输入映射为固定长度输出(如 256 位)
- 两个不同输入产生相同输出称为碰撞
- 找碰撞就像在 N 个“生日”中找重复,N = 2^n
- 生日悖论告诉我们:大约测试 √N = 2^(n/2) 次就会出现碰撞
- 06生日攻击:安全强度为何减半slideMisconception repairExplain
解释生日攻击的核心思想:攻击者只需约 2^(n/2) 次哈希运算就能找到碰撞,因此 n 位哈希只提供 n/2 位抗碰撞安全级别。
- 目标:找一对输入 (x, y) 使 H(x)=H(y)
- 随机查询 q 次后碰撞概率 ≈ q^2/(2N),N=2^n
- q ≈ √N = 2^(n/2) 时已有不可忽略的碰撞概率
- 结论:n 位哈希的抗碰撞强度不是 n 位,而是约 n/2 位
- [Table] 输出长度 vs 实际碰撞工作量:128→约2^64,256→约2^128
- 07现实威胁:从 MD5 到 SHA-1slideApplicationApply
举例说明生日攻击在真实世界已造成安全事件:MD5 与 SHA-1 的碰撞被实际利用,威胁数字签名与证书体系。
- MD5 输出 128 位,生日攻击只需约 2^64 次;MD5 已被实际碰撞
- SHA-1 输出 160 位,2017 年公开碰撞演示(SHAttered)
- 攻击者可用碰撞构造两份不同内容的相同签名:恶意 PDF 与良性 PDF 共享同一哈希
- 恶意证书与受信任证书共享同一哈希时,可影响 TLS 信任链
- [Table] 算法 / 输出 / 理论碰撞成本 / 状态
- 08防御思路:如何应对生日威胁slideApplicationApply
说明密码系统如何通过更大的输出长度、抗碰撞设计和安全协议来抵御生日攻击。
- 使用足够长的哈希输出:SHA-256(256 位)将碰撞成本提高到约 2^128 次
- 优先选择 SHA-2 / SHA-3 等经受检验的哈希函数
- 在签名方案中采用更保守的安全参数,避免 128 位以下输出
- 涉及用户生成内容时,用随机化哈希或域分隔降低利用碰撞的风险
- 安全评估:不要把 n 位输出当作 n 位抗碰撞强度
- 09关键概念检查quizAssessmentChoose
通过两道题检验学习者是否掌握生日攻击的安全强度影响与防御选择。
- 第 1 题:SHA-256(256 位)的抗碰撞安全强度约为多少?
- 第 2 题:下列哪些措施能缓解生日攻击威胁?
- 完成作答后进入总结
- 10总结与安全启示slideSynthesisExplain
串联本课核心:生日悖论如何把抽象概率变成密码学现实威胁,并给出可迁移的判断方法。
- 生日悖论:碰撞概率比直觉快得多,规模约 √N
- 在密码学中:n 位哈希的抗碰撞强度约为 n/2 位
- 真实攻击已利用 MD5 / SHA-1 的碰撞影响签名与证书
- 设计新系统时,先按 n/2 估算碰撞工作量,再选择足够大的哈希输出
Discussion threads for a Stage aren't available yet.
This path ends here.