通俗地解释下密码学中的归约证明

本文首发在本人知乎:
https://www.zhihu.com/question/49441102/answer/1737942968

这里讲使用reduction proof的原因,它的一般形式,以及结合一个简单的例子说明如何构造和完成一个reduction proof。

阅读本文需要读者事先了解“为什么使用game的形式来定义一个密码协议的安全性”,大概了解“怎么构造game,game的一般形式是什么”。

1 从问题出发

假设现在我们提出了一个密码学方案或者协议 Π \Pi Π ,我们需要证明它是安全的。怎么证明?

我们的协议一般是建立在已经被证明安全的协议/方案上面,或者建立在某些困难问题上面(记为Y),比如RSA公钥加密算法就是建立在因数分解困难问题上。为了简化证明,站在巨人的肩膀上,我们希望通过搭建下面的逻辑命题关系来完成我们的证明。

条件命题1:只要Y是安全的,那么我们的方案 Π \Pi Π就是安全的。换句话说,若Y被有效攻破,那么 [公式]就不再安全。

这样做的好处是,我们站在了巨人的肩膀上:我们不需要从头开始证明,而是从Y开始。大大简化我们的证明过程。

根据离散数学的条件命题的逻辑等价式,若两个命题有如下关系: [公式] ,等价于 [公式] 。比如“只要晴天,我就去跑步”,等价于“如果我不去跑步,那么不是晴天”。这个命题等价式是“反证法”的基础。它被用在规约证明中证明某一个新提出的方案X的安全性(也即是下面的Thm),证明的形式为:

Thm(定理):Y 是安全的 → \rightarrow X是安全的。

证明:

通过等价变换,也即是要证明(记为条件命题2):X不是安全的 [公式] Y不是安全的。

条件命题2进一步解释为:如果存在PPT的对手A可以攻破X,那么我们能构造一个PPT的敌手B来攻破Y。

其中,X是我们新提出的方案,Y某一个困难问题,PPT是多项式概率时间的英文缩写。“构造”一词可以理解为模拟。PPT表示概率多项式时间。

如果我们能够让上面粗体的条件命题2成立,那么我们就完成了规约证明。这其实是一个反证法:若上面粗体的条件命题2成立,也意味着Thm成立,完成证明。

小结:现在我们明白了我们为什么要使用规约证明,以及使用规约证明的基本形式。接下来的问题是,如何来构造这个条件命题?

需要注意的是,在reduction proof中,我们不是一定要使用反证法。只要我们能够构造上面的逻辑命题“Y 是安全的 [公式] X是安全的”就能够完成证明。反证法只是一个工具,目的是在正面证明比较困难,反面证明可能比较容易的时候,我们使用反证法。

2 构造条件命题的一般形式

密码协议的安全性证明需要严格定义“什么是安全的/不安全的”。仅仅使用文字描述“X是不安全的”是很笼统的,因此,我们一般使用Game的方式来定义。一个game中有两个parties,一个是敌手,另一个是challenger。前者试图破坏协议的安全,后者是好人。不同的协议game基本是不同的。下文我们举例说明了两个games。

reduction proof本质上是构造/证明一个逻辑命题:Y 是安全的 → \rightarrow X是安全的。Y是我们的前提假设,X是我们所构造的所要证明的协议。Y和X两个命题分别有2个parties,分别是Y的challenger,Y的敌手,X的challenger和X的敌手。在reduction proof之前,我们需要分别以两个games的形式定义Y和X的安全性。这两个game分开相互独立的。在reduction proof中,我们让Y的敌手来模拟X的challenger。要求是:(1)Y的敌手所模拟的challenger够“逼真”,使得X的敌手无法区分它的challenger是真实的还是模拟的,除了negligible(极低)的概率;(2)所模拟的challenger的执行时间是PPT的。我们通过这样的方式来链接 两个命题:Y 是安全的 → \rightarrow X是安全。

在这里插入图片描述

