密码学学习笔记——Sigma Protocol

潘业达 安比技术社区 2020-06-24 16:37
本文作者潘业达,安比技术社区小伙伴,来自富士通研发中心。


Basic definitions


Definition 1

Effective relation

Effective relation 指的是一组二元关系 Image 其中 Image 为有效的可辨认的有限集合。 Image 中的元素被称作statements。如果 Image ,则称 Image 为 Image 的witness。


Definition 2

Sigma protocol

设 Image 是一个effective relation。那么一对 Image 构建在 Image 上的一个Sigma protocol 为:

  • Image 是一个叫做 Image 的交互式协议,其输入为一个witness-statement对Image

  • Image 是一个叫做 Image 的交互式协议,其输入为一个witness Image

  • Image 和 Image 的交互过程为:

    • 首先 Image 计算一个承诺(commitment) Image ,将其发送给 Image ;

    • 在收到了来自 Image 的消息 Image 后, Image 在有限的挑战空间 Image 中随机选取一个挑战元素(challenge),并将其发送给 Image ;

    • 在接收到来自 Image 的挑战 Image 后, Image 计算出一个反馈(response) Image ,将其发送给 Image ;

    • 在收到了来自 Image 的消息 Image 后,Image 输出accept或者reject。 Image 的输出由statement Image 和交互中的消息 Image 严格计算得出。

协议的要求是,对于所有的 Image ,当 Image 与 Image 交互后, Image 总是输出accept。需要注意的是,为了系统的安全性,挑战空间的大小应该为sup-poly(超过多项式大小)。

Image

Figure 1 Sigma protocol的执行过程


Definition 3

Knowledge soundness

设 Image 是关于关系 Image 的一个Sigma协议。如果醉在一个高效的确定性的算法Image (称作一个witness extractor)使得:给定一个statement Image ,以及两个关于 Image 被accepted的conversation Image 和 Image ,并且 Image , Image 能够输出 Image 使得Image(i.e., Image 是 Image 的witness)则我们称 Image 提供 knowledge soundness


Definition 4

Special honest verifier zero knowledge

设 Image 是关于关系 Image 的一个Sigma协议,且挑战空间为 Image 。如果存在一个高效的概率性算法 Image (称作simulator),其输入为 Image 且满足:

  1. 对于所有的输入Image , Image 能够输出一对 Image 使得Image 对于 Image 是一个被accpeted的conversation。

  2. 对于全体Image,我们计算Image

使得Image 的分布同 Image 和 Image 之间conversation的分布相同,则我们称 Image 是special HVZK。Special的原因在于:1) Image 需要 Image 作为额外输出;2)就算 Image 的witness不存在,Image也可以输出一个被accepted的conversation。


Schnorr's identification protocol

一个经典的Sigma protocol例子

协议过程


设 Image 是一个阶为素数 Image 的循环群,其生成元为 Image 。设证明人 Image 保存私钥 Image ,对应的公钥匙为 Image 。 Image 需要向 Image 证明其拥有 Image 。这里 Image 是witness, Image 是statement。Shnorr's identification protocol的协议过程为:

  • 密钥生成算法产生公私钥:Image其中验证密钥 Image ,私钥为 Image 。

  • Image使用Image 初始化, Image 使用Image 初始化,Image 和 Image 之间的交互过程为:

    1. Image 计算 Image ,并将 Image 发送给 Image ;

    2. Image 计算 Image ,并将 Image 发送给 Image ;

    3. Image 计算 Image ,并将 Image 发送给 Image ;

    4. Image 检查如果 ImageImage 输出accept,否则输出reject。

Image

Figure 2: Schnorr’s identification protocol 过程

安全性


Schnorr‘s protocol 的安全性是构建在离散对数问题上的,其证明的方式为假设攻击者在不知道 Image 可以构建对于一个 Image 合法的conversations,那么我们就可以利用攻击者的能力来解决离散对数问题。由于逆否命题是等价,如果离散对数问题无法攻破,那么Schorr's protocol 就是安全的。

proof:假设攻击者对于 Image 可以产生两个被accepted的conversation Image 和 Image 其中 Image ,则有 Image 以及 Image ,两式相除的 Image ,其中 Image , Image 。由于 Image ,且群 Image 是素阶循环群,因此 Image ,则有 Image ,则我们的到了离散对数问题 Image 的解 Image 。 


HVZK


证明HVZK在于如何构建一个产生conversation并被verifier接受的 Image ,且 Image 产的conversation中元素的分布和正常 Image 交互产生的conversation中元素的概率分布相同。设 Image ,则 Image 计算:

Image

在真实的交互过程中, Image 和 Image分别在挑战空间 Image 和 Image 中服从均匀分布,且 Image 相互独立。此外 Image 是由 Image 唯一确定的,因此可以明显看出, Image 产生的conversation中元素的概率分布同正常交互所产的conversation中元素的概率分布相同。


Knowledge soundness


