加密货币≠匿名,一文详解加密货币隐私保护基础知识_区块链:加密货币

在全行业热烈讨论并开始着手解决区块链公链项目的「可扩展性」难题之后,我们相信,下一个值得全行业关注的重要议题,将是区块链技术如何实现「隐私保护」这一难题。今年出现的众多技术驱动型项目,已经将「隐私保护」视为核心方向,并在该领域开始深入探索。这是一个庞大又复杂的话题。事实上,很多谬误普遍存在。感谢两位身在美国的年轻学者,撰写了一篇关于区块链及加密货币「隐私保护」基础知识的文章。链闻推荐给各位读者,希望帮助读者厘清并了解该领域的基本知识。对于进阶型读者,推荐阅读链闻之前发表的另一篇深度文章:「一文读透区块链隐私保护技术以及相关项目全景图」。尽管该文介绍的是普及型知识,但是依然是一篇「硬核」技术文章,需要时间思考和理解。最好的阅读方式是,先「收藏」,再细细阅读。并且,欢迎转发,把有价值的信息传播给更多的人。Enjoyreading!在媒体的描述中,加密货币经常自带「匿名」属性,但另外一些文章指出,加密货币交易活动能够被轻易追踪到,甚至比法币交易更容易被追踪。这两种说法要达成一致,重要的是要了解到:加密货币的隐私保护具体是指什么?这个问题要回答起来可没有看上去那么容易,因为「隐私保护」在区块链世界中也有很多层面的意思。要成为一名深谙区块链技术的开发者、一名投资人或者加密货币的参与者,理解加密体系中「隐私保护」真正意味着什么,至关重要。我们撰写此文,分享自己在这方面的一些心得与技巧。想象一下,Alice开通一个Venmo账号美国一款小额支付手机应用,目前已被Paypal收购,她需要提供并验证其真实姓名。因为Venmo公司知道了她的真实姓名,且有可能会与其他人分享这一信息,Alice损失了其身份的部分隐私。如果Bob通过Venmo给Alice转账20美元,并在她的信息流里分享了这一交易,那么Alice的交易信息已是公开化,但她个人账上迄今为止有多少钱,只有Venmo知道,别人并不知道。如果假设Alice创建一个比特币地址,要求Bob给她转账价值20美元的比特币。相比Venmo交易,Alice在个人真实身份方面获得了一定的隐私保护,因为她的比特币地址并不与她的真实姓名相关联。不过,事实上比特币从Bob的地址转到Alice的地址,以及Alice收到比特币转账后的比特币总数额,对于比特币区块链中的所有人都是透明信息。所以,我们可以了解到,使用了比特币,Alice在某些方面取得了隐私保护,但在另外一些方面又失去了隐私。当使,用不同的加密货币进行交易时,这种情况司空见惯。在加密货币世界中,我们认为隐私保护主要包含三个层面的内容:利用加密货币进行某种操作的用户的身份信息用户相应操作中的具体交易数据集合所有交易信息的区块链整体状态区块链协议可以采用密码学方式,使得局外人不可能或者极为困难知晓或者计算推演出上述每个环节中的不同部分。与此同时,想要挖掘区块链特性的攻击者能综合不同信息碎片,来猜测出甚至直接总结出他们想要的信息。隐私保护的手段就变成通过协议设计、在具体属性领域给潜在攻击者暴露尽可能少的信息。重要的是,关于某个具体属性是否属于隐私保护范畴,不是那么黑白分明的。譬如,它对某些外部观察者已是透明信息,但其他外部人不清楚,或者外部观察者也许机缘巧合能猜到,但不是一定能猜到。这种不明确之处意味着譬如「XX币能确保隐私」、或者「A币比B币的隐私保护做得更好」之类的简单陈述常常无法成立。且有时措辞不谨慎,这类说法会造成混淆和误解,因此有人精心编排这样的说法用来误导他人。我们推荐更仔细的表述,譬如「门罗币的交易额是被作为隐私受保护的」、甚至「由于ZCash币的某种匿名性设定,发送方的地址是作为隐私被保护的」。在这篇文章的后面,我们还会讨论到:某些情况下,例如零知识证明这样的密码学工具能帮助我们对此类说法进行量化分析,甚至提供严格证据。首先,让我们先从与加密货币相关的隐私保护开始谈起。身份信息隐私,即匿名性

