《密码学的乐趣》- The Joy of Cryptography - Mike Rosulek

基本信息

  • 书名: The Joy of Cryptography(密码学的乐趣)
  • 作者: Mike Rosulek(Oregon State University)
  • 版本: Draft of January 3, 2021
  • 许可: Creative Commons BY-NC-SA 4.0
  • 原文件: /books/密码学.pdf
  • 页数: 286 页
  • 处理日期: 2026-09-01
  • 处理方法: pdf-inspector 文本提取(text_based)

书籍定位与特色

这是一本美国本科密码学教材,源自 Oregon State University 的 CS427 课程讲义。作者 Mike Rosulek 采用 code-based games(基于代码的游戏) 风格来表达所有安全定义和证明,这是本书最大的教学创新。

核心哲学:密码学不是关于”算法如何工作”,而是关于”为什么算法是安全的”。安全性是一个全局性质——无法通过具体例子来证明,必须在抽象层面理解。

先修要求:

  • 离散数学(模运算、概率、组合、证明技巧)
  • 算法与数据结构
  • 计算理论(推荐)

不涵盖:PGP、Tor、Signal、TrueCrypt、比特币、黑客技术——这是一本理论基础书,不是应用手册。


全书结构(共15章 + 第0章预备知识)

第0章:概念与符号复习

  • 对数与指数、模运算、字符串、函数、概率
  • 伪代码符号约定
  • 渐进复杂度(Big-O)

第一部分:对称密码学基础

  • 第1章:一次一密 & Kerckhoffs 原则
  • 第2章:可证明安全的基础(安全定义的写法、攻击与证明、混合技术)
  • 第3章:秘密共享(Shamir 门限方案、多项式插值、视觉秘密共享)
  • 第4章:基于难解计算的密码学(计算不可行、可忽略概率、不可区分性、生日悖论)

第二部分:伪随机性与分组密码

  • 第5章:伪随机生成器(PRG)定义、构造与扩展
  • 第6章:伪随机函数(PRF)与伪随机置换(PRP)、分组密码、Switching Lemma
  • 第7章:选择明文攻击(CPA)安全性
  • 第8章:分组密码工作模式(ECB/CBC/CTR/OFB、CPA安全、填充与密文窃取)
  • 第9章:选择密文攻击(CCA)、Padding Oracle 攻击

第三部分:认证与哈希

  • 第10章:消息认证码(MAC)定义、CBC-MAC、Encrypt-then-MAC
  • 第11章:哈希函数(碰撞抗性、Merkle-Damgård 构造、长度扩展攻击)
  • 第12章:认证加密 & AEAD(定义、Encrypt-then-MAC、Carter-Wegman MAC、GCM 模式)

第四部分:公钥密码学

  • 第13章:RSA & 数字签名(RSA函数、CRT、RSA签名、哈希RSA签名)
  • 第14章:Diffie-Hellman 密钥协商(循环群、离散对数、DDH假设)
  • 第15章:公钥加密(安全定义、ElGamal加密、混合加密)

核心概念笔记

1. Code-Based Games 方法论

本书的核心教学方法——用”两个具有相同接口但内部实现不同的库(library)“来定义安全性:

  • 安全 = 攻击者无法区分两个库的行为
  • 每个安全定义都遵循同一种模式:真实库 vs 理想库
  • 证明 = 通过一系列混合(hybrid)库逐步转换,每一步都基于某个密码学原语的安全性
  • 攻击 = 编写一个调用程序,能够显著区分两个库

优势:统一了所有安全定义的表达方式,使得证明过程变成了”构造性重写规则”的应用,降低了抽象难度。

2. 安全性定义索引(全书关键定义)

本书末尾附有安全定义索引,以下是最重要的:

