区块链提供了一种挂在开放环境中存储信息、执行事务、执行功能和建立信任的方法. 许多人认为区块链是密码学和网络安全领域的技术突破, 例如在全球范围部署的比特币等加密货币系统、智能合约、物联网上的智能电网等. 本文对区块链中常见的隐私保护技术进行了全面的概述, 我们首先给出了区块链应用程序所需的隐私属性, 然后我们介绍了基于区块链系统中实现这些隐私属性的保护机制, 包括混合协议、匿名签名、非交互式零知识证明等.

区块链技术是在开放的网络系统中, 在没有中央权威机构的情况下进行安全计算的突破. 从数据管理的角度来看, 区块链是一个分布式数据库, 它通过将事务记录组织成一个分层的块链来记录不断变化的事务记录列表. 从安全的角度来看, 区块链是通过点对点覆盖网络创建和维护的, 并通过智能和分散使用加密和人群计算来保护.

对区块链的隐私性的研究主要集中在两个方面: (1) 发现迄今为止基于区块链的系统所遭受的一些攻击; (2) 提出具体的建议, 使用一些最先进的对策来对付一部分此类攻击.

我们将本文的其余部分组织如下. 第1节描述了区块链系统所需要的隐私属性. 第2节讨论了目前在区块链上使用的隐私保护技术.

区块链应用所需的隐私属性

区块链例如比特币可用来进行在线交易, 这对其提出了许多安全和隐私要求. 本节中我们描述了区块链应用所需的隐私属性.

在线交易的隐私要求

我们简单的讲在线交易的隐私要求分为以下三类:

交易的保密性

在大多数的在线交易中, 用户希望在网上交易系统中对他们的交易和账户信息尽可能少的泄漏. 这一要求包括: (1) 用户的交易信息不能被任何未经授权的用户访问; (2) 未经用户允许, 系统管理员或网络参与者不可以将用户信息泄露给他人; (3) 所有用户数据应被一致和安全地存储和访问, 即使发生意外故障或恶意网络攻击也必须保证数据的安全性和一致性.

用户身份的匿名性

用户可能在多个银行、金融机构拥有独立的账户, 而各个银行、金融机构间很难有效、互信的共享用户数据, 这使得识别用户的多重身份很难做到, 并且某些受信中介可能会背叛用户导致用户身份匿名性被破坏. 另外, 在交易中, 交易的一方或者双方可能不想让另一方知晓自己的身份, 这也是对在线交易匿名性的要求.

交易的不可追踪性(不可联系性)

用户在交易中匿名的同时, 也会要求交易具有不可追踪性. 否则, 一旦与用户相关的交易被挖掘出来, 就会严重破坏用户的隐私, 例如推断出用户的账户余额、其常见的交易对象与频率等. 这些信息可以有效的被竞争者利用进而推断出用户的真实身份.

区块链的隐私属性

现有的区块链隐私属性是基于密码学的发展和比特币的设计与实现, 下面我们介绍一些区块链应用中需要的隐私属性.

假名

假名指一种伪装身份, 在比特币中, 区块链中的地址是网络中一个用户公钥的哈希值, 用户可以通过使用公钥哈希与比特币系统进行交互, 以此来保护自己的真实姓名. 所以用户使用的地址可以视为一个伪身份, 这样从某种角度上, 假名就成为了一种保护用户真实身份的隐私财产. 另一方面, 用户可以拥有任意多公钥, 也就拥有任意多的假名, 如同在银行中开多个账户. 假名可以通过公钥的方式达到较弱的匿名性, 但仍然存在泄漏身份信息的危险.

不可链接性

不可链接性是指无法高度可信地描述系统的两个观测值或两个观测实体之间的关系. 上面提到, 比特币中的区块链通过提供伪身份来保障用户的匿名性, 但伪身份(假名)不能提供交易的不可链接性保护. 我们可以想象, 如果用户只使用伪身份与系统进行交互, 那么只有同时保证匿名性和不可链接性才可以确保用户的完全匿名性. 当不可链接性没有得到满足时, 攻击者很容易发起反匿名推理攻击, 当掌握足够多的背景知识时攻击者将有很大概率获知用户的真实身份[1]. 例如在比特币系统中, 由于每笔交易和其涉及的发送者和接收者的地址都被记录在区块链中, 任何人可以遍历整个区块链获得某个交易地址的所有数据, 进而对用户进行追踪. 更严重的是, 有能力的攻击者可以将IP地址与交易连接起来, 这进一步的损害了用户的隐私.

