IND-CPA安全仅保证敌手是完全被动情况的安全,不能保证敌手主动情况(如向网络中注入消息)的安全。

为了描述敌手的主动攻击,前人提出一种选择密文攻击(Chosen Ciphertext Attack,CCA)的概念,其中敌手在获得目标密文以前,可以访问解密喻言机。敌手获得目标密文后,希望获得目标密文对应的明文的部分信息。

公钥加密方案在选择密文攻击下的IND游戏如下:

(1)初始化。挑战者产生系统Π\mathcal{\Pi},敌手获得系统的公开钥。

(2)训练。敌手向挑战者做解密询问,即取密文CT给挑战者,挑战者解密后,将明文给敌手。

(3)挑战,敌手输出两个长度相同的消息M0,M1M_0,M_1,再从挑战者接收MβM_{\beta}的密文,其中随机值βR{0,1}\beta \larr _R\{0,1\}

(4)猜测,敌手输出β\beta^{\prime},如果β=β\beta^{\prime}=\beta,则敌手攻击成功。

以上攻击过程称为午餐时间攻击,相当于有一个执行解密运算的黑河,掌握黑盒的人在午餐时间离开后,敌手能使用黑河对自己选择的密文解密。午餐过后,给敌手一个目标密文,敌手试图对目标密文解密,但不能再使用黑盒。

敌手的优势定义为安全参数K\mathcal{K}的函数:

AdvΠ,ACCA(A)=Pr[β=β]12Adv_{\mathcal{\Pi},\mathcal{A}}^{CCA}(\mathcal{A})=|Pr[\beta^{\prime}=\beta]-\frac{1}{2}|

如果对任何多项式时间的敌手A\mathcal{A},存在一个可忽略函数ϵ(K)\epsilon (\mathcal{K}),使得AdvΠ,ACCA(A)ϵ(K)Adv_{\mathcal{\Pi},\mathcal{A}}^{CCA}(\mathcal{A}) \le \epsilon (\mathcal{K}),那么我们就称这个加密算法Π\mathcal{\Pi}在选择密文攻击下具有不可区分性,或者称为IND-CCA安全。