前言
隐私学院【PrivacyIN】第一期ZK训练营课程精讲内容上线啦,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍ZK理论及相关应用,课堂主题为《Basics of ZK Cryptography & Research Overview》。
此次授课采取小班授课,邀请了数十名来自国内外密码学及相关领域的专家学者作为学员,参加了高强度的90分钟的密码学培训课堂。
课程精讲全文
零知识证明(Zero-Knowledge-Proofs)由Goldwasser、Micali和 Rackoff在1985年提出,零知识证明是一种在证明者和验证者之间的密码学协议,证明者向验证者证明其拥有一个解(witness)能够解决某个计算问题(statement),同时又不泄露任何关于该解(witness)的额外信息。
零知识证明(Zero-Knowledge-Proofs)既不泄露隐私又保证正确性的能力,使得零知识证明成为一个强大的工具,并广泛应用各种领域中,如电子投票、匿名凭证、群签名、可验证外包计算等,尤其随着WEB3技术的发展,数字货币与区块链技术非常紧密地联系起来。
本期课堂中张宇鹏老师围绕零知识证明展开,主要内容有:证明系统和零知识证明定义、零知识证明发展史、零知识证明及区块链应用等。
张宇鹏老师首先以证明「勾股定理」为范例描述了传统意义上的证明问题,即给出一个B为直角的三角形ABC,证明正确,证明的方法是通过B点画一条垂直线交AC于D点,然后通过三角形相似关系证明勾股定理关系满足。
这里即证明的声明statement,证明的过程(推演步骤)即prove。statement可以表示任何计算问题,传统statement证明是通过提供所有的证明推演步骤,然后进行正确性检测验证来实现的,这里会泄露信息(知识knowledge)。
在证明系统中,prover/verifier交互证明计算模型是非常典型的,张宇鹏老师例举一个颜色检验的例子,该证明中prover声称「知道一张拥有不同颜色的纸」作为statement。
通过引入随机挑战,verifier生成随机数以确定是否翻动纸张来进行随机挑战,prover收到挑战则回答是否翻动了纸张,如果是诚实的prover将总是能够以正确(100%的概率)回答verifier是否翻动了纸张,否则盲猜只有1/2的概率能够正确回答verifier的挑战。重复该过程很多次(比如100次或以上),如果prover每次都能够正确回答verifer的挑战,则极大概率(几乎为100%)地证明了prover知道正确的答案,即证明了prover声称的「知道一张拥有不同颜色的纸」statement;如果prover不知道答案,则prover将以极低的概率(如100次挑战,猜对的概率几乎可以忽略)猜对,则证明其prover在撒谎或是作恶者。
标准的证明系统中,主要有证明者prover、验证者verifier和公共计算C,其中prover拥有数据data,prover生成一个证明proof表示其使用计算表达式C计算得到结果result,然后将计算证明proof发送给verifer;verifer收到计算证明proof进行验证证明是否正确。
证明系统具备主要特点:
正确性(correctness):诚实的证明者可以以极高的验证正确性(几乎为1)
完备性(soundness):如果证明者不诚实或作恶,则通过验证的概率是极小的(可以忽略的概率)
一个高效的证明系统的主要指标高效的验证时间和较小的证明proof大小,也即具备succinct特性。
基于证明系统上,构建一个既能证明计算正确性,proof中又不泄露任何prover原来的数据,即具备零知识性(zero-knowledge),这样的证明系统就是零知识证明ZKP系统。
课程中张宇鹏老师回顾了零知识证明问题的发展史,介绍了最早由Goldwasser、Micali和 Rackoff的提出零知识证明系统以及早期相关的复杂计算理论,包括交互证明(Interactive Proof)、概率检测证明(Probabilistically checkable proofs)、零知识(Zero-knowledge)等。
零知识证明系统比较里程碑意义的突破则是Pinocchio协议,Pinocchio协议是第一个接近实用的简洁、非交互的零知识证明系统zkSNARK(SNARK=Succint Non-interactive ARgument of Knowledge),它支持通用计算,将计算问题转换为R1CS(Rank1 Constraint System)形式,然后将R1CS转换到QAP(Quadratic Arithmetic Programs)来实现简洁的多项式证明和验证,Pinocchio协议的出现标志着零知识证明开始由理论发展到实用阶段,这也是Groth16协议的基础。
接着,张宇鹏老师对当前零知识证明系统依托的密码学技术进行分类,主要分为:双线线性配对(Bilinear Pairing)、安全多方计算(Secure Computation)、离散对数(Discrete-log)、交互式谕示证明Interactive oracle proof、交互式证明Interactive proof、格密码(Lattice)等。
目前零知识证明系统性能已经接近实用,当前最佳的证明系统在百万级别计算电路上表现已经性能非常好了(比如生成证明),但另外一方面证明大小和验证时间则跟具体密码学技术构造方式有很大关系。
进一步地,张宇鹏老师简单探索了密码货币、认证和区块链的特点,并针对Bitcoin隐私性,分析了涉及的隐私泄露问题,表示其隐私保护性是数据公开的、弱伪匿名,提出可以使用零知识证明来创建数据合法性证明来解决问题的思路。
张宇鹏老师还分析了当前区块链的扩容问题(Scalability),即区块链系统处理交易的能力非常低效(比如Bitcoin: 5tx/s,Ethereum: ~30 tx/s)的问题,并介绍了非常火热的ZK-Rollup技术,表示其主要是使用高效零知识验证算法,将批量交易聚合构建简洁证明,并执行高效的验证来实现的。
临近课堂结束,张宇鹏老师继续分析和讨论了隐私链ZCash和ZK-Rollup的一些差异,帮助大家进一步理解它们的特点、概念和设计目标。
自由讨论环节,张宇鹏耐心地为学员解答了一系列密码学基础和零知识证明的相关问题。
关于PrivacyIN
PrivacyIN 隐私学院 (Privacy Institution) 由LatticeX基金会发起,致力于建设开放的密码和隐私技术布道和研究社区。联合全球顶尖的学者、隐私技术开发者推动ZK(零知识证明)、MPC(安全多方计算)、FHE(全同态密码)在Web3领域的创新和落地。
关于LatticeX基金会
LatticeX基金会(LatticeX Foundation)是一家全球范围的开源技术社区,以通过构建复杂计算归还用户数据主权,保护数据隐私,实现数据价值交换为愿景,旨在构建一个完全去中心化的计算互操作网络,在保护数据主权和隐私的前提下促进数据使用权的交易,并为实现LatticeX愿景资助各类学术研究及科研项目。