交易的保密性和数据的隐私性

区块链的数据隐私是指区块链可以为存储在其上的所有数据或某些敏感数据提供机密性的属性. 虽然区块链最初是作为数字货币系统设计的, 但其应用场景要比虚拟货币广泛的多. 例如, 区块链已可以用于管理智能合约、有版权的作品以及商业或组织注册表的数字化. 所以, 所有的区块链应用中常见的一个安全属性就是交易信息的机密性, 例如交易内容和地址. 显而易见的是比特币系统不支持这个安全属性, 在比特币系统中, 交易内容和地址是完全公开的. 我们认为, 这个安全属性将有助于降低昵称与真实用户身份之间链接的可能性. 这可能有助于促进从整个区块链的公开可见到基于need-to-know的共享的转变.

区块链所使用的隐私和安全技术

在本节中, 我们将详细讨论可用于增强现有和未来区块链系统的安全性和隐私性的一系列技术.

混合协议

用户的匿名性并不能在比特币交易中得到保障. 用户在交易时虽然使用匿名地址, 但这个地址可以公开验证. 因此, 任何人都可以简单地分析出用户在比特币交易中使用的地址, 由此可将用户的交易与其他交易, 甚至与其真实身份联系起来, 从而泄露其所有交易. 我们可以使用混合服务加以避免. 从字面上讲, 混合是指随机将用户的比特币与其他用户的比特币进行交换, 这样旁观者就无法知道谁拥有这些比特币. 但这样还是不能防止硬币被盗. 我们将描述两种混合服务, 并分析它们的安全性和隐私属性.

混合币(Mixcoin)

混合币[2]由Bonneau等人于2014年提出, 这种货币能实现比特币和类比特币等加密货币的匿名支付. 混合币扩展了匿名设置, 允许所有用户同时混合硬币, 同时还提供了类似于传统混合通信的匿名性. 此外, 混合币使用了一种问责机制来检测盗窃行为, 用户可以通过调整激励机制, 合理使用混合币, 而无法偷窃比特币.

CoinJoin

CoinJoin[3]提出于2013年, 这是比特币交易的另一种匿名方法. 假设用户想要付款, 首先他找到另一个同样想付款的用户, 通过协商在一笔交易中共同付款. 这种联合支付的方式可以降低在一个在交易, 跟踪某个用户输入、输出及其确切资金流动方向的概率.

这需要用户与希望加入支付的人协商交易. 提供这一功能的第一代混合服务(如SharedCoin[4])使用了集中式服务器, 要求用户信任服务运营商, 不窃取或允许他人窃取比特币. 由于它们将保留交易日志并记录联合支付的所有参与者, 这种集中式服务仍可能存在泄露用户隐私的风险.

此外, CoinJoin实现也会降低匿名性. Kristov Atlas开发了一个名为“CoinJoin数独”的工具[5], 它可以识别SharedCoin交易并发现特定支付和收款人之间的关系, 这表明SharedCoin混合服务不能为交易提供很强的隐私性.

CoinShuffle[6]是由Tim Ruffing等人在2014年提出的, CoinShuffle是一种完全分散的硬币混合协议, 它进一步扩展了CoinJoin的概念, 通过在混合交易时避开了第三方, 从而确保防盗安全. 为了确保匿名性, CoinShuffle使用了一种新型可问责匿名组通信协议, 称为Dissent[7].

匿名签名

部分数字签名方案本身就具备匿名性, 这种签名方案可称为匿名签名. 其中, 最重要和最典型的匿名签名方案为群签名和环签名.

群签名

群签名首次提出于1991年[8]. 在一个组的任何成员都可以使用自己的私钥为整个组匿名签名, 任何拥有该组公钥的成员都可以检查和验证生成的签名, 并确认消息是由组员签名的. 在验证中, 只能确定签名者是否为组员而无法知道其真实身份.

群签名有一个群管理员, 负责管理添加组成员、处理争议事件等. 在区块链系统中, 我们需要一个权威实体创建和撤销群组, 动态添加或撤销群成员的成员资格.

环签名

环签名[9]还可以通过一组用户中的任何成员签名来实现匿名性. 在环匿名里, 很难确定组中的哪个成员使用其密钥对消息进行签名.