结合上图,在B接收到外部环境challenger的输入数据之后,进行适当变换(图中红色部分,也即是进行模拟),模拟A的challenger,输入给A。B根据A的输出,适当地变换输出值,输出给外部环境,完成挑战。因此,B对Y的游戏转嫁到A对X的游戏上了。目的是将下面条件关系关联起来:A成功攻破X[公式] B成功攻破Y,或者说 只要X不安全 -> 那么Y就不安全。

3 一个通俗的例子

下面我们通过一个伪随机生成器(PRG)来构造一个单次定长的加密算法。具体为下图所示。本文默认读者知道这个知识点。需要注意的是,伪随机生成器的结果是确定的,也即是在下图s不变时,两次调用PRG得到的结果是一样的。其中s是随机数,理解为种子seed。
在这里插入图片描述

该PRG-base Enc加密方案(记为X)的intuition是,如果PRG的生成结果G(k)是随机的,那么通过与消息m异或,得到随机的密文c。两次输入相同的m,密文是相同的。因此,该方案只能抵抗Eavesdropping攻击,无法抵抗选择明文攻击Choose plaintext attack (CPA)。

这里我们要证明命题条件:

Thm: G是安全的PRG → \rightarrow X在Eavesdropping攻击下安全。

其中G是我们的前提假设,X便是我们的加密方案。其中,G所对应的敌手是B,X所对应的敌手是A。

在讲解上面定理的证明之前,我们先讲两个游戏,来定义”成功攻破一个协议“,为后面的证明提供必要的知识储备。


第一个是敌手B攻击G的游戏。

如下图所示,B的挑战者chal有两种方式生成w,第一种是使用伪随机数生成器生成w0,第二种随机地生成w1. 然后,挑战者随机地选择两个w中的一个,让敌手B来判断该w是随机的还是伪随机的,如果B的输出b’ 满足b’=b,那么B挑战成功,否则B挑战失败。

在这里插入图片描述

如果chal给B的是w1,那么B挑战成功的概率为1/2.因为w1是随机生成的。

表示为 P r w ← { 0 , 1 } l ( n ) [ B ( w ) = 1 ] = 1 / 2 Pr_{w\leftarrow\{0,1\}^{l(n)}}[B(w)=1] = 1/2 Prw{ 0,1}l(n)[B(w)=1]=1/2 (1)

其中B(w)表示敌手对w的判断。B(w)=1表示敌手B成功的事件。

如果chal给B是w0,敌手B成功的概率表示为:

P r k ← { 0 , 1 } n [ B ( G ( k ) ) = 1 ] Pr_{k\leftarrow\{0,1\}^{n}}[B(G(k))=1] Prk{ 0,1}n[B(G(k))=1] (2)

我们已经知道,G是伪随机的生成器(pseudorandom generator),所以,满足下面的不等式关系:

∣ P r w ← { 0 , 1 } l ( n ) [ B ( w ) = 1 ] − P r k ← { 0 , 1 } n [ B ( G ( k ) ) = 1 ] ∣ ≤ n e g l ( n ) \left| Pr_{w\leftarrow\{0,1\}^{l(n)}}[B(w)=1] - Pr_{k\leftarrow\{0,1\}^{n}}[B(G(k))=1] \right| \leq negl(n) Prw{ 0,1}l(n)[B(w)=1]Prk{ 0,1}n[B(G(k))=1]negl(n) (3)

通俗的理解是,敌手B无法区分由G生成的w和随机生成的w,除了极小的成功概率negl(n).

读者可能疑惑(3)式是怎么来的。它是我们的前提假设,即前面提到的”G是安全的PRG“。如果”G是安全的PRG“,那么G就满足(3)式。

第二个是敌手A攻击X的游戏。

注意的是X便是我们所构造的加密协议。

在这里插入图片描述

