现代密码学3.4--CPA安全,多次加密
博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。
- 第二章定义的完美安全是一种理论上的讨论,而第三章需要定义的计算安全是一种更偏向实际需求的讨论。
- 3.1节讨论了定义计算安全的两种方法,3.2节讨论了什么是计算安全,3.3节给出了基于PRG构造的计算安全的密码方案。
- 以上3.1-3.3节都在讨论计算安全,这是一种抵御唯密文攻击的安全,根据1.4节的四种攻击模型可知,这是对敌手能力的一种最弱描述。现在,我们考虑敌手具有选择明文攻击的攻击能力,来定义一种更强的安全性:CPA安全,以及考虑多次加密的计算安全和多次加密的CPA安全。
CPA安全
oracle
攻击者可以选择明文 m m m传给加密者,加密者用加密算法 E n c k ( m ) Enc_k(m) Enck(m)得到 c c c……返回给攻击者。把这个过程看作一次查询,由攻击者来确定查什么,可以进行任意多次,且每次都用同样的密钥 k k k。
例子
美军vs日军,中途岛海战:美军监听到日军要攻击“AF”,但是无法破解“AF”是什么地方。美军猜测是“中途岛”,于是让中途岛发假信息说缺水,日本截获了这个信息并立即报告给总部:“AF”缺水,这就让美军知道了在日军的加密方案中“AF”就是“中途岛”。这就是选择明文攻击,美军选择了明文“中途岛”,日军加密得到“AF”,虽然不是日军自愿参与的,但美军仍达到了他们的需要。
含oracle的实验过程
- 敌手 A \mathcal{A} A已知安全参数 1 n 1^n 1n,有一个连接 E n c k ( ⋅ ) Enc_k(\cdot) Enck(⋅)的oracle(可以询问 E n c k ( ⋅ ) Enc_k(\cdot) Enck(⋅)任意多次),输出等长明文 m 0 , m 1 m_0,m_1 m0,m1给加密者;
- 加密者任选 b ∈ { 0 , 1 } b\in\{0,1\} b∈{ 0,1},输出密文 c ← E n c k ( m b ) c\leftarrow Enc_k(m_b) c←Enck(mb)给敌手 A \mathcal{A} A;
- 敌手 A \mathcal{A} A在获得 c c c后,仍有一个连接 E n c k ( ⋅ ) Enc_k(\cdot) Enck(⋅)的oracle(可以根据 c c c调整,继续查询),输出猜测的 b ′ b' b′;
- 如果 b ′ = b b'=b b′=b输出1,否则输出0。
CPA安全定义
私钥加密方案 Π = ( G e n , E n c , D e c ) \Pi=(Gen,Enc,Dec) Π=(Gen,Enc,Dec)如果对于任意PPT敌手 A \mathcal{A} A,都有一个可忽略函数negl满足 P r [ P r i v K A , Π c p a ( n ) = 1 ] ≤ 1 2 + Pr[PrivK_{\mathcal{A},\Pi}^{cpa}(n)=1]\le \frac{1}{2}+ Pr[PrivKA,Πcpa(n)=