📑 本页目录(点开跳转)
00 · 怎么用这份教程
⏱ 16 分钟
🎯 一句话
这套教程回答一个和本库其他几套完全不同方向的问题: 「怎么在一个有敌人的世界里,保证一件事是真的?」
🧭 它和本库其他教程的关系
其他几套(机器学习 / 推荐 / Kaggle / 大模型 / 智能体):
目标是【让预测更准】
对手是【噪声和过拟合】—— 它们不会针对你
这一套(密码学):
目标是【让保证成立】
对手是【一个聪明的、主动的、会针对你的人】⭐
🔑 这个差别决定了两个领域的思维方式完全不同: 机器学习里,「在测试集上跑得好」就算成功。 密码学里,「我想不出怎么攻破它」什么都不算 —— 必须证明「攻破它 ⟹ 解决某个公认的数学难题」。
所以这套教程不需要任何前置知识,和其他教程零依赖,可以独立读。 但反过来,读完它以后,本库这几处会突然变得好懂:
| 本库的哪一章 | 学完这套之后回去看,会接上什么 |
|---|---|
| 智能体教程 · 沙箱与提示注入 | 全库唯一另一处「假设对手是主动的」——它的威胁建模、分层防御、硬边界,和第 1 章是同一套语言 ⭐ |
| Claude 资料库 · 零信任架构 | 「不靠藏起来获得安全」的现代工程版,就是第 1 章的 Kerckhoffs 原则 |
| Kaggle · 数据泄露与外部数据 | 里面的「对抗验证」是训一个二分类器去区分两个分布——那正是第 4 章、第 8 章里的判别器 D ⭐ |
| 数学原理 · PAC 学习 | 「承认做不到完美,改要求高概率近似」——和第 8 章的 negl 是同一个妥协 |
| 大模型 · 合规与伦理 | 那边给的是要求(PII 脱敏、数据不出内网、保留期限),第 19、22 章给的是兑现这些要求的技术 |
| 模型上线之后 · 合规审计与模型卡 | 那边「审计要能回答的五个问题」全都默认记录本身是可信的;而「记录有没有被事后改过」它没有回答,数据库时间戳也答不了 —— 只有第 17 章的签名 + 哈希链答得了 ⭐ |
📚 你会学到什么(25 篇的全景)
| 阶段 | 内容 | 你会拿到什么 |
|---|---|---|
| 0 · 坐标系 | 到底在保护什么 | 四个安全目标,以及它们为什么必须分开谈 |
| 1 · 从失败里学 | 古典密码 / 一次一密 | 所有古典密码倒掉的同一个原因;唯一数学上完美的方案 |
| 2 · 对称加密 | 伪随机 / 流密码 / 分组密码 / 模式 / 安全定义 | 能看懂 AES-GCM 这行配置里每个词在干嘛 |
| 3 · 完整性 | 哈希 / MAC / 认证加密 / Merkle 树 | 「加密了」≠「安全了」 —— 这一段讲为什么 |
| 4 · 公钥密码 | 数论 / RSA / DH / 椭圆曲线 / 签名 | 那个「不用见面也能共享秘密」的魔术 |
| 5 · 真实系统 | PKI / 密钥管理 / 区块链 | 浏览器那把小锁背后到底发生了什么 |
| 6 · 前沿 | 零知识证明 / 云密码学 / 后量子 | 密码学正在解决的下一批问题 |
| 7 · 动手 | 三个项目 | 亲手打破五个错误实现(nonce 重用 / CBC 填充预言 / 长度扩展 / 教科书 RSA / ECDSA 的 k 重复),再实现一个带 AAD 的加密文件格式,最后写一个密码学代码审计器 |
⚠️ 三条阅读规则
① 数学全部可以跳过
每个公式下面都有 💡人话翻译。只看人话翻译,你能拿到 80% 的价值。
推导放在 <details markdown="1"> 折叠块里,标注 📐 推导(想看再点)——不点开完全不影响读下一章。
② 这套教程的写法:先讲怎么被打破 ⭐
常见的教法:讲一个方案 → 说它很安全 → 下一个
→ 结果:你记住了一堆没来由的规矩
("IV 必须随机"、"nonce 不能重复"、"要用 OAEP 填充")
这套的教法:
① 提出一个看起来合理的方案
② 【把它打破】—— 给出具体攻击
③ 修补,看修补后的样子
→ 结果:那些规矩你根本不用背,因为你知道不遵守会死在哪 ⭐
💡 这也是密码学真实的历史进程。几乎每一个现代设计,都是某次事故的伤疤。
③ 每章都有「真实世界翻车案例」
Nonce 重用打穿了 WEP 和 PlayStation 3、k 值复用泄露了索尼的签名私钥、
长度扩展攻击打穿过一批 API 认证 —— 这些都不是假想,是真的发生过的事故。
🧩 每章的固定结构
🎯 一句话 ← 这章的核心,30 秒读完
正文(先攻击 → 再修补 → 再形式化)
📐 折叠推导 ← 想看再点
💥 真实世界翻车 ← 这个设计是哪次事故的伤疤
⭐ 坑表 / 洞察
🔗 和站内其他章的关系
✅ 检查点 ← 答案折叠着,先自己想
🛑 可以停在这里
⚡ 走神救援 ← 整章的浓缩,回来时先读这个 ⭐
⭐ 「走神救援」是为 ADHD 专门设计的: 中断之后回来,不要从头读 —— 直接读上一章的走神救援,30 秒接回上下文。
🧮 需要的数学(比你以为的少)
✅ 需要:
· 加减乘除、取余数(mod) ← 真的就这些
· 知道什么叫「指数」 2¹⁰ = 1024
· 一点点概率直觉("两个人生日相同的概率")
❌ 不需要:
· 抽象代数、数论课
· 微积分、线性代数
· 编程(想动手才需要,第 24 章才用)
💡 第 13 章会把公钥密码需要的数论从零讲一遍,就四个概念。 在那之前完全不需要数学准备。
⏱️ 四种读法
| 你的情况 | 路线 | 时间 |
|---|---|---|
| 只想搞懂「https 那把锁」 | 01 → 08 → 09 → 14 → 15 → 17 → 18 | 3 小时 |
| 想要那几个「啊哈」时刻 | 03 → 08 → 15 → 21 | 2 小时 |
| 做安全/后端开发 | 01–19 顺读,跳过 16、20 | 1 周 |
| 完整打牢 | 全部顺读 + 做项目 | 2–3 周 |
🗺️ 三章高光
| 章节 | 为什么 |
|---|---|
| ⭐ 第 3 章 · 一次一密 | 唯一数学上可证明完美的加密方案 —— 以及它为什么几乎没人用 |
| ⭐ 第 8 章 · 安全定义 | 「安全」这个词第一次有了精确的、可证伪的定义。全教程的思维转折点 |
| ⭐ 第 21 章 · 零知识证明 | 向别人证明你知道一个秘密,却不透露秘密的任何信息。密码学里最反直觉的结果 |
✅ 检查点
- 密码学和机器学习面对的"对手"有什么根本不同?
- 这套教程的写法有什么特别之处?为什么这么写?
- 遇到公式卡住了,正确的做法是什么?
- 中断之后回来,应该先读什么?
- 只有一小时的话该读哪两章?
👀 答案
- 机器学习的对手是噪声和过拟合,它们不会针对你;密码学的对手是一个聪明的、主动的、会针对你的人。所以机器学习里"测试集跑得好"算成功,密码学里"我想不出怎么攻破"什么都不算。
- 先讲怎么被打破,再讲怎么修。因为这样那些规矩(IV 要随机、nonce 不能重复)你不用背——你知道不遵守会死在哪。这也是密码学真实的历史进程。
- 只看 💡人话翻译,跳过折叠的推导块。不点开完全不影响读下一章。
- 上一章的 ⚡走神救援,30 秒接回上下文,不要从头读。
- 03 一次一密 + 08 安全定义。它们会永久改变你看待"安全"这个词的方式。
🛑 开始
⚡ 走神救援
这套教程和本库其他几套零依赖,可独立读。核心差别:机器学习的对手是不针对你的噪声,密码学的对手是一个聪明的、主动的人——所以机器学习里"测试集好"算成功,密码学里"我想不出怎么攻破"什么都不算,必须证明"攻破它⟹解决某个公认数学难题"。⭐写法:先讲怎么被打破,再讲怎么修——这样那些规矩(IV要随机/nonce不能重复/要OAEP填充)你不用背,因为知道不遵守会死在哪。数学全部可跳过(有💡人话翻译,推导折叠),需要的只有取余数和一点概率直觉。三章高光:03 一次一密(唯一可证明完美的方案,以及为什么没人用)、08 安全定义("安全"第一次有精确定义,思维转折点)、21 零知识证明(证明你知道秘密却不透露它)。只有一小时就读 03 + 08。