Cramer-Shoup方案的CCA安全性证明在之前的博文里已经证明过了,但由于Cramer-Shoup方案的证明太过繁琐,那篇博文也写了近七千字才草草完结,里面遗留了一个命题未证明,这里新开一篇博文将此命题的证明完整给出。另外我在证明这个命题时发现老师关于此命题的原证明存在一些问题,我一直没有完全弄明白,老师的讲义里也没有完整叙述,这篇博文我主要给出一个我认为比较合适的证法。
预备知识
Cramer-Shoup方案使用了抗目标碰撞的摘要函数(弱$Hash$函数)$HASH=(HGen,T)$,假设$\mathcal{G}$是一个群生成算法,$\lambda$是安全参数。
Cramer-Shoup加密方案:$CS=(Gen,Enc,Dec)$
$\color{red}{Gen}$:输入$1^\lambda$,生成$(\mathbb{G},q,g_1) \leftarrow \mathcal{G}(1^\lambda)$,随机生成中的元素和,计算
输出和
$\color{red}{Enc}$:对于输入$pk$和消息$m \in \mathcal{G}$,随机选取$r \leftarrow \mathbb{Z}_q, r\neq 0$,计算
输出密文
$\color{red}{Dec}$:输入密文和私钥$sk=(x_1,x_2,y_1,y_2,z_1,z_2)$,顺序计算
如果$v=v’$输出$m$,否则输出$\perp$
这个方案的正确性是非常显然的,如果消息$m$诚如上述方式进行加密,则一定能够通过$v=v’$的检测且最后解密一定能成功解密出$m$。
之前的博文未解决的一个命题就是
其中$Q$表示敌手$\mathcal{A}$询问应答器的次数,当然为多项式次,事件,的定义为
讲义中的证明存在疑问
首先给出实验的具体情况,即$Expt_3$,$Expt_5$,$Expt_6$的详细对比,这里$Expt_3$永远是最基础的实验,$Expt_5$,$Expt_6$均是在$Expt_3$基础上添加新的验证得来的。
$$Exp_3: input 1^\lambda\\ pk,sk \leftarrow CS \quad scheme\\ pk=(g_1,g_2,X,Y,Z,T^s(\cdot))\\ sk=(x_1,x_2,y_1,y_2,z_1,z_2)\\ \mathcal{A}(pk)\quad ask \quad Dec_{sk}(\cdot)\\ (m_0.m_1) \leftarrow \mathcal{A}(1^\lambda ,pk)\\ r_1^*,r_2^* \leftarrow \mathbb{Z}_q,r_1^* \neq r_2^*\\ u_1^*=g_1^{r_1^*}, u_2^*=g_2^{r_2^*}\\ \delta \leftarrow \{0,1\}, c^*:=(u_1^*)^{z_1}(u_2^*)^{z_2} \cdot m_{\delta}\\ \alpha^*:=T^s(u_1^*,u_2^*,c^*)\\ v^*:=(u_1^*)^{x_1+\alpha^* y_1} (u_2^*)^{x_2+\alpha^* y_2}\\ \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\quad ask \quad Dec_{sk}^*(\cdot)\\ \delta' \leftarrow \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\\ if \delta'=\delta \quad output \quad 1 \quad else \quad 0$$ | $$Exp_5: input 1^\lambda\\ pk,sk \leftarrow CS \quad scheme\\ pk=(g_1,g_2,X,Y,Z,T^s(\cdot))\\ sk=(x_1,x_2,y_1,y_2,z_1,z_2)\\ \mathcal{A}(pk)\quad ask \quad \color{red}{\overline{Dec_{sk}(\cdot)}}\\ (m_0.m_1) \leftarrow \mathcal{A}(1^\lambda ,pk)\\ r_1^*,r_2^* \leftarrow \mathbb{Z}_q,r_1^* \neq r_2^*\\ u_1^*=g_1^{r_1^*}, u_2^*=g_2^{r_2^*}\\ \delta \leftarrow \{0,1\}\\ \color{red}{c^* \leftarrow \mathbb{G}} ,\alpha^*:=T^s(u_1^*,u_2^*,c^*)\\ v^*:=(u_1^*)^{x_1+\alpha^* y_1} (u_2^*)^{x_2+\alpha^* y_2}\\ \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\quad ask \quad \color{red}{\overline{Dec_{sk}^*(\cdot)}}\\ \delta' \leftarrow \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\\ if \delta'=\delta \quad output \quad 1 \quad else \quad 0$$ |
这里$Expt_3$与$Expt_5$的区别是$Expt_5$两个阶段的解密应答器都多了一个条件,若,则输出,否则输出$\perp$,其中
通过简单的计算之后可以发现,这里的检验和中的检验仅仅是多了一个$u_2=u_1^a$而已。
我们要研究$E_6$这个事件,首先来看$Expt_3$与$Expt_6$的对比
$$Exp_3: input 1^\lambda\\ pk,sk \leftarrow CS \quad scheme\\ pk=(g_1,g_2,X,Y,Z,T^s(\cdot))\\ sk=(x_1,x_2,y_1,y_2,z_1,z_2)\\ \mathcal{A}(pk)\quad ask \quad Dec_{sk}(\cdot)\\ (m_0.m_1) \leftarrow \mathcal{A}(1^\lambda ,pk)\\ r_1^*,r_2^* \leftarrow \mathbb{Z}_q,r_1^* \neq r_2^*\\ u_1^*=g_1^{r_1^*}, u_2^*=g_2^{r_2^*}\\ \delta \leftarrow \{0,1\}, c^*:=(u_1^*)^{z_1}(u_2^*)^{z_2} \cdot m_{\delta}\\ \alpha^*:=T^s(u_1^*,u_2^*,c^*)\\ v^*:=(u_1^*)^{x_1+\alpha^* y_1} (u_2^*)^{x_2+\alpha^* y_2}\\ \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\quad ask \quad Dec_{sk}^*(\cdot)\\ \delta' \leftarrow \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\\ if \delta'=\delta \quad output \quad 1 \quad else \quad 0$$ | $$Exp_6: input 1^\lambda\\ pk,sk \leftarrow CS \quad scheme\\ pk=(g_1,g_2,X,Y,Z,T^s(\cdot))\\ sk=(x_1,x_2,y_1,y_2,z_1,z_2)\\ \mathcal{A}(pk)\quad ask \quad \color{red}{\overline{Dec_{sk}(\cdot)}}\\ (m_0.m_1) \leftarrow \mathcal{A}(1^\lambda ,pk)\\ r_1^*,r_2^* \leftarrow \mathbb{Z}_q,r_1^* \neq r_2^*\\ u_1^*=g_1^{r_1^*}, u_2^*=g_2^{r_2^*}\\ \delta \leftarrow \{0,1\}\\ c^* \leftarrow \mathbb{G} ,\alpha^*:=T^s(u_1^*,u_2^*,c^*)\\ v^*:=(u_1^*)^{x_1+\alpha^* y_1} (u_2^*)^{x_2+\alpha^* y_2}\\ \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\quad ask \quad \color{red}{\widehat{Dec_{sk}^*(\cdot)}}\\ \delta' \leftarrow \mathcal{A}(pk,u_1^*,u_1^*,v^*,c^*)\\ if \delta'=\delta \quad output \quad 1 \quad else \quad 0$$ |
$Expt_6$的要求其实是更多的,它也依托于$Expt_5$,结合$Expt_5$可知$Expt_3$与$Expt_6$的区别有两个,一是$Expt_6$的两个阶段的解密应答器都要验证,不满足就直接输出$\perp$;二是$Expt_6$的第二阶段的解密应答器还要求若有敌手询问的密文满足但是,则直接回答$\perp$并停机,故第一阶段多了一个规则,第二阶段多了两个规则。
与就这两点区别, 但讲义里说发生一定有且,这个我认为并不正确。首先发生,则敌手构造的密文必通过的验证,通不过的验证,既然通过的验证,则只需即可,是否等于对来说是无所谓的,因为它只验证$v$;既然通不过的验证,可以分别在第一阶段与第二阶段考虑,若在的第一阶段无法通过验证,必有,可以发现此时敌手构造的密文满足且,此时讲义的断言就是正确的。
但若敌手构造的密文在的第二阶段无法通过验证,第二阶段是有两个规则的,如果,输出$\perp$;如果但是输出$\perp$。这两个规则只要满足一个就输出$\perp$,如果满足的是第二个,一定有吗?我觉得是不一定的,比如令,,,此时必有,但此时只要控制使得摘要函数出现碰撞
即可使得敌手构造的密文满足第二个规则,应答器输出$\perp$,事件发生,但此时。
注意这里的碰撞,我们不关注于怎么找到具体的$\alpha$,我们只关注于这种碰撞出现的可能性,这种可能性现在当然不为0,也就是说有可能出现,那就足够了,所以我觉得讲义里说 发生一定有且是存在疑问的。
个人感觉较为合理的证明
这里给出一个我认为比较合理的证明,首先原命题是要证明,即事件发生的概率是可忽略的,有了这个可忽略就可以利用其它一些命题证明Cramer-Shoup方案是CCA安全的,推导如下
但实际上,仔细观察这个推导过程,如果我们能够证明事件发生的概率是可忽略的,就可以达到和事件发生概率可忽略一样的效果,一样可以证明Cramer-Shoup方案是CCA安全的,所以这里我们转向推导事件发生的概率是可忽略的,但实际上这个推导过程里依旧要用到事件,其定义为
但由于第二阶段的应答器并不是,故需要对做一些修改,具体如下
实际上这个$F_6$发生的概率也是可忽略的,证明方法与原来的证明一模一样,只需要将构造的寻找第二原像的敌手中的换成即可。
首先对事件$E_5$发生的概率进行分析
首先$F_6$发生的概率是可忽略的,故只要证明是可忽略的即可,实际上这也是后面的主要工作。
$Expt_5$的解密应答器拒绝解密有两种情况,一是在第一阶段不满足某个规则而拒绝,二是在第二阶段不满足某个规则而拒绝,只要我们能证明在$\neg F_6$的条件下无论是第一阶段还是第二阶段拒绝的概率都是可忽略的即可。
第一阶段
首先来看第一阶段,注意是对第二阶段的应答器做出的限制,所以对第一阶段完全没有影响,故此时的出现意味着敌手提供的密文满足且,分别用指数形式表示有
则等价于,等价于。注意是敌手构造的密文,所以是完全可能的,则此时有
接下来就要考虑的情况下,的概率,首先对的意义做一下分析,等价于,实际上对于敌手而言,如果敌手使用标准的加密生成,则是显然成立的,但注意这里要求,也就是,这与标准的加密是相背离的,所以就相当于敌手在规则之外构造了一个密文,然后交给解密应答器,解密应答器再验证$v$等不等于,也就是是不是等于,那这是就不一定成功了,这里可以理解为敌手生成的,是解密应答器根据私钥生成的。
下面考虑与的关系,可以得到如下线性方程组
注意,$a\neq 0$,故此方程系数矩阵的秩一定为3,可对其进行初等行变换得到如下结果
上面方程中的是敌手给的,$\alpha$也相当于是敌手给的,至于$a$,解密应答器在生成公私钥对时可以将$a$固定,故一旦敌手给出密文,上述方程的系数矩阵就是确定的,另外对一个解密应答器而言,一旦公钥确定,那么就是确定的,但即便如此,我们也可以合理假设是中的随机元素。
在这样的情况下,考虑上述方程组的第三个等式
显然在敌手给出密文后,上面的式子只有是中的随机元素,其余都是确定的值,故对任一个,可以固定的值,由于$a\neq 0$,,故一定存在唯一的一个使得上式成立,故随机取时,也一定随机选取,故在这样的情况下,等于这个定值的概率就是$\frac{1}{q}$,显然为可忽略的。
第二阶段
再来看第二阶段,第二阶段敌手得到了挑战密文,下设
然后敌手以密文向第二阶段的解密应答器进行询问,实际敌手此时给出的必满足
这是非常显然的,分析如下
1,若且成立,则由计算的形式,则,此时不可能验证通过,故此事件不可能出现。
2,若且成立,非常显然这就是事件发生,但前面已经提过,我们的分析都是在条件下的,所以这种情况不会出现。
所以可以认为,则有下面方程组成立
当敌手得到挑战密文后,也就确定了,当敌手以询问解密应答器时,也就确定了,故此时系数矩阵完全确定,矩阵的行列式为
显然系数矩阵是可逆矩阵,则设,对上述方程组进行初等行变换可得
考虑第四个等式,则有
非常显然的是上式的系数必不为0,否则根据上面化简的矩阵可知,此矩阵不可逆,与原矩阵可逆矛盾。接下来的分析就与阶段一的分析类似,当敌手以询问第二阶段的解密应答器后,上式的右边只有是上的随机元素,其余均为定值,且由于的系数不为0,则$\gamma$也一定是上的随机元素,则此时的$\gamma$等于一个确定的$\beta$的概率就是$\frac{1}{q}$,显然为可忽略的。
两个阶段的合并
综上,我们证明了两个阶段都成立,故整体的一次实验中当然有,当然这是单次询问下的概率,发生是指总共$Q$次询问中,只要有某一次询问时发生即可认为在整体上发生,则可知在总共$Q$次询问中,由此有
显然发生的概率可忽略,则原来博文里最后Cramer-Shoup方案CCA实验总的区分优势可以改写为
这也就证明了最后的结论。
总结
至此,Cramer-Shoup方案的CCA安全性就完全证明了,这个证明非常的繁琐,但非常的有规律,一步一步往下走即可,从中也能体会到原作者为什么要在加密方案里设置一些特殊的步骤。其实最有意思的部分还是这篇博文给出的证明,利用一些代数的性质,也巧妙利用了私钥的不同形式,居然真的完成了证明。
- 本文作者: sklois-gjx
- 本文链接: http://yoursite.com/2020/05/16/Cramer-Shoup方案中的一个未证明的命题/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!