《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

Public-key Cryptosystems in the Random Oracle Model 

Standard model  VS  Random Oracle model

标准模型:一种广泛接受的安全模型,值得注意的是标准模型不一定是最为安全的模型。

随机谕言机模型:存在至少一个函数可以当做谕言机的模型,只能证明不存在“出厂硬伤”。

相同点:都是为了构造安全证明的模型,但是对各种安全风险的捕获方式不同。

不同点:设计安全规约时,调用敌手能力解决潜在困难问题的设计不同。

CPA安全的RSA方案----在随机谕言机模型下

方案构造如下:

                          《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

安全定义:

                              《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

证明:

构造实验如下:

                                         《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

注意:我们目前是要证明CPA安全,所以由标准的CPA安全模型,我们得到RSA方案的CPA实验:

1.   一个随机函数被选择。

2.  运行GenRSA算法生成系统参数,敌手获得公钥,并且敌手具有哈希请的能力。最后敌手输出两个消息m0,m1.

3. 随机选择一个比特,对上述两个明文之一进行加密,得到挑战密文,将密文发送给敌手。同样的,敌手可以继续进行哈希询问。

4. 最后敌手输出猜测的比特,如果和挑战者选择的比特相同,则实验结束。

这里有一个点很重要:哈希询问是否能帮助敌手获取攻破敌手的优势?

答案是不能,敌手能否攻破密码方案,与哈希请求几乎无关,进一步,我们尝试计算敌手成功的概率。

                                        《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

敌手攻破方案,看来无非两种情况,第一种是请求哈希询问后成功攻破,第二种是不请求哈希询问成功攻破。如果 《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结那么,非常容易,成功概率仅仅取决于敌手的擦侧结果,我们得到《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

很明显敌手成功的概率小于等于二分之一。

如果不请求的概率不等于0,那么由条件概率公式得到下述表达式:

                                      《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

因为,敌手在不请求哈希询问的条件的概率不为0,那么对于敌手而言,计算结果是完全随机独立的,所以敌手更不可能获得关于这两条明文的任何信息,所以敌手的成功仅仅取决于自己的猜测值。所以得到:

                                                                   《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

到现在为止,我们得到引理13.3:

                           《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

根据敌手攻破方案的概率如下描述:

《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

如果我们能进一步证明请求的概率为0 或者是可以忽略的,我们就能形式化的得到敌手成功的概率小于等于二分之一。

另外,此时我们可以发现,敌手成功的概率依然是按照随机二选一来确定的,那么敌手的优势到底在哪?从计算表达式来看,如果请求的概率是不可忽略的,那么非常直观的就能看出来,敌手成功概率小于等于二分之一 + 不可忽略优势。那么敌手将能够以不可忽略的概率解决RSA中的困难问题。那么解决这个困难问题的概率恰好等于请求询问的概率。然而,困难问题是已知难解的,所以这个请求的概率也是可以忽略的。

证明如下,现在将敌手的攻击规约到解决困难问题上:

                                    《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

在这个规约算法中:

1. 模拟者随机的选择一个k,作为哈希函数的输出,这也是一个困难问题的实例。

2. 调用敌手作为子程序,给与公钥,建立一个哈希列表,初始为空。当敌手与模拟者进行交互时,模拟者控制随机谕言机做如下回复:

            如果请求的x ,  在哈希列表中存在,那么直接输出之前回复的内容。

            如果x满足c1的计算方法,返回之前随机选的k.

            如果x不满足C1的计算法,则返回一个随机值k.

3. 在某一个时刻,敌手输出两个明文M1和M2。

4. 模拟者随机选择一个比特,并计算C2,将挑战密文发送给敌手。

5. 模拟者完成模拟过程,如果存在某一次敌手请求的x 满足C1的计算方法,则输出该x。

PS:(1)模拟者只掌握公钥N,e ,模拟者不掌握私钥d.

           (2)  C1 是随机选择的,这是一个困难问题实例,对于模拟者而言,是不知道r的, 则如果敌手能够得到r, 则意味着敌手攻破了困难问题,敌手计算获得了私钥d,则能够获得r 。

         (3)随机谕言机选择k作为预设,如果敌手正好询问到r = x 时,则返回随机数k作为H(x)。

模拟的不可区分性:

         (1)在现实中 C1 是使用算法得到的,在模拟中时随机选择的。这个是不可区分的。

         (2)在现实中H为某一个哈希函数得到,在模拟中一直设置为一个随机值。这也是不可区分的。

         (3)**C2 相当于** “一次一密”难度。最后的密文选择与一次一密不可区分。

