隐私技术介绍
你愿意公开你的钱包地址并且让所有人都知道你有多少钱吗?你愿意让所有人知道你的投资偏好、每笔支出吗?我想很多人是不愿意的。要实现这些数据的隐私保护,就需要用隐私协议。
市场上一直有以隐私为卖点的数字货币,包括DASH、XMR、Zcash、Grin、Rose(Oasis Network)、FRA(Findora)、PHA(Phala network)、SCRT(Secret Network)等,加密行业发展的十几年中,隐私板块一直都占有一席之地。
如果进一步将隐私赛道进行细分,可分为隐私计算网络、隐私交易协议、隐私应用、隐私币等四类。其中隐私币发展最早,隐私应用中的Tornado目前被采用较广,隐私交易协议和隐私计算网络目前最受关注。本文篇幅有限,只从技术发展和演变的角度漫谈隐私交易相关的技术实现方案的发展情况。
加密货币发展至今,主要有以下四类实现隐私交易的技术方案:
一、CoinJion
CoinJoin:CoinJoin是一种混币机制,从不同的发送方那里获取代币,并将它们组合成一笔交易。第三方将代币打包发送给接收方。在用户端,每个接收方都会在一个从未使用过的地址中获得他/她的代币。以此来降低特定交易被追踪的可能性。
DASH币是采用CoinJion技术实现隐私交易的典型案例。DASH币诞生于2014年,并非以隐私为唯一目的,而是将隐私交易作为提供给用户的一种选择,用户可以选择采用PrivateSend功能来进行隐私交易,也可以选择正常交易。
在机制方面,DASH网络通过更高的奖励收益,鼓励矿工充当主节点,每个主节点矿工都有1000个DASH币作为缓冲资金。每个发起交易的用户都可以使用这些缓冲资金,从而达到“混币”的效果。由于混币的存在,交易信息被打乱,难以追踪,从而达到隐私保护的效果。
二、隐匿地址+环签名
隐匿地址:创建隐匿地址意味着每次接收加密货币时都会创建一个新地址。它确保外部各方无法将支付的地址与永久钱包地址联系起来。
环签名:区块链交易需要数字签名来验证签名人是发送方,因为每个用户的签名都是唯一的,所以当用户签名时就不难追溯到与签名人所进行的交易。环签名策略是将签名与其他环成员的签名结合在一起:环成员签名的数量越多,直接将签名人与其交易联系起来就越困难。
门罗币XMR是采用隐匿地址+环签名的组合模式实现隐私保护。门罗币并非选择性隐私,而是完全隐私。门罗币为每个钱包所有者提供一个新的私有视图密钥、收件人地址和一个私有消费密钥。而且XMR挖矿用一般电脑CPU即可完成,不需要专业矿机,这一定程度上让XMR更加去中心化。
门罗币为了进一步提高隐私保护的有效性,发展过程中还进行了多次技术升级。为了将交易金额隐藏,RING-CT(环机密交易工具)应运而生;使用了RING-CT后,门罗区块链的隐私性能获得提高,但可扩展性方面有所牺牲,故而在后来又引入了Bulletproofs这种零知识证明协议,它提高了XMR的交易规模、减少了80%的验证时间。
三、Mimblewimble
Mimblewimble这个词来源于《哈利波特》中的咒语“混淆咒”,主要有Grin和Beam两个项目使用了这个隐私协议。Mimblewimble所用技术包括了Confidential Transaction、CoinJoin和Cut-through。
Mimblewimble协议是在匿名性和可扩展性之间找Tradeoff的方案,这是一个为基于output模型的公有账本提供加密货币隐私性的设计方案,并不涉及共识层,所以可用在几乎任何共识规则上。\
最初提出Mimblewimble的目的是为了给比特币提供隐私性。使用该技术后,可以让账户归属、交易关联和交易金额隐藏起来;还可以“洗币”,在比特币中有些币会被标记为“赃款”,很多机构会拒绝接收这些币,通过MimbleWimble技术可以实现洗币效果。
四、零知识证明类
零知识证明(Zero-Knowledge Proof),是指证明者能够在不向验证者提供超过陈述本身有效性的信息的情况下,使验证者相信某个论断是正确/真实的。
零知识证明首先是由Goldwasser、Micali和Rackoff在1989年进行理论化。目前零知识证明在区块链行业主要用于两个方面:隐私保护、可扩展性。本文主要介绍零知识证明在保护隐私方面的应用。
零知识证明用于隐私保护,最早是在Zcash上进行实践,后面逐渐有Aztec、Manta Network、StarkWare等诸多项目采用零知识证明机制,并演变了很多项新技术。
通过“阿里巴巴和四十大盗”的例子来介绍零知识证明机制:\
阿里巴巴是证明者,大盗是验证者。大盗抓住了阿里巴巴,要他说出打开藏着宝藏的山洞的咒语,否则就要杀他。如果阿里巴巴直接说出咒语,有可能会因失去利用价值而被杀死;如果阿里巴巴坚持不说,大盗就会认为他不知道咒语,也会杀他。阿里巴巴想了个办法,要求大盗距离他一箭之地,如果阿里巴巴念咒语打不开山洞的石门或者逃跑,大盗就可以用弓箭射死他。
通过这种方式,阿里巴巴能够在距离大盗足够远(大盗听不到咒语是什么)的位置,证明他确实掌握咒语。这个过程阿里巴巴(证明者)没有直接透露咒语是什么,但是能够使大盗(验证者)相信某个论断(阿里巴巴掌握咒语)是真实的。
zk-SNARK
zk-SNARK的全称是" Zero-Knowledge Succinct Non-Interactive Argument of Knowledge",中文名称为“零知识简洁的非交互知识论证”。zk-SNARK是以色列理工学院的Ben-Sasson等人在2014年的Zerocash论文中提出的,是目前应用最广泛的零知识证明类隐私技术,直接部署zk-SNARK算法的知名项目有Zcash、Loopring等。它允许人们证明自己拥有特定的信息,而无需透露信息的内容。
**zk-SNARK是一个将零知识证明机制**转化成计算机程序语言的技术。zk-SNARK具体实现了怎样的隐私呢?zk-SNARK实现了完全的隐私,不仅隐藏了交易双方的地址和交易的金额,而且连节点都不知道交易的内容。但zk-SNARK的缺点是它需要可信初始设置(trusted setup),这个设置无论怎样设置,终归有些潜在安全隐患。\
在zk-SNARK的基础上,为了提高隐私性的同时也兼顾交易容量和交易成本的优化,后面又衍生出了Bulletproofs、zk-STARK、Sonic、PLONK、Supersonic等新型零知识证明。
Bulletproofs
相较于 zk-SNARK,Bulletproofs 不需要可信初始设置,但验证 Bulletproofs 比验证 zk-SNARK 证明更耗时,Bulletproofs被应用在了XMR项目中,以提高XMR的交易规模并减少其80%验证时间。
zk-STARK
zk-STARK的英文全程为Zero-Knowledge Scalable Transparent Argument of Knowledge,“零知识可拓展的透明知识论证”。zk-STARK是由StarkWare研发的,使用新颖的密码学证明和现代带书来强制区块链上计算的完整性和隐私性,StarkEx采用了zk-STARK技术。zk-STARK允许区块链将计算转移到单个链下STARK证明者,然后使用链上STARK验证器验证这些计算的完整性。
相较于zk-SNARK,zk-STARK被认为是一种更快、成本更低的技术实现,因为其计算量增加,但证明者和验证者之间的通信量保持不变,因此zk-STARK的整体数据量要远远小于zk-SNARK证明中的数据量。而且zk-STARK不需要初始可信设置,因为通过抗碰撞哈希函数,它们依赖于更简洁的加密技术。总体而言,zk-SNARK在完善和采用方面取得了重大进展,而zk-STARK则填补了zk-SNARK证明的许多缺陷(更快、成本更低、不需要初始可信设置)而被认为是协议的改进版,但zk-STARK采取链下计算链上验证的方式,在安全性方面似乎不如zk-SNARK。
Sonic
伦敦大学的Sarah Meiklejohn、爱丁堡大学的Markulf Kohlweiss和Zcash的Sean Bowe提出了一种名为Sonic的零知识证明协议,Sonic是一种通用的SNARK,也就是说,只需要一个设置,它就可以验证任何可能。
Sonic的出现,让零知识证明的演变向前迈出了一大步。不过Sonic的速度降低了,因为与非通用SNARK相比,Sonic的证明构建时间增加了约2个数量级,所以目前并没有知名隐私项目是采用Sonic技术方案。\
PLONK
PLONK是Aztec协议的CTO Zachary Williamson、首席科学家Ariel Gabizon(Protocol Labs及前Zcash)合作开发的高效通用zk-SNARK。Ariel Gabizon和Zac Williamson在伦敦Binary District研讨会上的一次偶然会面中研发了PLONK。
这是一种全新的高效通用zk-SNARK,PLONK只需要一个可信设置,所有程序都可以重复使用这个设置,这项技术还获得了Vitalik转发。PLONK有多快?在完全标准的硬件上,PLONK能够在23秒内通过超过100万个门的电路。这里没有服务器场或HPC集群——这些数据来自Microsoft Surface平板电脑。
以Aztec为例,简述基于PLONK的隐私协议Aztec的工作原理:\
首先,Aztec需要一个可信初始设置——Ignition CRS。最初的时候Aztec在全球随机召集了200名参与者,分别获得Ignition CRS。这200名参与者都会创造随机性——这是Aztec证明安全性的基础。(这就相当于有200个人洗牌,只要不是200个人全部勾结了,只要其中有一个人是诚实参与者,就能够保证牌的随机性,也就是系统的安全性。)
然后,Aztec常规的隐私交易可理解为一个UTXO。类似比特币的运作方式,但Aztec的区别在于交易需要加密。所以,以太坊会验证这个UTXO是否正确——即检查60+40 = 75+25。具体怎么检查呢?先检查input note = output note;为了防止环绕攻击(例如:10 = 11+ -1),又设置了Range Proof(范围证明),所以Aztec改为部署集合成员证明——交易要想获得Aztec密码引擎(ACE)的批准,用户需要证明它们形成了来自Codex的输出注释。这一系列之后,才能成功验证UTXO正确与否。
Aztec要实现的隐私,包括三个方面:一是数据隐私,Aztec可以将交易金额进行加密隐藏;二是用户隐私,观看网络的人无法再确定发件人和收件人ID;三是代码隐私,可以将使用了Aztec SDK的dApp的智能合约代码也隐私化。其中第一项已经实现,后两项尚未实现。
SuperSonic
SuperSonic技术结合了Sonic和DARK证明,是个无需可信设置的短证明,100万逻辑门的前提下可以将证明大小压缩到10-20 KB,甚至还有优化空间,该技术首次被应用在金融公链Findora上。
总体而言,这些高效通用SNARK的出现,允许通过最多一个MPC设置实现Web3的隐私和扩展,使得我们能够在所有用户设备(手机、平板电脑等)上生成隐私交易,也可以在公共网络上有效地执行这些隐私交易。从而大大推动了隐私领域的发展步伐。
根据隐私交易领域的发展现状,可能在不久的未来会呈现以下两点趋势:
1、当前阶段隐私交易使用率还较低,随着技术更迭有望获得提高。
隐私交易使用率较低主要有三个原因:一是技术门槛过高,早期的隐私交易对大多数普通用户而言使用体验不友好,尽管Zcash、XMR之类的隐私币已经存在多年,但绝大多数普通人都没真正用过它们;二是隐私交易的需求还没有被普及,以前谈起隐私交易,大家潜意识里都认为只有见不得光的一些交易才需要隐私交易,人们对于隐藏自己在链上的交易、转账/支付等行为及金额的意识还比较弱,随着DeFi等链上交易的爆发,人们对链上交易的隐私保护的意识正在觉醒;三是早期的隐私协议并没有提供用户真正想要使用的货币,比如ETH、USDC、DAI主流链上资产等,普通用户为了保持隐私而特意去选择使用隐私币的概率不高。
2、主流区块链部署隐私功能,或许是隐私领域发展的最终趋势。
隐私币作为一个独立的存在,可能不会再受到追捧和欢迎,尤其是经过前面几年各国监管的围追堵截。例如,受FATF规则影响,2019年时Coinbase UK下架了Zcash,而OKEx韩国则下架了Monero、Dash、Zcash、ZCache、Horizon和SuperBitcoin等六种加密货币。
但隐私交易这个需求是真实存在的,而且一直会有这个需求,有需求就有市场。根据近期行业内最受关注的隐私项目类型来看,在比特币、以太坊、Polkadot等为代表的主流区块链中纳入隐私保护功能的方式可能会成为一种趋势。
在比特币交易中使用Coinjion技术,这是目前使用较广泛的用于隐藏交易信息的混币器(Mixers)服务,Mixers是通过第三方将比特币发币方地址和收币方地址的联系打乱从而隐藏交易信息的一种服务。
在以太坊上关注度最高的隐私解决方案是零知识证明系列(zk-SNARK、zk-STARK等)。Vitalik曾讲过“零知识证明是最强大的隐私解决方案,尽管技术实现难度最高,但在保护在以太坊网络的隐私性和安全性上,效果最佳。”而零知识证明类隐私解决方案中,较受推崇的当属Aztec的PLONK技术。
在Polkadot生态也有一个较受关注的隐私交易项目——Manta Network。它是由P0xeiden Labs构建的zk-SNARK类型(Plonk with Lookup)的隐私协议,Manta Network部署在Polkadot,其测试网Calamari则部署于Kusama,该项目规划,未来还可能在其他公链部署相应隐私协议。Manta Network计划推出一个多资产去中心化匿名支付协议MantaPay,以及一个由zk-SNARK提供支持的AMM机制的去中心化交易协议MantaSwap。
总而言之,隐私交易是个真实存在的市场需求,这个赛道的发展值得持续关注。随着链上交易的数量和资金量的增长,这部分市场需求也会相应增长。
参考资料:
1、https://vitalik.ca/general/2022/06/15/using_snarks.html
2、https://developers.aztec.network/
3、https://emphasized-seed-161.notion.site/PVM-P0xeidon-VM-primer-5bf16a3ef16e4a8696e99ede6d71ea95
特别鸣谢:ox1