零知识证明:以太坊的未来

本质上,零知识证明技术可以将区块链去信任化,从经济学假设,带入到基于密码学假设中,实现链下数据可用性、原生抽象账户钱包等原生功能进一步扩展,尤其是为以太坊等底层链正面临的扩容和隐私保护相关问题提供了解决方案,甚至是,唯一解决方案。

什么是零知识证明

image.png

零知识证明(Zero—Knowledge Proof),是由 S.Goldwasser、S.Micali 及 C.Rackoff 在20世纪80年代初提出的。

它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。也就是说,证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

数独验证游戏

数独验证游戏是一个经典的零知识证明的例子,作者是 Ghost 和 Spectre 这两个协议的创始团队的领队 Aviv Zohar 。

证明者 Alice 希望向验证者 Bob 证明其知道某个数独游戏的解,但又不希望向验证者 Bob 泄露解的具体内容,可通过以下过程实现证明:

  1. Alice 将9组1\~9数字写在81张卡片上,并在 Bob 回避的情况下按照解的排列摆放好,谜面数字朝上,谜底数字朝下;

image.png

  1. Bob 从按照行(row)、列(column)或者宫(box)三种方式中随机选择一种进行验证;

image.png

  1. Alice 在 Bob 的见证下,按照 Bob 的选择将 81 张卡片以每一行/列/宫为一组放在 9 个不透明的袋子中,并打乱每个袋子中的卡片顺序,交给 Bob;

image.png

  1. Bob 打开 9 个袋子,如果每个袋子中均为 9 个 1\~9 不重复的数字,则本次验证通过。

由于 Alice 通过预先猜测 Bob 会选择哪种验证方式(行/列/宫)进而成功欺骗 Bob 的概率是1/3。因此,Bob 可以每次随机选择不同的验证方式将以上证明过程重复多次,直到 Bob 相信 Alice 知道该数独游戏的解,且 Bob 在整个过程中并不能获知任何关于解的具体信息。

上述游戏要证明的东西就是一个数独题的解,Alice 让 Bob 每次随机抽取行,列,九宫格的卡片,并收集在一起随机打乱,Bob 通过拆开袋子并不能知道题解,但是却能相信 Alice 很大几率确实知道题解。

由于 Alice 和 Bob 经过多轮交互才能通过 Bob 的验证,称为交互式零知识证明(Interactive Zero-Knowledge)。交互式零知识证明需要验证方 Bob 在证明方 Alice 放好答案(commitment)后,不断的发送随机试验。

假设存在一台零知识数独非交互式证明机,这台机器基本上就是把 Alice 和 Bob 的数独证明自动化,不再需要人为交互。

image.png

Alice 只要把卡片放在传送带上,机器会自动选择按行,或列,或宫来收取卡片,放到袋子里打乱顺序,然后把袋子通过传送带再送出来。然后 Bob 就可以拆开袋子展示里面的卡片。

这台机器有一个控制面板,打开里面是一串旋钮,这些旋钮用来指示每次试验的选择(行,列, 宫)。

image.png

这种称为非交互式零知识证明(Non-Interactive Zero-Knowledge, NIZK),但是会额外需要一些机器或者程序,并且需要一串试验序列,这个试验序列不能被任何人知道。有了这么一个程序和试验序列,证明机就能自动算出一个证明,并且能防止任何一方作假。

技术原理

零知识证明涉及的密码学与数学理论较多,包括计算/统计不可区分性(Computationally/Statistically Indistinguishiable)、模拟器(Simulator)、随机预言机(Random Oracle)模型等计算复杂性理论内容。为了便于理解,我们将零知识证明协议的三个基本属性用较为通俗的语言描述如下:

  1. Completeness(完备性):如果证明者知道证据能证明命题的正确性,则能以极大概率让验证者信任。
  2. Soundness(可靠性):一个恶意的证明者难以用一个错误的命题欺骗验证者。
  3. Zero-knowledge(零知识性):证明过程执行完之后,验证方只获得了证明方拥有这个知识的信息,而没有获得关于这个知识本身的任何信息。

「知识」 vs 「信息」

  1. 「知识」是与「计算难度」相关,而「信息」则不是;
  2. 「知识」是与公共所知的东西有关,而「信息」主要与部分公开的东西有关。

零知识证明起源于交互式证明协议,以Schnorr协议为例分析交互式零知识证明的原理和特点。Schnorr协议是一种身份认证协议,也是如今许多PKI数字签名方案。

PKI是Public Key Infrastructure的首字母缩写,直译为公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。

在Schnorr协议中,证明者A通过和验证者B进行三次交互的方式证明了其拥有公钥pk对应的私钥sk,而验证者B无法在整个过程中获取私钥sk的信息。

image.png

交互式零知识证明协议依赖于验证者的随机尝试,需要证明者和验证者进行多次交互才能完成。非交互式零知识证明将交互次数减少到一次,可实现离线证明和公开验证。例如,在区块链等零知识证明应用场景中,通常需要将证明进行直接发布,而非依赖于交互实现,且需要支持多方的公开离线验证。

零知识证明算法

目前零知识证明技术主流的算法有3种:

zk-SNARK

zk-SNARK(Zero-Knowledge Succinct Non-interactive Arguments of Knowledge,零知识简明非交互式知识论证)是一类应用广泛的通用零知识证明方案,通过将任意的计算过程转化为若干门电路的形式,并利用多项式的一系列数学性质将门电路转化为多项式,进而生成非交互式的证明,可实现各类复杂的业务场景的应用。目前,zk-SNARK已在数字货币、区块链金融等区块链领域实际落地,是目前最为成熟的通用零知识证明方案之一。

