【非交互式零知识证明】(上)

文章目录

  • 【非交互式零知识证明】(上)
    • 1.交互式证明系统
      • 交互式证明系统的定义
      • 通俗解释
    • 2.零知识证明
      • 零知识证明的定义
      • 通俗解释
    • 3.交互式零知识证明典型应用
      • (一)图同构问题
      • (二)哈密顿回路问题

在了解非交互式零知识证明之前,首先需要了解非交互式证明系统的概念。那么交互式证明系统和非交互式证明系统有什么区别呢?下面将给出介绍。

1.交互式证明系统

交互式证明系统的定义

对于语言L∈{0,1}*,以及一对交互图灵机<P,V>,其中p拥有无限的计算能力,称为证明者,V为概率多项式时间的验证者。如果满足以下条件,称<P,V>为语言L的交互证明系统

1.完备性(Completeness):对于任何公共输入x∈L
Pr[(P,V)(x)=1∣x∈L]≤1−negl(∣x∣)Pr[(P,V)(x)=1|x∈L]≤1-negl(|x|) Pr[(P,V)(x)=1∣x∈L]≤1−negl(∣x∣)
2.可靠性(Soundness):对于任何公共输入x∈L和任何无限计算能力的证明者P*
Pr[(P∗,V)(x)=1∣x∉L]≥1−negl(∣x∣)Pr[(P*,V)(x)=1|x∉L]≥1-negl(|x|) Pr[(P∗,V)(x)=1∣x∈/L]≥1−negl(∣x∣)
其中,negl(|x|)为一个可忽略函数。

通俗解释

这里,我理解的完备性就是,对于正确的声明,验证者"总是(因为是1减去一个可忽略函数)"接受。也就是说,一个诚实的验证者是能够被一个诚实的证明者用一个真声明来说服。而可靠性指的是,对于错误的声明,验证者"总是"拒绝。也就是说,任何欺骗的证明者都不能够让诚实的验证者相信一个错误的声明。

在计算机复杂性理论中,交互证明系统(Interactive proof system)是一种抽象机器,其将计算建模为两个参与方(证明者和验证者)之间的消息交换。通过交换信息,参与方证明某个声明(x∈L)成立。其中:

证明者(Prover):拥有无穷的计算能力,且不可信;

验证者(Verifier):拥有受限的计算能力(概率多项式时间),且诚实。

交互式就是证明者与验证者之间采用交互的形式来完成证明过程。

交互式证明系统的过程如下:

相比之下,传统的数学证明系统是这样的:

相比而言,传统数学证明存在两个特点:

1.证明是短而简洁的。因为,验证者没有很多精力去读很长的证明。

2.验证者可能获取一些知识。比如证明者所采用的定理、证明的方式等等,一旦验证者获取了证明,那么它也可以向其他人证明。

交互证明系统可以改变上述两个特点,使其能够满足密码学的需求。

2.零知识证明

知道了非交互式证明系统,离我们的非交互式零知识证明又进了一步,下面介绍零知识证明:

零知识证明的定义

对于语言L∈{0,1}*,以及一对交互图灵机<P,V>,其中p拥有无限的计算能力,称为证明者,V为概率多项式时间的验证者。如果满足以下条件,称<P,V>为语言L的零知识交互证明系统

1.完备性(Completeness):对于任何公共输入x∈L
Pr[(P,V)(x)=1∣x∈L]≤1−negl(∣x∣)Pr[(P,V)(x)=1|x∈L]≤1-negl(|x|) Pr[(P,V)(x)=1∣x∈L]≤1−negl(∣x∣)
2.可靠性(Soundness):对于任何公共输入x∈L和任何无限计算能力的证明者P*
Pr[(P∗,V)(x)=1∣x∉L]≥1−negl(∣x∣)Pr[(P*,V)(x)=1|x∉L]≥1-negl(|x|) Pr[(P∗,V)(x)=1∣x∈/L]≥1−negl(∣x∣)
3.零知识性(Zero-knowledge):对任意概率多项式时间验证者V*,都存在一个概率多项式时间的模拟器S,使得任意的x∈L,
<P,V∗>(x)≈cS(x)<P,V*>(x)≈~c~S(x) <P,V∗>(x)≈ c S(x)
其中,negl(|x|)为一个可忽略函数,≈c表示计算不可区分。

