第5讲 零知识证明

合集下载

详解:零知识证明(ZKPs)、类型、及其优劣势

详解:零知识证明(ZKPs)、类型、及其优劣势

详解:零知识证明(ZKPs)、类型、及其优劣势零知识证明(Zero—Knowledge Proof,ZKPs)允许用户既不泄露敏感信息,又可向他人证明自己知悉关键数据或拥有其所有权,例如钱包的私钥。

1. 了解 ZK 证明在上篇关于以太坊扩容方案的文章中,我们提到了零知识证明(Zero—Knowledge Proof,ZKPs)是一种证明方法,通过这种方法,一方(证明者, prover )可以在不透露任何实际信息的情况下,向另一方(验证者,verifier )证明它知道一个秘密或一个声明是真实的。

放到加密应用中,ZKPs 这种加密方法可在证明用户拥有钱包私钥的情况下不泄露私钥信息,从而保护了数据隐私。

例如你的交易数据对于系统来说是透明可追踪的,但采用零知识证明可以保护你的信息不会被贸然公开,某某的钱包有多少个比特币,某某买了多少个比特币之类的信息可以变成选择性隐私。

具体关于这类证明过程是怎么实现的?我们要先从受信任初始化阶段这个起点讲起。

许多分布式计算和密码学协议都设计了一个初始化阶段,我们称第一个阶段为初始化阶段(setup phase),第二个阶段为主阶段(main phase)。

主阶段通常会执行许多重复的任务,而初始化阶段只需执行一次,就能开启重复运行许多实例的主阶段。

对于一个多阶段协议(multi-phase protocol)而言,受信任初始化阶段(trusted setup phase)设置有其特殊性。

在受信任初始化阶段,密钥生成器会获取一个秘密参数和一个程序,然后生成两个可用的公钥,一个用于创建证明,另一个用于验证证明。

这两个公钥只需为给定程序生成一次的参数,后续用户则只需使用公共参数并相信秘密参数密钥的创建者会诚实行事并尽力保护他们。

这里就产生了一个辩证性的漏洞,因为知悉秘密参数便可生成假证明,从而欺骗验证者,因此秘密参数在受信任初始化阶段中其实有潜在安全隐患。

2. 零知识证明的类型ZKPs 有交互式和非交互式两种。

信息安全-知识的零知识证明

信息安全-知识的零知识证明

我们表示知识的零知识证明是一个证明者通过使一个论述的P 满足于PoK{(a1,a2......an)|P(a1,........an)}使得一个核实者信服。

这个概念是从Camenish和Stadler上汲取过来的(修改他们的理论使得PoK代替PK)。

B、主要的架构我们把知识的零知识证明当做是在构造块以及以单独的模块来描述它们。

知识的零知识证明显示这里的非交互式证明在随机预言模块是安全的。

在这个安全的证明里,我们表示这些协议的交互式模式的使用是不需要依靠随机预言模块并且能够使零知识使用协议的正常执行,这也就意味着零知识证明的顺序执行。

当交互式的知识的零知识证明用Fiat-Shamir 启发式理论在随机预言模式下实例化和协议在同时执行时,我们的证明就因为技术的原因被瓦解了,但是我们任然将我们的证明当做是为了执行的安全儿做的启发式的证明。

构建(spk,ssk,σ)服务器在Zq集合中选择x,y,z以及使得X=g^x,Y=g^y,Z=g^z.这个服务公共秘钥是spk=(q,G,GT,g, X,Y,Z),服务的私有秘钥是ssk=(x,y,z).服务器的状态σ是由一对集合组成。

它们初始化状态下是为NULL。

就像这样σ=({},{})。

我们把第一个组件成为σ.cur以及第二个组件称为σ.next.在所有的组件中,cur=|σ.cur|,next=|σ.next|。

注册:(φ,sk)←<RegS(ssk),RegC(spk)>1、客户端选择从Zq处选择d,r.用它们来构建M=(g^d)*(Z^r)并且将他们送到服务器端。

