硬核解读 一文读懂隐私技术现状
按:DCR国际运营负责人、首席宣传者、“DCR 耶稣”Jonathan Zeppettini近日在接受Unchained采访时表示,在经过和一些比特币核心开发者一起一年多的秘密开发后,匿名币新秀Decred近期将添加匿名功能。
一周之前,DCR创始人Jake Yocom-Piatt 8月21日在官方博客撰文详细分析了现有的隐私技术,并准备在下一篇文章中介绍DCR采用的隐私技术。以下为正文。
本文我将讨论对加密货币行业中现有的隐私技术的看法。 因为已经存在好几个主要关注隐私的加密货币,我将解释各种隐私技术,这将有助于理解Decred采取的路线,以及为什么我们采取这个路线。 我会另起一篇文章详细介绍Decred准备如何实现隐私功能。
本文主要介绍的加密货币有:
Monero
Zcash
Grin/Beam
Bitcoin
Dash
本文将仅讨论它们在链上使用的隐私技术,而不是整个项目。 在文章末尾会汇总一个表格,比较他们使用的各种项目和技术。
动机
自2016年2月推出以来,Decred主要专注于治理,但在治理方面取得实质性进展后,现在是时候添加上隐私功能了。虽然隐私是独立于治理的子域,但隐私直接与Decred的核心原则相关:安全性,适应性和可持续性。
通过添加隐私功能,我们可以增强用户以及项目本身的金融安全性。如果经过利益相关者的同意,我们可以逐渐增加额外的隐私功能,使Decred能够根据需要适应不断变化的技术环境。 为用户提供隐私也能使项目在抵御恶意行为者方面具有更大的弹性,从长远来看,可扩大其可持续性。
背景
所有现有的加密货币隐私技术都可以归结为“数学技巧”(math tricks)。 数学上有几个子领域致力于解决如何有效地证明某个陈述,而与此同时,模糊用于证明该陈述的大部分数据。 这些子领域中的几种技术已经应用于区块链领域,被用于当前的几个匿名币项目。 我将讨论这些技术,它们的应用,局限以及不足的地方。
Monero
门罗(Monero)在隐私方面使用的是环形签名(ring signatures)和机密交易(confidential transactions)的技术组合,称之为RingCT。这两技术的组合创造了强大的隐私保障,但也有一些值得警惕的地方。 门罗网络上的所有交易都需要RingCT。
环形签名(Ring Signatures)
环形签名是CryptoNote协议的基础,而字节币(Bytecoin)和门罗币都诞生于CryptoNote协议。环形签名的主要用途是防止他人来追踪交易的来源,它通过对交易发起人的未花费的交易输出(“UTXO”)产生合理的否认来实现,例如:一笔典型的门罗交易显示11组UTXO输入,但实际只包含一组真实的UTXO输入。环形签名允许外部观察者验证签名是来自其中一组UTXO,但不知道来自哪一组。目前,Monero使用多层可链接的自发匿名组(multilayered linkable spontaneous anonymous group,MLSAG)签名,可能会在不久的未来将其更新为一个新的更紧凑的称为“CLSAG”(compact linkable spontaneous anonymous group)的版本。
环形签名采用非常小众的方法来解决区块链上的交易追踪问题。在给定交易中通过混淆这些输入以及它们的签名来破坏掉交易间的链接。这正是环形签名做的事情。所涉及的数学和代码具有一定复杂性,使用简单的原语(primitive,注:程序设计中的术语,程序执行中不可被打断的基本操作),源代码大约几千行。签名的大小随MLSAG签名的输入数量线性变化,随CLSAG签名对数变化。环形签名和椭圆曲线加密算法(elliptic curve cryptography,ECC)一样,依赖于离散对数问题(discrete logarithm problem, DLP)的坚固性(hard),即DLP目前无法破解。但如果DLP被破解,则环形签名可以被追踪到实际交易者。环形签名的一个显著缺点是无法修剪(prune)区块链或以其他方式创建UTXO集的快照,因为无法确定哪些交易的输出已被花费,哪些没有。在最近的文章中也有反映,每个门罗全节点只能存储所有历史交易的1/8。
机密交易(Confidential Transactions,CT)
机密交易作为混淆比特币交易额的方法最早由Greg Maxwell提出。它是通过使用Pedersen承诺(Pedersen commitment)并验证承诺的总和为零来实现的,包括每个输出承诺一定是正数的范围证明(range proof)。范围证明是低复杂度的零知识证明(zero knowledge proof, ZKP)。在RingCT中,必须进行额外的修正来保持发送者的不可追踪性,这种修正包括承诺输出之和非零,而且与理解机密交易无关。 门罗最早实施的机密交易是基于Maxwell的原始论文,但它最近部署了一个称为Bulletproofs的更有效的实施方案,由Bünz等人提出。Bulletproofs的使用大大减小了门罗每笔交易的大小并改善了范围证明的扩容性。
机密交易和环形签名一样,都是混淆交易额的一种小众方法。当门罗刚发起时,它采用的是CryptoNote协议,该协议不包括交易额混淆,因此固定额度的交易可被观察者分析。 机密交易增加了门罗缺失的交易额混淆,从而大大改善了隐私性。与环形签名一样,机密交易的安全性依赖于离散对数问题(DLP)的坚固性,这是因为它也依赖于椭圆曲线加密算法(ECC)。与环形签名不同,机密交易无法通过攻破DLP来破解,因为Pedersen承诺是完全隐藏的,而且是和计算绑定的方案。这种情况下,完美的隐藏属性意味着,椭圆曲线的点、交易额和致盲因子(blinding factor)的多个组合映射到相同的承诺,因此即使可以破解DLP,也无法确定哪一组映射到该承诺。计算绑定意味着攻击者攻破DLP可以生成映射到给定承诺的交易额和致盲因子,但这与输入额和致盲因子不匹配。虽然完全隐藏承诺对隐私很有利,但在攻击者可以攻破DLP的情况下,它们必然存在风险,因为攻破DLP的攻击者可以创建隐形的通胀,因为承诺只是计算绑定的。Maxwell最初机密交易的论文中的数学是中等复杂的,但更节省空间的Bulletproofs具有中等到高的复杂性。实现Bulletproofs的源代码长达几千行,使用简单的原语,并以新颖的方式合成这些原语。
Zcash
Zcash的隐私是使用零知识证明(ZKP)来混淆交易者和转账金额的。它使用的特定的ZKP是零知识的简洁的非交互式知识的论证( zero-knowledge succinct non-interactive argument of knowledge, zk-SNARK)。该系统保证了显著的不透明性,并让用户有选择是否使用它的权利。 Zcash网络中同时存在透明交易和匿名交易,其中匿名交易是受zk-SNARK保护的交易。截至2018年第二季度,约有3.6%的ZEC存储在匿名地址中。
ZK-SNARKs
在加密货币行业中使用zk-SNARKs是Ben-Sasson等人在2014年的Zerocash论文中提出的。该论文是Zcash的基础。 zk-SNARKs允许创建简洁的交易,使其输入,转账金额和收款人完全混淆。通过构造可以由第三方有效验证而不会看到交易数据的算术电路(arithmetic circuits)来实现交易数据的混淆,这些电路是匿名交易的有效载荷(payload)。完全匿名交易的输入实际上彼此无法区分,这意味着特定交易的匿名性是UTXO集的整个匿名部分。
zk-SNARKs是一个可以广泛应用的工具,可以解决各种各样的问题,例如:访问控制,投票系统和通用记录保存。虽然zk-SNARK是一种非常强大的工具,可以应用于各种场景,但它们在复杂性方面具有相当大的成本。支持zk-SNARK的数学具有高度复杂性并且需要使用不太常见的原语。为了在Zcash中创建zk-SNARK,必须获取交易信息并将其“编译”成算术电路,这既是计算密集的又需要数万行代码。除了用于创建算术电路的代码量之外,这些代码还需要一定量的专业知识才能进行有效审计。 zk-SNARK的一个更具体的约束是它们需要一个可信的设置来为网络生成参数,但如果这个可信的的设置者的信息被恶意者掌控,他们可以偷偷地伪造货币,同时保持现有的匿名交易不受影响。攻破DLP的攻击者具有类似伪造货币的能力,但他们只能查看交易额和备注,而不能查看发送者和接收者。由于匿名交易的不透明性,修剪区块只能在Zcash链的透明部分实施。
Grin/Beam
Grin和Beam都是Tom Elvis Jedusor 2016年7月在Mimblewimble(“MW”)论文中提出的匿名方法的实现。MW方法是重构区块链交易,使得它们可以聚合成区块混淆每个区块内部的发送者和接收者,使用机密交易对交易金额进行模糊处理。 MW隐私技术应用于所有交易。
交易聚合(Transaction aggregation)
MW论文建议重组区块链交易,以便可以直接组合整个交易。这种聚合能力实质上改变交易签名的方式,签名可以加在一起,然后在聚合交易上获得有效签名。使用此系统挖掘的区块由单个大型聚合交易组成,其交易数额被混淆。任何试图追踪分析这种区块链的人只能观察到构成每个区块的大型聚合交易,这让发送者和接收者不可追踪。
交易聚合以一种新颖的方式使用常见的ECC工具,签名聚合(signature aggregation),因此它是一个可以广泛应用的工具。签名聚合背后的数学非常简单,并广泛用于环性签名和机密交易。用于聚合交易的签名算法和代码大约几千行或者不到几千行,并且使用常见的原语。因为交易聚合的实用性,有相当大一部分对签名算法的修改,无法使用交易脚本以及对交易创建过程的更改,因此它们不太可能被集成到其他现有的基于比特币的区块链中。一旦区块被挖出,里面所包含的交易就已被聚合,但在被挖出之前,网络上的矿工和其他节点可以在聚合之前查看已发布的各个交易。密切监视网络上发布的交易的攻击者可以使用该信息追踪发送者和接受者,但是查看已挖出的区块则无法追踪交易。由于MW直接使用机密交易,攻破DLP的攻击者可以偷偷地伪造货币,但不会看到之前的聚合或交易数额。使用MW的另一个好处是它可以非常容易地修剪区块,可以大大减少全节点的存储空间。
比特币
除了能够手动选择UTXO输入之外,在比特币核心客户端(Bitcoin Core)中没有提供任何实质性的匿名功能,但是比特币钱包Wasabi提供了匿名功能。 Wasabi利用一种称之为Chaumian混币(Chaumian CoinJoin)的方法来实现匿名,由用户自己来选择需不需要匿名。
Chaumian混币
通过应用盲签(Blind signature)技术,Chaumian混币让人们难以确认混币后比特币的所有权。混币过程通过服务器将多个交易合并到一个交易中,从而为参与者提供一定的链上隐私,但服务器可以查看资金来源和发送地。使用盲签则可以混淆哪些输出链接到哪组输入,从而阻止服务器将输入链接到输出。该混合过程定时发生,由计时器或参与阈值触发。
对混币过程使用盲签是加密技术的小众应用。盲签背后的数学既不复杂又经过充分研究,仅需要几百行或更少的代码就能实现。为了确保无法区分输出,使用了几种输出面额。由于比特币不支持交易额模糊处理,因此可以使用部分求和(partial sums)分析来链接输入和输出,因此需要对变化进行仔细处理。通过盲签获得匿名靠的是每次混币要通过不同的网络路径至少连接3次服务器,而且使用的是Wasabi钱包中集成的Tor网络。Tor提供了很大程度的网络隐私,但Tor不是为了阻止全球监听机构,例如NSA,因此能得到多少隐私取决于是谁在监听你。攻破DLP的黑客可以冒充服务器,伪造签名输出地址,窃取UTXO输入,从攻击开始时对混币进行去匿名化,并且通常能强制服务器停止操作,但是这样的攻击者不能对之前的混币进行去匿名化。 Chaumian混币修剪没有问题。
Dash
Dash是在2014年通过在Dash核心钱包中部署匿名支付(PrivateSend)引入匿名功能的。PrivateSend是一种分布式混币(CoinJoin)方法,它使用多轮混币。Dash的匿名功能由用户自己选择使用与否。
匿名支付
关于比特币的部分已经介绍了混币过程,在Dash中也使用了类似的过程。 匿名支付混币过程通过主节点(masternodes)将几个交易合并为单个交易,为参与者提供一定的链上隐私,但执行特定混币的主节点可以查看资金来源和发送地址。用户可以实施4-16轮混币操作,以增加其匿名集(anonymity set)的大小。
虽然匿名支付有更多轮的混币操作,但其匿名性不及Chaumian混币。分布式的混币是一个非常有限的工具,它旨在模糊链上币的来源,但无法混淆执行混币过程的主节点的发送者和接收者。 混币的算法简单,复杂度也低,可以在几百行代码中实现。很难估计匿名支付操作提供了多少匿名性,因为有人声称一些大型混币参与者可以有效地对混币进行去匿名化。如果攻击者攻破了DLP,他可以冒充任意的主节点,可能会从这一点开始对混币进行去匿名化,但这不会影响之前完成的混币。
结论
为了防止迷失在细节中,因此特意制作了下面上述项目隐私特性的对比表。在介绍了几个主要加密货币项目的匿名功能之后,您现在可以更好地理解Decred的独特方法,这将在下一篇文章中进行概述。
위믹스3.0 최초의 DAO ‘원더다오’, 노드 카운슬 파트너 합류
위믹스3.0 최초의 DAO ‘원더다오’, 노드 카운슬 파트너 합류 l 탈중앙화 자율조직 형태로 결성…구성원 모두가 위믹스3.0 운영에 참여 가능l 스마트 컨트랙트 기반 모듈화 ...
[주간톡톡] 양의 탈을 쓴 늑대는 양일까? 늑대일까?
주간톡톡은 한주간의 블록체인 소식을 재구성해 독자들과 재미있게 이야기해보는 코너입니다. 이번주는 페이스북의 스테이블 코인 프로젝트 '디엠(Diem)'에 대해 알아보겠습니다. 그럼 ...
IBM, 블록체인 와인 추적 서비스 '빈어슈어(Assure)' 공개
IBM이 재배지부터 매장까지 와인 공급망을 추적할 수 있는 블록체인 기반 플랫폼을 공개했다.10일(현지시간) 발표에 따르면 IBM은 와인 모니터링 업체 e프로브넌스(eProven...