zk-SNARK的启动需要可信设置,可信设置是指在受信任的设置中,多方各自生成一个部分密钥来启动网络,然后销毁该密钥。如果用于创建信任设置的密钥的保密信息没有被销毁,那么这些保密信息可能会被利用通过虚假验证来伪造交易。

zk-STARK

zk-STARK (Zero-Knowledge Succinct Transparent Arguments of Knowledge,代表零知识简洁透明的知识论证),zk-STARK是zk-SNARK算法的一种技术演变,解决了SNARK依赖可信设置的弱点,可以不依赖任何信任设置来完成区块链验证,从而降低启动网络的复杂性并消除任何串通风险。

Bulletproofs

Bulletproofs(Short Non-interactive Zero-knowledge Proofs,简短的非交互式零知识证明协议),Bulletproofs兼顾了SNARKs和 STARKs的优点,无需可信设置即可运行,并且可以将加密证明的大小从超过 10kB 缩小到不到 1kB,压缩比率达到80%以上,同时降低80%的交易费用,因相对较低的交易费用、算法体积和无需信任在领域内受到极大关注。

零知识证明的应用

零知识证明能够保障数据的安全性,能够解决很多隐私问题,而且证明过程计算量小、双方交换的信息量大大减少,具备安全和高效的优点。零知识证明最初经常被应用于身份验证,数字签名,认证协议等,区块链的出现给零知识证明的应用提供了更多新的方向。

以太坊扩容

区块链由于自身的性能问题导致其难以满足当下需求,基于零知识的扩容方案将有望解决区块链性能瓶颈。扩容是指在不牺牲去中心化和安全性的前提下提高交易速度和交易吞吐量。ZK-Rollups是基于零知识证明的Layer2扩容方案,通过将计算转移到链下来提高区块链的吞吐量,即将大量交易打包到一个Rollup 区块内,并在链下为该区块生成一个有效性证明,Layer 1 上的智能合约只需验证该证明即可直接应用新的状态,可以实现更低的 Gas 和更高的链上安全性。

隐私保护

在区块链背景下,零知识证明可以用于验证交易的有效性而不会泄露交易中的发送者、接受者、涉及金额及其他敏感数据。因此零知识证明在保护链上数据隐私方面发挥着巨大作用,典型应用包括隐私L2、隐私公链、隐私币和隐私KYC。

Aztec Network是以太坊上第一个Layer2隐私区块链项目,旨在为中心化应用程序提供隐私和扩展能力。Aztec采用类似比特币账户原理的UTXO模型。在该模型中,票据note是协议运算的基础单元,资产交易时,票据的值被加密,票据所有权变更,票据登记所将会记录每个票据的状态,用户的AZTEC资产即票据登记所里所有被该用户地址所拥有的有效票据之和。

Aleo是第一个提供完全隐私保护应用程序的平台,是基于零知识证明隐私保护的公链。Aleo的核心是ZEXE,即去中心化隐私计算DPC(decentralized private computation),将计算和共识分开,提供zkCloud在链下执行交易,执行交易结束后将证明提交到链上。由于只有证明被提交到链上,从技术上来讲任何人都不可能看到或利用任何交易细节的知识,从而实现交易隐私。

Zcash被戏称为隐私币鼻祖,保密交易的隐私依赖于标准密码学中的哈希函数和流密码,在链上将交易记录中的发送人、接收人、交易量进行加密,用户可裁量选择是否向其他人提供查看密钥(拥有此密钥的人才能看到交易的内容),在链下使用zk-SNARKs 对交易的有效性进行验证。

zkPass是基于安全多方计算和零知识证明的去中心化KYC 解决方案,允许用户通过Web2 身份凭据向第三方匿名证明他们的身份声明。如Ufile Chain诚信档案联盟链平台,一个专注于个人信息的认证、储存、流通、确权和隐私保护的联盟区块链平台,以高校、企业、政府部门等这些权威机构为核心节点的联盟链体系,Ufile Chain运用零知识证明技术来保证个人信息的隐私安全。数据使用者只能获取到与其业务相关的有限信息,确保数据使用者难以获取完整有效的明文用户信息,包括UfileChain官方在内,都无法获取有效的用户个人信息。

写在最后

笔者来自蚂蚁链,也是一名以太坊上的开发者(最近也在学习 Solana 开发和 Sui 开发),平时喜欢看书和写作,所以也运营了一个 Web3 的公众号(公众号名:小猪Web3),主要聚焦 Web3 前沿技术和发展历程,所以在这里还是小小打一个广告,希望能在登链认识更多志同道合的朋友交流学习。

这一篇也是我公众号的一篇发表,探讨了零知识证明技术的原理和应用,得益于近年来区块链、隐私计算等新兴技术应用的发展,零知识证明技术成为了构建信任的重要技术,也是区块链这个有机体中不可缺少的一环。本质上,零知识证明技术可以将区块链去信任化,从经济学假设,带入到基于密码学假设中,实现链下数据可用性、原生抽象账户钱包等原生功能进一步扩展,尤其是为以太坊等底层链正面临的扩容和隐私保护相关问题提供了解决方案,甚至是,唯一解决方案。

点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Web3朱大胆
Web3朱大胆
0xBD95...d478
从百度到灯火阑珊处,从传统互联网转型区块链的程序员,目前在蚂蚁链负责区块链研发,熟悉主流公链和Web3项目,擅长C++/Rust/Go/Solidity/(Sui)Move。同时也在做Web3自媒体,致力于分享前沿Web3技术。 行业交流欢迎加WX:go15810306120