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

【PrivacyIN Week2】课程中,张宇鹏博导详细讲解了零知识证明的经典协议设计原理,包括Groth16、PLONK和STARK。课程涵盖多项式承诺、密码学数论基础,以及SNARK和STARK协议的工作机制。张宇鹏老师通过实例解析了这些协议的构造和验证过程,旨在帮助理解和设计ZKP应用系统。
摘要由CSDN通过智能技术生成

前言

隐私研究院【PrivacyIN】第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍经典零知识证明协议设计原理,课堂主题为《Basic Principles of the Classic ZK Protocols (Groth16 Plonk Stark)》。

课程精讲全文

零知识证明(Zero-Knowledge-Proofs)自1985年由Goldwasser、Micali和 Rackof首次提出至今,随着零知识证明理论和技术的进步,涌现出很多经典零知识证明系统,比如:Groth16,Pinocchio,Plonk,Marlin,Stark,Halo2等,这些零知识证明系统推动着零知识证明从理论逐步进入实用应用,同时理解这些协议的工作机制和构造原理,对于设计ZKP应用系统有着非常重要意义。

本期课堂张宇鹏老师分别对这三种典型协议(non-universal)SNARK、PLONK和STARK进行设计原理分析,主要内容有:多项式承诺、密码学数论简介、PlONK协议、SNARK类协议、STARK协议等。

课堂开始,张宇鹏老师首先对上一堂课的零知识证明系统进行简单回顾,帮助同学们加深对ZKP概念和计算模型的理解。
在这里插入图片描述
多项式承诺

多项式承诺(polynomial commitment)是构造零知识证明系统常用密码学工具,其构造模型中prover/verifer为主要参与者,使用交互证明方式构造(可以使用Fiat–Shamir-heuristic转换为非交互方式)。实际可以认为多项式承诺是一个种特殊的零知识证明,其同样满足零知识证明的Correctness、Soundness、Zero-knowledge这些特性。

多项式承诺的基本原理是:

  • prover拥有一个多项式,其构建一个关于这个多项式的承诺commitment δ f \delta_f δf,然后将承诺 δ f \delta_f δf发送给verifier

  • verifier收到的承诺commitment δ f \delta_f δf,任意取一点a,发送该点给prover,以请求计算该点上的结果

  • prover接收计算请求,使用多项式在a点计算得到 f ( a ) f(a) f(a),并生成一个证明proof,然后将 f ( a ) f(a) f(a)和证明proof都发给verifer进行验证

在这里插入图片描述
很多经典的零知识证明协议都基于多项式承诺进行构造,比如Plonk、Dark、Stark、Supersonic等。

KZG多项式承诺是非常经典高效的一种多项式承诺构造实现,尤其在Plonk协议中是非常基础的组件。KGZ多项式承诺基于Bilinear-Pairing和生成群(注:后续内容将详细介绍),其中生成群一般为基于椭圆曲线在一个有限域中生成(如选取椭圆曲线后确定g),KGZ承诺主要步骤:

  1. trust setup生成参数

一般为选取公共参数素数p和g(关联一条椭圆曲线),使用MPC仪式生成:

{ g , g s , g s 2 , g s 3 , ⋯   , g s d } \left\{ \begin{matrix} g,g^{s},g^{s^{2}},g^{s^{3}},\cdots,g^{s^{d}} \end{matrix} \right\} { g,gs,gs2,gs3,,gsd}

其中s为随机数且生成过程中将会被丢弃(s保持为秘密)

  1. 创建承诺和证明

生成群具备加法同态和scale乘法性质,承诺表示为:

g f ( s ) = g ∑ c i s i = Π ( g s i ) c i g^{f(s)}=g^{\sum{c_{i}s^{i}}}=\Pi\left(g^{s^{i}}\right)^{c_{i}} gf(s)=gcisi=Π(gsi)ci

基于Schwartz-Zippel Lemma,即对任意选的随机数 s s s,取一个点 a a a打开求值 f ( a ) f(a) f(a),则有: f ( s ) − f ( a ) = ( s − a ) q ( s ) f(s)-f(a)=(s-a)q(s) f(s)f(a)=(sa)q(s),于是可以将 f ( s ) − f ( a ) f(s)-f(a) f(s)f(a) s − a s-a sa q ( s ) q(s) q(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值