参考书籍:

  1. Boneh D, Shoup V. A graduate course in applied cryptography[J]. Recuperado de https://crypto. stanford. edu/~dabo/cryptobook/BonehShoup_0_4. pdf, 2017.
  2. Lindell Y. How to simulate it–a tutorial on the simulation proof technique[J]. Tutorials on the Foundations of Cryptography, 2017: 277-346.

Zero-Knowledge Proof

一些术语

证据(Witness):the value being proven knowledge of。仅Prover知道,不对Verifier泄露。
实例(Instance):描述关系中除witness外的所有其它元素,均统称为instance。它是公开信息,对于Prover和Verifier均已知。
证明者(Prover): the entity proving the knowledge of the witness
验证者(Verifier):the other party that the prover needs to convince of the knowledge of witness
模拟器(Simulator):提供“模拟”,它在理想世界(ideal world)中驻留,得到与真实世界(real world)相同的视图(view)分布

有效关系:令X,YX,YX,Y是可有效识别有限集( efficiently recognizable finite sets),有效关系是二元关系:R⊆X×YR\subseteq X \times YR⊆X×Y,其中y∈Yy \in Yy∈Y叫做声明(statement),如果(x,y)∈R(x,y) \in R(x,y)∈R那么xxx叫做yyy的证据(witness)

关系的语言(Language)

证明系统

一个证明系统,它需要满足两个条件:
1.完备性(Compeleness):语言LLL,对于诚实的PPP,给定公共输入x∈Lx \in Lx∈L,那么VVV需要确信x∈Lx \in Lx∈L(除了可忽略的概率)
2.可靠性(Soundness):语言LLL,对于任意的(恶意)PPP,给定公共输入x∉Lx \notin Lx∈/​L,那么VVV需要相信x∈Lx \in Lx∈L的概率可忽略

我们说一个证明是零知识的,如果存在一个模拟器SSS,它可以仅根据公开信息就获得相同的验证者视图。

诚实验证者零知识(HVZK)

Sigma Protocol

Sigma协议

令RRR是一个有效关系,那么sigma协议是关于RRR的二元组(P,V)(P,V)(P,V)
协议如下:

执行过程为:

Schnorr’s Identification Protocol

Schnorr协议是Sigma协议的实例化,基于离散对数问题。
令X=ZqX=Z_qX=Zq​,Y=GY=GY=G,R={(α,u)∈X×Y∣gα=u}R=\{(\alpha,u) \in X \times Y | g^\alpha = u\}R={(α,u)∈X×Y∣gα=u},协议如下:

执行过程为:

首先,PPP选择一个随机数αt\alpha_tαt​,将承诺utu_tut​发送给VVV。然后,VVV选择一个挑战ccc,PPP生成对这个挑战的响应αz\alpha_zαz​(随机的,与αt\alpha_tαt​相关,但是与ccc独立)。最后,VVV验证确实满足αz=αt+αc\alpha_z = \alpha_t + \alpha cαz​=αt​+αc,所以相信PPP确实拥有α\alphaα。

协议安全性:Schnorr身份认证协议是 HVZK 的。

Zero-Knowledge Proof for 3-Coloring

方案

图的着色问题是NP问题。下面利用承诺协议,给出三着色的零知识证明方案:

上述协议也符合Sigma协议的范式。

安全性

由于图GGG包含∣E∣|E|∣E∣条边,任意不知道着色方案的PPT敌手只能随机着色,且图中至少有一条边的两个端点被分配了相同的颜色。因此重复n⋅∣E∣n\cdot |E|n⋅∣E∣次后,敌手成功的概率至多为(1−1∣E∣)n⋅∣E∣≤e−n(1-\dfrac{1}{|E|})^{n\cdot |E|} \le e^{-n}(1−∣E∣1​)n⋅∣E∣≤e−n,可以忽略。