人们听到隐私一词时,最先出现在脑海中的往往是匿名性,这意味着用户的行为与他们在真实世界的身份信息不扯上任何关联。一种实现这种隐私保护的途径是很容易实现的「假名」方式;实际上我们在接受各种网络服务时已经习惯于使用假名,譬如注册邮箱名bitcoinlover2008@gmail.com,而不是使用真实姓名。在这种情况下,在这种网络协议中的大多数互动中,bitcoinlover2008@gmail.com主人的真实/合法姓名假设叫AliceJones不会暴露出来。在多数加密货币体系中,譬如比特币,用户得到一对公钥/私钥签名,公钥类似于用户名,私钥类似于密码。关键是,只有在某个人知道你准确的私钥不管是合法取得还是非法窃取,才能制造出由你「签字」的信息,在这个意义上,任何人可以用你的公钥查看拥有私钥的人发送的信息。这一特质可以让用户用其掌握的几个公钥或地址中的一个接收比特币这样的加密货币,用自己的私钥来发送加密货币,这一切都没有中心化权威的干预。这些理念组成了现代数学密码学的基石。不过,拥有一对私钥/公钥只是一种在去中心化环境中「使用假名」掩饰真实身份的一种办法。「使用假名」通常是加密货币背后协议中天然的属性,让媒体和大众误认为所有的加密货币都是「匿名的」,或者至少比仅仅使用假名有更强的匿名性。一点都不奇怪,这种误解推动用户利用加密货币进行一些不法行为,譬如线上、或者暗网交易。然而,真实的隐私保护水平可能让这些用户大失所望。他们确实可以利用公开地址发送或接收比特币,在交易中不涉及其真实姓名,但用户的某些行为可以将公开地址与他们在现实世界的真实身份扯上关系。首先,多数用户在交易所中先是用法币买进比特币。法币交易通常需要与现行的银行系统发生关联,后者是需要验证现实世界的真实身份的。因为比特币中的所有交易数据是完全公开的上一节中讲过,这意味着所有人都可以看到交易所数据库,将具体地址与现实世界的真实身份联系起来。举个例子来说明:如果Alice从Coinbase提取了0.1个比特币到她控制的一个地址,譬如36n452uGq1x4mK7bfyZR8wgE47AnBb2pzi,然后Coinbase就会把她的真实姓名与这个地址挂钩。如果她从一个线上非法体育网站提取0.2个比特币,外部观察者就可能推断出,并可以提供不可篡改的公开证据证明,Alice参与非法线上活动。Chainalysis等公司已经采用了此类被称为区块链分析的技术,将公开地址与背后拥有者的身份挂起钩来,并分析交易走向。

图为2009-2012年区块链分析的一个早期案例;数据来源:https://doi.org/10.3390/fi8010007其次,进行加密货币交易需要通过互联网发送一些信息。在某些情况下,互动的元数据能被用来追踪用户发起这些交易时使用的IP地址,即使用户使用了类似「洋葱Tor」这类所谓安全浏览器,也有可能被追踪IP地址。上述这两个原因综合在一起,意味着单凭加密货币「使用假名」的特质而利用元数据进行匿名交易近似是「不可能完成的任务」。交易数据的隐私保护

当人们谈论所谓「隐私币」时,通常指的是这些币种的交易在某些方面具有隐私保护。宽泛而言,交易是一名用户采取的修改这条区块链状态的行动。譬如,Alice从她控制的一个地址向Bob控制的一个地址发送了X个代币。从上帝视角来观察,这个极为简单的例子也包含了多重数据:Alice的一个地址,譬如36n452uGq1x4mK7bfyZR8wgE47AnBb2pziAlice与Bob地址的链接Bob的一个地址代币发送的数目更为复杂的交易会包含其它类型信息,譬如以太坊中的智能合约代码。不同的区块链以不同的方式展示交易数据,其中一些允许某些环节是第三方无法看到的,第三方只能看到区块链原始数据。所以我们本节命名为「交易数据的隐私保护」,而不是「交易的隐私保护」,因为不同类型的交易数据能在不同的程度上得到相应的隐私保护。能得到隐私保护的数据中,最重要的是Alice和Bob的地址。如果它们得到隐私保护,就无从识别交易的发送者和接受者的真实身份,就会阻挠前文提到的那种区块链分析技术。譬如,如果Alice从交易所币安购买了具有这种技术特性的门罗币,并提取了该币,币安就无法将这一提取动作与Alice之后如何处置这些门罗币关联起来。同样的,如果Bob从Alice那里收到门罗币,他也无法知道Alice是从币安购买的这些门罗币。

但让问题更为复杂的是,交易数据是否有隐秘性不是非黑即白的问题。譬如以Alice的地址为例,这可以由匿名集anonymityset大小来衡量,匿名集是指根据区块链数据可以辨识出的交易发送方地址的最小集合。匿名集越大,区块链交易数据中关于发送者的信息就越少。譬如比特币的匿名集大小为1,而门罗币的匿名集就要大得多。状态隐秘性

