《A Graduate Course in Applied Cryptography》Chapter 20 Proving properties in zero-knowledge (1)*

原文教材 与 参考资料:

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

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

        博客内容为对该书的学习笔记(包括但不限于翻译、额外绘图、注解、个人理解等),并非原创知识,仅帮助理解,整理思路.
 

本章节将讨论将sigma协议应用成为“知识的证明”,使用重绕技术和知识合理性,将有效的提取一个证据从任何的证明者处。使用sigma协议构造零知识方案,安全取决于声明的真实性,而不是任何确定的知识概念。例如在CP协议中,证明者向验证者证明自己掌握一个DH元组,但是并非一个确定数值的DH元组,其的确掌握一个DH元组这件事就是声明的真实性。

20.1 languages and existenial soundness

开头说到证明“证明的真实性”,其实就是证明一种关系R,而该关系一定能用某种语言来描述,下面给出真实声明的描述语言定义:

true statement: 对于关系R,一个statement y 存在符合关系R的x。

false statement: 对于关系R,一个statement y 不存符合关系R的x。

定义LR,被称为由R定义的语言,其中LR是一个集合, 该集合中包含所有正确的statement.

给出一个之前章节提到的CP协议中的关系R的定义:

 现在给出一个定义“existenial soundness”存在合理性:

        存在一个协议PV是sigma协议,并且该协议能够有效的证明存在一个正确的关系R,那么存在一个敌手A, 该敌手在Y空间上选择一个statement y(注意这个声明不一定是正确的),并将这个声明给与挑战者(验证者),然后,敌手和验证者V(y)进行交互,如果敌手能够使得验证者(挑战者,诚实的)接受这个声明statement, 但是y 属于Y不属于LR,那么我们称该敌手赢得游戏,定义敌手的优势为ESadv[A,(P,V)],换句话说,如果敌手能够在不知道证据的情况下(也许没有证据)劝服挑战者接受这个输入,那么敌手赢得游戏。

定义:如果这个敌手的优势可以忽略,那么定义该协议具备“existentially sound”性质;

 20.2 Proving properties on encrypted data

       知识的证明可以应用到非常多的场景场景中,一种比较常见的是加密数据的证明,该场景如下图所示:

           

        A 使用了 B 的公钥加密了消息m, A希望在不打开密文的情况下,向Charlie证明Alice确实加密了消息m.

一个具备存在合理性 以及 SHVZK的sigma 协议可以被用来解决这个问题。但是,这并不是一个完善的解决方案。一个问题是HVZK仅仅只能在Charlie是诚实的情况下,在不泄露m信息的情况下证明这个消息。一种方法是,剥夺验证者自己产生随机挑战的能力,使用哈希函数来替代验证者随机产生挑战,即为Alice对加密的m产生一个非交互的证明;

此处,给出几个使用sigma协议证明加密数据的例子:

Example 20.1

对于EIgamal加密算法:

Alice使用Bob公钥加密消息m, 得到密文(v0, e0).  Alice使用Bill公钥加密消息m,得到密文(v1, e1).

那么实际上,我们需要实现的是如下的关系R,证明两个密文加密的是相同的明文:

 这里只需要Alice证明其具有\beta_{0}, \beta_{1}满足下列关系即可:

非常简单,使用线性的sigma通用构造即可, 即为 z1 = c*x1 + a, z2 = c*x2 + b 形式.

Example 20.2 

考虑这样一个例子,Alice此时使用Bob的公钥对同一个消息加密2次,得到两个密文,此时Alice企图向Charlie证明自己掌握的确是将一个消息加密两次,如下:

 这里有两种证明方法:

      方法1. 存在\beta = \beta_{0}-\beta_{1},那么按照sigma 对于线性的关系证明,只需要证明存在\beta即可。那么使用通用sigma协议即可。

     首先,生成随机数a,然后对a进行承诺。

     其次,接受挑战c.

     最后,计算z=\beta *c + a给验证者,显然验证者 g^z =?=(v0/v1)^c * g^a即可。

      方法2. 直接将这个协议看成CP协议,证明是一个DH元组。

特别的,ALice不一定要作为密文的生成方,实际上Alice可以从其他方接受密文(v0,e0)然后生成新的密文(v1,e1) = 。这是一种对消息进行重加密的有效方法。

Example 20.3 

在第三个例子中,我们考虑加密一个比特b = {0,1}, 然后Alice使用Bob的公钥对其进行加密,得到一个密文(v,e),此时Alice企图向Charlie证明自己的确是加密了一个比特。那么,Alice此时实际上想要证明的是这样一个关系R:

即为v,u,e为一个statement, b和bata是该statement的证据。那么,我们可以将该关系转化成一个对DH元组证明的关系:

 然而,实际上只加密了一个比特,所以需要使用OR-proof 来证明该事实,即为Charlie可知道要么存在b=1 ,u,v,e 是DH元组,要么b= 0,uv,e 是DH元组。但是,实际上Charlie并不知道其加密的是b= 0 或者 b= 1. 所以,进一步转化关系R如下:

 下面给出完整的Sigma 协议证明加密比特:

       证明者首先设定w0 和 w1即为两个加密对应的声明,接着初始化一对承诺值,然后证明者对该两个声明发送同一个挑战值,P计算回复Z,其中一个是用模拟器计算的结果Z,另外一个是诚实按照协议计算的Z,然后将两个回复发送给V,最终V可以验证两个statement都是合法的,意味着P的确加密了某一个比特。

Example 20.4

假设Alice有一个DH元组,然后Alice 使用Bob的公钥对该元组进行加密,得到三组密文如下:

 

 所以需要使用sigma 协议来证明这样一种关系:

那么,其实只要证明如下等式成立即可:

 使用sigma协议对于线性关系的证明,是容易得到该等式的。

Example 20.5 

使用例子20.4 我们可以得到一个对于加密一个比特的新的sigma协议,即为证明b ^ 2 = b. 在整数域中,只有b = 0 和 b = 1满足这种情况,0 ^2 = 0. 1^2 =1. 这里的知识合理性与HVZK属性与上文例子20.3是相同的。这里的确可以证明存在b , 0<= b < B , B 是大于2的,在下一个例子中,将证明该b满足一个线性关系b(b-1)***(b-(B-1)) = 0, 故对于b = 1 或 0 上述关系是成立的。

Example 20.6 

考虑这样一个例子,Alice使用Bob的公钥对两个明文进行了加密,明文是g^r1 ,g ^r2, 现在Alice企图证明r1 和 r2 之间存在一个函数关系f. f函数如下所述:

                                               

这里的系数及其个数是公开的,故我们需要使用sigma协议证明如下的关系R:

 Alice向Charlie证明其掌握如下的秘密值:

                     

满足如下的关系式:

 【完整协议待补充*

下面给出一个概念:language reduction  语言规约:

 使用这样一个规约,我们可以从R`得到R的一个sigma协议构造。

 20.2.1 A generic protocol for non-linear reations[待补充]*

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值