定义章节描述
一次一密密文一致性2.5对称加密基础
一次保密性(OT安全)2.6单消息安全
秘密共享门限安全3.3t-out-of-n 门限
伪随机生成器(PRG)5.1计算不可区分
伪随机函数(PRF)6.1函数级不可区分
伪随机置换(PRP)6.6置换级不可区分
强伪随机置换(SPRP)6.13正反双向不可区分
CPA安全(对称加密)7.1选择明文攻击
CPA$安全7.2伪随机密文
CCA安全9.1选择密文攻击
MAC安全10.2消息认证码不可伪造
碰撞抗性11.1哈希函数安全性
数字签名安全13.6存在性不可伪造
密钥协商安全14.4DH密钥交换
DDH假设14.5判定性Diffie-Hellman
公钥CPA安全15.1公钥加密基本安全

3. Kerckhoffs 原则

密码系统的安全性不应依赖于算法的保密,而应只依赖于密钥的保密。

  • 敌人了解系统(包括算法)
  • 秘密只有密钥
  • 这是现代密码学的基石

4. 混合技术(Hybrid Technique)

证明安全性的核心工具:

  • 目标:证明 Library L 和 Library R 不可区分
  • 方法:构造一系列混合库 L = H₀, H₁, H₂, …, Hₙ = R
  • 每对相邻混合库的不可区分性基于某个密码学假设
  • 最终结论:L 和 R 不可区分(传递性)

5. 生日悖论与边界

  • n 个元素中随机采样 q 次,发生碰撞的概率 ≈ q²/(2n)
  • 对于 N 空间,约 √N 次采样后碰撞概率达到 50%
  • 这解释了为什么哈希函数输出长度需要是安全参数的2倍(抗碰撞需要 2^n/2 次操作)

重要知识点

分组密码工作模式

  • ECB:绝对不要用!相同明文块产生相同密文块,信息泄露严重
  • CBC:经典模式,需要 IV,CPA安全
  • CTR:将分组密码转化为流密码,可并行加密,CPA安全
  • OFB:输出反馈模式,生成密钥流
  • GCM:Galois/Counter Mode,提供认证加密(AEAD),CTR + GHASH

加密与认证的组合

正确顺序:Encrypt-then-MAC(先加密再认证)

  • 密文被MAC保护
  • 解密前先验证MAC,防止Padding Oracle攻击
  • 错误顺序(MAC-then-encrypt、Encrypt-and-MAC)存在安全漏洞

哈希函数长度扩展攻击

Merkle-Damgård 构造的哈希函数(MD5、SHA-1、SHA-2)存在长度扩展攻击:

  • 已知 H(m) 和 len(m),可以计算 H(m ‖ padding ‖ m’)
  • 影响:不能用 H(key ‖ message) 作为 MAC
  • 解决方案:HMAC 双层结构

RSA 要点

  • 基于大整数分解困难性
  • 教科书RSA不安全(同态性、确定性)
  • 实际使用需要填充方案(OAEP等)
  • CRT(中国剩余定理)可加速 RSA 私钥运算约 4 倍

Diffie-Hellman 密钥协商

  • 基于离散对数困难性(更准确地说,DDH假设)
  • 双方无需预先共享密钥即可协商出共享秘密
  • 本身不提供认证,易受中间人攻击
  • 实际使用需要认证机制(如数字签名)

阅读建议

适合人群:

  • 计算机科学专业本科生
  • 想从理论层面理解”为什么安全”而非只知道”怎么用”的工程师
  • 准备学习更高级密码学(零知识证明、后量子密码等)的读者

学习路径:

  1. 先确保第0章预备知识扎实
  2. 第1-4章建立安全思维框架(最重要的是第2章)
  3. 第5-12章系统学习对称密码学
  4. 第13-15章进入公钥密码学
  5. 对照书末的安全定义索引复习巩固

与其他密码学教材的区别:

  • 比 Katz & Lindell 更入门,更注重直觉
  • 比 Stinson 更现代,强调 provable security
  • Code-based games 风格是独特的教学创新

关联笔记


状态

  • 处理状态: done(全文本提取,完整结构整理)
  • 内容质量: 高(text_based PDF,pdf-inspector 提取质量好)
  • 价值评级: ★★★★☆(优秀的本科密码学理论教材)