第5讲 零知识证明
- 格式:ppt
- 大小:676.50 KB
- 文档页数:37
详解:零知识证明(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-knowledge proof)在密码学中,零知识证明(zero-knowledge proof)或零知识协议(zero-knowledge protocol)是⼀种⽅法,通过该⽅法,⼀⽅(the prover, 证明者)可以向另⼀⽅(the verifier, 证明者)证明他们知道值x,⽽⽆需传达任何信息,除了他们知道值x。
零知识证明的本质是,通过简单地揭⽰信息来证明某⼈具有某些信息的知识是微不⾜道的。
⾯临的挑战是在不透露信息本⾝或任何其他信息的情况下证明拥有这种财产。
[1]完全同态加密随着我们对云基础架构的依赖增加以及我们的社交互动越来越依赖互联⽹,我们更加担⼼在线对话和将个⼈信息存储在云中等活动中的数据泄露。
完全同态加密是⼀种加密形式,可以解决由这些活动引起的安全性问题。
完全同态加密被视为信息安全的圣杯,因为它可以保护存储在云中或传输中的数据的私密性。
乍⼀看,“同态”⼀词可能看起来并不熟悉,但事实并⾮如此! “同态”表⽰相似,“同态”表⽰变化,因此,同态意味着两个代数结构之间的形式保留图。
同态加密是⼀种特殊的加密⽅法,它允许对加密数据⽽不是其明⽂进⾏数学运算。
这意味着⼈们可以在不知道数据是什么的情况下对数据执⾏这些操作并获得加密的输出。
要注意的这种特殊类型的加密的重要属性是,解密操作的加密数据应提供与对纯⽂本本⾝进⾏操作相同的输出。
安全多⽅计算⽬前,可信多⽅计算是⼀个研究⽐较⽕热的领域,但在⼯程上,单纯的可信多⽅计算⽅案并不够成熟。
⽬前⼯程多采⽤和硬件可信执⾏环境(TEE,Intel SGX为代表)技术结合的⽅案来实现可信计算,⽐如百度的可信数据计算(/product/calc?castk=LTE%3D)、蚂蚁⾦服的共享学习平台来源:。
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年代初提出的。
它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。
证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。