主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。
内容补充:骆婷老师的PPT
《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节
密码学复习笔记 这个博主好有意思
初步笔记,如有错误请指正
快速补充一些密码相关的背景知识
本节学习用于保护信息的完整性和真实性的消息认证码(MAC)和抗碰撞的哈希函数(CRHF)。
目录:公钥加密的定义和安全,陷门排列,选择密文攻击安全,在随机预言机模型中从陷门排列到公钥加密。
私钥密码学局限性
Needham-Schroeder 协议
Merkle难题(无需可信第三方的密钥交换)
Alice准备 2 32 2^{32} 232 个难题 P u z z l e i \mathsf{Puzzle}_i Puzzlei?,并且发送给Bob;难题如下:
P u z z l e i ← E n c ( 0 96 ∥ p i ) ( “Puzzle?#” x i ∥ k i ) , \mathsf{Puzzle}_i \gets \mathsf{Enc}_{(0^{96}\|p_i)}(\text{``Puzzle \#''} x_i \| k_i), Puzzlei?←Enc(096∥pi?)?(“Puzzle?#”xi?∥ki?),,其中 E n c \mathsf{Enc} Enc 是 128位加密, p i ← { 0 , 1 } 32 p_i \gets \{0,1\}^{32} pi?←{0,1}32 并且 x i , k i ← { 0 , 1 } 128 x_i,k_i \gets \{0,1\}^{128} xi?,ki?←{0,1}128。
注:每个难题中明文包括一个随机数和一个密钥,用一个密钥加密;
Bob随机选择一个难题 P u z z l e j \mathsf{Puzzle}_j Puzzlej?,并且在 2 32 2^{32} 232 时间内猜测 p j p_j pj? ,获得 x j , k j x_j,k_j xj?,kj? 并将 x j x_j xj? 发送给 Alice。
Alice 按照 x j x_j xj?查询谜题,并且使用 k j k_j kj? 作为密钥。
敌手需要 2 32 + 32 2^{32+32} 232+32 时间,是诚实方所需时间复杂性的二次方。
在诚实方和敌手之间存在更好的差距吗?如果将加密方法看作是一个黑盒预言机,那么二次差距是最好的。
Merkle难题的缺点是谜题数量太大,获得密钥的代价太大;
注:Merkle当时是UC的一名本科生,这是他的一门课程设计申请。
公钥革命
公钥加密定义
对窃听者的安全 = CPA
公钥加密的安全属性
密钥长度比较
NIST(美国国家标准技术研究所)推荐可比较的密钥长度 (按比特) 。NIST 认为一个112比特的有效密钥长度直到2030年是可接受的,但是推荐 128 比特或更长的密钥。
对称密钥(AES) | RSA/DH | ECC |
---|---|---|
56 | 512 | 112 |
80 | 1024 | 160 |
112 | 2048 | 224 |
128 | 3072 | 256 |
192 | 7680 | 384 |
256 | 15360 | 512 |
混合加密(Hybrid Encryption)构造
混合加密安全
混合加密范式应用
陷门函数(Trapdoor Function)
函数族(Families of Functions)
陷门排列族
TDP例题
从TDP到公钥加密方案
证明
证明(续)
在公钥设定中CCA情景
对CCA/CCA2的安全定义
例题
CCA2安全加密技术进展
随机预言机模型(Random Oracle Model,ROM)
ROM的简单例子
由于RO “强大的随机性”,其可以充当或构造之前学习过得密码学原语,包括为单向函数、抗碰撞哈希函数、伪随机函数等。
一个 RO 将 n 1 n_1 n1? 比特输入映射为 n 2 n_2 n2? 比特输出。
RO 作为 OWF,进行如下实验:
选择一个RO H H H ;
选择一个随机的 x ∈ { 0 , 1 } n 1 x \in \{0,1\}^{n_1} x∈{0,1}n1? ,并且赋值 y : = H ( x ) y := H(x) y:=H(x) ;
敌手 A \mathcal{A} A 被给予 y y y,如果输出 x ′ x' x′: H ( x ′ ) = y H(x')=y H(x′)=y,则成功;
解释:如果敌手成功求逆,则意味着敌手“事先”询问过RO;
RO 作为 CRHF,进行如下实验:
选择一个RO H H H ;
敌手 A \mathcal{A} A 成功,如果其输出 x , x ′ x, x' x,x′ 满足 H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x′) ,但是 x ≠ x ′ x\neq x' x?=x′;
解释:如果敌手找到碰撞,则意味着 H H H不是随机的,因为两个随机输出不可能相同。
从一个RO构造PRF : n 1 = 2 n n_1=2n n1?=2n, n 2 = n n_2=n n2?=n.
F k ( x ) = def H ( k ∥ x ) , F_k(x) \overset{\text{def}}{=} H(k\| x), Fk?(x)=defH(k∥x), ∣ k ∣ = ∣ x ∣ = n . |k|=|x|=n. ∣k∣=∣x∣=n.
解释:如果 F F F不是伪随机的,则 H H H也可以与真随机相区分。
CPA安全
基于私钥加密的CCA安全
在ROM中基于TPD的CCA安全
私钥加密 vs. 公钥加密
私钥加密 | 公钥加密 | |
---|---|---|
密钥 | 双方 | 接收者 |
最弱攻击 | 窃听者 | CPA |
概率性 | CPA/CCA | 一直 |
对CPA的假设 | OWF | TDP |
对CCA的假设 | OWF | TDP+RO |
效率 | 快 | 慢 |