环签名的一个典型应用是CryptoNote[10]. CryptoNote利用其他几个密钥设计出发送者的公钥, 这样就无法知道谁实际签名. 由于使用环签名, 如果环成员数为n, 则对手猜出交易真正发送者的概率只有1/n. 2015年, 以太坊使用了环签名, 这使得用户具有匿名性[11].

环签名与群签名的区别主要有两点:第一, 由于环签名中没有群管理器, 因此在发生争议时无法获知签名者的真实身份. 第二, 任何用户都可以自己分组一个“环”. 因此, 环签名适用于公共区块链.

同态加密

同态加密 (Homomorphic Encryption, HE) 是一种非常强大的加密技术. 它可以直接在密文上执行某些类型的计算, 并确保对加密后的数据进行解密时, 计算结果必须与对明文进行相同的操作得到的结果相同.

利用同态加密处理数据的过程如图1所示:
图1: 同态加密处理数据的过程

  1. 用户对数据进行加密. 并把加密后的数据发送给云;
  2. 用户向云提交数据的处理方法, 这里用函数f来表示;
  3. 云在函数f下对数据进行处理, 并且将处理后的结果发送给用户;
  4. 用户对数据进行解密, 得到结果.

使用同态加密技术在区块链上存储数据不会显著的影响区块链属性. 这可确保对区块链上的数据进行加密, 解决与公共区块链相关的隐私问题. 使用同态加密技术提供隐私保护, 并允许通过公共区块链随时访问加密数据, 以便进行审核和其他目的, 例如管理员工开支. 以太坊智能合约为了获得更好的隐私性, 对存储在区块链中的数据采用的就是同态加密.

基于属性的加密

基于属性的加密 (Attribute-based encryption, ABE) 是一种加密方法. 如果用户的属性与密文的属性一致, 则可以使用用户的密钥解密加密数据. 抗共谋性是基于属性加密技术的一个重要安全特性. 它确保当恶意用户与其他用户串通时, 除可以用自己的私钥解密的数据之外不能访问其它数据. 基于属性的加密概念是在2005年提出的[12]. 从那时起, 许多人提出了对ABE的扩展, 包括拥有多个权限来共同生成用户私钥, 以及支持任意谓词的ABE模式.

基于属性的加密非常强大, 但由于缺乏对核心概念和有效实现的理解, 目前很少有应用程序部署它. 到目前为止, ABE还没有在区块链上部署任何形式的实时操作. 2011年, 一个分散的ABE模式提议[13]在区块链上使用ABE. 例如, 在区块链上, 权限可以通过访问令牌的所有权来表示. 网络中的所有节点都被授予与该令牌相关的特殊权限和特权. 令牌提供了一种跟踪谁具有某些属性的方法, 这种跟踪应该由分发令牌的权威实体以一种算法和一致的方式完成. 令牌可以被视为代表属性或资格的徽章, 并且应该作为不可转移的属性使用.

基于属性的加密不需要一个固定的权威. 在一个去中心化的网络中, 可能有多个权限并且完成相同的任务. 例如, 依靠证人来发挥这些权威的作用是可能的. 在区块链中, 随着SAFE网络等最近可能实现的技术, 利用区块链方法实现基于属性的加密仍然是一个公开的挑战.

安全多方计算

安全多方计算 (Secure Multi-Party Computation, SMC) 是解决一组互不信任的参与方之间保护隐私的协同计算问题, SMC要确保输入的独立性、计算的正确性、去中心化等特征, 同时不泄露各输入值给参与计算的其他成员. 主要是针对无可信第三方的情况下, 如何安全地计算一个约定函数的问题, 同时要求每个参与主体除了计算结果外不能得到其他实体任何的输入信息. 安全多方计算在电子选举、电子投票、电子拍卖、秘密共享、门限签名等场景中有着重要的作用.
图 2: 安全多方计算技术框架
安全多方计算最早是由华裔计算机科学家、图灵奖获得者姚启智教授通过百万富翁问题提出的. 该问题表述为:两个百万富翁Alice和Bob想知道他们两个谁更富有, 但他们都不想让对方知道自己财富的任何信息. 在双方都不提供真实财富信息的情况下, 如果比较两个人的财富多少, 并给出可信证明.
安全多方计算技术框架如图2所示.

