[87]区块链场景下的零知识证明技术

论文信息
[文献题目]《零知识证明技术发展报告(1).pdf》
[文献链接]https://mp.weixin.qq.com/s/MWniT9KSXKfYiyQL8DbY2g

零知识证明是一种密码学技术。
在区块链领域,最早听说零知识证明技术是在zerocash和zcash系统。初步印象是,通过采用零知识证明技术,能够在隐蔽“输入地址”、“输出地址”、“交易金额”的条件下,完成共识机制需要的认证。这意味着,零知识证明技术能够解决比特币等传统区块链系统面临的用户隐私泄漏的问题。
比特币等传统区块链系统面临的用户隐私泄漏的问题:为了在分布式节点中构建公信力,比特币系统采用所有账本记录公开,并由所有参与节点共同维护账本数据的数据存储策略。在这种数据存储策略的作用下,任何用户都可以验证账本数据的可靠性,同时任何用户都无法轻易修改账本数据,这使得比特币系统能够在无需可靠中心节点的条件下取得较高的公信力。然而,这种数据存储面临严重的用户隐私泄漏风险。每一个用户的所有交易记录(发送方、接收方、交易金额、交易时间)都公开永久存储在区块链账本中,即使发送方和接收方的账号采用一次性假名策略,仍可以通过数据分析的方法推测出“匿名账号”的身份信息。
由于比特币系统的公信力建立在数据公开的基础之上,因此,无法简单的通过常规数据加密方法来隐藏交易详细信息。
零知识证明的价值在于,交易信息的各个参数信息采用特殊加密机制处理,任何人无法获得参数的原始明文信息,但是可以在这些密文之上完成共识机制所需的数据校验功能,从而在保证系统运行的前提下,解决比特币等传统区块链系统面临的用户隐私泄漏问题。

在ZCASH之后,零知识证明技术逐渐变成一门热门技术,很多场景中都能看到它的身影。
我印象比较深入的案例有两个:
1、以太坊创始人Vitalik Buterin在以太坊2.0方案中非常重视零知识证明技术。据了解,在以太坊的某一个版本的测试网中,已经内置了零知识证明的技术。
2、一个专注于智能合约安全性的研究人员将研究重点集中在零知识证明方向。

我的困惑是:
(1)将零知识证明技术应用在区块链领域,能否解决区块链场景下用户隐私泄漏的问题。
(2)零知识证明技术在区块链中的作用,与隐蔽通信的需求有何区别?

针对上述问题,2020年5月下旬将集中阅读“零知识证明”在区块链领域的理论、实践方面的相关文献,在月底进行集中讨论。
预期达成的目标是:
(1)在使用零知识证明的区块链系统下,我们现在研究的区块链数据隐蔽传输方法是否还有意义。
(2)在使用零知识证明的区块链系统下,如何完善数据隐蔽方案。

1 文献:《零知识证明技术发展报告(1).pdf》

零知识证明与区块链的完美结合很好的解决了区块链当前面临的困局。一方面,区块链公开透明的天然特性,使其在在隐私和数据安全问题上存在诸多局限;另一方面如何解决性能问题,提高吞吐量和响应速度是当前区块链大规模落地所面临的最大问题。

零知识证明实质上是一种涉及两方或更多方的协议,即两方或更
多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

零知识证明的技术实现架构大致可以分为五层结构:

  1. 底层基础
  2. 证明系统(proof system)
  3. 电路约束(circuit)
  4. 电路组件(gadget)
  5. 上层应用
    -以太坊上的 SNARK工具箱 ZoKrates

零知识证明技术的两个重要特点是使其能在区块链领域得到应用的主
要因素:1)零知识证明能够保护数据的隐私性,在不泄漏数据的条件下对其进行证明;2)零知识证明仅需要生成很小数据量的证明就可以完成对大批量数据的证明。

在 ZK Rollup 方案中,用户不再直接将交易数据提交上链,而是将带有签名的交易信息发送给协调者(Coordinator),协调者收集所有交易并构建电路证明这批交易全部有效,并将有效性证明和简单的交易数据提交上链,由智能合约完整证明的验证,最后更新链上帐户状态的默克尔树。由于上链的数据量远小于原始的交易数据,因此,达到了扩展的效果。

采用零知识证明技术的区块链应用:

ZCash 是在原始的比特币代码库基础上结合零知识证明技术开发的一
种保护交易隐私的区块链。它的构想来自于麻省理工大学、约翰·霍普金
斯大学等多个科研机构。

ZCash 钱包地址分为隐蔽地址和透明地址两种。透明地址之间的交易
则与比特币交易没有区别:发送者、接收者以及交易金额都是公开可见的;隐蔽地址之间的交易也会出现在公有区块链上,但交易的地址、资金的数额以及备注字段都是被加密过,再由 zk-SNARK 证明在网络共识规则下验证交易的有效性

Monero 同样是一种实现了交易匿名的区块链。
早期的 ringCT 实现方式存在很大的弊端就是其导致交易的规模巨大。
2018年10月,门罗币每六个月一次的硬分叉升级上引入了零知识证明协议B u l l e t P r o o f s(防弹)加密,用来代替原来的 r i n g C T 实现方式。

ZoKrates 是一个 Remix 插件,Remix 是 Ethereum 官方推荐的智能
合约开发IDE,可以在浏览器中快速部署测试智能合约。ZoKrates 作为以太坊上的一个 zkSNARKs 的工具链,它的作用是帮助开发人员比较容易地实现链下生成零知识证明, 再提交到以太坊链上用智能合约对其进行验证。

