零知识证明技术研究

1 引言

零知识早在70年代提出,到现在已经有40年的时间,在研究零知识证明方面,虽然已经取得了很大的成就,但仍有许多问题需要进一步努力探索,近年来已成为密码学研究的核心课题。零知识证明的基本理论是当代大部分密码学协议的基础,对当代密码学产生了深远的影响,在比较广泛的信息安全协议的设计中起着很大的作用。零知识证明,通俗的说,就是证明者可以在不给验证者透露任何自己的资料的前提下,也能让验证者相信某个信息是正确的。它在实质上是一种协议,在这个协议中,一方面关系到验证者,另一方面关系到证明者。其中的一方,我们称为证明者,通常用A表示,另一方我们称为验证者,通常用B来表示。在协议执行过程中,证明者向验证者B声称已收获了一些信息,通过一系列互动验证A和B,验证或证明,或拒绝一个声称,在这一过程中,验证者B没有得到主人的具体内容信息中说,这是一个新的想法。

2 零知识证明的特征

二十世纪是信息的时代,信息已成为关系到社会发展的一种重要的储备资源,世界的信息化已成为当今社会发展的核心,在信息社会中起着非常重要的作用,大到国家安全,小到人民日常生活,密码学的出现保证了数据信息的安全性,丰富事实证明零知识证明在密码学中的应用,是不可忽视的。在由Gold wasser等人提出的零知识证明后,证明者和验证者之间的联系必须是“互动的”。“非交的互零知识”的概念是八十年代后期Blum等人提出了。其概念使用一个随机串,用来代替交互的过程,实现了零知识证明系统。基本上,它的应用领域是大型网络,需要执行大量密码协议。零知识证明系统中,一个人可以在不泄漏任何信息的前提下,确定他拥有这个秘密[1]。“零知识证明”是由Goldwasser等人在二十世纪八十年代早期提出的。证明者能在不向验证者提供任何自己信息的前提下,使验证者相信某个结论是正确的,这就是零知识证明的本质。零知识证明本质上是一种涉及两个或两个以上当事人的协议,即一个由两个或两个以上的当事人完成的一系列步骤。向验证者证明他或她相信他知道或有消息,但过程不泄露任何有关证明的资料给验证者。传统的零知识证明分为,交互的零知识证明系统,和非交互式零知识证明系统。但是它们的本质都是一种协议,就是指多个参与者,使用的一系列特定步骤,目的是为了实现指定的任务。它们大体包括以下三个特征:

(1)该协议是一个有序的过程从开始到结束,每个步骤必须按顺序执行,并不能执行下列步骤之前的前一步完成。

(2)该过程需要多个参与者,可以执行一个任务,虽然通过执行一系列的步骤,但是它门不构成某项协定。

(3)必须通过进行该协议能实现一些指令的执行。

在一个零知识证明系统中,一定包含两个部分,一个部分是证明,另一个部分是验证。证明者显示的验证是正确的,或者说,证明有知识,但没有透露任何有用的信息来验证。

3 零知识证明系统

3.1零知识证明系统的动机

我们指出,最重要的一点是零知识证明是验证者不能获得“知识”。我们没有给出知识的定义,而是给出一个非常公平的例子:没有知识。这种方法是足够的加密问题。零知识的定义要求我们必须先考虑A与B之间的一个对话。第一,如果对话是单方面的,同时,这个对话,A只能说,B只能听。因此,我们可以推断,A在这个对话中并没有获取到任何关于B的信息,因为B很容易确定这个任务的结论;如果B反问A这个图是不是哈密尔顿图,因此不管A如何回答,我们能确定B从A回话中获取了知识。假设,B的判断能力增加了,那么我们就说B从对话中得到了信息,相反,假设B在对话后,对这个图的判断能力并没有改变,我们定论B没有从这个对话中得到任何信息。假设系统中的所有用户都在公共可访问存储介质上保存各自的密钥加密文件系统备份。同时,假定在某个时刻,用户A希望将一个文件的记录发送给另一个用户[2]。最简单的方法就是简单地记录一个发送到B的一个明确的方式,以这种方式B是没有办法知道是否一个信息是真的记录。通过他的钥匙给B,一个可以证明他送到B的记录是正确的,这种方式会让所有的信息泄露给B。因此,不仅要让B相信给了他正确的记录,也是保障了信息安全,零知识证明系统是追求“动机不漏的冗余信息”。

