密码学 I
这门课学什么
课程讲现代密码原语怎样工作、又怎样被攻破:流密码、分组密码、消息完整性、认证加密、密钥交换和公钥加密。可选编程项目要求攻击有漏洞的实现。
内容摘要
这门课讲现代密码学的基本构件怎样工作,以及它们被错误使用时怎样失效。课程共 6 周,外加期末考试。讲师 Dan Boneh 是应用密码学专家。他的讲法是先给严格定义,再给构造和安全论证,最后讲真实世界中的攻击。
前 4 周讲对称密码学。第 1 周从一次一密讲到流密码和语义安全。第 2 周讲分组密码 DES 和 AES,以及 CBC 和 CTR 工作模式。第 3 周讲消息认证码和抗碰撞哈希,包括 HMAC。第 4 周把加密和完整性合在一起,讲认证加密,并分析 TLS 1.2 和 CBC 填充攻击。
后 2 周转到公钥密码学。第 5 周讲密钥交换(Merkle 谜题和 Diffie-Hellman)和所需的数论知识。第 6 周讲两类公钥加密:基于 RSA 陷门置换的方案和基于 Diffie-Hellman 的 ElGamal 方案。
每周有 1 次习题测验和 1 个选做编程作业。编程作业让你亲手攻破用错的密码方案。学完后,你能判断一个加密方案的用法是否正确,知道该选哪种标准构造。这门课也是学习公钥签名和安全协议的基础。
为什么值得学
Boneh 是应用密码学的顶尖学者。这门课是公认最好的免费密码学入门课。
课程信息
- 学校
- 斯坦福(Stanford)
- 讲师
- Dan Boneh
- 学期
- self-paced
- 平台
- Coursera
- 费用
- 免费旁听
- 难度
- 中级
- 学时
- 约 30 小时
- 先修
- 需要离散概率基础,编程项目需要会一门编程语言。
- 材料
- 视频、作业、考试
- 许可证
- 未注明
课程大纲 · 共 14 节
大纲依据:Coursera 课程模块列表(6 周 + 期末考试,每周按讲次分成两段)(查看原始页面 ↗)
- 1.1课程概览Course Overview
介绍密码学能做什么、不能做什么,以及密码学的历史。快速复习离散概率。
- 1.2流密码Stream Ciphers
讲一次一密和信息论安全。讲伪随机生成器(PRG)、针对流密码的攻击、实际的流密码,以及语义安全的定义。
- 2.1分组密码Block Ciphers
讲 DES、穷举搜索攻击、其他攻击和 AES。讲用 PRG 构造分组密码,复习伪随机置换(PRP)和伪随机函数(PRF)。
- 2.2分组密码的使用:工作模式Using Block Ciphers: Modes of Operation
讲一次性密钥下的工作模式。定义选择明文攻击(CPA)安全,讲 CBC 和 CTR 模式。
- 3.1消息认证码Message Authentication Codes
讲 MAC 的定义和基于 PRF 的构造。讲 CBC-MAC、NMAC、MAC 填充、PMAC 和 Carter-Wegman MAC。
- 3.2抗碰撞性Collision Resistance
讲通用生日攻击和 Merkle-Damgård 结构。讲压缩函数的构造、HMAC,以及 MAC 验证中的计时攻击。
- 4.1认证加密Authenticated Encryption
讲针对 CPA 安全加密的主动攻击。定义认证加密和选择密文攻击,讲用密码和 MAC 组合的构造方法。
- 4.2案例:TLS 1.2 与填充攻击Case Studies: TLS 1.2 and Padding Attacks
分析 TLS 1.2 的记录协议。讲 CBC 填充攻击和非原子解密攻击。
- 4.3其他专题Odds and Ends
讲密钥派生和确定性加密(SIV、宽 PRP)。讲可调加密(tweakable encryption)和保格式加密。
- 5.1基础密钥交换Basic Key Exchange
讲可信第三方方案和 Merkle 谜题。讲 Diffie-Hellman 协议,并引出公钥加密的概念。
- 5.2数论入门Introduction to Number Theory
讲模运算记号、费马小定理和欧拉定理。讲模 e 次根、算术算法和数论中的难解问题。
- 6.1基于陷门置换的公钥加密Public-Key Encryption from Trapdoor Permutations
讲公钥加密的定义和安全性。讲 RSA 陷门置换、PKCS 1 和 RSA 的实际用法。
- 6.2基于 Diffie-Hellman 的公钥加密Public-Key Encryption from Diffie-Hellman
讲 ElGamal 公钥系统及其安全性。讲安全性更强的变体,并总结公钥加密的统一思路。
- 7期末考试Final Exam
期末考试覆盖全部 6 周内容。