姚 爽, 张大伟, 李 勇, 王 伟
1. 北京交通大学 计算机与信息技术学院, 北京 100044
2. 智能交通数据安全与隐私保护技术北京市重点实验室, 北京 100044
3. 北京交通大学 电子信息工程学院, 北京 100044
区块链技术是一种去中心化、多方共识、公开透明的新型计算范式. 其去中心化的分布式数据处理、多方共识确认和数据不可篡改的特性为解决数据安全和信息共享问题提供了新的解决方案. 同时, 随着产业区块链技术的普及和发展, 区块链系统也从强调去中心化的开放式公有链发展到多中心化的联盟链, 区块链交易场景也从单一的去中心化密码货币发展到面向行业应用的多中心化数字资产交易系统, 区块链技术正成为目前的研究热点.
区块链系统的交易模型同传统中心化系统有很大的不同. 首先, 在交易内容确认方面, 中心化系统中所有交易过程的记录和确认都是由系统的中心机构集中来完成的. 而在区块链系统中, 客户端首先将交易发送到区块链网络中, 由网络中的特定节点来对交易进行分布式共识确认; 其次, 在账本数据存储方面, 传统交易系统采用由中心机构集中安全存储且账本内容不公开. 而区块链交易系统则采用全网节点共同存储账本的方式, 账本数据安全由共识机制、块链式数据结构共同确保, 账本内容公开透明. 由此可见, 区块链系统在提供了灵活的分布式数据处理和交易共识确认的同时, 也对交易数据的隐私保护提出了极大的挑战. 随着产业区块链应用的普及和推广, 对区块链交易隐私保护的需求也在日益增强. 首先, 在公开账本中确保交易内容隐私是在合作竞争环境下确保交易方合法利益的必然需求; 其次, 在面向行业应用的数字资产交易系统中确保权威机构能够实现对交易的有效审计和监管也是规范市场行为、保护交易方合法权益的有效手段. 因此, 在交易数据公开存储、全网共识的情况下确保交易内容的隐私保护和可靠监管是产业区块链应用发展面临的主要问题之一, 对这一问题进行深入研究也具有极其重要的意义.
区块链系统中的交易由交易身份和交易内容两部分组成. 其中交易身份用于标识数字资产的所有者,交易内容用于表示数字资产本身的属性. 区块链交易内容隐私是指对于区块链系统中的某笔交易, 观察者无法确认交易的具体内容, 如交易金额、交易类型等. 即对于观察者而言, 或者无法访问到交易内容、或者无法获得交易内容的明文信息. 目前的文献多将交易身份和交易内容隐私保护同时讨论, 但我们认为在如下两方面二者存在较大的不同: 首先, 二者的保护对象不同, 交易身份和交易内容在基本属性和操作方式上存在显著差异. 区块链系统中多采用公钥作为用户的身份标识, 并由此作为用户对数字资产UTXO 或账户的权属标记. 在交易过程中数字资产发生转移时, 资产所属用户需使用对应的私钥对交易行为进行签名确认. 从交易安全的角度考虑, 交易身份的研究更关注于资产的权属标记和支付确权等. 交易内容如交易金额多采用数字形式表示, 在交易过程中用于表示数字资产的转移金额等信息. 从交易安全的角度考虑,交易内容的研究更关注于支付金额范围的合理性和交易金额的平衡性等; 其次, 二者在隐私保护过程中采取了完全不同的设计思路和技术手段. 交易身份的隐私保护更强调交易过程中的身份混淆, 即将真实交易者的身份混淆在匿名集合中以确保身份隐私, 但同时必须解决支付确权和防双花问题以确保交易安全. 鉴于不同的混淆方案, 可基于匿名群组消息协议、环签名和零知识证明等分别实现协同、自主和全局身份混淆以保护隐私[1]; 而交易内容的隐私保护更强调交易信息的机密性和公开可验证性, 即在交易明文信息不可见的情况下区块链验证节点可确保金额范围的合理性和交易金额的平衡性以保证交易安全. 因此, 现有方案多通过消息加密、私有存储确保交易信息的机密性, 通过零知识证明确保密态数据交易规则的可验证性. 鉴于二者在研究目标和技术路线上的不同, 本文将交易内容同交易身份的隐私保护分离开单独进行研究讨论, 聚焦于内容隐私保护的自有特点, 以期为读者提供有益的研究借鉴.
区块链交易内容隐私保护是目前的研究热点, 国内外已有多篇文献涉及到区块链系统安全隐私问题的研究, 但尚缺乏单独对交易内容隐私保护的系统性分析和深入探讨. 2017 年, 祝烈煌等人[2]从数据失真、数据加密和限制发布三方面讨论了区块链交易内容隐私保护问题; 2018 年, Genkin 等人[3]对公有链不同密码货币所采用的内容隐私技术进行了讨论; 王宗慧等人[4]从混币方案、密码学方案和安全通道方案三个方面对公有链数据隐私保护方案进行了研究; 2019 年, 何德彪等人[5]重点对内容隐私保护方面的零知识证明和同态密码进行了讨论; 李旭东等人[6]从混币技术、离链支付协议和密码学方案三个方面对比特币隐私保护问题和改进方案进行了研究; 2020 年, 张家硕等人[7]从零知识证明、安全多方计算、环签名和可信计算等方面对区块链隐私保护的实现技术手段进行了探讨; 张奥等人[8]依据隐私保护的不同技术手段从地址混淆、信息隐藏、通道隔离这三个方面主要对公有链中的隐私保护机制进行了研究. 2021年, 李佩丽等人[9]主要从混合技术和零知识证明两个方面讨论了区块链隐私保护技术, 从身份追踪和内容监管两方面探讨了隐私监管技术. 从隐私计算的范畴而言, 依据李凤华等提出的泛在互联环境下的隐私计算理论[10,11], 上述相关工作[2-9]所讨论的区块链交易隐私保护归类为隐私防护技术, 这些技术面向区块链交易内容隐私保护的特定场景, 侧重于基于密码学等传统数据安全技术实现隐私防护. 不同于隐私脱敏技术中采用失真且不可逆的方法进行防护, 区块链交易隐私保护重点需解决密态交易数据的准确运算和规则校验问题, 且对于交易对手方而言这些数据多具有可逆性. 面向交易内容的隐私防护技术, 上述相关工作[2-9]多以公有链密码货币为研究对象, 将交易身份和交易内容两部分一起讨论, 依据所采取的具体技术分类来进行研究. 这一思路没有集中分析面向交易内容和交易身份的隐私保护在方案目标、设计思路和实现手段上的差异, 研究范围也未聚焦到交易内容隐私保护及其监管的详细方案. 此外, 上述工作对联盟链中的隐私保护机制涉及较少, 也未对目前产业区块链中面临的隐私交易监管问题进行深入探讨.
鉴于上述问题, 本文基于区块链交易模型公开可验证的特点, 将区块链交易内容隐私保护分为三方面的内容进行深入探讨: 交易内容隐藏、隐藏交易验证和隐藏交易监管. 其中, 交易内容隐藏用于确保观察者无法获得交易明文数据; 隐藏交易验证用于确保共识节点可对隐藏后的交易内容进行正确性验证; 隐藏交易监管用于确保监管方可对隐藏后的交易内容进行有效监管. 本文从上述三个方面对公有链和联盟链中内容隐私保护的共性问题和解决方案进行了系统性地梳理. 首先, 基于区块链交易模型的特点, 分析了区块链交易内容隐私保护所面临的安全威胁及挑战; 其次, 我们认为在区块链账本公开存储、多方共识确认情况下如何实现交易内容的隐藏和隐藏交易的高效验证是目前亟待解决的关键问题. 其中的隐藏交易验证又是区块链新型交易场景下的特定需求, 相关的研究工作非常活跃. 在公有链和联盟链中, 由于去中心化和多中心化交易处理验证方式的不同, 又使得二者采取了不同的内容隐藏和验证方案. 由此本文从交易内容隐藏和隐藏交易验证两个方面对目前区块链系统中所采取的不同隐私保护手段, 如: 同态密码、加密技术、隔离技术、环签名和零知识证明等进行了对比分析, 列举了不同方案各自存在的优缺点, 从其所涉及的设计思路、密码算法和安全协议等方面进行了深入的探讨; 此外, 随着产业区块链的发展, 隐私交易的监管问题在行业应用中日益凸显. 因此, 本文也从隐藏交易监管方面对现有方案进行了总结分析. 最后,本文对交易内容隐藏、隐藏交易验证和隐藏交易监管技术的未来发展进行了展望.
本文组织结构如下: 第1 节介绍了区块链交易内容隐私保护的基本概念和需解决的主要问题; 第2 节分析总结了当前区块链交易内容隐私保护所面临的安全威胁及挑战; 第3 节从交易内容隐藏、隐藏交易验证和隐藏交易监管三个方面对目前主流区块链平台中交易内容隐私保护所采取的不同技术手段进行了对比分析; 第4 节对交易内容和交易身份隐私保护技术的结合进行了分析讨论; 第5 节为总结及未来展望.
区块链系统采用交易多方共识确认模型提供了高效的信任构建方法, 同时也为链上数据流转带来了更多的安全和隐私保护问题. 区块链系统在交易内容隐私保护方面面临的威胁主要包括:
(1) 区块链系统采用了交易账本全网公开的方式来存储全部的历史交易数据, 区块链系统中的所有节点都可以看到链上的明文数据并追溯交易流程, 极易造成用户身份、交易类型和账户余额等隐私信息的泄露,例如敌手可以通过交易图分析发现不同账户间的关联关系[12]、追踪特殊交易[13]以及发现交易规则[14]等, 给交易内容隐私保护带来了威胁.
(2) 区块链系统采用多方共识方式来完成交易的确认, 参与共识的节点必然需要掌握更多的交易信息以实现交易规则验证, 一旦共识节点出现问题, 必然会影响交易的正确验证以及造成隐私数据泄露, 给交易内容隐私保护带来威胁.
(3) 传统区块链隐私保护的去中心化特点使得链上交易缺乏合理监管, 对于恶意违法交易无法实现交易追踪溯源和内容监管, 在应用层面可能带来系统性的安全风险.
在传统交易系统中, 用户是向中心机构公开交易身份和交易内容, 由中心机构完成信息的隐私保护.而区块链系统中并无单一中心机构, 而是由系统整体安全机制来完成隐私保护. 因此, 受限于区块链系统中交易模型的设计, 交易内容隐私保护方案也面临着如下一些技术挑战:
(1) 区块链系统采用多方共识方式来实现交易的确认和信任的构建, 有时交易双方对于作为观察者的验证节点来说是存在交易内容隐私保护需求的, 简单的信息隐藏方法无法满足既保护信息又可验证内容的需求. 因此, 如何在保护交易内容隐私的同时实现正确有效的交易验证具有一定的挑战性.
(2) 区块链系统中采用多方确认后通过公开信道(区块链账本) 进行交易信息发布, 这一过程耗时较长. 因此, 在区块链系统中多采用交易发送方到区块链节点的单向通信方式. 这使得传统交易系统中的多轮双向隐私保护协议不再适用. 因此, 如何在区块链系统单向传输交易数据的过程中实现交易认证和隐私保护也具有一定的挑战性.
(3) 区块链系统中的账本数据采用追加存储的方式, 添加的交易数据用于账本的完整性验证且不能删除, 而隐私保护技术又带来了额外的交易数据存储开销. 因此, 必须采取有效措施来降低隐私保护信息的存储开销, 以避免账本数据的膨胀问题.
(4) 随着区块链系统在行业应用中的不断普及和发展, 行业监管同隐私保护间的矛盾也逐渐凸显. 一方面, 区块链系统中缺乏单一交易中心机构; 另一方面, 传统的公有链中无监管式的隐私保护方法是不适合于很多行业应用场景的. 因此, 如何在实现隐私保护的同时又可提供对于交易内容的监管也是一个颇具挑战性的问题.
本文将从交易内容隐藏、隐藏交易验证和隐藏交易监管三个方面介绍区块链交易内容隐私保护技术.首先, 当用户提交交易时, 系统将通过交易内容隐藏技术处理交易数据使得明文数据对于全网或部分未授权用户不可见, 只有交易接收方可通过隐藏后的数据恢复出交易明文; 其次, 验证节点使用隐藏交易验证技术对交易密文信息进行合法性验证; 此外, 对于存在监管需求的区块链系统, 可使用隐藏交易监管技术对交易内容进行审计和监管. 这一隐私保护模型在确保交易方明文交易数据保密性的同时, 又可保证共识节点对隐藏后的交易内容进行正确性验证和监管方对交易规则的有效监管. 由上述三方面内容构成的交易内容隐私保护模型如图1 所示.
图1 交易内容隐私保护模型Figure 1 Model of transaction privacy protection
目前的区块链系统多采用信息加密和数据隔离技术来实现交易内容的隐藏.
3.1.1 交易信息加密
交易信息加密方案通过将含有隐私内容的明文数据加密后上链, 达到区块链交易内容隐藏的目的. 只有拥有密钥的用户才能够解密密文获得隐私信息. 目前, 基于交易信息加密的隐私保护方案可分为同态密码、非对称/对称加密和属性加密三种.
同态密码
同态密码的同态性是指对明文进行加法和(或)乘法运算与对密文进行相应的运算,结果是等价的. 当前相关区块链交易隐私保护方案所采用的主要同态密码技术如表1 所示.
表1 同态密码技术及相关区块链交易隐私保护方案Table 1 Homomorphic encryption and its applications in blockchain privacy preserving
为了提高比特币的隐私保护特性, Adam Back 和Gregory Maxwell 提出了保密交易的概念[15], 通过在比特币网络中使用Pedersen 承诺[16]实现对UTXO 中交易金额的隐藏.
定义1 (Pedersen 承诺) 设G为椭圆曲线点群G 中的生成元,H为椭圆曲线中的一个点, 随机选择r ∈Zn, 则v ∈Zn的Pedersen 承诺为: commit(r,v)+vH.
Pedersen 承诺具有绑定性(binding) 和隐藏性(hiding).
定义2 (绑定性) 给定承诺值commit(r,v), 对于任何PPT 敌手, 找到(r′,v′) 满足m/=m′和commit(r′,v′)=commit(r,v) 的概率是可以忽略的.
定义3 (隐藏性) 对于任何v,v′∈Zp以及随机选择的r,r′∈Zp, commit(r,v) 和commit(r′,v′) 的分布是相同的.
定义4 (Pedersen 承诺同态性) commit(r1,v1) + commit(r2,v2) = (r1+r2)G+ (v1+v2)H=commit(r1+r2,v1+v2).
保密交易技术中通过构造基于椭圆曲线的Pedersen 承诺方案完成交易金额隐藏,v代表交易金额,r为随机生成的盲化因子并且不公开. Pedersen 承诺所具有的隐藏性使得观察者无法通过公开账本中记录的承诺值commit(r,v) 还原出交易金额, Pedersen 承诺的绑定性使得发送者无法再次更改交易金额, 从而在确保交易安全的情况下实现了交易内容的隐私保护. 保密交易技术在公有链Elements[17]、Zerocoin[18]、Mimblewimble[19-21]、门罗币[22,23]和零币Zcash (sapling 版本)[25]中都得到了实际应用. 此外, 基于联盟链Fabric 的FabZK[24]项目也使用了保密交易技术来实现交易内容的隐藏.
此外, 目前已经有相关研究提出使用Paillier 加法同态算法实现区块链用户交易金额的隐藏. Paillier加法同态算法基于复合剩余类困难问题, 其算法流程如下:
(3) Decrypt(sk,C)→m: 该算法为解密算法, 计算hm=Y/Xsk-1, 从hm中恢复明文m.
在PGC 方案中, 利用Twisted-ElGamal 加密实现交易金额隐藏和账户余额的隐藏. 首先, 交易参与者使用自己的公钥加密账户余额. 当发生转账交易时, 交易发送方分别使用发送方和接收方的公钥(pks,pkr) 加密交易金额v得到交易密文(Cs,Cr). 同时生成零知识证明πcorrect证明交易的正确性, 接收者收到证明和签名后的交易密文, 完成隐藏交易. 交易确认完成后, 交易发送方和交易接收方可通过Twisted-ElGamal 算法的同态性使用交易密文(Cs,Cr) 各自更新加密的账户余额.
此外,PGC 方案[30]给出了在32 比特消息空间和128 比特安全强度下,Twisted-ElGamal 和Paillier算法运行的性能对比. 其中Twisted-ElGamal 工作在prime256v1 椭圆曲线上, Paillier 算法的模长为3072 位. 比较结果如表2 所示. 由比较可知, Twisted-ElGamal 具有更好的运算性能.
表2 Twisted-ElGamal 和Paillier 比较[30]Table 2 Benchmarks of Twisted-ElGamal and Paillier [30]
综上所述, 基于同态承诺和同态加密的方案能够保证交易内容的隐私性, 其中, Twisted-ElGamal 算法不仅解密效率优于Paillier 算法, 而且也是对零知识证明友好的. 但是以上方案实现交易内容隐藏的同时也存在着一些问题: 虽然同态密码方案实现了交易明文的隐藏, 但密文仍然会作为输入输出结果编码存储在公开账本中, 如果未同时采取身份隐藏机制则会为交易路径追踪提供便利; 其次, 由于保密交易所基于的Pedersen 承诺具有单向特性, 即无法由承诺结果直接获得被承诺值, 因此基于保密交易构建的交易支付过程必须通过其他方式在发送方和接收方之间进行交易明文的传输. 为了解决这一问题, 目前存在两种解决方式, 第一种方式为交易双方使用链外通道交互并记录交易明文数据, 如FabZK 即采用链外私有账本的方式来实现; 第二种方式为直接将交易数据明文进行加密并存储在公开账本中, 例如, 在门罗币的最新实现中, 发送方和接收方之间通过ECDH 密钥协商协议生成共享加密密钥, 然后使用该密钥对交易金额进行加密(异或) 并存储在账本上. 此外, 同态加密算法虽然可将交易金额直接加密存储在链上, 但Paillier 算法的问题在于加解密效率较低. Twisted-ElGamal 算法在解密过程中采用区间计算离散对数的方式获得m, 因此较适合于具有固定范围的金额类数值. 因此, 在实际应用时可根据不同的场景需求择优选取.
非对称/对称加密
Zerocash 方案中使用接收者的公钥通过匿名公钥加密模式(key-privacy public-key encryption)[31]对交易金额、序列号生成因子和货币承诺(v,ρ,rcm) 进行加密, 然后将密文包含在隐蔽交易中并广播到区块链. 接收方需要监听区块链上的交易, 尝试用自己的私钥解密隐蔽交易中包含的加密信息, 若解密成功, 则存储解密后的敏感信息并在未来支付时使用. 零币中的Sprout 版本则通过Curve25519 密钥协商协议在发送方与接收方之间产生一个共同的会话密钥, 然后通过一次性认证对称加密方案(authenticated one-time symmetric encryption)[32]对敏感交易信息进行加密. Curve25519 密钥协商协议协商会话密钥的具体流程如图2 所示:
图2 Curve25519 密钥协商协议Figure 2 Key agreement protocol on Curve25519
在密钥协商过程中, 发送方首先随机选择一个临时公私钥对 epk/esk, 接收方拥有传输密钥对(pkenc,skenc). 在密钥交换过程中, 双方利用自己的私钥和对方的公钥再使用一次Curve25519 函数就可以计算得到一个共同的秘密值, 然后利用这个秘密值派生出会话密钥用于之后的对称加密算法. 在交易发送时, 发送方连同密文Cenc和epk 一同发给接收者. 接收者监听区块链上的交易, 尝试利用自己的私钥skenc和交易中公开的epk 计算出加密密钥Kenc, 解密隐蔽交易中包含的加密信息, 若解密成功, 则接收这笔交易.
使用一次性认证对称加密方案对敏感交易信息进行加密的流程如下:
(1) 发送方产生一个密钥对(epk,esk).
(2) 通过Curve25519 密钥协商协议K计算共享秘密值sharedSecret :=KA.Agree(esk, pkenc).
(3) 通过密钥派生方案KDF 计算加密密钥Kenc:= KDF(i,hsig, sharedSecret, epk, pkenc).
(4) 通过认证加密方案Sym 计算消息m对应的密文C:=Sym.EncryptKenc(m).
属性加密
为了解决更细粒度隐私保护场景下的数据隐私保护问题, 一些基于属性加密(attribute-based encryption, ABE)[33,34]的区块链数据隐私保护方案[35,36]相继被提出. ABE 分为密文策略属性加密(ciphertext policy attribute-based encryption, CP-ABE) 和密钥策略属性加密(key policy attribute-based encryption, KP-ABE). 现有的区块链系统下基于属性加密的交易隐私保护方案多使用CP-ABE 算法.CP-ABE 的算法流程如下:
(1) Setup(1λ,S)→(PP,MK), 初始化算法输入安全参数λ和属性集S, 输出公开参数PP 和主密钥MK;
(2) KeyGen(MK,S)→SK, 密钥生成算法输入主密钥MK 和属性集S, 输出用户属性私钥SK;
(3) Encrypt(PP,M,A)→CT, 加密算法输入公开参数PP, 明文M和访问结构A, 输出密文CT;
(4) Decrypt(PP,CT,SK)→M, 解密算法输入公开参数PP, 密文CT 和用户私钥SK, 输出明文M, 只有满足访问结构A的用户才能解密获得M.
Yuan 等人[37]使用CP-ABE 实现了一种区块链数据隐私保护方案, 保证了数据的机密性.同时通过ABE 完成不同用户对高级、低级数据的访问权限控制, 即高级用户可以查询高级和低级数据, 而低级用户只能查询低级数据. Cheng 等人[38]提出了基于属性加密的区块链隐私保护方案并将其应用于车联网用户的隐私保护, 该方案通过设置用户的交通属性集合将用户分组并设置不同访问策略加密隐私内容,只有满足密文访问控制策略的用户才能解密密文获得隐私内容; Qiu 等人[39]提出了一种基于属性加密算法的Fabric 数据访问控制方案, 该方案将通道ID、组织ID 和用户ID 作为用户属性集合, 根据属性集合设置访问控制策略, 在通道和组织层面为Fabric 提供了更细粒度的数据内容隐私保护. 概括而言, 基于CP-ABE 方案的区块链数据访问控制方案通过设置属性集合将用户分组, 由数据发送方指定加密数据的用户访问控制列表, 一个属性集可配置不同的多个访问控制策略, 用户可以根据需求使用不同严格程度的访问控制策略加密隐私数据得到密文上链, 实现更多样化、细粒度的交易内容隐私保护, 如图3 所示. 基于CP-ABE 的区块链数据隐私保护方案主要包括如下几个步骤:
图3 基于属性加密的区块链隐私保护方案Figure 3 ABE-based blockchain privacy protection scheme
(1) 初始化: 首先生成公开参数PP 和主密钥MK, 然后设置属性集S, 利用MK 和S为各用户生成属性私钥SK, 通过某种安全方式将属性私钥SK 发送给对应用户.
(2) 数据加密上链: 数据发送方根据访问结构A加密明文M生成密文CT, 密文CT 经过共识确认,存储于区块链中.
(3) 数据解密: 接收方用户请求区块链网络中包含该交易密文的对应信息, 得到对应的密文CT, 满足访问结构A的用户能够通过属性密钥SK 解密CT 得到对应明文.
综上所述, Zcash 等使用对称加密技术通过密文交易实现了交易内容隐藏, 基于CP-ABE 的隐私保护方案通过设置属性集合和不同的访问控制策略实现了更细粒度的基于属性的数据内容隐藏. 基于信息加密的内容隐藏方法必须提供较为复杂的隐藏交易验证机制, 如基于零知识证明的验证方案. 这在一定程度上增加了验证过程的计算复杂性, 降低了验证效率, 也带来了额外的账本存储开销. 上述属性加密的保护方案也并未提供密文共识验证算法, 若将密文解密得到明文再验证, 如果存在恶意共识节点参与交易验证,那么就会产生交易数据的隐私泄露问题. 因此, 在区块链公开可验证交易模型下, 如何设计链上密态数据的高效可验证机制以确保交易规则符合性仍有待进一步深入研究.
3.1.2 基于业务逻辑的数据隔离技术
在目前得到广泛应用的联盟链系统中, 多面向业务逻辑适度引入中心化处理机制来设计区块链系统的总体架构. 这不同于公有链交易全网共识的实现方式, 也为联盟链中隐私保护的设计带来了便利. 因此,Fabric、Corda 和Quorum 等联盟链采用适度的中心化机制完成隐私交易的处理, 同时设计了基于业务逻辑的数据隔离技术来实现交易内容的隐私保护.
Hyperledger Fabric
Hyperledger Fabric[40,41]基于中心化的背书模型通过通道和私有数据集来实现交易内容的隐私保护. Fabric 中的背书节点受到交易各方的信任对交易合法性进行背书验证, 因此可以处理、访问所有的隐私交易数据, 这使得Fabric 无需使用复杂的密码学机制来实现交易的验证, 只需采用一定的机制来实现交易内容隐藏即可.
为了保护交易内容的数据隐私, Fabric1.0 引入了通道(channel) 机制. 所谓通道是指在Fabic 中多个成员间构成的私有通信子集, 以用来执行保密交易. 该机制下, 交易可见的最小范围是通道, 通道内的链上交易数据对于属于该通道的所有成员是可见的, 但对于通道外的成员是不可见的. 通道可理解为基于共识服务提供的一种通讯机制, 它将背书节点、提交节点和共识服务连接在一起, 形成一个具有保密性的虚拟通讯子链路, 从而实现业务隔离, 通道机制如图4 所示. 其中, 共识服务与(节点1、节点3)、(节点1、节点2、节点3)、(节点2、节点3) 组成了三个相互独立的通道, 加入到不同通道的Peer 节点能够维护各通道对应的账本和状态, 通道外的节点无法看到其中的账本和交易数据, 从而提高了交易内容的隐私性.
图4 Fabric 通道机制Figure 4 Channel in Fabric
通道的访问控制机制通过“安全域” 划分的方法在一定程度上保证了数据的隐私性, 但该机制只是粗粒度的数据隐私保护. 通道内成员往往隶属于不同的组织, 如果通道内的部分组织不希望其他组织能够查看一些特殊数据, 这些组织需要单独创建一个新的通道, 使该通道仅包含这些特殊数据. 若要保护任意多方间的隐私数据, 则需要构建大量的通道, 从而造成过多的资源开销.
为了解决通道大量创建造成的资源浪费问题, Fabric1.2 引入了私有数据(private data) 机制, 如图5 所示, 它允许通道上的成员之间可以提交、查询私有数据而无需创建单独的通道, 从而实现一些特殊数据仅在通道内部分成员间共享. 相对于通道机制, 私有数据机制是一种更细粒度的数据隐私保护机制.
图5 Fabric 中的私有数据集机制Figure 5 Private data collection in Fabric
在原有通道状态库的基础上, Fabric1.2 的私有数据机制加入了私有状态库, 即部分组织间的私有数据会被存储到私有状态库中. 同时为了保证这些私有数据的有效性和不可篡改, 还需要将这些私有数据的哈希值存储到通道状态库中, 即“上链”. 私有数据仅存储在部分已授权节点中, 但是所有节点都会在通道状态中存储私有数据的哈希值. 经过授权的节点可以访问这些私有数据并通过链上哈希值来进行完整性验证, 而未授权的节点本身并没有私有数据. 通过这种方式在保证全局账本一致的前提下, 实现了较通道机制更为细粒度的数据隐私保护.
Fabric 中含有私有数据的交易流程如下:
(1) 客户端的应用程序向背书节点提交提案请求, 调用链码读取或写入私有数据. 私有数据(或用于在链码中生成私有数据的数据) 包含在提案的临时字段中.
(2) 背书节点模拟执行交易并将私有数据存储在临时数据缓冲区中,然后根据既定的策略使用Gossip协议将私有数据分发给授权用户.
(3) 背书节点将公开数据以提案响应的形式返回给客户端, 其中包括私有数据哈希值.
(4) 客户端应用程序将提案响应转化为交易并发送给排序服务节点. 排序服务会将这些交易打包成区块, 然后将区块分发给所有的记账节点. 通过这样的方式, 通道上的所有节点都可以验证交易的有效性而不需要知道具体的私有数据.
(5) 提交区块时, 接收到私有数据的授权节点会检查临时数据缓冲区中私有数据的哈希值是否与公开账本全局状态数据中的哈希值一致, 如果一致则将公开数据账本追加到本地账本, 并将私有数据写入私有状态库中.
为了增强私有数据机制的功能, Fabric2.0 启用了处理和共享私有数据的新模式. 之前的版本中私有数据仅在一个私有数据集合中共享, 但Fabric2.0 通过引入特定的API 函数实现了不同集合之间共享私有数据的功能.
Corda
Corda 是由R3 联盟开发的适用于金融类应用场景的分布式账本系统, 于2016 年11 月实施开源[42].Corda 是一个基于半信任环境的、服务于现实世界金融活动的分布式账本平台, 同时满足信息适度可见和高性能两个核心特性, 采用联盟链或私有链的形式, 用于记录、管理及自动化执行金融合约.
不同于公有链平台具有的全局交易验证及共识、单位时间产出数据块等特征, Corda 平台具有如下特点:
(1) 交易无需全网广播, 而仅在交易的关联方及验证节点之间传递. 这样可以减少节点接收的数据量,并且有效保证交易相关方的内容隐私保护.
(2) 共识机制仅存在于负责验证交易的节点之间, 而不是所有的参与节点, 从而加快了达成共识的速度, 提高了交易性能.
(3) 没有“区块” 的概念, 而是让后续交易直接指向前序交易, 以达到数据不可篡改、可追溯的特性.
Corda 系统仍是基于UTXO 交易模型, 通过工作流来构建各种复杂的业务流程. 但不同于其它区块链系统的是, Corda 中的交易无需全网广播, 交易数据的流动均通过基于TLS 安全信道的点对点传输来完成, 且仅在交易的关联方及验证节点之间传递. 这一基于业务逻辑相关性来构建数据“安全域” 的方法有效地保护了交易对手方之间的数据隐私, 达到了“数据适度可见” 的安全目标.
此外, Corda 中存在一个受信任的公共服务Oracle 节点, 用来将现实世界中的事实(例如股票价格、外汇牌价、银行利率等等) 注入到Corda 网络中, 使之可以成为交易的一个输入项. 同时为了确保引入外部数据后账本交易数据的确定性(deterministic), Oracle 节点会对嵌入外部事实的交易进行签名. 为了保护交易方的数据隐私, Oracle 节点采用了名为“交易部分屏蔽”(transaction tear-offs) 的数据签名方案,系统将交易签名数据的哈希计算过程构造成一棵Merkle 树, 待签名数据的哈希结果为Merkle 树的根值.从而可以实现将一个保留了必要哈希分支的子树发送给Oracle 节点, 使它仍然能按照签名结构完成对整个交易的签名. Corda 对记录交易历史的Merkle 树结构进行剪枝后只留下原始数据的哈希运算结果, 从而保护了数据隐私. “交易部分屏蔽” 的哈希计算过程如图6 所示.
图6 Transaction tear-off的哈希计算过程Figure 6 Hash computation of transaction tear-off
Quorum
企业以太坊联盟(enterprise ethereum alliance, EEA) 是一个会员驱动的标准化组织, 旨在开发基于以太坊的开放性企业级区块链标准[43]. 摩根大通在EEA 框架的基础上基于以太坊构建了开源的企业级区块链平台Quorum[44], 其通过引入私有交易和私有存储的概念来实现交易内容隐藏.
以太坊所有公开交易的数据都存储在区块链上, 任何人都可以访问所有交易数据. 为了实现交易内容的隐藏, Quorum 将系统中的交易分为公有交易和私有交易, 以对其采用不同的交易处理流程和存储方式.私有交易的处理流程如图7 所示.
图7 Quorum 私有交易处理流程Figure 7 Quorum private transaction flow
首先, 不同于公有交易, 私有交易加入了一个交易接受者身份(公钥) 列表, 表明该私有交易应该只发送给这些列表成员. 其次, 为了单独处理私有交易, Quorum 引入了交易管理器(Transaction Manager)和飞地(Enclave) 组件, Transaction Manager 专门用于处理和分发私有数据; Enclave 则为同Transaction Manager 一一对应的组件, 专门用于完成数据加解密和密钥管理工作. 最终, 私有交易数据荷载加密存储在Transaction Manager 中, 而相应智能合约的执行结果则存储在相应节点的私有存储数据库中,Quorum 区块中存储的则是公有交易以及私有交易加密后的哈希值. 这样既保护了私有交易隐私, 又实现了私有交易和公有交易参与统一的共识. 私有交易的具体执行流程如下:
(1) 客户端发送私有交易到Quorum 节点, 并在交易中直接指明每个接收者身份(公钥).
(2) Quorum 节点将私有交易传送至对应的Transaction Manager.
(3) Transaction Manager 通过Enclave 为每个接收者生成加密交易荷载并计算其哈希值.
(4) Transaction Manager 将私有交易的加密荷载及其哈希值分别点对点的传播至每个交易接收方的Transaction Manager.
(5) 数据传播成功后, Transaction Manager 将私有交易加密荷载的哈希值返回至对应的Quorum 节点.
(6) Quorum 节点将私有交易加密荷载的哈希值打包进Quorum 区块. 当每个Quorum 节点执行该以太坊交易时, 需要基于该以太坊交易的荷载(即私有交易加密荷载的哈希值) 向对应的Transaction Manager 请求原始的私有交易荷载.
(7) 根据Quorum 节点的请求, 各个交易接收方的Transaction Manager 通过Enclave 和接收到的加密私有交易荷载解密出原始的私有交易荷载.
(8) 交易接收方的Transaction Manager 将原始的私有交易荷载返回至对应的Quorum 节点, 非交易接收方则返回空消息.
(9) 交易涉及的每个Quorum 节点将私有交易提交至智能合约运行, 智能合约会将执行私有交易时生成的状态数据存储至私有存储数据库.
综上所述, Corda 通过引入点对点交易和数据传输、交易部分屏蔽签名方案来构建交易关联方之间的数据“安全域”, 从而实现了交易内容的隐私保护. 但这一方案也存在一定的问题: Corda 的整体架构设计思想是基于中心化背书的点对点交易模式, 它在带来信息适度可见和高处理性能优势的同时, 却也具有不适合于“多方共识确认” 交易模式的弱点. 而“去(多) 中心化” 模式下的多方交易共识确认恰恰是区块链的典型应用场景; Hyperledger Fabric 通过引入通道和私有数据集实现了细粒度的数据隐私保护机制, 以适用于多方交易过程中的私有数据保护. Quorum 采用类似的设计思想, 通过引入私有交易和私有存储的概念实现了私有交易的数据隐私保护机制. 但这一类方案也存在一定的问题: 首先, 需在公共区块链存储之外引入私有状态库和点对点数据分发机制用于实现隐私数据的存储, 这在一定程度上增加了系统实现的复杂度; 其次, 隐私明文数据在被信任节点的集中单点处理也加大了数据泄漏和单点失效的安全风险.
隐藏交易验证需要实现密文条件下交易内容的合法性和正确性验证, 所要验证的主要内容包括: 隐藏交易的平衡性验证, 即确保交易输入输出的金额相等, 一般通过同态密码或零知识证明技术来实现; 交易金额的范围证明, 即确保交易金额在合法范围内, 防止出现支付负值金额而凭空产生货币的问题, 一般通过零知识证明或环签名技术来实现; 货币的合法性验证, 即在使用全局混币方案的密码货币中(如零币),确保支付货币为一个已发行的合法货币, 一般通过零知识证明技术来实现.
3.2.1 同态密码
Pedersen 承诺的加法同态特性为矿工(验证者) 使用金额承诺进行隐藏交易验证提供了便利. 假设一个交易的输入为v1,v2, 输出为v3. 为了确保交易平衡, 即:v1+v2=v3, 构建的交易承诺应满足:
Wang 等人[28]希望使用Paillier 方案利用Paillier 算法同态性来实现交易平衡性验证. 但在这一方案中会使用不同接收方的公钥来对输出金额(UTXO) 进行Paillier 加密, 不同公钥的加密结果使得无法利用Paillier 算法的同态特性进行平衡性验证. 因此, 该方案引入一个dumb account 账户, 并对每一个输出金额均使用dumb account 公钥来进行Paillier 加密并将这一加密结构构造为一个承诺, 从而利用基于承诺的零知识证明方案来实现交易非负性和平衡性验证. 交易验证通过后会写入区块, 接收方通过查询区块收到各自隐藏金额并使用私钥解密获得明文交易金额. 因此, 该方案在使用Paillier 加密为接收方传递交易金额的同时, 还需引入dumb account 账户的加密(承诺) 金额, 这额外增加了系统的存储开销.
PGC 方案[30]则是为基于账户模型的区块链交易系统而设计的, 它利用Twisted-ElGamal 同态加密算法对交易金额和账户余额进行加密, 从而可实现交易过程中账户余额的密态加减操作. 同时, Twisted-ElGamal 算法又是对零知识证明友好的, 基于加密结构便于构建出金额非负性、金额上限、金额比例等交易规则审计算法.
综上所述, 在隐藏交易验证方面, 加法同态承诺如Pedersen 承诺和同态加密方案能够实现隐藏交易的平衡性验证, 但同态承诺无法由承诺结果直接获得承诺值, 而同态加密能够实现承诺金额的传递但不利于零知识证明方案的构建. 因此, 二者均需增加额外的密码运算来实现完整的密态交易和公开验证功能.Twisted-ElGamal 算法在基于账户的交易模型下构建了高效的实现方案, 但如何在基于UTXO 的交易模型下实现密态交易验证仍有待进一步研究. 此外, 同态加密方案在性能上存在不足, 目前全同态加密算法(fully homomorphic encryption, FHE)[45,46]的运行效率较低, 存在密文膨胀等问题, 只能适用于小数据规模场景, 无法在大规模数据场景中得到普遍应用.
3.2.2 零知识证明
零知识证明(zero-knowledge proof) 在区块链交易内容隐私保护方面发挥了重要作用. 零知识证明[47,48]是一种涉及两方或多方的密码协议, 证明者能够在不泄露任何秘密内容的情况下向验证者完成秘密信息的证明[49]. 目前很多方案如零币和门罗币[50]等都是用零知识证明来实现隐藏交易内容的验证.
零币Zcash[25,32]使用zk-SNARKs[51,52]非交互式零知识证明完成隐藏交易的正确性验证. zk-SNARKs 将任意计算条件用算术电路C表示, 输入数据后, 0 或1 作为验证结果返回. zk-SNARKs 在Zcash 系统中的应用如图8 所示. zk-SNARKs 主要有以下三个步骤:
图8 Zcash 中的零知识证明协议Figure 8 Zero-knowledge proof in Zcash
(1) KeyGen(1λ,C)→(pk,vk). 输入一个安全参数λ和F域-算术电路C, 生成零知识证明中的证明密钥pk 和验证密钥vk.
(2) Prove(pk,x,a)→π. 输入一个证明密钥pk、公开信息x和证明者拥有的秘密信息a, 输出一个非交互式证明π, 来表示证明者确实拥有某些知识.
(3) Verify(vk,x,π)→b. 输入一个验证密钥vk 和公开信息x, 一个证明π, 如果验证者被说服, 即他相信证明者确实拥有某种知识, 则验证输出为b=1.
表3 零知识证明系统比较Table 3 Comparison of three zero-knowledge proof systems
此外, Ma 等人提出了一种新的零知识证明方案NIZK[58], 该方案借鉴了Camenisch 等人于2008 年提出的基于Boneh-Boyen 签名[59]的交互式范围证明方案[60], 采用Fiat-Shamir 启发式将方案构造为非交互式零知识证明方案. 该方案大幅缩短了零知识证明的生成时间, 但生成的零知识证明信息长度更长.Ma 等人方案同其他零知识证明方案的性能比较如表4 所示.
方案使用jsnark[63]前端编译工具生成电路, 电路规模在220量级. 通用零知识证明方案实现时选取的是椭圆曲线bn128 上的有限域, 满足128 比特安全性. 表4 中的C为电路大小,u,l为限定明文消息空间大小的参数, 明文消息空间为[0,2L) , 其中L=u×l.
表4 NIZK 同其他零知识证明方案的比较[58]Table 4 Comparison of NIZK scheme to existing ZKP systems [58]
3.2.3 环签名
在Maxwell 提出的保密交易方案中采用了Borromean 环签名[64]来实现承诺值的范围证明. 在基于Borromean 环签名的保密交易方案中, 范围证明方案的思路为首先将要证明的金额v分解为二进制形式,然后计算金额各位的承诺值, 并将承诺值作为公钥生成环签名, 接收方对签名等进行验证判定交易是否有效. 假设金额v ∈[0,2n),n为公开参数, 金额v的Pedersen 承诺为commit=kG+vH, 已知G,H ∈G,G是G 的生成元,H的离散对数未知. 证明者有承诺commit 以及k和v, 生成证明π表明v ∈[0,2n).Borromean 环签名实现承诺金额范围证明和验证的具体步骤如下:
首先, 发送方根据金额v生成其范围证明π:
综上所述, 门罗币使用环签名技术实现了交易金额的范围证明, 保证交易金额处于合理区间. 但基于Borromean 环签名的范围证明方案生成的证明长度较大, 证明长度与所要证明的区间上界成线性相关, 交易大小主要受范围证明长度影响, 导致效率较低. 因此最新的Monero 方案使用Bulletproofs 技术替换Borromean 环签名, 优化了范围证明算法的性能, 基于Bulletproofs 方案的相关改进算法[65]也被提出.Zcash 方案使用zk-SNARKs 零知识证明能够在不泄露明文数据的情况下完成隐藏交易验证, 仅需生成很小数据量的证明就可完成大量数据的验证. 但零知识证明技术在提供了良好的交易内容隐私保护的同时,也存在一些不足: 首先, 由于系统引入了零知识证明算法, 使得隐藏交易验证算法的开销增大, 吞吐量与响应速度有待进一步提高; 其次, zk-SNARKs 在系统初始化时需要信任中心安全地生成公共参数, 存在初始化各方共谋伪造新币的安全风险, zk-STARKs 无需系统初始化, 并且是后量子安全的, 但其证明长度过长,在区块链的实际应用中有一定局限性; 此外, 以上这些方案均未考虑实际应用中的交易内容监管问题.
为了解决区块链隐私保护问题, 多种密码技术应用到区块链系统中用于实现交易内容隐藏和隐藏交易验证, 但同时也对区块链交易监管提出了更多挑战. 基于公有链的密码货币多强调隐私保护, 无法实现交易内容监管, 为了满足行业应用的监管需求, 一些具有监管功能的隐私保护方案也陆续被提出[66-70], 例如PRCash[71]、zkLedger[72]、FabZK[24]、PGC[30]以及ACT[67]方案等.
PRCash[71]使用基于UTXO 的Mimblewimble 交易模型来构建密态交易. 交易方使用交易金额的Perdersen 承诺在公开账本中记录交易, 同时系统引入监管方, 基于用户交易身份来限定用户在一段时间内的交易总额. 当用户向系统注册时, 监管方使用随机化签名(randomizable signature)[73]来为用户公钥pku签发证书. 当用户接收到一笔新的交易输出时, 如果用户使用匿名身份进行交易, 需通过私钥sku和伪随机函数(pseudorandom function)[74]生成匿名身份PIDe接收交易输出, 同时通过零知识证明生成监管证明信息, 以确保PIDe生成私钥和签发证书中公钥的正确对应以及匿名身份PIDe在当前时段的合法性. 此外, 用户还需累加PIDe身份对应的所有UTXO 并通过范围证明表明总额没有超过限值; 如果用户使用实名身份进行交易, 需使用监管方公钥pkr加密用户公钥pku并通过零知识生成监管证明信息,以确保加密的公钥pku同之前签发证书中的公钥pku相同, 从而完成交易. 监管方在接收到交易中的上述监管证明信息后, 如果验证通过即可确认交易并写入区块. PRCash 方案提供了用户派生身份的灵活验证和匿名交易总额的有效监管.
Naganuma 等人[69]在Zerocoin 协议的基础上提出了可审计的Zerocoin 方案, 审计方能够监管某笔交易的交易轨迹. Zerocoin 在区块链账本中使用Pedersen 承诺来表示生成的密码货币(coin), 为了实现监管, 发送方发送交易的同时需要附带审计信息. 审计信息包括: 用监管方公钥加密零币承诺gyhz的一部分gy生成的密文Enc(pk,gy) 和一个零知识证明π:
零知识证明π用来防止发送方恶意地伪造审计密文. 交易方在货币支付过程中将y值作为货币序列号Serial 予以公开. 监管方收到监管信息后, 用私钥解密Enc(pk,gy) 得到gy并根据π验证密文真实性和监管可靠性, 通过比较gy和gSerial将交易的收发方关联起来, 实现交易轨迹监管.
表5 zkLedger 账本存储结构Table 5 Ledger structure of zkLedger
综上所述, 目前PRCash、Naganuma、zkLedger、PGC 和ACT 等方案中的隐藏交易监管主要通过构建承诺值的零知识证明来实现, 交易方使用承诺来隐藏交易金额, 监管方使用交易方基于零知识证明生成的监管证明信息进行监管规则验证. 目前的监管方案如表6 所示, 这些方案在保护交易内容隐私的前提下实现了交易内容面向不同规则的有效监管, 如PRCash、Naganuma 和zkLedger 等主要设计了交易总额限制的监管规则, PGC 方案则提供了总额限制、比例规则等更为多样的监管规则. 但上述方案仍存在一些问题: PRCash、zkLedger 等方案面向公有链结构设计, 对于在联盟链应用场景中的使用仍需要进一步优化; FabZK 给出了Fabric 中的监管架构设计, 但该方案需引入额外的链外账户存储并要求监管方需保持实时在线, 这在实际应用中具有一定的局限性; ACT 方案计算审计令牌时, 涉及的零知识证明生成时间较长, 如何优化审计策略、提高审计效率需进一步研究. 虽然上述方案均提供了一些审计规则, 但对于日益普及的区块链应用而言监管规则仍显不足, 如都无法满足某些应用场景下监管方监管每笔交易金额的需求.
表6 相关可监管隐私保护方案对比Table 6 Comparison of privacy protection schemes with regulation
此外, 通过将交易内容和交易身份隐私保护方案相结合, 一些具有强隐私保护特性的区块链交易系统也得到了广泛应用. 本节参考姚前等人[1]关于区块链身份隐私的研究, 对于交易内容和交易身份隐私保护技术的结合展开进一步的分析讨论.
(1) 同态密码同无标识交易的结合
无标识交易技术是指在链上资产的表示(如UTXO) 中不包含资产所有者的身份标识, 资产权属变更过程中的交易确认是由用户采用资产表示中的秘密因子进行相应的密码运算来完成的, 接收方通过密码运算的结果来判断资产权属和交易确认的正确性[1]. 公开账本中记录的UTXO 中不再存有标识用户身份的公钥信息, 这使得所有基于交易地址的关联分析技术失效, 尤其是增加了交易可链接性的分析难度. 基于Pedersen 承诺和无标识交易技术构建的Mimblewimble 方案[19]可有效地确保用户交易隐私. 它通过同态承诺隐藏了交易金额, 并且利用承诺中的盲因子结合数字签名实现了交易行为的确权和交易输入输出的平衡性验证. Mimblewimble 在交易输出承诺的构建过程中指定接收方随机秘密选择交易输出的盲化因子r, 并由此实现对该UTXO 的权属控制. 由于这一过程带来了输入输出承诺盲化因子的差值(excess), 因此也将矿工对交易平衡的等式验证过程转化为验证交易双方共同构建以盲化因子差值为私钥的正确签名过程. 这一组合方案在开源密码货币项目Grin[75]和Beam[76]中得到了应用.
(2) 同态密码同自主混币的结合
“混币” 机制是将真实交易者发起的交易(UTXO) 隐藏在一个交易集合中, 从而使得观察者无法确认真正的交易, 也即无法确认同每一个UTXO 相关联的用户身份. 它是区块链系统中实现交易身份隐藏的基本思想. 自主混币是指真实交易者在混币过程中无需第三方中心机构和其他用户的参与, 可自主完成混币过程[1]. 自主混币的实现机制为环签名算法. 基于Pedersen 承诺的同态密码方案结合自主混币技术构建的RingCT (ring confidential transaction) 方案可有效地确保用户交易隐私. 它将同态承诺隐藏交易金额同可链接环签名隐藏交易身份相结合, 通过可链接环签名将真实交易者身份隐藏在匿名集合中并完成了支付确权, 借助签名可链接性实现了货币防双花. 在交易内容验证方面采用同态承诺确保交易输入输出的平衡性验证, 基于Bulletproofs 的零知识证明方案实现了交易金额的范围证明. 这一组合方案在门罗币[22]中得到了应用.
(3) 信息加密同全局混币的结合
全局混币技术是将待支付货币的真伪验证问题转化为一个已发行货币列表的成员证明问题, 从而实现支付货币在全部货币中的混淆[1]. 基于对称加密的交易信息加密方案结合全局混币技术构建的Zerocash方案可有效地确保用户交易隐私. Zerocash 将系统中所有的货币承诺值构建为一棵Merkle 树, 当真实交易者执行交易时, 交易发送方通过零知识证明来确保支付货币为Merkle 树中的成员并完成支付确权, 从而实现了真实身份在全部用户身份集合中的混淆. 在交易内容隐私保护方面, 交易发送方首先使用Curve25519 密钥协商协议协商对称密钥, 而后通过对称加密将交易内容秘密传送给交易接收方, 并通过zk-SNARKs 零知识证明方案确保密态交易内容的规则合法性验证. 这一过程在保护交易内容的同时也确保了交易接收方的身份隐私. 这一组合方案在零币[25]中得到了应用.
(4) 基于业务逻辑的数据隔离同可控匿名认证的结合
可控匿名认证是指在用户身份标识的建立和认证过程中, 除监管方以外不允许其他人确定交易者的真实身份. 在必要时, 监管方可恢复出匿名化后交易方的真实身份[1]. 可控匿名认证在联盟链中得到了广泛应用, 通常用户在实名申请后获得一个匿名证书用于交易过程中的身份标识, 监管者在必要时可通过证书和实名注册信息恢复出用户的真实身份. 基于业务逻辑的数据隔离技术同可控匿名认证方法[1]构造的隐私保护方案可有效地确保用户交易隐私. 联盟链中的用户在通过匿名证书认证身份后, 可通过数据隔离机制控制隐私交易内容的知悉范围. 联盟链中心化背书的特点也更便于实现身份的可控匿名和隐藏交易的快速验证. 这一组合方案在联盟链Hyperledger Fabric[40]和Corda[42]中得到了应用.
区块链系统中的交易内容隐私保护技术已经成为当前研究的热点. 密码学技术在实现区块链的交易内容保护和监管上发挥着重要作用. 首先, 在交易内容隐藏方面, 目前的区块链系统多采用保密交易(confidential transaction) 和加密技术. 已有的加密方案如一次性认证对称加密方案、属性加密等提供了更细粒度的内容隐私保护, 但也给隐藏交易的验证带来了更多挑战. 联盟链如Hyperledger Fabric, Corda和Quorum 等则通过通道隔离划分“安全域” 以及链外私有数据存储来解决交易内容隐藏问题. 其次, 在隐藏交易验证方面, 区块链系统多采用基于零知识证明的范围证明方案, 以及利用同态承诺方案的同态特性实现交易合法性和平衡性验证, Hyperledger 等联盟链则使用中心化背书方式来完成隐藏交易验证. 最后, 目前的交易内容监管主要采用零知识证明技术通过构造可验证加密方案来实现隐藏内容监管.
随着区块链技术的深入普及和推广, 区块链交易内容隐私保护技术在以下几个方面也有待进一步研究:
第一, 新型的区块链交易内容隐私保护算法的研究与设计一直是关注的热点. 随着区块链系统新应用场景的不断出现, 需要设计满足新需求的区块链交易内容隐私保护算法. 区块链的应用已不仅限于密码货币的点对点支付场景, 多方协作、数据交易、身份认证和隐私计算等新型应用场景下的隐私保护需求更加多样, 参与方数量更多, 交互方式更加多元, 保护内容更加多样. 例如: 目前的安全多方计算+ 区块链的隐私计算方案受到广泛关注, 区块链系统为安全多方计算过程中的数据确权、可信审计和数据流通提供了有效的支撑, 未来随着区块链运算性能和存储容量的进一步提高, 能否在确保隐私的条件下提供更为灵活的隐私计算方案也备受期待. 因此, 如何设计多应用场景下细粒度隐私保护方案仍是未来的研究热点.
第二, 交易内容隐私保护算法性能和安全性方面的不足也有待进一步提高. 引入基于复杂密码学算法的隐私保护方案一方面会降低原有区块链系统的效率, 另一方面也带来了安全证明方案难于构建的问题.例如, 2019 年Zcash 零知识证明系统存在的缺陷[77]就会导致货币伪造的问题. 这些不足必然会限制其进一步的大规模应用. 因此, 如何设计更为高效的密码算法、提出更为完备的安全模型、构建更为严谨的证明方案也是亟待解决的关键问题.
第三, 随着区块链技术在金融、政务、社会治理等领域的广泛应用, 对于交易过程的监管需求日益增强. 如何在监管方及交易方共同参与模式下设计高效安全的交易内容保护方案, 既确保交易方隐私又符合行业监管要求, 达到隐私与监管的平衡, 也有待进一步研究.
第四, 在隐私保护算法实现层面, 通过引入专用密码设备来提升零知识证明以及同态加密等算法的计算性能、引入可信执行环境(如SGX) 为隐私保护方案提供安全的计算环境以弥补密码方案的不足也具有很好的研究前景.