《密码学的乐趣》(The Joy of Cryptography)笔记

核心观点

  • 本书为密码学入门教材,强调可证明安全(provable security)而非具体算法或工具。
  • 安全目标分解为:保密性(confidentiality)、真实性(authenticity)、完整性(integrity)。
  • 核心思想:通过代码游戏(code-based games)形式化安全定义,用混合技术(hybrid technique)进行安全证明。

关键概念

  1. 可证明安全:形式化定义安全目标,然后数学证明方案满足定义。
  2. 代码游戏:安全定义表述为两个库(library)的不可区分性;对手是调用这些库的程序。
  3. 混合证明:通过构造一系列中间库(hybrids),每个只与前一个库有微小改动,从而将目标安全性归约到已知假设。
  4. 构建块(building blocks):一次性填充(one-time pad)、伪随机生成器(PRG)、伪随机函数(PRF)、伪随机排列(PRP)、消息认证码(MAC)、数字签名、公钥加密等。
  5. 混合加密(hybrid encryption):用公钥加密传输对称密钥,再用对称加密处理大量数据,以降低公钥加密的开销。

重要章节结构

  • 第0章:概念与记号回顾(模运算、字符串、函数、概率、渐近记号)。
  • 第1章:什么是[不是]密码学 & 一次性垫(one-time pad)。
  • 第2-3章:安全定义正式化 & 不可区分性攻击。
  • 第4章:混合证明技术。
  • 第5-10章:对称密钥原语(PRG、PRF、PRP、MAC、认证加密AEAD)。
  • 第11章:哈希函数(包括抗碰撞性讨论)。
  • 第12章:身份验证与密钥交换。
  • 第13章:数字签名。
  • 第14章:公钥加密基础(Diffie-Hellman、RSA前置)。
  • 第15章:公钥加密详解(ElGamal、混合加密、公钥CPA安全)。

可行动点

  • 深入理解代码游戏框架,尝试用它重新证明熟悉的构造(如PRG->PRF)。
  • 实现书中的简易例子(如基于Sage的RSA演练)。
  • 对照实际协议(TLS、Signal)审视其使用的原语是否符合本书的安全模型。

与其他知识的关联

  • 可结合《密码学导论》(William Stallings)或《密码学与网络安全》对比工程视角。
  • 与《实用密码学》(Ferguson、Schneier、Kohno)互补:本书侧重理论证明,后者更关注实现陷阱。
  • 对应Obsidian笔记:[[可证明安全]], [[代码游戏]], [[混合加密]], [[一次性填充]], [[PRG/PRF/PRP]].

处理方式:使用 pdf-inspector 提取全文,手动消化摘要。原文约286页,CC BY-NC-SA 4.0授权。