2、这个客户端以证明着的角色以及服务器端以核实者的角色存在与知识的零知识证明。

PoK{(d,r)|M=(g^d)*(Z^r)}.如果上述证明失败,则注册失败。

3、服务器端从Zq*产生一个a值,并且使得A=g^a.然后它形成了这个注册号s=(A,B=A^y,Zb=Z^ay(=B^z),C=(A^x)*(M^axy)并且将产生的注册号返回给客户端。

零知识证明(zero-knowledgeproof),完全同态加密

零知识证明(zero-knowledgeproof),完全同态加密

零知识证明(zero-knowledgeproof),完全同态加密零知识证明(zero-knowledge proof)在密码学中,零知识证明(zero-knowledge proof)或零知识协议(zero-knowledge protocol)是⼀种⽅法,通过该⽅法,⼀⽅(the prover, 证明者)可以向另⼀⽅(the verifier, 证明者)证明他们知道值x,⽽⽆需传达任何信息,除了他们知道值x。

零知识证明的本质是,通过简单地揭⽰信息来证明某⼈具有某些信息的知识是微不⾜道的。

⾯临的挑战是在不透露信息本⾝或任何其他信息的情况下证明拥有这种财产。

[1]完全同态加密随着我们对云基础架构的依赖增加以及我们的社交互动越来越依赖互联⽹,我们更加担⼼在线对话和将个⼈信息存储在云中等活动中的数据泄露。

完全同态加密是⼀种加密形式,可以解决由这些活动引起的安全性问题。

完全同态加密被视为信息安全的圣杯,因为它可以保护存储在云中或传输中的数据的私密性。

乍⼀看,“同态”⼀词可能看起来并不熟悉,但事实并⾮如此! “同态”表⽰相似,“同态”表⽰变化,因此,同态意味着两个代数结构之间的形式保留图。

同态加密是⼀种特殊的加密⽅法,它允许对加密数据⽽不是其明⽂进⾏数学运算。

这意味着⼈们可以在不知道数据是什么的情况下对数据执⾏这些操作并获得加密的输出。

要注意的这种特殊类型的加密的重要属性是,解密操作的加密数据应提供与对纯⽂本本⾝进⾏操作相同的输出。

安全多⽅计算⽬前,可信多⽅计算是⼀个研究⽐较⽕热的领域,但在⼯程上,单纯的可信多⽅计算⽅案并不够成熟。

⽬前⼯程多采⽤和硬件可信执⾏环境(TEE,Intel SGX为代表)技术结合的⽅案来实现可信计算,⽐如百度的可信数据计算(/product/calc?castk=LTE%3D)、蚂蚁⾦服的共享学习平台来源:。

零知识证明

零知识证明

在最小泄露协议中零知识证明需要满足下述两个性质。 (1)正确性。P无法欺骗V。换言之,若P不知道一个定理的证明方法,则P使V相信他会证明定理的概率很低。 (2)完备性。V无法欺骗P。若P知道一个定理的证明方法,则P使V以绝对优势的概率相信他能证明。 在零知识协议中,除满足上述两个条件以外,还满足下述的第三个性质。 (3)零知识性。V无法获取任何额外的知识。 我们把性质(1)和(2)称为零知识证明的正确性和完备性,而性质(3)称为零知识性。
设P表示掌握某些信息,并希望证实这一事实的实体,设V是证明这一事实的实体。假如某个协议向V证明P的 确掌握某些信息,但V无法推断出这些信息是什么,我们称P实现了最小泄露证明。不仅如此,如果V除了知道P能 够证明某一事实外,不能够得到其他任何知识,我们称P实现了零知识证明,相应的协议称作零知识协议。
性质
引入
顾名思义,零知识证明就是既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄露出去——即 给外界的“知识”为“零”。其实,零知识证明并不是什么新东西,早在16世纪的文艺复兴时期,意大利有两位 数学家为竞争一元三次方程求根公式发现者的桂冠,就采用了零知识证明的方法。当时,数学家塔尔塔里雅和菲 奥都宣称自己掌握了这个求根公式,为了证明自己没有说谎,又不把公式的具体内容公布出来(可能在当时数学公 式也是一种技术秘密),他们摆开了擂台:双方各出30个一元三次方程给对方解,谁能全部解出,就说明谁掌握 了这个公式。比赛结果显示,塔尔塔里雅解出了菲奥出的全部30个方程,而菲奥一个也解不出。于是人们相信塔 尔塔里雅是一元三次方程求根公式的真正发现者,虽然当时除了塔尔塔里雅外,谁也不知道这个公式到底是个什 么样子。从这个故事,我们可以初步了解零知识证明的概念。
属性
零知识证明需要满足三个属性。 1、如果语句为真,诚实的验证者(即:正确遵循协议的验证者)将由诚实的证明者确信这一事实。 2、如果语句为假,不排除有概率欺骗者可以说服诚实的验证者它是真的。 3、如果语句为真,证明者的目的就是向验证者证明并使验证者相信自己知道或拥有某一消息,而在证明过程 中不可向验证者泄漏任何有关被证明消息的内容。 零知识证明并不是数学意义上的证明,因为它存在小概率的误差,欺骗者有可能通过虚假陈述骗过证明者。 换句话来说,零知识证明是概率证明而不是确定性证明。但是也存在有技术能将误差降低到可以忽略的值。 零知识的形式定义必须使用一些计算模型,最常见的是图灵机的计算模型。

零知识证明研究综述

零知识证明研究综述

DCWTechnology Analysis技术分析79数字通信世界2023.061 零知识证明的概念零知识证明是某种权益的拥有者,即知道问题的解w 的人在不泄露任何有关问题的相关信息的情况下,能证明其确实掌握有w 。

1.1 注解我们有两个角色方,证明者(简称P )和验证者(简称V ),以及对两个角色方来说不是秘密的NP 关系R 、问题x 及答案w 这三个对象满足公式:R (x ,w )=1 (1)证明者知道问题的答案x ,他需要向验证者证明他知道问题x 以及问题的答案w ,但不泄露关于w 的任何信息。

以上描述等价于证明满足以下三个属性:(1)完备性。

此证明完成后能够让验证者确信证明者没有说谎,或者说证明者确实握有问题x 的某个解w 。

(2)合理性。

证明者不拥有x 的某个解w ,则不能令验证者相信他拥有问题x 的某个解。

(3)零知识性。

证明过程不能泄露关于w 的任何信息。

下面给出零知识证明这一概念的较为数学化的定义。

1.2 定义考虑等式R (x ,w )=1,这里x 是一个数学问题,w是该问题的未知的解,也即w 满足x 所定义的若干关系,R 是判断w 是否满足这些关系的判定程序,我们还要求R (x ,w )=1是一个NP 问题,即求解w 很难,但验证w 是该问题的解是容易的。

1.3 注解在这里,容易和困难的界定是由算法的时间复杂度决定的,即能否能在多项式时间内解决问题,即算法的时间复杂度是否低于多项式的维度。

对早期的零知识证明的协议来说,很多是必须要求证明是某种交互输入,例如下节给出的三色问题的一个零知识证明方案。

这种交互式证明是从概率角度零知识证明研究综述张正铨1,胡 森1,莫晓康 1, 2(1.中国科学技术大学,安徽 合肥 230026;2.国科创新研究院(厦门)有限公司,福建 厦门 361021)摘要:文章论述了密码学的新领域——零知识证明的概念、方法、算法、应用,以及其在区块链领域的若干应用。

深入浅出区块链——零知识证明

深入浅出区块链——零知识证明

深⼊浅出区块链——零知识证明引⼦ 隐私保护在区块链领域越来越受到重视,在隐私保护的种种⼿段中,零知识证明脱颖⽽出。

那么零知识证明到底是什么东西呢? ⾸先,我们抛出⼀个问题:如何在不说出秘密的情况下,让对⽅知道你已经知道了这个秘密?例⼦1:⽤户注册 ⽤户在系统注册时,系统不会保存⽤户的密码明⽂,⽽是保存了密码的哈希值;⽤户在登录系统时,只需要输⼊注册时的密码,系统会根据⽤户输⼊密码产⽣的哈希值与系统数据库保存的哈希值进⾏⽐对。

如果⼀致,则系统认为——当前登录⽤户知道该账号的密码。

这样,⽤户不需要告诉⽹站密码,就能证明⾃⼰的⾝份。

这其实就是⼀种零知识证明。

例⼦2:在校⼤学⽣实习 A要去公司实习,公司要求A在校所有功课没有挂科,才有资格加⼊公司。

A虽然所有功课都没有挂科,但都在61、62左右徘徊;A不想让公司看到⾃⼰的成绩单,于是A委托学校开了⼀个证明:证明A在校所有功课全部及格。

并交到了公司,加⼊了公司。

这样,A既没有暴露⾃⼰的确切考试成绩,⼜向公司证明⾃⼰满⾜要求。

这其实就是零知识证明。

如何从字⾯解释“零知识证明”? 零知识证明:零知识,即在证明的过程中不透露任何内情。

通俗的来讲,就是既证明了⾃⼰想证明的事情,同时透露给验证者的信息为“零”。

什么是零知识证明? 零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。

它早于区块链诞⽣,但由于区块链,它被⼤家所熟知。

它指的是证明者能够在不向验证者提供任何有⽤的信息的情况下,使验证者相信某个论断是正确的。

零知识证明可以分为交互式和⾮交互式两种。

 交互式零知识证明协议的基础是交互式的。

它要求验证者不断对证明者所拥有的“知识”进⾏⼀系列提问。

证明者通过回答⼀系列问题,让验证者相信证明者的确知道这些“知识”。

然⽽,这种简单的⽅法并不能使⼈相信证明者和验证者都是真实的,两者可以提前串通,以便证明者可以在不知道答案的情况下依然通过验证。

零知识证明

零知识证明

零知识证明零知识证明是一种密码学中的重要概念,指的是在一个交互式的协议中,证明者可以向验证者证明某个命题的正确性,同时不泄露任何额外的信息,除了证明该命题的正确性。

零知识证明的作用在于提高信息安全性和保护个人隐私。

它可以应用于各种场景,如电子商务中的身份认证、密码协议中的密钥交换等。

零知识证明的基本协议是三个步骤的互动过程:证明者向验证者发送一系列的消息,验证者根据收到的消息进行验证,最后得出结论。

具体步骤如下:第一步,证明者选择一些随机值,并计算出基于这些随机值的证明。

然后,证明者将这些随机值和证明发送给验证者。

第二步,验证者选择一个随机比特值,并发送给证明者。

证明者根据验证者发送的随机比特值来回答验证者的挑战。

第三步,验证者根据证明者的回答验证证明是否正确。

如果验证成功,则可以得出结论。

零知识证明具有如下特点:1. 完备性:如果命题为真,那么验证者能够接受证明者的证明,并得出正确结论。

2. 零知识性:证明者在证明过程中,不泄露任何关于证明技巧的信息。

除了命题正确与否以外,验证者无法获取到任何其他额外的信息。

3. 亮针度:证明者和验证者之间的交互是多轮的,每一轮都是以随机方式选择的,防止攻击者对信息进行分析和破译。

零知识证明的实现基于零知识证明系统,该系统由一个证明者和一个验证者组成。

通常,证明者拥有一些证据,他希望验证者相信这些证据是正确的,而验证者则希望证明者确实拥有这些证据。

在实际应用中,零知识证明可以用于匿名认证、电子投票等场景。

比如在匿名认证中,用户可以向第三方机构证明自己拥有某种身份或资格,同时不需要泄露任何个人信息。

在电子投票中,零知识证明可以用于证明某个投票者投票的正确性,而无需泄露该投票者的具体选择。

总之,零知识证明作为一种强大的密码学工具,可以在保护用户个人隐私的同时实现信息的安全验证。

它在各种场景中具有广泛的应用前景,并将在未来进一步推动信息安全和隐私保护的发展。

零知识证明及其应用

零知识证明及其应用

《网络安全》课程论文题目零知识证明理论及其应用学院计算机与信息科学学软件学院专业年级学号姓名指导教师成绩_____________________2014年11月16 日零知识证明理论及其应用摘要:“零知识证明”-zero-knowledge proof,是由Goldwasser等人在20世纪80年代初提出的。

它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

本文介绍了零知识证明的概念,并对零知识证明的一般过程进行分析.同时,阐述零知识证明的性质和优点.最后,综述了零知识证明的应用。

关键字:零知识证明身份认证交互式非交互式一、引言21世纪是信息时代,信息已经成为社会发展的重要战略资源,社会的信息化已成为当今世界发展的潮流和核心,而信息安全在信息社会中将扮演极为重要的角色,它直接关系到国家安全、企业经营和人们的日常生活。

密码学的出现给这些安全带来了保证,而大量事实证明,零知识证明在密码学中非常有用。

Goldwasser等人提出的零知识证明中,证明者和验证者之间必须进行交互,这样的零知识证明被称为“交互零知识证明”。

80年代末,Blum等人进一步提出了“非交互零知识证明”的概念,用一个短随机串代替交互过程并实现了零知识证明。

非交互零知识证明的一个重要应用场合是需要执行大量密码协议的大型网络。

在零知识证明中,一个人(或器件)可以在不泄漏任何秘密的情况下,证明他知道这个秘密..如果能够将零知识证明用于验证,将可以有效解决许多问题。

二、概念“零知识证明”-zero-knowledge proof,是由Goldwasser等人在20世纪80年代初提出的。

它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。

证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Okamoto 身份认证协议就是安全的。该证明过程的基本思想是:识别者 A 通过执行该认证协议多项式次向攻击者 Oscar 识别自己,假定 Oscar 能够获得识别者 A 的秘密指数
1 和 2 的某些信息,那么将可以证明
识别者 A 和攻击者 Oscar 一起能够以很高的概率在多项式时间内计算出 离散对数 ,这和我们认为离散对数问题是安全的假设 相矛盾。因此就证明了 Oscar 通过参加协议一定不能获得关于识别者 A 的指数的任何信息。
Goldwasser等人提出的零知识证明是交
互式的,也就是证明者和验证者之间必 须进行双向对话,才能实现零知识性, 因而称为交互零知识证明。

在交互零知识证明的研究中,目前受到关注的 有两种基本模型。一种是GMR模型,在这种模 型中,证明者具有无限的计算能力,验证者具 有多项式时间的计算能力。需要证明的是语言 成员问题,即输入I是否是语言L中的一个成员。 GMR模型不是真正的零知识证明,这是因为在 证明中,证明者向验证者揭露了有关知识的1比 特信息,即I∈ L是否成立。但除此之外,再没 有其他任何附加的信息泄露给验证者,通常称 这种交互零知识证明为成员零知识证明或定理 零知识证明。


另一种是FFS模型,在这种模型中,证明者 和验证者均具有多项式时间的计算能力,证 明者的目的不是向验证者证明I∈L,而是证 明他知道I是否属于L。 FFS模型是真正的零 知识证明,因为在证明中,验证者没有得到 任何信息,他连I∈L还是I L都不知道,但他 相信这个证明,通常称这种交互零知识证明 为知识零知识证明或身份零知识证明。
Hamilton回路零知识协议
许多计算上困难的问题可以用来构造零知识 协议。 在图论中,图 G中的回路是指始点和终点相 重合的路径,若回路通过图的每个顶点一次 且仅一次,则称图 G为哈密尔顿回路,构造 图 G的哈密尔顿回路是 NPC 问题。

假定 P知道图 G的哈密尔顿回路,并希望向 V证明这一事实,可采用如下协议: (1)P 随机地构造一个与图 G同构的图 W。并将 W 交给 V。 (2)V 随机地要求 P做下述两件工作之一:
n p和q, 计算
pq , p 公开 n , 保密
q 和 ;
2、 随机选择一个大素数
b 作为安全参数,同是选择一个公开的 RSA
加密指数; 3、 选择身份识别过程中要用到的 Hash 函数 h 。
信任中心 TA 向用户 A 颁发证书的过程描述如下: 1、 TA 对申请者的身份进行确认,在此基础上,对每一位申请者指 定一个识别名称
Name ;
m1 , m2 Z q ,并计算
mod p ,将计算结果发给信任中心 TA;
对信息进行签名。
2、 识别者 A 秘密地选择两个随机整数
v
m1 1
2
m2
s Sign ( Name , v ) TA 3、 信任中心 TA 计算
将结果 A。
C ( A) ( Name, v, s)作为认证证书颁发给识别者
在 TA 进行以上处理的基础上,Okamoto 身份识别协议中,识别者 A 和验证者 B 之间的过程描述如下: 1、 识 别 者 A 选 择 两 个 随 机 数
r2 X 1r1 2 mod p ;
r1 , r2 Z q
, 并 计 算
2、 识别者 A 将他的认证证书 C ( A)
( Name, v, s )
Quisquater-Guillon零知识协议

1990年,Quisquater和Guillon提出一种形象 的基本零知识协议的例子。如下图所示,该 图表示一个简单的迷宫,只有知道秘密口令 的人才能打开C 和D之间的密门。现在,P希 望向V证明P能够打开此门,但是又不愿意向 V泄漏P掌握的秘密口令。为此, P采用了所 谓的“分隔与选择”技术实现一个零知识协 议。
p和q;
2、 选择两个参数 1 , 2 Z p ,且 1 和 2 的阶均为 q ; 3、 TA 计算 可行的;
c log1 2 ,保证任何人要得到 c 的值在计算上是不
4、 选择身份识别过程中要用到的 Hash 函数 h 。
信任中心 TA 向用户 A 颁发证书的过程描述如下: 1、 TA 对申请者的身份进行确认,在此基础上,对每一位申请者指 定一个识别名称
零知识证明
概念
“零知识证明”-zero-knowledge
proof, 是由Goldwasser等人在20世纪80年代初 提出的。它指的是证明者能够在不向验 证者提供任何有用的信息的情况下,使 验证者相信某个论断是正确的。

1)A要向B证明自己拥有某个房间的钥匙,假 设该房间只能用钥匙打开锁,而其他任何方法 都打不开。这时有2个方法:(一)A把钥匙出 示给B,B用这把钥匙打开该房间的锁,从而证 明A拥有该房间的正确的钥匙。(二)B确定该 房间内有某一物体,A用自己拥有的钥匙打开 该房间的门,然后把物体拿出来出示给B,从 而证明自己确实拥有该房间的钥匙。后面这个 方法属于零知识证明。好处在于在整个证明的 过程中,B始终不能看到钥匙的样子,从而避 免了钥匙的泄露。
简化的 Feige-Fiat-Shamir 身份鉴别方案