然而上述证明是不够的,我们需要构建一个模拟器SSS,它可以只根据公开信息获得相同的对话记录。模拟器构建如下:

  1. 模拟器调用验证者,猜测验证者想要请求的边,给这条边端点涂上不同色其他随意。然后发送染色的承诺。
  2. 如果猜对了,那么模拟器成功。如果猜错了,模拟器就回滚(rewinding,技术上利用虚拟机快照实现)验证者,重新猜测,直到猜对。
  3. 最终,模拟器中的验证者视图和真实世界的会话没有区别。

注意,真实世界中,证明者PPP和验证者VVV是独立实体,因此恶意证明者AAA没有回滚VVV的能力。

零知识证明:Sigma协议相关推荐

  1. 零知识证明系列之二——Schnorr协议

    ​Schnorr协议简介 Schnorr协议是由德国数学家和密码学家Claus-Peter Schnorr在1991年提出,是一种基于离散对数难题的知识证明机制.Schnorr本质上是一种零知识的技术 ...

  2. 深入浅出零知识证明(一):Schnorr协议

    最近在学习零知识证明,因为内容很多并且难度也大,想根据自己的学习路线做一系列总结,这是第一篇文章,主要介绍零知识证明的一些重要概念和思想,可以对零知识证明有直观的理解,然后讲解一个经典简洁的零知识证明 ...

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

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

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

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

  5. 读心术:从零知识证明中提取「知识」——探索零知识证明系列(三)

    本文已更新至Githubhttps://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/3/zkp-pok.md 导言:有些理论非常有趣,零 ...

  6. 基于Sigma protocol实现的零知识证明protocol集锦

    1. 背景知识 Sigma protocols,又称为 3 phase protocols,用于证明knowledge of values in some relation,但是又不泄露values的 ...

  7. PrivacyIN Week2 | 张宇鹏博导开讲经典零知识证明协议设计原理

    前言 隐私研究院[PrivacyIN]第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍 ...

  8. 为什么要使用零知识证明来开发跨链协议

    用户需要什么样的跨链服务 在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2.由于在安全性.低成本.快速交易以及开发者和用户社区差异等方面,不同链都具有各自不同的优势,用户在不同链之间 ...

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

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

最新文章

  1. 论文被scoop(抢先发表)是怎样一种体验?
  2. c实现的trim函数
  3. VC++编译libpng
  4. 在SQL2005/SQL2008中CTE用法差异
  5. Oracle 原理: 视图,对视图进行增删改操作
  6. Java 图形用户界面(GUI)布局管理器
  7. 牛红红的日记(平平无奇拿下域控)
  8. routeChangeSuccess
  9. Session的创建与销毁时机
  10. maven(6)------maven坐标分析
  11. 附录G 标准模板库方法和函数
  12. 简单的解决idea tomcat run正常debug报错
  13. Flurry 分析 API 中文教程(Flurry Analytics API)
  14. 均匀分布、正态分布、二项分布、泊松分布、指数分布
  15. ElasticSearch wildcard查询(英文检索)
  16. linux网络凭据,适用于Linux和Windows的服务器凭据管理
  17. 三轴加速度传感器BMA250解读
  18. c语言 数组的抽奖小游戏
  19. 【Python量化】布林带策略
  20. notepad++使用NppExec插件找不到或无法加载主类(java)

热门文章

  1. Android手机替代笔记本出差实战之处理受保护的工作表(excel)
  2. 轻松查询多个韵达快运最后物流中含有某个地方的单号
  3. 数字波束成形——信道矩阵奇异值分解
  4. 香港十大炒黄金交易公司排名2020版一览
  5. MySQL分配内存多少合适_mysql 如何分配内存
  6. hdu 2197 本原串 思维
  7. 项目在服务器的绝对路径,java获得项目绝对路径
  8. 贝塞尔曲线与B样条曲线
  9. 优维科技出席GOPS大会, EASYOPS企业版等你来
  10. easyPOI和导入复杂excel的各种坑