各个MPC参与节点地位相同, 可以发起协同计算任务, 也可以选择参与其他方发起的计算任务. 路由寻址和计算逻辑传输由枢纽节点控制, 寻找相关数据同时传输计算逻辑. 各个MPC节点根据计算逻辑, 在本地数据库完成数据提取、计算, 并将输出计算结果路由到指定节点, 从而多方节点完成协同计算任务, 输出唯一性结果. 整个过程各方数据全部在本地, 并不提供给其他节点, 在保证数据隐私的情况下, 将计算结果反馈到整个计算任务系统, 从而各方得到正确的数据反馈.

非交互式零知识

零知识证明是由S. Goldwasser、S. Micali及C. Rackoff在20世纪80年代初提出的[14]. 它指的是证明者能够在不向验证者提供任何有用的信息的情况下, 使验证者相信某个论断是正确的. 零知识证明实质上是一种涉及两方或更多方的协议, 即两方或更多方完成一项任务所需采取的一系列步骤. 证明者向验证者证明并使其相信自己知道或拥有某一消息, 但证明过程不能向验证者泄漏任何关于被证明消息的信息.
图 3: Fiat-Shamir 变换
在区块链领域, 用户信奉着“Don't trust, verify it”(别相信, 验证它)的理念. 所有参与的节点都需要独立验证区块链上的数据是否正确, 如果我们要求证明者时刻在线等待着所有参与节点发起的挑战, 那么只有极少服务器可以作为证明者参与这一过程, 普通人将难以使用该系统. 因此, 我们需要通过承诺计算得到公开可信的随机数列. 实际上, 利用hash函数结果的随机性, 我们可以将承诺数据的hash计算结果作为随机数列用于生成挑战, 这也就是 Fiat-Shamir 变换, 具体过程图3所示.

基于可信执行环境(TEE)的智能合约

如果一个执行环境为应用程序的执行提供了一个完全隔离的环境, 可以有效地防止其他软件应用程序和操作系统篡改和了解在环境中运行的应用程序的状态, 那么这个执行环境就被称为可信执行环境(TEE). 英特尔软件保护扩展(SGX)是一个TEE实现的代表性技术. 例如, Ekiden[15]是一个基于SGX的保密智能合同解决方案. Ekiden将协商与共识分开, 在链外的计算节点上执行智能合约计算, 然后使用远程证明协议验证链上计算节点运行的正确性. 共识节点用于维护区块链, 不需要使用可信硬件. Enigma[16]在其当前版本中利用TEE, 允许用户使用分散的信用评分算法创建保护隐私的智能合同, 对信用评分的多个因素进行加权, 如账户的数量和类型、支付历史和信用利用.

基于游戏的智能合约

最近基于游戏的智能合同验证解决方案是发展迅速, TrueBit[17]和Arbitrum[18]是这种智能合约的代表. TrueBit使用交互式“验证游戏”来判断计算任务是否正确执行, 提供奖励来鼓励玩家检查计算任务并发现错误, 这样智能合约就可以安全地执行具有可验证属性的计算任务. 此外, 在每一轮“验证游戏”中, 验证者递归地检查一个越来越小的计算子集, 这大大降低了TrueBit节点的计算负担. Arbitrum设计了一种激励机制, 让各方达成离线协议, 这样只需要验证者验证合同的数字签名. 对于试图对虚拟机行为撒谎的不诚实方, Arbitrum设计了一个有效的基于挑战的协议来识别和惩罚不诚实方, 链外验证激励机制显著提高了智能合约的可扩展性和隐私性.

讨论

我们在表1中总结了上述每种技术的优缺点. 我们认为,在不同的环境中实现安全性和隐私性可以用不同的技术手段, 即: (1)没有一种技术是解决区块链安全性和隐私性的万能钥匙. (2)没有一种技术是十全十美的. (3)需要在安全、隐私与效率之间做权衡. 所以, 应该因地制宜的结合安全隐私需求与应用程序上下位来选择适当的安全和隐私技术, 且组合多种技术在大多数情况下都有更好的效果. 但同时也要注意到, 当引入新的技术时, 总会不可避免的引起其它问题或带来新的缺陷, 这都需要设计者做好评估与权衡.

