《A Graduate Course in Applied Cryptography》Chapter 19 ID, sign from sigma protocols (2)

原文教材 与 参考资料:

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

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

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

19.2 From identification protocols to signatures

本节将Schnorr ID 认证协议转化成为一个数字签名协议,这个数字签名协议的安全性可以在随机谕言机模型下被规约到DL假设上。在后边的章节中,将会给出一个通用构造的具体实例。

这里从Schnorr 身份协议开始,该ID认证协议具有以下的几个基本构件:一个循环群及其生成元与其他系统参数,一个挑战空间C,一个哈希函数,该哈希函数将被建模为一个随机谕言机。基本的思想是将原来的ID认证协议中的挑战作为消息哈希的角色。直觉上,哈希函数扮演的是schnorr协议验证者的角色。下面给出基本Schnorr 签名协议的流程图:

      这签名算法目前是一种随机化算法的描述,但是这并非是必要,亦可以将其修改成去随机化的算法,去随机化的签名是非常有意义的,特别是避免弱随机攻击。我们将会把H建立为一个随机谕言机模型,然后该数字签名是安全的如果Schnorr 身份认证协议在窃听敌手攻击下是安全的。首先,考虑一个有利的对于窃听攻击的修改。

19.2.1 A useful  abstraction: repeated impersonation attacks

我们首先考虑一个增强的对于身份协议的的仿冒攻击,允许敌手可以进行多次的仿冒测试(抵抗多个同时运行的验证者实例,使用想用的验证密钥)。

攻击游戏19.1 (r-impersonation eavesdropping attack)对于一个给定的身份协议I = (G,P,V),一个正整数r, 敌手A运行攻击游戏如下:密钥生成与窃听过程与攻击游戏18.2 是相同的,唯一的区别是在仿冒攻击阶段,敌手A被允许同时与r个验证者进行交互。挑战者这里扮演的是那些验证者的角色,所有验证者都是用和秘钥生成阶段想用的验证密钥,如果敌手能输出任何一个验证者可以接受的输出,那么其赢得游戏。攻击游戏的描述如下图:

Key generation phase: 挑战者(这里是验证者)生成密钥对,并将验证公钥vk发送给敌手。

Eavesdropping phase: 敌手请求Q个由P和V交互产生的会话(窃听阶段)。挑战者按照既定的方案运行P和V之间的交互Q次,其中P使用私钥sk初始化,V使用验证公钥初始化vk. 挑战者将Q次交互产生的Q条信息发送给敌手。

Impersonation attempt: 敌手A可以并发的与最多r个验证者进行交互,挑战者这里扮演的验证者的角色,验证者使用相同的验证公钥,敌手如果能输出任何一个验证者可以接受的输出,则赢得游戏。(暗示敌手可以最多产生r个不同的伪造攻击,只要有一个能够通过验证即可赢得游戏,但是之前的攻击游戏18.2仅仅规定敌手最后只进行一次攻击)

      下述引理将展示r-impersonation eavesdropping attack 敌手的攻击优势等价于原始的eavesdropping attack.也就是说赢得上述攻击19.1不会比赢得攻击游戏18.2更容易。

引理 19.6 :

       有协议I为一个身份认证协议,对于任意的r-impersoonation eavesdropping 敌手A,存在一个标准的敌手窃听敌手B,B是A的一个封装。

证明:敌手B因为是一个标准的窃听敌手,只进行一次攻击,所以敌手B从随机数集合{1,2,...r}中随随机选择一个值w,然后作为A的封装算法,扮演A的挑战者。B在开始时从自己的挑战者处获得一个验证公钥vk,以及多个P和V交互的会话信息。在伪造攻击阶段,对于第J个验证者实例,如果B选择的w != J,此时B扮演验证者本身,如果J = W,则如同攻击游戏18.2中一样,由A和其B的挑战者直接进行交互。显然,A输出一个使得其中一个验证者接受的概率和B在攻击游戏19.1中成功的概率相等。更重要的是,B赢得攻击游戏的条件是如果B猜测可接受验证者的下标正确,猜测正确的概率为1/r。换句话说,B猜测A将会在第w次验证者实例(A可以对1-r中任意的验证者实例发起有效伪造攻击,B只能猜测是哪一次,所以B首先猜测是第w次),发起伪造攻击,对于A选择的第j个输出伪造,如果w = j 则B顺利调用一个有效伪造去与其挑战者进行交互。

引理19.6 的调用与如下所示:

这里需要注意的是,原始的Schnorr-ID协议->HVZK->如果ID抵抗直接攻击,则HVZK抵抗窃听攻击,使用模拟器Sim来证明。

引理19.6:r-伪造窃听敌手和标准伪造窃听敌手攻击困难相当,rID2adv[A,I] <= r*ID2adv[B,I]。

19.2.2 Security analysis of Schnorr signatures

现在展示schnorr's签名协议是安全的在随机谕言机模型下,如果Schnorr's ID 协议是安全抵抗窃听攻击的。安全性定理描述如下:

定理19.7 如果H被建模为随机谕言机,Schnorr's ID 协议是安全抵抗窃听攻击的,那么Schnorr签名协议也是安全的。具体来说,令A作为攻击随机谕言机模型下签名方案的敌手,则敌手具备询问随机谕言机和签名询问的能力,并最终进行签名伪造攻击。然后,存在一个 (Qro+1)伪造敌手B能够攻击SchnorrID协议通过窃听攻击的方式,即为敌手B可以在学习多个PV交互实例后,对任意的验证者(挑战者)实例进行仿冒伪造攻击,并且敌手A的优势如上式19.5所示。

证明思路:

        证明的整体思路为转换一个敌手能伪造签名的敌手A为一个能攻破Schnorr_ID协议的敌手B,这个敌手B不是一个标准的攻击Isch敌手,而是一个r-仿冒窃听攻击敌手,其中r数值上等于访问随机谕言机的上界+1。即为该敌手B可以对所有询问过随机谕言机的请求消息进行仿冒攻击,并且挑战消息那一次也必须先经过随机谕言机询问,然后才能进行挑战。

       证明的第一步是我们必须以某种方法回复A的签名询问,在不知道私钥的情况下。可以使用通过窃听到的消息来构造一个签名请求,将随机谕言机的回复H修改为给A的签名回复。这个修复技术会失败,仅仅如果随机谕言机需要在一个请求过的点上重复进行随机谕言机询问时。然而,随机谕言机的输入包含一个随机群元素,所以这个情况不太可能发生。

       一旦完成了签名请求回复的设计,我们认为如果敌手成功的伪造出了一个签名,他将有效的使用伪造签名对schnorr-ID协议发起一个r伪造攻击。再一次,我们利用H被建模为一个随机谕言机的事实。因为对于一个消息的签名伪造,该消息是挑战消息一定不能有对该消息的签名询问,对应的随机谕言机请求必须与其他会进行签名询问的随机谕言机请求回复不同,所以这个随机谕言机的回复本质上在schnorr协议上扮演的是一个挑战消息C的角色。我们不能预先知道哪个随机谕言机请求将会被用来作为伪造的签名的目标,这就是我们为什么要使用r-impersonation attack game. 换句话说,存在r+1个验证者,只要敌手B能够调用A产生一个合法的签名,那么意味着B赢得了r-impersonation attack game. 下面给出一个直观的规约调用图:

 Hq 和 Sq 分别为哈希询问与签名询问。

安全性证明:

        首先假设A输出一个伪造的消息及签名对,必须假设的前提是敌手A早已经在随机谕言机处请求过了,如果必要,我们修改敌手A来满足这个条件,即为敌手A伪造签名必须首先对该消息进行随机谕言机询问。这里我们思考一下,如果敌手不进行哈希询问,直接进行伪造,那么实际上挑战者等于无法将困难问题嵌入到H询问中,规约会失败。所以这里确保随机谕言机询问的总数最多为Qro+1.

        这里首先给出两个攻击游戏,Game 0本质上是原始的签名攻击游戏,该游戏是在随机谕言机模型下的。Game 1是一个略微修改过的游戏,Wj 定义为一个事件,即为A赢得游戏j的事件。下面,首先给出Game 0的定义:

Game 0:

       Game 0 Hash-Query:挑战者的运行于标准的签名攻击游戏中挑战者相同,并且这里给出一个数组Map作为随机谕言机,将消息M*群元素G 映射到一个挑战信息C上。此外,我们也继续维护一个数组Explicit Map, 将消息M* 群元素G 映射到一个整数Z上,这用来跟踪敌手首先进行哈希询问的点,即为敌手直接进行哈希询问的点,而不是间接询问(直接访问签名,由挑战者询问随机谕言机)的点。对于一个随机谕言机请求(mj,uj), 如果Map[ mj, uj ]没有被定义过,不论是先前询问过或者说是随机谕言机询问过,那么在此处我们显示的设置Explicit[mj,uj]为J,即为敌手对该消息mj进行了显示的随机谕言机询问。

     Game 0 Sign-Query: 上文给出了随机谕言机的设计,现在给出签名询问的回复设计,如果存在一个对消息mi的签名询问,挑战者循例运行签名算法,首先生成一个随机数alpha-ti 然后生成u = g^alpha-ti;接着对该数据Map[mi,ui]生成一个随机数c,如果该随机谕言机列表Map中早已经存在c或者被设定过了,则使用已经生成与设定过的值来替换“随机默认值”c。

    Game 0 forgery: 假设敌手提交一个伪造的签名(m,u,alpha) ,并且m是与其他已经提交的签名询问消息都不同的。根据我们的假设,敌手应该已经在先前提交过关于伪造签名消息的随机谕言机哈希询问,并且该消息对应的Explicit Map应当是显示的。如果伪造的是一个合法的签名,那么挑战者输出win, 敌手的优势应该不大于赢得游戏的概率。所以得到如下的表达式:

                          

 下面给出Game 0 中挑战者和敌手交互的详细流程图:

 