由Knowledge soundness 的定义以及Schnorr's protocol的安全性分析可知,Schnorr's protocol满足Knowledge soundness。


Sigma protocol的一些例子


1

Okamoto’s protocol

设 Image 是一个阶为素数 Image 的循环群,其生成元为 Image。 Image 是群中任意一个元素。Okamoto’s protocol中的关系为:

Image

协议的过程为:

Image

Figure 3:Okamoto’s protocol 过程

其中 Image 。


2

The Chaum-Pedersen protocol

The Chaum-Pedersen protocol 是基于DH-triples的。设 Image 是一个阶为素数 Image 的循环群,其生成元为 Image。对于 Image ,如果 Image 我们就说 Image 是一个DH-triples。等价的,如果 Image是一个DH-tripes,当且仅当存在一个 Image 使得 Image , Image 。在Chaum-Pedersen protocol 的关系为:

Image

协议的过程为:

Image

Figure 4: The Chaum-Pedersen protocol 过程

其中 Image 。


更加一般的Sigma protocol

A Sigma protocol for arbitrary linear relations


上述the Schnorr, Okamoto, and Chaum- Pedersen protocols都是一种更加一般的Sigma protocol的特例。这种更加一般的Sigma protocol是要证明元素之间的线性关系。设 Image 是一个阶为素数 Image 的循环群,其生成元为 Image 。我们考虑一个布尔函数 Image :

Image

在函数 Image 中, Image 。这些群元素一部分可以是系统参数甚至是常量,另一些元素是针对函数的特殊变量。 Image 是函数 Image 的入参,当函数中的所有等式成立则 Image 返回true。对于这样函数的一个特定的类 Image ,我们可以定义一个关系:

Image

在 Image 中,一个函数 Image 是statement,而一个是这个函数 Image 为true的 Image 是这个函数 Image 的witness。而我们称这样的协议为linear protocols的原因在于如果我们对函数 Image 中的等式取对数可以得到:

Image

对于一般linear Sigma protocol的过程为:

Image

Figure 5: 一般的linear protocol

  • Schnorr‘s protocol 中 Image .

  • Okamoto's protocol 中 Image

  • The Chaum-Pedersen protocol中 Image

对于一般的linear protocol是一个关于关系 Image 的Sigma函数并且满足knowledge soundness以及special HVZK。


A Sigma protocol for the pre-image of a homomorphism


我们可以利用群同态来更加清晰高效的来描述到目前为止的介绍的所有Sigma协议。设 Image是两个不知道阶的交换群,以及一个同态映射 Image 。为了表达的方便, 群Image中的运算为群加法, 群Image中的运算为群乘法。设 Image ,证明者需要向验证着证明他知道在映射 Image下 Image 的原象。在这种Sigma protocol中,关系为:

Image

其中 Image 是映射 Image 对于 Image 的原象。协议的过程如下:

Image

Figure 6:基于同态映射的Sigma protocol过程

在 Image 最小素因子至少为 Image 的情况下,基于同态映射的Sigma protocol满足knowledge soundness以及special HVZK。

  • Okamoto’s protocol 中 Image

  • The Chaum-Pedersen protocol中 Image

  • 一般linear protocol中 Image


封面图片来自 Unsplash, 作者 Leon Skibitzki 

往期回顾

探索零知识证明系列(一):初识「零知识」与「证明」

探索零知识证明系列(二):从「模拟」理解零知识证明

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

探索零知识证明系列(四):亚瑟王的「随机」挑战:从交互到非交互式零知识证明

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

zkPoD:区块链,零知识证明与形式化验证,实现无中介、零信任的公平交易

PoD-Tiny——实现零信任交易的最简协议

如果量子计算时代到来,我们的比特币安全吗?


零知识证明学习资源汇总

从零开始学习 zk-SNARK(一)——多项式的性质与证明
从零开始学习 zk-SNARK(二)——多项式的非交互式零知识证明
从零开始学习 zk-SNARK(三)——从程序到多项式的构造
从零开始学习 zk-SNARK(四)——多项式的约束
从零开始学习 zk-SNARK(五)—— Pinocchio 协议
零知识证明 Learn by Coding:libsnark 入门篇
链上富人寻「隐私」记(一:Mixer 篇)
以太坊颠覆了以太坊:引入密码学实现2.0性能突破


浅谈零知识证明之一:背景与起源

浅谈零知识证明之二:简短无交互证明(SNARK)

浅谈零知识证明之三:zkSNARK证明体系的实现(上)

初探全同态加密:FHE的定义与历史回顾

理解零知识证明算法Bulletproofs(一):Range Proof

理解零知识证明算法Bulletproofs(二):Improved Range Proof

理解零知识证明算法Bulletproofs(三):Range Proof 实现分析

理解零知识证明算法Bulletproofs(四):Arithmetic Circuits


Image

长按二维码添加微信进群技术讨论


info@secbit.io


安比(SECBIT)实验室


Scan to Follow