通俗解释

简单来说,零知识证明就是:证明者(prover)能够在不向验证者(verifier)提供任何有用的信息的情况下,使验证者(verifier)相信某个论断是正确的。所谓零知识,通俗的来讲,就是既证明了自己想证明的事情,同时透露给验证者的信息为“零”。零知识证明可以分为交互式和非交互式两种。

上述三个性质可以这样理解:

完备性:若断言为真,则验证者总是接受证明;

可靠性:若断言为假,则验证者总是拒绝证明;

零知识:即验证者无法从该证明过程中获取额外的信息。

3.交互式零知识证明典型应用

知道了零知识证明和交互式证明系统之后,我们来看看交互式零知识证明的两个典型应用,然后将与非交互式作出比较。
首先来看一下NP问题中的零知识证明:

(一)图同构问题

图同构(Graph Isomorphism)定义

公共输入:两个同构的图G0(V,E0和G1(V,E1)。

假设存在一个映射φ使得G1=φG0,那么证明者要向验证者证明这一点而不会透露φ的信息,具体的零知识交互证明过程如下:

1.首先,证明者随机产生一个置换π,并计算图H=πG1,然后证明者将H发送给验证者;

2.然后,验证者随机生成一个比特值α∈R{0,1},并将α发送给证明者;

3.随后,证明者根据α做出不同的相应:

· 如果α=1,证明者发送β=π给验证者;

· 如果α=0,证明者发送β=πφ给验证者;

4.最后,验证者这边计算:

· 如果α=0,那么βGα=πφG0=πG1=H,验证通过;

· 如果α=1,那么βGα=πG1=H,验证通过。

我们可以看到,泄露的信息只有π或者πφ,由于π是随机产生的,模拟器可以模拟证明者和验证者之间的交互,并且交互信息和真是交互是计算不可区分的。

(二)哈密顿回路问题

密顿回路的定义

哈密顿难题:给定一个图G,找出该图的一个哈密顿回路。

公共输入:一个无向图G,定点数量为n

具体的零知识交互证明过程如下图所示:

1.首先,证明者随机加密n个定点,即产生一个随机置换将N1,N2,…,Nn映射成为B1,B2,…Bn;然后设置Bij的值,如果(Bi,Bj)是一条边,则Bij=1,否则Bij=0。证明者将Bi和*Bj放入n+Cn2*个黑盒中,并发送给验证者;

2.验证者随机生成一个比特值α∈R{0,1},并将α发送给证明者;

3.证明者根据α做出不同的响应:

· 如果α=0,证明者把打开所有黑盒的钥匙和置换都发送给验证者;

· 如果α=1,证明者把打开一个HC回路*(Bij,Bjk,Bkl,…,Bti)*的钥匙发送给验证者;

4.验证者根据α做出不同的验证:

· 如果α=0,验证者打开所有的黑盒,并验证其中一个是否是G的同构(上面已经介绍过同构的概念),如果不是,则拒绝;

· 如果α=1,验证者打开指定的黑盒,验证是否所有打开的*Bij*都是1,。如果不全是,则拒绝。如果未拒绝,进行下一轮证明。

我们可以看到,当α=0时,验证者获取的仅仅是一个G的同构;当α=1时,验证者确实得到了对应图的哈密顿回路,但其中的映射并未透露,所以验证者仍然无法获取G的哈密顿回路,这就是零知识证明。

现在已经get了交互式零知识证明,距离非交互式零知识证明越来越近啦,我们下期再见,敬请期待!

ps:本人也是小菜鸡一枚,有什么不对的地方欢迎批评指正(`・ω・´)

【非交互式零知识证明】(上)相关推荐

  1. 云中「秘密」:构建非交互式零知识证明---探索零知识证明系列(五)

    本文作者:郭宇 Once exposed, a secret loses all its power. 一旦泄露,秘密就失去了全部威力 ― Ann Aguirre 这已经是本系列的第五篇文章了,这一篇 ...

  2. 零知识证明学习(三)—— 非交互式零知识证明(zkSNARKs)

    非交互式零知识证明 本节主要介绍一种新的零知识证明-zkSNARKzkSNARKzkSNARK,zkSNARK:zero−knowledgeSuccinctNon−InteractiveArgumen ...

  3. zkSnarks:QAP上构造零知识证明

    协议一:抽样验证:prover向验证证明它知道一个d阶多项式 (Prover向verifier证明知道一个基于原电路R1CS约束正确插值形成的多项式p(x),使得p(x)=t(x)h(x)) veri ...

  4. Schnorr协议:非交互零知识身份证明和数字签名

    本文首发公众号区块链之美!致力于区块链技术研究,传播区块链技术和解决方案.区块链应用落地.区块链行业动态等. 摘要:本篇文章介绍Schnorr的两大应用场景:从交互式零知识身份证明到非交互零知识身份证 ...

  5. 零知识证明应用到区块链中的技术挑战

    零知识证明应用到区块链中的技术挑战 李康1,2, 孙毅1,2, 张珺3, 李军4, 周继华5, 李忠诚1 1. 中国科学院计算技术研究所,北京 100190 2. 中国科学院大学,北京 100049 ...

  6. 零知识证明(zero-knowledge proof)

    零知识证明(zero-knowledge proof) 在密码学中,零知识证明(zero-knowledge proof)或零知识协议(zero-knowledge protocol)是一种方法,通过 ...

  7. 什么是零知识证明(ZK Proof)?Web2.0通往Web3.0的入口技术

    古老的难题 女:你爱我吗? 男:爱! 女:怎么证明? 男:-- 零知识证明的定义 零知识证明(Zero-Knowledge Proof)也叫做最小泄露证明,能充分证明自己是某种权益的合法拥有者,又不把 ...

  8. 零知识证明在区块链中的应用

    零知识证明在区块链中的应用 一.引言 二.相关理论 1. 区块链 2.零知识证明 三.区块链中零知识证明的应用 1.zk-SNARK 2.ZeroCash 四.总结 参考文献 一.引言 在国家重视和政 ...

  9. 零知识证明学习资源汇总

    本文将继续会持续进行更新,更新后的版本将在 Github 和知乎上发布,欢迎关注. Github 地址:https://github.com/sec-bit/learning-zkp/blob/mas ...

最新文章

  1. 增加数据_Photoshop XMP元数据沉积造成文件量增加
  2. Vue入门:Vue项目创建及启动
  3. 虚机大比拼之HYPER-V
  4. 整合 centos安装python的介绍
  5. html resize 最小,Html5 Canvas resize
  6. 黑历史有救了,淘宝可以改账号名了!网友:终于可以“重新做人”了
  7. 生成swc库文件若干方法
  8. LINUX内核内存管理kmalloc,vmalloc
  9. Atitit 软件体系重要理论学科 v2 s67.docx Atitit 软件重要理论学科 目录 1. 计算理论这门学问 2 1.1. 学科的产生 2 1.2. 在这些领域中,自动机理论和形式语言理论
  10. nc加载不了java,用友NC系统使用过程中常见问题和解决方法
  11. html前端论文参考文献,web前端论文参考文献
  12. java 怎样判断拼图是否可还原_拼图游戏可解性判断,自动生成可解拼图
  13. PAKDD2020 阿里巴巴智能运维算法大赛 总结(初赛33,决赛19)
  14. 深圳超美海边烧烤场 深圳户外烧烤攻略
  15. 【0031】SQL查询--简单查询--投影运算
  16. C语言中的静态变量和静态函数
  17. Oracle根据中文首字母排序
  18. 计算机网络ping作用是什么,ping
  19. 【C语言】通讯录(文件版)
  20. aruba 交换机 简单维护

热门文章

  1. SQL中case when then用法
  2. 黑格尔:中国是一切例外的例外(转)
  3. 自然语言处理之使用gensim.Word2Vec训练词向量进行词义消歧
  4. setupdigetclassdevs没找到usb_充电就被植入木马,共享充电宝还没那么可怕
  5. c#Winform中menuStrip控件中ToolStripMenuItem排序说明
  6. Matlab:数模03-灰色预测
  7. 判断电话号码对应字母组合数
  8. 入门java第一天(1) java介绍(学习笔记)
  9. python 状态机设计(聊聊transitions)
  10. PaperBye一个可智能改重的免费论文查重网站。