所以,在这个模拟过程中,对于敌手而言,无法区分现实协议与模拟协议,所以这个模拟是成功的。

规约是否成功?

            模拟者不掌握私钥,不能从C1中获取r的值,这是一个RSA实例。但是敌手得到了r, 这就意味着敌手解决了RSA问题实例。所以就将敌手的攻击成功规约到了解决RSA问题实例上。又因为RSA问题是困难的,所以我们也得到了请求概率是可以忽略的。

CCA安全的RSA方案----在随机谕言机模型下

抵抗CCA安全的RSA方案描述如下:

                                  《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

这个CCA-RSA方案中用到了对称加密。

KGEN:运行秘钥生成算法,得到RSA的相关参数,和之前的方案相同。

ENC: 这里使用H(r) = k , 作为对称秘钥加密消息。

DEC: 解密则为先解出r, 进一步使用对称秘钥解出明文消息。

在证明中,和前边一样,我们依然要考虑敌手是否进行哈希请求。

如果敌手不进行哈希请求,那么敌手将不能学习到任何的关于r 的信息,则整个方案的安全可以规约到对称加密上。

如果敌手进行哈希请求,那么敌手将会以可以忽略的概率攻破方案,因为GENRSA是一个困难问题。

定理描述如下:

                               《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

 

证明:

                                《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

CCA模型描述:

1. 选择随机函数H。

2. 运行GenRSA算法获得系统参数。敌手可以获取公钥,哈希询问,解密询问。敌手最终输出两个消息m0,m1。

3. 模拟者随机选择一个比特 和  r, 给与敌手挑战密文。敌手可以继续进行询问,但是不能询问挑战密文。

4. 敌手输出一个比特。如果敌手输出的比特正确,则实验结束,输出1。

概率描述如下:

                                          《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

                                                              《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

所以,定义如下:

                                 《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

规约算法如下:

《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

1. 模拟者运行GenRSA 生成系统参数,随机选择r 并计算得到C1

2. 设置解密谕言机列表,如果敌手请求解密,则按照如下方式解密,输入<c1,c2>:

           如果C1 = c1 , 模拟请求解密谕言机解密C2。

           如果C1 != c1, 模拟者计算r ,然后计算k = H(r) ,然后使用这个k 解密。

                              计算H(r) 的方法如下:如果(r,k)在哈希列表中,则返回k,否则,选择一个随机的值为k。

3. 在某个时刻,敌手输出两个明文消息m0 m1, 模拟者随机选择比特,输出挑战密文。敌手可以继续询问预言机。

4. 当敌手输出他的猜测比特时,模拟者也输出选择的比特。

PS:

      (1)模拟不可区分性:敌手在安全模型中的视图 必须和 敌手在规约算法中的视图分布相同。模拟者的视图也必须相同分布。

      (2) 模拟者并不知道RSA私钥,仅可通过敌手访问解密预言机解密。

所以,我们可知规约的成功概率和安全模型中的概率关系如下:

                                           《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

显然,因为在安全模型中 和 规约算法中 要求了同分布。

进一步得到:

                                                  《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

                     《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

在下来的证明中,需要处理的一个复杂的点就是在模拟者不知道解密秘钥时,对密文进行解密询问,和上文描述的类似,这里使用一个三元表格来描述解密请求。

详细描述如下:

                                《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

                                   《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

1 随机选择K ,初始化三元组,这是一个RSA实例。

2 敌手可以发起解密请求,回答方法如下:

           (1)如果有询问过或者存在C1 ,则使用对应条目的k解密。

           (2)否则选随机数作为K,进行解密。

             当敌手请求r时,计算C1,并按照如下返回:

                      (1) 如果存在对应条目,则直接返回K。

                    (2)如果缺r 条目,则存储r,返回K。

                   (3)否则随机的选择K,返回K,存储整个条目。

3 在某个时刻,敌手输出两个明文消息m0,m1。模拟者选择随机的比特加密,返回对应挑战密文。

4.最后如果表中存在解决RSA实例的条目,输出R。

PS: 因为在缺少N的分解因子的情况下,是不可能解出r的,如果最后解出了r, 那么就是敌手发动了有效的攻击。

敌手在安全试验和规约算法中的视图是同分布的,所以有:

《Introduction to Modern Cryptography》 第13章 公钥密码中的随机谕言机模型 内容总结

所以询问的概率是可以忽略的,解决问题的困难问题的概率是可以忽略的。