技术应用优点缺点
混合混合币, Coinjoin防止用户地址被链接起来集中服务存在泄露用户隐私的风险
群签名PlatON签名者的身份可以隐藏在一组用户中, 在发生争议时, 签名者的身份可以被披露.需要一个可信第三方作为管理者.
环签名CryptoNote, Monero, Ethereum签名者的身份可以隐藏在一组用户中, 不需要可信第三方.在发生争议时, 签名者的身份无法被披露.
ABE可同时实现数据机密性和细粒度的访问控制.分布式环境中属性证书的颁发和撤销需要解决.
HEEthereum可通过直接对密文进行计算来保护隐私.只有一类操作可以有效地实现, 复杂函数的计算效率很低.
SMPCEnigma允许多方在私有数据上共同执行计算而不侵犯它们输入的隐私.只支持简单的函数, 复杂函数效率较低.
NIZKZcash用户可以很容易的证明有足够余额与NIZK转账, 而无需透露账户余额.效率较低.
基于TEE的智能合约Ekiden, Enigma可以通过TEE运行智能合约来保护隐私.计算节点需配备带有TEE的CPU如Intel的SGX. 仍需解决对SGX的攻击.
基于游戏的智能合约TrueBit, Arbitrum鼓励各方通过激励机制验证智能合约的正确性.仍然存在被恶意用户欺骗的风险.

结论

在本文中, 我们首先给出了在线交易背景下区块链应用所需的安全属性, 其次, 我们介绍了8种在基于区块链的系统中满足这些隐私要求的技术, 包括混合协议、匿名签名、同态加密、基于属性的加密、安全多方计算、非交互式零知识证明和智能合约的安全验证等. 随着技术的日益发展, 区块链越来越受到学术研究和业界的关注, 其安全性和隐私性吸引了巨大的兴趣. 我们认为, 深入了解区块链的安全和隐私属性, 有助于提高区块链的可信程度, 促进区块链领域中的技术创新.

参考文献

[1] Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, and Steven Goldfeder. 2016. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction.
[2] Joseph Bonneau, Arvind Narayanan, Andrew Miller, Jeremy Clark, Joshua A. Kroll, and Edward W. Felten. [n.d.]. Mixcoin: Anonymity for Bitcoin with Accountable Mixes. 486–504
[3] Gregory Maxwell. 2013. CoinJoin: Bitcoin privacy for the real world. Retrieved from bitcointalk.org.
[4] H. Moniz, N. F. Neves, M. Correia, and P. Verissimo. [n.d.]. Experimental comparison of local and shared coin randomized consensus protocols. In SRDS 2006. 235–244
[5] Kristov Atlas. [n.d.]. CoinJoin Sudoku: Weaknesses in SharedCoin.
[6] Tim Ruffing, Pedro Moreno-Sanchez, and Aniket Kate. [n.d.]. CoinShuffle: Practical Decentralized Coin Mixing for Bitcoin. 345–364.
[7] Henry Corrigan-Gibbs and Bryan Ford. [n.d.]. Dissent: Accountable Anonymous Group Messaging. 340–350.
[8] David Chaum and Eugène van Heyst. [n.d.]. Group Signatures. 257–265.
[9] Ronald L. Rivest, Adi Shamir, and Yael Tauman. [n.d.]. How to Leak a Secret. 552–565.
[10] Nicolas van Saberhagen, Johannes Meier, Antonio M. Juarez, and Max Jameson. 2012. CryptoNote Signatures.
[11] [n.d.]. Monero. Retrieved from http://www.getmonero.org.
[12] Amit Sahai and Brent Waters. [n.d.]. Fuzzy Identity-Based Encryption. 457–473.
[13] Allison Lewko and Brent Waters. [n.d.]. Decentralizing attribute-based encryption. In EUROCRYPT 2011. 568–588.
[14] S. Goldwasser, S. Micali, and C. Rackoff. [n.d.]. The knowledge complexity of interactive proof-systems. In STOC 1985. 291–304.
[15] Raymond Cheng, Fan Zhang, Jernej Kos, Warren He, Nicholas Hynes, Noah M. Johnson, Ari Juels, Andrew Miller, and Dawn Song. 2018. Ekiden: A platform for confidentiality-preserving, trustworthy, and performant smart contract execution. CoRR abs/1804.05141 (2018).
[16] Guy Zyskind, Oz Nathan, and Alex Pentland. 2015. Enigma: Decentralized computation platform with guaranteed privacy. Comput. Sci. (2015).
[17] Jason Teutsch and Christian Reitwießner. 2017. TrueBit: A scalable verification solution for blockchains.
[18] Harry Kalodner, Steven Goldfeder, Xiaoqi Chen, S. Matthew Weinberg, and Edward W. Felten. [n.d.]. Arbitrum: Scalable, private smart contracts. In USENIX Security 2018. 1353–1370.

最后修改:2021 年 01 月 29 日
如果觉得我的文章对你有用,请随意赞赏