我们使用上图来表示该游戏。其包含两个对象,敌手A和挑战者Chal,其中A是一个黑盒子,我们并不知道/不关心它的内部逻辑。该游戏的过程是,A生成两个长度都为n的字符串m0和m1。Chal随机地选择m,计算出密文c,让A来判断c是使用m0还是使用m1来构造的。如果b’=b,表示A挑战成功,否则挑战失败。

如果上图中的w是随机获取的,那么显而易见,A挑战成功的概率为1/2. 具体表示为

P r [ P r i v K A , Π ~ e a v ( n ) = 1 ] = 1 / 2 Pr\left[ PrivK_{A,\tilde{\Pi}}^{eav} (n) = 1\right] = 1/2 Pr[PrivKA,Π~eav(n)=1]=1/2 (4)

如果w是使用伪随机数生成器生成的,w = G(k), 那么概率表示为:

P r [ P r i v K A , Π e a v ( n ) = 1 ] Pr\left[ PrivK_{A,\Pi}^{eav} (n) = 1\right] Pr[PrivKA,Πeav(n)=1] (5)

如果下面不等式成立,就可以说明我们所构造的加密协议X(也表示为 [公式] )是安全的:

P r [ P r i v K A , Π e a v ( n ) = 1 ] ≤ 1 / 2 + n e g l ( n ) Pr\left[ PrivK_{A,\Pi}^{eav} (n) = 1\right] \leq 1/2 + negl(n) Pr[PrivKA,Πeav(n)=1]1/2+negl(n)(6)

因为敌手A只根据密文c0和c1无法区分m0和m1这两个消息。或者说成功的概率不大于一半,除了negl(n)的概率。


Reduction Security Proof。

强调一下,我们的目标是构造逻辑命题:

Y 是安全的 [公式] X是安全的,其中Y是我们的前提假设:G是安全的PRG;X是我们所构造的协议。如果我们能够构造这个逻辑命题,即可完成我们的证明。

根据上面所述的两个游戏,正式地,“Y 是安全的 [公式] X是安全“这个逻辑命题等价式表示为:

∣ P r w ← { 0 , 1 } l ( n ) [ B ( w ) = 1 ] − P r k ← { 0 , 1 } n [ B ( G ( k ) ) = 1 ] ∣ ≤ n e g l ( n ) \left| Pr_{w\leftarrow\{0,1\}^{l(n)}}[B(w)=1] - Pr_{k\leftarrow\{0,1\}^{n}}[B(G(k))=1] \right| \leq negl(n) Prw{ 0,1}l(n)[B(w)=1]Prk{ 0,1}n[B(G(k))=1]negl(n)

→ \rightarrow

P r [ P r i v K A , Π e a v ( n ) = 1 ] ≤ 1 / 2 + n e g l ( n ) Pr\left[ PrivK_{A,\Pi}^{eav} (n) = 1\right] \leq 1/2 + negl(n) Pr[PrivKA,Πeav(n)=1]1/2+negl(n)

下面开始我们的证明。


在这里插入图片描述

上图是为了reduction proof,将上面所述的两个游戏合并而来的,可以看到,现在由B来模拟敌手A的挑战者,其它的部分没有变化。这里,我们关心的是灰色背景的内容。

跟前面第二个游戏一样,我们分两种情况。

1)第一种是如果w是随机生成的,那么显而易见,上面式子(1)和式子(4)是相等的。

P r w ← { 0 , 1 } l ( n ) [ B ( w ) = 1 ] = P r [ P r i v K A , Π ~ e a v ( n ) = 1 ] = 1 / 2 Pr_{w\leftarrow\{0,1\}^{l(n)}}[B(w)=1] = Pr\left[ PrivK_{A,\tilde{\Pi}}^{eav} (n) = 1\right] = 1/2 Prw{ 0,1}l(n)[B(w)=1]=Pr[PrivKA,Π~eav(n)=1]=1/2(7)

2)如果w是通过伪随机数生成器生成的,那么,上面的式子(2)等于(5),