在发放私人密钥之前,仲裁方随机选取一个模数n, n为两个大素数之积。实际中,n应至少为 512 位长, 尽量接近 1024 位。n值可在一组证明者之间共享。
Feige-Fiat-Shamir 身份鉴别方案
其他身份识别协议
Guillou-Quisquater 身份识别方案 Guillou-Quisquater 身份认证协议的安全性基于 RSA 公钥密码体制的安 全性。该协议的建立过程也需要一个信任中心 TA,TA 首先确定以下参 数: 1、 选择两个大素数
Name ;
m Zn
,计算
2、 识 别 者 A 秘 密 地d n 并将计算结果发给信任中心 TA;
3、 TA 对 ( Name, v ) 进行签名得到 中心 TA 将证书
s SignTA ( Name, v) ,信任
发给识别者 A。
可以看出,Guillou-Quisquater 身份认证协议的安全性与 RSA 公钥密码体 制一样,均是基于大数分解的困难性问题,该性质能够保证 Guillou-Quisquater 身份认证协议是计算安全的。
Schnorr 鉴别协议
Okamoto 身份识别方案 Okamoto 身份识别协议是 Schnorr 协议的一种改进方案。 Okamoto 身份识别协议也需要一个信任中心 TA, TA 首先确定以下参 数: 1、 选择两个大素数