在比特币区块链中,所有交易数据都是公开的,意味着一位看到区块链中所有的区块外部观察者可以复原账本、查明这些地址的账户金额尽管这些金额可能被分配进不同的「未使用交易输出UTXO」,即我们所说的区块链整体状态。不过,如果交易的某些部分是隐秘的,即便掌握了整个区块链的信息,也不会让用户知道整体状态。这些信息是在不同的用户间分享的,区块链保障用户信息间的一致性。尽管用户知晓区块链状态中的某一特别属性只取决于协议,取决于其了解的触发这种状态形成的交易信息,但是两者之间的联系会触发复杂的互动。因此,状态的不同特质可以在某种程度受到隐私保护。以下是几个例子:所有地址列表某一具体地址的账户余额,譬如0x2569C92345013F55CFb47C633c57F2f5756B9acA有1个ETH某个特定地址上的智能合约代码,譬如0x06012c8cf97BEaD5deAe237070F9587f8E7A266d地址上的加密猫合约合约的具体状态,譬如加密猫合约存储的数据举个简单的推演例子:ZCoin每笔交易的数量是公开的,但发送者和接受者的地址是隐秘的,意味着用户账户余额依然是隐秘信息。另一方面,在隐私保护区块链格式Mimblewimble中,每个交易的具体数额是隐秘的,但发送者和接受者是公开的,这提供了保护用户账户余额隐私的另一种途径。Mimblewimble中的用户必须保存好自己账户余额的信息,因为该区块链只存储用以保障用户不会超支的有限信息。在多数情况下,交易中加入更多的隐私保护措施,对用户个体而言是有益的,但对区块链整体状态未必是好事。譬如,如果某种加密货币的总发行数量是隐私的,用户无法判断该区块链协议中的总供应时间表等具体属性;此外,很难发现攻击者利用算法漏洞或者协议后门进行非授权铸币。部分现有区块链协议中的隐私保护特质

不同的隐私保护方式

我们到目前为止主要关注特定信息是否是公开的或者是隐秘的。此外,梳理一下不同区块链所采用技术的隐私保护方式也是有所裨益的。我们粗粗梳理了这些不同的隐私保护方式。「第二层」协议建立在区块链底层技术之上的「第二层」协议,譬如闪电网络、状态通道技术或者Plasma让小部分用户彼此间进行「链下」交易。这意味着所有中途状态存储在这些用户间,主区块链上只会定期写入状态变化。因此中途状态对外部观察者而言是隐形的,因为它们从未写入主区块链。当然第二层协议本身也能有也可以选择没有面向所有用户而对链下状态进行不同层级的隐私保护,所以这更多是由设计理念而不是隐私保护技术决定的事情。因此我们不会进一步重点关注第二层协议,虽然在感兴趣的读者眼中,里面可以挖掘的内容浩如烟海。关于「第二层」协议相关发展的具体详情,推荐参看链闻之前发表的文章:「以太坊不再是唯一选择,第二层项目面临新生态抢亲大战」混合方式混合方式是在交易的输入和输出采取不同的隐私保护策略,将其融合成一个大的交易,故意把发送者和接受者的地址联系变得模糊。这包括了加密世界中部分最古老的隐私保护策略,譬如tumblers、CoinJoin、Mimblewimble和门罗币等。零知识证明当协议用户提供零知识证明,就有了零知识证明基础上的隐私保护,譬如,在不显示某消息本身的基础上展示知晓该消息。当应用正确时,这种加密技术可以同时保障交易/状态的隐私,以及区块链功能完备。关于「零知识证明」相关知识,推荐参看链闻之前发表的文章:「一个数独引发的惨案:什么是零知识证明Zero-KnowledgeProof」用户的最佳实践即便是使用那些不附加任何隐私保护功能的加密货币,用户也有办法在一定程度上抵御网络安全威胁和区块链分析技术。为了抵御恶意者利用网络元数据对用户进行匿名攻击,用户可以使用Tor或者I2P来掩盖其交易的原始IP。为了抵御区块链分析,一般建议用户为收到的每笔款项更换一个新地址。门罗和Verge等加密货币提供了这种功能,作为一个原生选项,当然,在部分加密货币中,这些地址依然能与用户之后的操作关联起来。可信执行环境TEE可信执行环境是一个处理器,譬如英特尔SGX,其宣称能用密码技术保护上面运行数据和代码的健全性和机密性。包括Ekiden由宋晓冬教授领军的OasisLabs将其商业化运作在内的几个协议宣称将采用可信执行环境。譬如,用户账户余额可以被私钥加密,存储在可信执行环境中,它们只能在「可信执行环境」中解密和修改。这其实是把确保隐私保护的责任交给了可信执行环境,而可信执行环境本身可能也有其弱点。譬如侧链攻击或许能破解出私钥,英特尔SGX稍早爆出了此类漏洞,另外,现有的可信执行环境可能需要制造商的许可,或者允许制造商破解数据机密性,当然,Keystone和Gradient等替代方案试图解决这一问题。关于宋晓冬教授创立的基于基于可信执行环境的区块链项目OasisLabs的具体发展,推荐参看链闻之前报道:「揭秘OasisLabs:顶级基金站台、号称超越以太坊,它究竟凭什么?」总之,当考虑加密货币的隐私保护时,不要使用「我们的币比他们的币更具隐秘性」等含混不清的表述。我们建议尽量去搞清楚以下问题:有关世界的哪些状态信息何时受到何种程度的隐私保护?对哪些人保密?这可以让我们更具针对性分析隐私保护技术以及它们进行的交易。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:31ms0-3:652ms