3.2 零知识证明的一般过程

证明方以及验证方同时包含某个函数,这个函数是相同的,或一系列的数值。零知识证明的一般过程如下:

(1)证明者必须向验证者发送随机值,这个随机值必须满足一定条件,因此,这个随机值也称为“承诺”。

(2)验证者向证明者发送必须满足指定条件的随机值,因此,这个随机值也被称为“挑战”。

(3)证明者在执行这个秘密的计算,并将这个信息传达给验证者,这个信息也被称为“响应”。

(4)验证者并对响应进行判断,一旦验证不成功,就表明证明者不具备他所知道的“知识”,返回这个过程。相反,继续从第一步开始,连续进行这个过程多次。

如果每次验证成功,就可以方便地相信当事人有一定的知识。在这个过程中,验证者自始至终,都没有得到任何关于知识的信息。

3.3 零知识证明的优点

根据一系列的零知识证明协议,其具备的优点主要有以下几点:

(1)使用零知识证明,安全性不会退化,因为它具有零知识属性。

(2)具备高效性,整个过程中计算量比较小,双方交换的信息同样少。

(3)目前,大部分零知识证明相关技术,通常避免直接应用于有政府限制的加密系统,同时这也给相关产品的出口带来了很大的机遇。

4零知识证明协议

4.1 基本的零知识证明协议

零知识的数学分析,需要使用分割技术来实现,假设证明了信息的一部分,而这个信息是一个非常困难的问题,解决基本零知识协议包括以下步骤 :

(1)一个新的解决方案是证明者利用位承诺方案来提交。

(2)验证者不能由新难题得到关于旧难题的所有信息,并且证明者向验证者透漏这个新的难题。

(3)验证者问者要向他证明,新老问题是同构的,即上一步的解决必须解决的新问题。

(4)证明者同意。

(5)验证者和证明者重复执行上面几步。

这种证明的操作背景极其复杂,应慎重选择问题和随机变化,使问题在多次迭代后无法得到原始问题的任何信息。

4.2并行的零知识证明协议

基层的零知识系统证明包含A和B之间的多次交换信息,可以把它们合并完成:

(1)A利用其信息和多个随机数将问题转化为多个不同的同构问题,然后利用其信息和随机数求解多个问题。 A提交这多个新难题的解法。

(2)A向B透露这n个新难题。B无法在这些新问题中得到任何关于原问题或其解法的所有信息。

(3)对每一个问题,B要求A向他证明新旧问题是同构的,并且他在第2步中使用的解法,并判定这就是新难题的方案。

(4)A对多个新问题中的任何一个都表示通过。

因此,这个协议似乎在实践中是安全的,因为没有人知道如何证明它。在某些环境中,某些协议的某些问题可以并行运行,同时,必须保持其零知识属性 [3]

4.3 非交互式的零知识证明协议

二十世纪八十年代,那时候人们已经发明了非交互类型的零知识的证明系统。非交互式零知识证明协议不需要任何相互作用,并证明可以发布协议,证明该协议是有效的任何人谁需要时间来验证它。此基本协议类似于并行零知识证明,但只使用单向散列函数代替B :

(1)A只是利用他的信息和多个随机数,并把这个问题转化成多个不同的同构问题,然后根据他的信息以及随机数处理多个新难题。

(2)A呈交多个新问题的解决方案。

(3)A作为一个特定的单向散列函数的输入,把所有这些提交的解决方法,保存到这个单向散列函数。

(4)A提出在第3步中生成的多个位,针对某个新难题依次取出多个位中的第i个位,假设它是0,我们就能断定新旧问题是同构的,假设它是1,则断定他在第2步中提交的解决方案,并证明它就是这个新问题的解决方法。

(5)A必须将第2步中的任何协议及第4步中的解决方案都公开。

(6)B以及其他人,都可以判断从第1步到第5步,是否都能被顺利进行。

该协议工作的原因是单向散列函数作为一个公正随机位发生器。如果一个是欺骗,他必须能够预测单向散列函数的输出。但是,它是不可能强制散列函数或猜测它会有什么位置 [4]。这种单向散列函数实际上是B在协议中的替代品--在第四步中随机选取了两个证明之一。