到这里,我们需要重新明确一个问题,为什么哈希询问是询问一个元组(m.u)?答案是简单地,schnorr-ID协议改造来的签名协议在计算c时,将m和u作为输入经过Hash计算得到c。

Game 1: 

Game 1 和 Game 0 相比是类似的,除了标号(1)的内容被删除了,其他都不变,这样根据difference lemma,我们得到了如下的不等式:

              

       如果删除了Game 0中的标号1语句,则在签名询问时如果挑战者随机选择的u 和 c 与敌手之前向随机谕言机请求的内容不一样,那么此时Game 0 和 Game1的区别显而易见。所以事件Z = 敌手在哈希询问处请求了(m1,u1)并且在签名处请求了m1的签名。对于第i次签名请求,因为挑战者在回复签名请求时是随机选取的uti,所以对于点(m,uti)在先前的请求(Qs + Qro +1)中出现的概率是(Qs + Qro +1)/ q. 所以请求两个相同的签名将会导致想用消息的签名结果不一致。那么,对于任意的签名请求时刻出现这种情况的概率为Qs(Qs + Qro +1) / q。这里有一个小点需要注意:

       如果敌手在Hash询问处进行了(m1,u1),并且又在签名询问中对m1进行了询问,并生成(u1`,alpha)发送给敌手,对于敌手而言这是合理的,因为实际上ui变了,所以其签名是合理的。在签名询问中使用的随机新鲜挑战类似于SchnorrID协议的诚实验证者。即为给出不同的C,使得证明者输出合理的证明。

      此时,很容易构造一个敌手B扮演r-impersonation eavesdropping 攻击游戏,其中r = Qro+1对于一个其r-impersonation eavesdropping挑战者而言。 然后B在Game 1中扮演A敌手的挑战者角色。所以就有了:

                                   

逻辑如下图所示:

        红色的框为初始化阶段,这里专门画出来进行强调与区分,这里的签名询问均是从r-inoeration处获得的窃听信息生成的,并且只要有敌手进行哈希询问,那么就会构造对应的验证者Vj作为潜在仿冒攻击中的验证者,实际上这里就是将困难问题嵌入到了Hash询问中,每一次哈希询问都潜在的放着一个困难问题实例。最终,敌手选择一个询问过哈希询问的消息进行仿冒即可,B只需要查找Explict表格将仿冒内容返回给对应的实体验证者Vj即可。值得注意的是现在这个游戏游戏 和 Game1 是不可区分的。并且,这里实际上是将一个Schnorr-ID 方案安全性规约到了r-reperation SchnorrID 方案的安全性上,属于是典型的方案到方案的规约,最终r-reperation SchnorrID协议的安全性又规约到了离散对数问题上。所以,我们有以下的规约优势:

Putting it all together. 

        现在将定理19.7 ,引理19.6 ,定理19.5 ,定理19.1 联合起来,我们将对签名的攻击规约到了DL问题上。

 推导过程如下所述:

       可见这个规约并不是非常紧致,特别是DL的乘法因子(Qro +1)比较大,因为Qro虽然小于超多项式的N,但是也绝不是一个小值。事实上,我们可得到一个更紧致的规约对该因子进行开根号。这里给出一个引理19.8,将引理19.6 做一个简单的直接规约到DL上,如下所示:

 证明:首先回顾A的攻击是如何起效的:

           (1)挑战者给与A一个验证密钥sk = u.

             (2)  挑战者给与A多个会话实例.

             (3)  A进行仿冒攻击,只要r个验证者有一个接受即可。

更详细的来说,挑战者能uti发送给敌手A, A发送utj给挑战者,挑战者给与对应的c。当收到所有这些挑战,A要么输出失败,要么输出一个伪造攻击消息对。所以,对于A的优势来说,其实是针对每个挑战(每个验证者)的进行成功攻击的优势概率之和。

                                          

       这里我们将敌手的行为其实简化了,直接认为其最终要么给出攻击要么直接失败,这并不是一个真正的严格限制。任何敌手进行这种描述时,对于其优势和效率是没有影响的。现在我们来描述DL敌手B是如何调用A来解决DL困难问题的:

           (1)B给与A一个验证密钥sk = u.

             (2)   B给与A多个会话实例.

             (3)  A进行仿冒攻击,如果是合法的。B此时重置这个A到输出成功伪造的状态之前,并给出一个新的其他挑战信息。

           (4)然后让A继续运行知道所有的挑战输出完毕,可以说是从1到i,重置,继续从i+1到r.

             (5)  如果敌手A输出另一个合法的签名伪造,那么我们说B在i处成功解决DL问题。

其优势显然是每次可能伪造成功的优势的叠加。 

所以有:

                                               

                 

针对上述不等式,我们应用以下的一个数学定理:

19.3 Case study:ECDSA signatures

ECDSA算法描述如下:

 值得注意的是,ECDSA不是一个强安全签名,(r,s) 和 (r,-s)都是合法的签名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值