零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。

最小泄露协议中零知识证明需要满足下述两个性质:

(1)正确性。P(示证者)无法欺骗V(验证者)。换言之,若P不知道一个定理的证明方法,则P使V相信他会证明定理的概率很低。

(2)完备性。V无法欺骗P。若P知道一个定理的证明方法,则P使V以绝对优势的概率相信他能证明。

在零知识协议中,除满足上述两个条件以外,还满足下述的第三个性质。

(3)零知识性。V无法获取任何额外的知识。

我们把性质(1)和(2)称为零知识证明的正确性和完备性,而性质(3)称为零知识性。

零知识证明分为交互式零知识证明非交互式零知识证明:

交互式零知识证明:

V向P提问,若P知道证明则可正确回答V的提学问;若P不知道证明,则对提问给出正确回答概率仅为1/2。V以足够多的提问就可推定P是否知道证明,且要保证这些提问及其相应的回答不会泄露出有关P所知道的知识。

非交互式零知识证明:

非交互式的证明则不需要这种互动。但是会额外需要一些机器或者程序,并且需要一串试验序列,这个试验序列不能被任何人知道。有了这么一个程序和试验序列,证明机就能自动算出一个证明,并且能防止任何一方作假。

对于非交互式零知识证明,示证者可以公布证明,任何人可以花时间检验该证明的正确性,而交互式只能验证在交互时是正确的。

零知识证明的基本协议:

设P知道咒语,可以打开C和D之间的机关门,不知道者将走向死胡同中。

1)V站在A点;

2)P进入洞中任意一点C或D;

3)当P进洞之后,V走到B点;

4)V叫P:(a)从左边出来,或(b)从右边出来;

5)P按要求实现(以咒语,即解数学难题);

6)P和V重复执行(1)~(5)共n次。

若P不知道咒语,则只有50%的概率猜中V的要求,协议执行n次,则只有的机会完全猜中。

另一种形式:

1)P用其信息和某种随机数将难题转成另一种难题,且与原来的同构,A可用其信息和随机数解新的难题;

2)P想出新的难题的解;

3)P将新难题出示给V,但V不能由此新难题得到有关原问题或其解;

4)V向P提下述问题之一:(a)向V证明老和新问题是同构的,(b)公开(2)中的解,并明它是新难题的解;

5)P按V的要求执行;

6)P和V重复执行(1)~(6)共n次。

必须仔细选择适当问题和随机信息,使V即使重复执行多次协议也得不到有关原问题的任何信息。并非所有的“难题”都可用于零知识证明,但有不少可用于此。

用基于离散对数问题构造零知识证明:

公钥:,且  ,P要向V证明他拥有私钥,但并不像让V知道私钥的任何信息;

1)V选择一个随机数,并计算  ,并将发送给P;

2)P收到之后,计算 =   ,将发送给V;

3)V收到之后,计算 =   ,判断是否成立;

4)重复(1)~(3)n次。

这个的安全性依赖于解决离散对数问题的困难性。

现代密码学(五)——零知识证明相关推荐

  1. 零知识证明 - Groth16算法介绍

    看zk-SNARK的文章或者资料的时候,经常会碰到一些算法名称,比如Groth16,GGPR13等等.这些名称是由算法提出的作者名称或者名称首字母以及相应的年份组成.Groth16,是由Jens Gr ...

  2. 区块链中的密码学(五)-零知识证明简述

    本篇是这个系列的最后一篇,尽管在区块链中还有很多的密码学应用,将来会必然会更多,然而笔者认为,就今天我们有限的学习时间来讲的话,任何人都应该对信息的获取做减法.思来想去,选择了"零知识证明& ...

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

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

  4. PrivacyIN Week1课程回顾 | 张宇鹏博导开讲零知识证明密码学基础研究导论

    转自:PrivacyIN 隐私学院 前言 隐私学院[PrivacyIN]第一期ZK训练营课程精讲内容上线啦,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学 ...

  5. 记录我看的密码学方案中的技术,Shamir秘密共享,Schnorr零知识证明,EIGamal密码体制

    记录我看的论文中基于的技术,对他们进行大概介绍 Shamir 秘密共享方案 零知识证明 EIGamal密码体制 Shamir 秘密共享方案 1979年,Shamir提出的一个基于拉格朗日插值的(k,n ...

  6. 【密码学】Python用零知识证明实现地图三染色问题

    题目:用零知识证明实现地图的三染色问题(用三种颜色染色一个地图,保证任意两个相邻的地区都是不同的颜色). 编程验证下述的设计思路,采用Python和C语言编写均可. 条件:假设一个交互协议有证明者Al ...

  7. 不是程序员也能看懂的ZCash零知识证明

    交易过程完全匿名是数字货币ZCash最大的亮点,正是这一点使得ZCash自提出以来便备受关注.ZCash匿名交易的实现依赖于一种叫做"零知识证明"的密码学手段.本文将通过打比方的手 ...

  8. 深入浅出零知识证明(二):zkSNARKs基本原理

    前言 本文开始对零知识证明应用最广泛的技术--zkSNARKs进行介绍,本文主要介绍其原理与流程,其中应用到的密码学知识和工具很多,本人能力有限,尽量做到阐述清晰,如有错误欢迎讨论. 零知识证明学习起 ...

  9. 白话零知识证明(二)

    hi 欢迎来到小秘课堂第三期,今天我们来讲讲白话零知识证明(二)的那些事儿,欢迎主讲人马宇峰 讲师:马宇峰 编辑:Leo 前言 本文是建立在 Vitalik 的博客<Quadratic Arit ...

最新文章

  1. 限制textbox中的内容
  2. ibernate ID生成策略 小知识
  3. android版 模拟器哪个好,安卓模拟器电脑版哪个好
  4. python引入模块教程_python导入模块--案例
  5. (八)ASP.NET自定义用户控件(1)
  6. bzoj 2428: [HAOI2006]均分数据
  7. 机器学习:多变量线性回归
  8. centOS下开机自启动apache、mysql、samba、svn等服务的最简单方法
  9. 网友在各自领域中所用到的芯片总结(转载)
  10. 定点运算之补码一位乘法(Booth算法)
  11. 垃圾邮件过滤技术发展现状及展望
  12. openMSP430 介绍
  13. sticky粘性定位
  14. 下列关于java包装类叙述错误的是,java包装类
  15. beeline登录配置
  16. Android 10获取手机相册照片变成白色空白
  17. python throw_python 之 异常处理
  18. 【Python】利用zipfile.ZipFile和write()创建压缩包
  19. 计算机主机开机为什么显示器不开,电脑显示屏不亮但是主机已开机怎么解决
  20. RayScan漏扫工具

热门文章

  1. T48568 【zzy】yyy送礼物
  2. 地下管线探测TFN T-6000地下管线探测仪 电缆定位 仪管线 埋地管道探测仪 电缆定位仪
  3. 002.2-地下管线转3dtiles工具
  4. AMD 硬解码开发(四)之边摸索边编译samples
  5. 邮件退信“Remote Server returned '420 4.2.0 Recipient deferred because there is no Mdb'”
  6. WIFI基础入门--802.11k--无线局域网络频谱测量
  7. idenet 学习记录:bili
  8. 扫描电镜图片的Matlab分析,基于Matlab的图像增强与复原技术在SEM图像中的应
  9. W ndows7怎么进入BlOS,Windows7旗舰版进不了bios界面怎么办?
  10. 【Linux】进程概念 —— 进程状态