当前位置 博文首页 > zmrlinux:《A Graduate Coursse in Applied Cryptography》Chap

    zmrlinux:《A Graduate Coursse in Applied Cryptography》Chap

    作者:[db:作者] 时间:2021-09-10 16:39

    原文教材 与 参考资料:

    ? ? ? ? Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].

    ? ? ? ? 该书项目地址(可以免费获取):http://toc.cryptobook.us/

    ? ? ? ? 博客为对该书的学习笔记,并非原创知识,帮助理解,整理思路。

    本节主要针对EIGamal基本CPA版本,给出在随机谕言机模型下的安全证明与标准模型下的安全证明,此处的EIGamal是一个密钥封装方案。
    EIGamal 基本方案

    描述方案描述如下,下述方案是第一次提升出的EIGamal方案的变体描述:

    系统参数如下:

    一个素数循环群G,一个群生成元g,一个对称加密方案(E,D), 一个哈希函数H。

    算法步骤如下:

    tips: 这里为什么是用H(v,w) 而不是H(w)? 此处仅仅只是证明CPA安全性的情况下不需要区分这个区别,因为如果我们需要证明CCA的属性就必须考虑H(v,w)而不是H(w), 简单来说类似于一种绑定关系,该加密解密过程是由两个参与者共同完成的,否则,容易收到敌手恶意的修改v的值,然后发起解密请求从而学习到密文的相关内容,形式化安全性要求不能给敌手学习到关于密文的任何有意义信息哪怕一个比特位。

    算法描述比较简单,加密方产生随机数,并使用接收者的公钥协同自己的信息产生一个对称密钥k, 然后将对称密钥密文c和自己的持有的信息v发送给接收者。接收者收到密文对后进行解密。首先我们要确定在这个方案中,发送者和接收者各自掌握那些信息,整理如下图所示:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? 差异化的来看,此时两个参与方类似的各自掌握一套参数,一个整数域上的随机数,另一个是群生成元的标量乘法。

    11.5.1 Semantic security of EIGamal in the random oracle model

    安全定理:如果CDH假设成立,并且存在SS安全的对称加密方案,那么本方案就是语义安全的。

    具体来说,对于任意的SS敌手A在随机谕言机模型下攻击本方案,那么存在一个CDH敌手CA可以与本方案挑战者建立一个CDH攻击实验,并且存在一个SS敌手BA可以跟本方案挑战者建立一个SS攻击实验,其中CA,BA敌手都是SS敌手的调用者。

    对于CDH敌手而言,如果能够从哈希函数在(v,w)作为输入下正确计算得到密钥k, 然而,如果敌手能够得到密钥k意味着敌手可以攻破CDH假设。但是目前我们并不知道正确的解决CDH假设的方法(基于DDH假设,就算敌手直接攻破CDH问题,给出了g^{ab},但是我们无法判断是否正确,这就是DDH假设),所以我们简单猜测通过在敌手的所有Q次随机谕言机请求中找到正确解决的那个元组。

    故,我们需要证明下述不等式:

    ? ? ? ? ? ? ? ? ???

    进一步,现在构造攻击游戏,因为我们的目的证明方案的SS安全性,构建Game 0,Game 0 是SS安全的比特猜测版本,详细描述如下图所示,得到一个基本的敌手优势表达式如下所示:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Game 0

    敌手可以进行任意次的随机谕言机询问,但是只能进行一次加密询问(因为这是语义安全属性)。

    进一步构建Game 1,Game 1和Game 0完全相同,除了在初始化阶段没有建立初始的谕言机表格,所以只有当敌手在Game 1中进行询问,并且问到(u,w)时。Game 1 和? 0将会不同,其他时候这两个游戏运行都是相同的,我们定义询问到初始(u,w)时的事件为Z,使用switch lemma 引理,得到如下:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    如果Z事件发生,此时这两个游戏将会出现不一致的情况,如果这个询问在Game 0中,敌手将获得加密用的密钥k, 如果敌手在Game 1中发起这个询问,那么敌手将获得一个随机数。显然,在Z事件发生之前这两个游戏是相同的,也有一种说法为这些询问都是可模拟的,只有Z的那次询问时可规约的,因为敌手即使能够攻破这个方案,敌手也不会大肆宣扬自己是在哪次行动发起的攻击。然而,如果敌手具备真实的攻击能力,那么敌手一定会在Q次询问的某一次发动攻击。回到本文方案中,如果敌手此时询问到了(u,w),那么意味着敌手已经掌握了CDH攻击算法。因此我们调用敌手A构造敌手B-CDH去攻击CDH问题成功的概率最少为Pr[z]/Q。攻击游简单描述和上一篇博文中的内容相似,此处不在赘述。又因为Q是最大询问次数,所以B-cdh的优势为:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    在Game 1中,秘钥k仅仅被用来加密挑战明文,所以对称方案的SS安全与本文方案的SS安全直接相关,很容易将Game 1g改造成一个SS攻击游戏,构造B-SS直接调用A敌手作为子程序构建一个SS攻击游戏即可,得到SS敌手在Game 1下的优势为:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    综上所述,EIgamal 方案的SS安全证明完成。

    ?11.5.1 Semantic security of EIGamal without?random oracle?

    在本小节当中,该书给出了不使用随机谕言机下的EIGamal安全证明,在该证明过程中,基于DDH假设,将哈希函数Hash替换为一个安全的KDF,没有一个有效的敌手能够区分出安全KDF和哈希函数输出的区别,这里相当于将哈希函数替换为了一个KDF,哈希函数虽然存在各类不安全的隐患,在安全规约中比较难以处理,往往被理想化的设计为随机谕言机模型,但是KDF却是一个被证明SS安全的原语,根据本协议的具体要求,将原方案的Hash(u,v) 替换为KDF(x,y)。这样就可以得到本文引入KDF的安全证明,此处将哈希函数替换为一个安全的KDF,或者说一个哈希函数是安全的KDF这是一个比较合理的推测。使用通过哈希函数可以构造一个无条件安全的KDF是已经被提出的结论,但是这将都是基于DDH假设的,如果DDH假设不成立,那么我们依然可以使用基于随机谕言机模型的证明。

    这里先给出一个KDF的攻击游戏定义:

    ?

    ?安全性定理

    ? ? ? ? 如果DDH假设成立,哈希函数可以被看做为一个安全的KDF,并且对称加密方案是语义安全的,那么本方案是语义安全的。

    那么给出本方案的基本攻击游戏Game 0:

    ? ? ? ? ? ? ? ? ??

    此处需要明确敌手能够看到的信息有下述信息之加密公钥u, v:

    Game 1: 在game 1中,我们为了将游戏0转换为一个DDH攻击游戏,即敌手B-DDH可以调用敌手A去攻击DDH问题,我们修改挑战者的(1)步骤,随机选取r,然后产生w。那么对于敌手而言,Game 0 和 Game 1立刻组成了一个DDH-attack游戏,根据标准的DDH-attack游戏我们得到如下DDH敌手优势:

    ? ? ? ? ? ? ? ? ??

    我们可以很容易想到将Game 1封装成一个DDH挑战者,与敌手B-DDH组建一个攻击游戏,描述如下:

    ?Game 2:

    在Game 2中将哈希函数替换为KDF,使用上文提到的技术,直接构造出KDF攻击游戏,得到下述KDF敌手优势:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    在Game 2中,对称算法仅仅被使用来进行加密,由于本文方案中使用的是SS安全的方案,所以显然SS敌手在本文中优势为:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    综上所述,安全性得证。

    cs