P r k ← { 0 , 1 } n [ B ( G ( k ) ) = 1 ] = P r [ P r i v K A , Π e a v ( n ) = 1 ] Pr_{k\leftarrow\{0,1\}^{n}}[B(G(k))=1] = Pr\left[ PrivK_{A,\Pi}^{eav} (n) = 1\right] Prk{ 0,1}n[B(G(k))=1]=Pr[PrivKA,Πeav(n)=1](8)

因为这里A的挑战者是由B构造的,当B收到w=G(k)的时候,B接着使用该w来构造密文c = w ⊕ m b w\oplus m_{b} wmb, 然后将c发送给A。因此,这种情况下,B和A挑战成功的概率是相等的。

根据我们已经获得的不等式(3)(copy如下)

∣ P r w ← { 0 , 1 } l ( n ) [ B ( w ) = 1 ] − P r k ← { 0 , 1 } n [ B ( G ( k ) ) = 1 ] ∣ ≤ n e g l ( n ) \left| Pr_{w\leftarrow\{0,1\}^{l(n)}}[B(w)=1] - Pr_{k\leftarrow\{0,1\}^{n}}[B(G(k))=1] \right| \leq negl(n) Prw{ 0,1}l(n)[B(w)=1]Prk{ 0,1}n[B(G(k))=1]negl(n) (3)

将(7)(8)带入(3),可得

∣ 1 / 2 − P r [ P r i v K A , Π e a v ( n ) = 1 ] ∣ ≤ n e g l ( n ) \left| 1/2 - Pr\left[ PrivK_{A,\Pi}^{eav} (n) = 1\right] \right| \leq negl(n) 1/2Pr[PrivKA,Πeav(n)=1]negl(n),等价于上面的(6)式,即 P r [ P r i v K A , Π e a v ( n ) = 1 ] ≤ 1 / 2 + n e g l ( n ) Pr\left[ PrivK_{A,\Pi}^{eav} (n) = 1\right] \leq 1/2 + negl(n) Pr[PrivKA,Πeav(n)=1]1/2+negl(n) ,表示PPT敌手A在游戏2中成功的概率不大于一半,除了negl(n)的概率,换一句话说,敌手A无法区分两个消息所对应的密文. B的执行时间是多项式的,得证。

这里我们构造了“只要式子(3)成立,那么式子(6)成立“的逻辑命题,完成了上面强调部分的内容,得证。

总结:

1、密码协议的安全性证明需要严格定义“什么是安全的/不安全的”。仅仅使用文字描述“X是不安全的”是很笼统的,因此,我们一般使用Game的方式来定义。一个game中有两个parties,一个是敌手,另一个是challenger。前者试图破坏协议的安全,后者是好人。不同的协议game基本是不同的。

2、reduction proof本质上是一个构造/证明一个逻辑命题:Y 是安全的 → \rightarrow X是安全的。Y是我们的前提假设,X是我们所构造的所要证明的协议。Y和X两个命题中,我们就涉及到4个parties,分别是Y的challenger,Y的敌手,X的challenger和X的敌手。在reduction proof中,我们让Y的敌手来模拟X的challenger。要求是:(1)Y的敌手所模拟的challenger够“逼真”,使得X的敌手无法区分它的challenger是真实的还是模拟的,除了negligible(极低)的概率;(2)所模拟的challenger的执行时间是PPT的。我们通过这样的方式来链接 两个命题:Y 是安全的 → \rightarrow X是安全。

3、很多时候reduction proof使用了反证法。有时候正面证明比较困难,反向证明简单,目的是降低证明难度。因此反证法在reduction proof不是必须的。

都看到这里,点个赞 呗

如有错误,欢迎指正,谢谢

reference

(梯子自备) https://www.youtube.com/watch?v=zHMecblCmAM&list=PL4wmOqlgHT2lBQfChNbkNaTlJOXrqIlHe&index=3

《Introduction to Modern Cryptography, second edition》, page 65.

猜你喜欢

转载自blog.csdn.net/liangyihuai/article/details/119713230