在上述协议中,如果P不知道秘密口令,他只 能从来路返回到B点,而不能走另外一条路。 此外, P每一次猜对V要求他走哪一条路的概 率是1/2。因此,每一轮协议P能够欺骗V的概 率是1/2。执行n轮协议后,P成功欺骗V的概 率是1/2n。嘉定n=16,则执行16轮协议后,P 成功欺骗V的概率是1/216=1/65536。于是,如 果P能够16次按V的要求路线返回,V即能证明 P确实知道秘密口令。同时,V无法从上述证 明过程中获取丝毫有关P的秘密口令的消息。 所以,这是一个零知识协议。
和计算结果
X

发送给验证者 B;
3、 验证者 B 应用信任中心 TA 公开的数字签名验证算法 VerTA ,计
VerTA ( Name, v, s ) 来验证签名的有效性;
t e 1 e 2 1、 验证者 B 选择一个随机数 , ,并将 e 发给识别
者 A; 2、 识 别 者 A 计 算
y1 (r1 m1e) mod q

证明图 G和图 W 同构;
指出图 W 的一条哈密尔顿回路。
(3)P 根据要求做下述两件工作之一:
证明图G和图 W 同构,但不指出图 G或图 W 的
哈密尔顿回路; 指出图 W 的哈密尔顿回路,但不证明图 G和图 W 同构。
(4)P 和 V重复以上过程 n 次。