5  零知识的身份证明应用案例

假设,我们把合法的个人信息当成是证明者的知识,证明者必须通过零知识证明向验证者确定自己的身份信息,这个过程就是就是零知识身份认证。所谓的零知识身份认证就是零知识证明在身份认证领域的一些应用。当前的完善的零知识身份认证大体有四种。由于篇幅有限,下面仅对Fiat—Shamir这个案例做进一步解释说明,并对其具有的完备性,合理性和零知识性一系列特性进行合理的证明[5]

Fiat—Shamir身份的认证协议进程协议主要是:A在多次迭代进程中向B提交他的身份。

 (1)一次建立阶段,该阶段必须完成以下两个任务,并且在多次迭代进程之前一次完成。 

①信任中心T选择和发布随机模拟模块的N,N = PXQ。p,Q为两个大素数,可信中心的P和Q机密性(RSA)。

②申请人A选择一个和12互素的秘密值S,1小于等于S小于等于n一1。计算=MOD,最后向可信中心T申请v做他的公钥。

(2)协定信息。t轮中的任何一轮会产生以下三条通讯:

①AB:x=mod。

②BA:e∈{0,1}。

③AB:y=r? rood. 

(3)协议执行。 以下进程在迭代了t轮之后,轮与轮之间是断断续续进行的并且必须相互独立的。假设这t轮都成功了,则B就确定了A的身份。

①A确定一个随机数r,1小于r小于n一1。计算x=r mod n,发送给 B。

②B随机的确定一个挑战比特位W,W∈{0,1},发送给A。

③假设A收到W=O,则运行y=r。假设收l J W=l,则计算Y等于mod n。然后向B发送响应Y。

④B验证y2=?v.mod n.如果检验成立,则B可以接受A的申请,否则就会拒绝。

身份认证系统协议的完备性,合理性和零知识性证明。

(1)完备性证明:

①当W=O时,y=r,.lJy2等于r2.又等于r mod,所以?v x=r mod。 故Y等于v rood n。此时B验证提示成功。

②当W=1时,Y=rsmodny2=r S mod n。?y e=X o P=r s。所以y2=? V mod n。此时B也能确定验证是成功的。所以,一旦A和B都是真实的,并按照协议计算无误,则B对A的身份认证将是成功的,因此Fiat—Shamir身份认证系统必须满足完备性。

  1. 合理性证明:

①如果第三方要欺骗B。首先第三方可以悄悄的通过Fiat—Shamir认证协议的第一步骤。然后,在第三步中,~U W=0或W=l的概率都是一半,是由于W是随机产生的。

②当W=0时,y=r。此时第三方一旦把他第一步中产生的随机数r,转发给B即可经过验证,此次过程冒充胜利。

③但当W=l时,Y=r s mod。此时,第三方为了计算Y的正确发送给B,首先要正确计算S的值。但s2等于v mod n。为了由v求出s的信息,困难性和分解大整数n的困难性是相同的。所以,第三方得到正确的s值的概率基本为0。因此,当W=l时,第三方假装A会不会成功。由1)和2)可以得出,进程执行一次,第三方冒充A正确的概率是一半。则执行t次,第三方假冒A成功的概率为1/2的t次方。所以说,在t很大时,第三方冒充A正确的概率近乎是0。所以说,Fiat—Shamir身份认证协议必须要满足其自身合理性[6]

(3)零知识证明:S是一个秘密值,只有一个知道,所以S是A的身份知识。在这个协议的执行,B没有得到任何关于S本身的信息。即使B知道V,y和x的值,但是找不到正确的s值。 原因是N的平方根本身是个难题。因此,菲亚特夏米尔认证协议满足零知识。 认为佩吉有一定的知识(如一些不解决长期问题的解决方法),零知识证明是在不披露知识的内容的前提下,验证者维克多在佩吉 和维克多证明他们有知识。首先,让我们看一看佩吉和维克多之间的对话:佩吉:“我可以解密的密文C”维克多:“我不相信。请证明。”佩吉:“关键是K,你可以看到解密到M的消息。”维克多:“那么我现在也知道了密钥以及信息。”在这里,虽然佩吉证明了他有一定的知识(重点K和明文M),但要披露维克多的知识。一个更好的对话是:佩吉:“我可以解密加密的C消息。”维克托:“我不相信。请你开始证明。”佩吉:“让我们使用一零知识协议,我将证明我的知识在任何高概率(但不会透露任何有关情况的信息给你)。”维克托:“好的”。佩吉和维克托通过零知识证明协议,可以解释使用零知识洞穴的例子,有一个C和D之间的门,只有人们知道咒语打开。佩吉知道咒语,并试图证明给维克托,但他不想透露它 [7]。步骤如下:

①维克多站在A点。

②佩吉开始走并走进洞内,到达C点或者D点。

③当佩吉消失在洞中的时候,Victor走到B点。

④维克多可以指定左转或者右转,要求佩吉从该通道出来。

⑤佩吉从维克多要求的通道出来,如果有必要就用咒语打开密门。

⑥佩吉和维克多重复步骤1)至5)n次。 

如果佩吉不知道这个魔咒,那么只出了一条路,如果你是按的要求在每轮Peggy Peggy的通道中达成一致的话,那么所有n时间的猜测概率是1 / 2N。经过两轮,佩吉只有一个65536分的机会来猜测。因此,维克托可以假设,如果所有16次佩吉的是正确的,那么她必须知道门点之间的C点和D点如何打开。让我们看一个零知识证明的例子。如果图是同构的,很难判断两个图是否同构于一个非常大的图,这是一个NP完全问题。对于图G1和G2,如果有一个一一对应的函数f,定义域是顶点集的G1,f的范围是G2的顶点集。当且仅当[ G1,G2 ]是G1的一侧,[ F(G1),F(G2)]是G2的一侧,表示G1和G2同构。如果,佩吉明白G1和G2之间是同构的,佩吉要使用零知识列协议向使维克多证明G1和G2是同构的[8]

①佩吉变换G1产生另一个图H,并且使得H和G1同构。由于佩吉知道G1和H同构,也等同于知道了H和G2是同构的。

②佩吉把H送给维克多。

③对于下面两个问题,维克多可以选择其中的一个,要求佩吉向其证明。然而,维克多不能要求两者都证明。

④佩吉按照维克多指定的要求证明。

⑤佩吉和维克多重复以上步骤多次。

这里假设佩吉不知道G1和G2之间的同构性,佩吉只能创建一个图或同构到G1或同构到G2。每一轮佩吉都有一半的机会猜测维克托的选择。由于佩吉在每个回合的协议产生一个新的H,所以无论多少回合后,协议维克多没有收到任何关于佩吉的信息,他不能理解的同构G1和G2从佩吉的回答。在这里,我们引入了一个简化的方案为知名菲戈菲亚特-夏米尔零知识认证协议。信任仲裁指定了一个随机两个大素数的乘积n,实际上最少达到512或高达1024。仲裁员产生一个随机数V,使X2等于 V mod n,即模N的V的平方,和v-1mod N.存在。佩吉的公钥是V,然后,运算出的最小整数:S 的那个呀SQRT(V-1)mod n作为佩吉的私人密。实施身份证的协议如下 :

①用户佩吉取随机数r,这里r<m,计算x= r2 mod m,把x送给维克多。

②维克多把一个随机位b送给佩吉。

③若b=0,则佩吉将r送给维克多;若b=1,则佩吉将y=r s 送给维克多

④若b=0,则维克多验证x=r2 mod m ,从而证实佩吉知道sqrt(x)

如果b=1,那么维克多需要验证x=y2.v mod m,进一步证实佩吉是知道s的。这本身就是一项验证,直到维克多相信佩吉知道s,佩吉和维克多可以将此协议重复多次[9]

6 总结

零知识证明技术是近年来各个应用领域信息安全加密的重点研究对象。但由于应用领域环境的特殊性,传统的加密技术并不能直接应用于当前的复杂环境。本论文主要讨论了零知识证明的一般过程和技术特点,总结了零知识证明系统的特征和优点。但是加密技术是一项新型且复杂的技术,涉及的应用范围比较广泛,我们国外的一些零知识证明研究不是太深。想要更深入的了解研究零知识证明,还需要全体从事研究人员做进一步的研究。

发布了27 篇原创文章 · 获赞 8 · 访问量 3166

猜你喜欢

转载自blog.csdn.net/luweiwei123/article/details/104248333