Loopring 3.0 协议是以太坊主网上首个采用 ZK Rollup 进行扩容的
DEX 协议。此版本中所有的撮合逻辑都在链下完成。撮合(Settlement)生成的证明将提交上链,在链上证明其链下的撮合正确。Loopring 3.0的交易继承了以太坊主网一致的安全性,同时又能够提供高出目前其他去中心化交易所百倍的吞吐量。

AZTEC 项目是基于以太坊系统的匿名交易协议,基于此能够实现对以
太坊上任何通用的资产的快速匿名转换。AZTEC隐私网络目前已在以太坊区块链上正式启动。

区块链上的公私钥机制以及大量的零知识证明协议都是基于椭圆曲线
离散对数难题而设计的,目前计算机的计算能力来说破解离散对数难题几乎的不可能,但对于具备的指数级的计算能力的量子计算机来说,却可以轻易做到的。庆幸的是,要瓦解区块链,需要具有 4000 量子比特的量子计算机才可以做到,目前的量子计算机距离 4000 量子比特还有很大的距离。

零知识证明技术的引入为区块链领域的诸多问题都提供了非常好的思
路,尤其在隐私保护和扩容方面。值得一提的是,区块链领域所面临的这些问题,零知识证明并不是唯一的解决方案,但零知识证明最大的优势就是其解决方案是建立在不破坏原有区块链安全性的前提下实现的。

##1.1 阅读思考
本文对技术内核描述较少,主要介绍零知识证明技术在区块链领域的作用、研究进展、应用场景。阅读此文能够让读者区块链领域的零知识证明技术有一个初步的印象,给出了有一些有价值的信息,方便用户进一步学习研究。

我的困惑是:
(1)将零知识证明技术应用在区块链领域,能否解决区块链场景下用户隐私泄漏的问题。

  • 通过阅读零知识证明技术在区块链应用实践中的内容,发现此技术的趋势是,链上不放原始数据,而是放数据的签名。这个趋势比zcash早期思路更极端,zcash还能够区分出地址参数、金额参数,只是从原文变成了密文,而新的趋势中,链上只存储了交易的证明信息。原有的基于账本数据提取交易关系(发送方、接收方)的分析方法,将彻底失去作用。本质上,在账本层面就不存在隐私泄露问题了。(隐私问题转移到链 下了,例如在在 ZK Rollup 方案中,用户不再直接将交易数据提交上链,而是将带有签名的交易信息发送给协调者。协调者变成了隐私泄露的风险点,这转变为一个依赖中心节点的传统数据隐私保护问题)

(2)零知识证明技术在区块链中的作用,与隐蔽通信的需求有何区别?
-隐蔽通信的需求是,将携带特殊数据的交易隐藏在普通交易之中,接收方能够高效的识别,敌手无法区分。
-按照本文对零知识证明机制应用趋势的描述,链上将不存储交易信息(明文或者密文),只存储证明信息。
首先,这毫无疑问,将造成所有交易的不可区分,不能够再依靠地址、交易金额等参数对交易进行分类。其次,这里存在一个没有考虑的点,上面的方案中没有解决“数据传递”的问题。上述方案,特别是Zcash的方案主要是对转账交易进行处理,账本上可以不存储金额字段,接收方在需要使用资金时,可以通过证明信息完成资金的转移(不知道有多少钱,但是能够证明资金量大于使用量)。这种方案无法解决数据传递的问题。
这里的疑问主要是由于对零知识证明机制在非转账交易中的知识盲点,需要补充。
-这里假设一下,交易的转账(地址、交易金额)参数采用零知识证明技术处理,而数据参数仅采用加密技术处理。只有通过身份证明的用户才能够解密数据,获得明文信息。如果是这种模式,那么能够非常好的实现隐蔽通信。首先,数据传输的双方身份信息通过零知识证明技术得到很好的保证;其次,数据原文经过适当加密后,可以得到密码学层面的不可取分特性。

预期达成的目标是:
(1)在使用零知识证明的区块链系统下,我们现在研究的区块链数据隐蔽传输方法是否还有意义。

  • 零知识证明协议的使用需要对区块链系统进行分叉级别的协议改动,不适用于现有的典型区块链系统(比特币、以太坊)。
  • 零知识证明协议能否成为未来主流区块琏系统的底层技术,采用零知识证明机制的区块链交易能否占有较大比重。这两点存疑。例如,ZCASH是首个采用零知识证明协议的公链系统,具有理论上最高的隐蔽性,但是ZCASH的市场占比并没有快速提高,甚至实在ZCASH系统内部,仍然是不采用零知识证明机制的透明地址的交易占主要比例。用户是否需要如此高的隐蔽性?此需求存疑。在两个疑问的背景下,考虑到区块连隐蔽通信的目标是将特殊交易隐藏在占据最大比例的普通交易之中,研究区块连隐蔽传输机制仍然是有必要的。
  • 即使零知识证明机制能够解决性能问题,成为主流。相信在隐蔽传输和隐蔽信息识别的信息对抗并不会停止,只是将场景的基础中添加零知识证明机制。
    (2)在使用零知识证明的区块链系统下,如何完善数据隐蔽方案。
    -首先,调研零知识证明机制在区块链中的市场占比和趋势。
    -其次,调研采用零知识证明机制的区块链交易的数据格式。
    -最后,特别注意采用零知识证明机制的区块链交易中,如何处理“附加数据”(op_return,input)。