协议执行完后,V 无法获得任何信息使自己可以构 造图 G 的哈密尔顿回路,因此该协议是零知识证明 协议。事实上,如果 P 向 V 证明图 G 和图 W 同构, 这个结论对 V 并没有意义,因为构造图 G的哈密尔 顿回路和构造图 W 的哈密尔顿回路同样困难。如 果 P向 V指出图 W 的一条哈密尔顿回路,这一事实 也无法向 V提供任何帮助,因为求两个图之间的同 构并不比求一个图的哈密尔顿回路容易。在协议的 每一轮中,P都随机地构造一个与图 G同构的新图, 因此不论协议执行多少轮,V 都得不到任何有关构 造图 G 的哈密尔顿回路的信息。
零知识证明实质上是一种涉及两方或更多
方的协议,即两方或更多方完成一项任务 所需采取的一系列步骤。零知识证明必须 包括两个方面,一方为证明者P,另一方 为验证者V。证明者试图向验证者证明某 个论断是正确的,或者证明者拥有某个知 识,却不向验证者透露任何有用的消息。 零知识证明目前在密码学中得到了广泛的 应用,尤其是在认证协议、数字签名方面。

y2 (r2 m2e) mod q ,并将
y1 和 y 2 发给验证者 B;
y1 y2 e X 1 2 v mod p 来验证身份信息 3、 验证者 B 通过计算
的有效性。
Okamoto 身份认证协议与 Schnorr 身份认证协议的主要区别在于:当 选择的计算参数保证
Zp
上的离散对数问题是安全的,则可以证明
X
发送给验证者 B;
VerTA ( Name, v, s) TRUE 来验证信任
e Z b ,并将其发给识别者 A;
3、 验证者 B 选择一个随机整数
e y rm mod n ,并将其发送给验证者 B; 4、 识别者 A 计算
e b X v y mod n 来验证身份信息的有效性。 5、 验证者 B 通过计算
相关文档
最新文档