零知识证明:Sigma协议
参考书籍:
- Boneh D, Shoup V. A graduate course in applied cryptography[J]. Recuperado de https://crypto. stanford. edu/~dabo/cryptobook/BonehShoup_0_4. pdf, 2017.
- 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,它可以只根据公开信息获得相同的对话记录。模拟器构建如下:
- 模拟器调用验证者,猜测验证者想要请求的边,给这条边端点涂上不同色其他随意。然后发送染色的承诺。
- 如果猜对了,那么模拟器成功。如果猜错了,模拟器就回滚(rewinding,技术上利用虚拟机快照实现)验证者,重新猜测,直到猜对。
- 最终,模拟器中的验证者视图和真实世界的会话没有区别。
注意,真实世界中,证明者PPP和验证者VVV是独立实体,因此恶意证明者AAA没有回滚VVV的能力。
零知识证明:Sigma协议相关推荐
- 零知识证明系列之二——Schnorr协议
Schnorr协议简介 Schnorr协议是由德国数学家和密码学家Claus-Peter Schnorr在1991年提出,是一种基于离散对数难题的知识证明机制.Schnorr本质上是一种零知识的技术 ...
- 深入浅出零知识证明(一):Schnorr协议
最近在学习零知识证明,因为内容很多并且难度也大,想根据自己的学习路线做一系列总结,这是第一篇文章,主要介绍零知识证明的一些重要概念和思想,可以对零知识证明有直观的理解,然后讲解一个经典简洁的零知识证明 ...
- 零知识证明(zero-knowledge proof)
零知识证明(zero-knowledge proof) 在密码学中,零知识证明(zero-knowledge proof)或零知识协议(zero-knowledge protocol)是一种方法,通过 ...
- 零知识证明学习资源汇总
本文将继续会持续进行更新,更新后的版本将在 Github 和知乎上发布,欢迎关注. Github 地址:https://github.com/sec-bit/learning-zkp/blob/mas ...
- 读心术:从零知识证明中提取「知识」——探索零知识证明系列(三)
本文已更新至Githubhttps://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/3/zkp-pok.md 导言:有些理论非常有趣,零 ...
- 基于Sigma protocol实现的零知识证明protocol集锦
1. 背景知识 Sigma protocols,又称为 3 phase protocols,用于证明knowledge of values in some relation,但是又不泄露values的 ...
- PrivacyIN Week2 | 张宇鹏博导开讲经典零知识证明协议设计原理
前言 隐私研究院[PrivacyIN]第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍 ...
- 为什么要使用零知识证明来开发跨链协议
用户需要什么样的跨链服务 在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2.由于在安全性.低成本.快速交易以及开发者和用户社区差异等方面,不同链都具有各自不同的优势,用户在不同链之间 ...
- 云中「秘密」:构建非交互式零知识证明---探索零知识证明系列(五)
本文作者:郭宇 Once exposed, a secret loses all its power. 一旦泄露,秘密就失去了全部威力 ― Ann Aguirre 这已经是本系列的第五篇文章了,这一篇 ...
最新文章
- 论文被scoop(抢先发表)是怎样一种体验?
- c实现的trim函数
- VC++编译libpng
- 在SQL2005/SQL2008中CTE用法差异
- Oracle 原理: 视图,对视图进行增删改操作
- Java 图形用户界面(GUI)布局管理器
- 牛红红的日记(平平无奇拿下域控)
- routeChangeSuccess
- Session的创建与销毁时机
- maven(6)------maven坐标分析
- 附录G 标准模板库方法和函数
- 简单的解决idea tomcat run正常debug报错
- Flurry 分析 API 中文教程(Flurry Analytics API)
- 均匀分布、正态分布、二项分布、泊松分布、指数分布
- ElasticSearch wildcard查询(英文检索)
- linux网络凭据,适用于Linux和Windows的服务器凭据管理
- 三轴加速度传感器BMA250解读
- c语言 数组的抽奖小游戏
- 【Python量化】布林带策略
- notepad++使用NppExec插件找不到或无法加载主类(java)