区块链系统中身份管理技术研究综述 您所在的位置:网站首页 门罗munro20价格 区块链系统中身份管理技术研究综述

区块链系统中身份管理技术研究综述

2023-12-05 01:23| 来源: 网络整理| 查看: 265

起源于比特币[1]的区块链是一种基于链式数据结构的分布式共享账本技术, 被视作继大型机、个人电脑以及互联网之后计算模式的又一次颠覆式创新, 其去中心化的分布式数据存储、多方维护、共识确认和不可篡改的特性为解决传统中心化系统的数据存储不安全和共享性差等问题提供了新的思路.随着人们对区块链技术的深入研究, 区块链系统也从单一的去中心化公有链发展到今天开放式的公有链、具有准入机制的联盟链和私有链并存的多种技术形态, 并在行业应用中得到了普及和推广.区块链技术很可能对当今互联网产生颠覆式的影响[2, 3].

区块链系统在提供了灵活的分布式协同处理优势的同时, 也对参与方的身份管理提出了极大的挑战.在传统的中心化交易系统中, 交易由中心机构统一核验确认, 且交易账本内容不公开.而在区块链交易系统中, 为了实现去中心化的目标, 大多采用类似于b-money[4]的设计思想, 公开所有的交易记录并由网络中的特定节点采用多方共识确认的方式对交易进行背书核验.这一新型交易模式对身份管理提出了两方面的挑战: 首先, 如何在去(多)中心开放网络环境下安全、高效地实现用户身份的标识、认证和资产确权; 其次, 如何确保账本公开、多方共识情况下的身份隐私保护.因此, 深入研究区块链系统中的身份管理技术具有极其重要的意义.

区块链系统中的身份管理是区块链应用中实体之间进行通信交互和资产交易的基础, 它包含对实体身份从产生、存储、认证、使用、审计到注销的全生命周期的管理.身份管理一直是区块链系统中的关键组件, 也是构建区块链系统安全的基础.随着区块链技术的普及和发展, 区块链已从传统的去中心化密码货币发展到今天公有链、联盟链和私有链并存的多种技术形态, 其系统架构、信任模型和安全需求也日益多元化.由此也对区块链系统中的身份管理技术提出了挑战.因此, 系统地梳理区块链身份管理的相关工作, 科学地提炼出其中的共性关键问题对未来区块链行业应用的发展至关重要.目前国内外已有多篇文献对区块链系统中的安全隐私问题进行了研究, 但仍然缺乏对区块链身份管理技术的深入探讨和系统性综述研究.2017年, 祝烈煌等人[5]从身份隐私和交易隐私两方面分析了区块链中网络层、交易层和应用层的隐私问题; 2018年, Genkin等人[6]重点对基于公有链的密码货币中的身份隐私问题进行了讨论; 2019年, 付烁等人[7]对密码货币的匿名性问题进行了研究, 重点讨论了中心化和去中心化密码货币中的身份隐私问题; 2020年, 张奥等人[8]依据隐私保护的不同技术手段从地址混淆、信息隐藏、通道隔离这3方面主要对公有链中的隐私保护机制进行了研究.上述工作多以公有链密码货币为研究对象, 部分涉及到了身份隐私保护问题, 但并未对身份管理全生命周期过程中所涉及到的身份标识、资产确权、身份认证和隐私保护问题进行系统性的研究和梳理.此外, 也未对公有链和联盟链交易过程中涉及到的身份管理共性问题, 如资产权属标识和交易确权、交易身份认证和动态身份隐藏等展开更深入的讨论.本文的工作对近年来区块链身份管理技术进行了系统性的梳理.从公有链和联盟链系统中身份管理的共性问题出发, 通过比较区块链与传统中心化系统在交易模型和隐私保护上的差异, 阐述了区块链系统中身份管理的主要内容, 分析了身份管理所面临的威胁及挑战, 并由此认为, 在身份标识和认证方面, 区块链与中心化系统中的身份管理面临着更多的共性问题并沿用了传统中心化系统的技术体系; 而在隐私保护方面, 二者存在较大差异, 区块链系统只有通过引入身份隐藏技术才能有效地解决公开账本下的交易身份隐私保护问题.基于这一观点, 本文随后从身份标识、身份认证和身份隐藏3个方面对主流区块链平台中的身份管理和隐私保护技术进行了对比分析, 从其所涉及的设计思路、密码算法和安全协议等方面进行了深入的探讨, 并对相关技术的未来发展进行了展望.

本文第1节通过与传统中心化交易系统进行对比分析, 总结区块链系统交易模型的特点.基于上述特点, 总结区块链身份管理的主要内容, 阐述区块链身份管理所面临的威胁及挑战.第2节分析总结区块链系统中的身份标识技术.第3节对比分析区块链系统中的身份认证技术.第4节提出交易过程中的动态身份隐藏是解决区块链身份隐私保护的关键问题, 并对比分析目前主流区块链平台中实现交易身份隐藏所采取的不同技术手段: 如协同混币技术、自主混币技术、全局混币技术和无标识交易技术.第5节归纳总结现有区块链系统的身份管理技术, 并对未来的研究方向进行展望.第6节是结束语.

1 区块链中的身份管理问题 1.1 区块链交易模型

区块链系统中的交易在交易模型方面与传统系统有着很大的不同.首先, 在传统系统中, 所有交易过程的记录和确认都是由系统的中心机构集中来完成的.而在区块链系统中, 客户端首先将交易发送到区块链网络中, 由网络中的特定节点来对交易进行背书确认, 确认后的交易才能写入区块链账本中并全网分发[1].传统交易系统与区块链交易系统的比较如图 1所示.

图 1 Fig. 1 Fig. 1 Comparison between traditional transaction system and blockchain transaction system 图 1 传统交易系统与区块链交易系统的比较

其次, 在交易结构的表示方面, 以比特币为代表的公有链(如: 达世币[9]、门罗币[10]、零币[11]等)、央行数字货币原型系统RSCoin[12]和一些联盟链(如: Corda[13]、Fabric[14]中的Fabcoin[15]等)大多采用了未花费交易(unspent transaction output, 简称UTXO)的表示方法.每一单元的UTXO代表特定属主的一定数值的数字资产, 对手方之间的一笔交易由若干输入和输出UTXO组成, 输入的UTXO代表交易发送方支出的数字资产, 输出的UTXO代表交易接收方收到的数字资产, 可在将来作为输入的UTXO来使用.支付过程中产生的找零输出也会发送回交易发送方.简言之, UTXO是一种带有属主信息和资产数量的编码型数字资产表达方式.基于UTXO模型的交易结构如图 2所示.

图 2 Fig. 2 Fig. 2 UTXO structures in blockchain system 图 2 区块链系统中的UTXO交易结构

公有链的另一个典型代表项目以太坊[16]则采用了传统的基于账户的交易模型.用户的以太坊账户中存有当前余额、交易次数、账户信息哈希值等, 交易的发生反映到不同账户的余额变化上.为了便于以太坊上代币(token)的使用, 以太坊社区制订了ERC 20标准[17]用于描述在智能合约中实现代币的标准API, 这些API主要提供了代币使用的一些基本功能, 如转移代币、授权代币给第三方使用等.

从身份管理和隐私保护的角度来分析, 传统中心化系统与区块链系统存在着显著差异.

(1) 在身份认证方面, 传统交易系统采用中心化集中实名认证机制; 区块链系统则大多采用用户匿名的身份认证机制, 用以确保用户隐私;

(2) 在账本数据存储方面, 传统交易系统采用由中心机构集中统一存储的方式, 账本数据安全由存储机构确保且账本内容不公开; 区块链交易系统采用全网节点共同存储账本的方式, 账本数据安全由共识机制、块链式数据结构共同确保且账本内容公开、透明;

(3) 在交易内容确认方面, 传统交易系统采用由中心机构统一核验、确认的中心化确认方式; 而在区块链交易系统中, 为了实现去(多)中心化的目标, 大多采用类似于b-money[4]的设计思想, 公开所有的交易记录并由网络中的特定节点对账本进行多方共识确认.但这些交易记录结构中包含了大量的用户历史交易信息, 观察者基于UTXO结构非常易于分析获得用户的身份隐私信息.

综上所述, 区块链系统中的交易模型采用UTXO结构详细记录了交易流转过程, 并将传统交易系统中的用户实名、账本保密的隐私保护方式变更为用户匿名、账本公开的方式, 将由中心机构集中确认交易变更为全网节点多方共识确认交易.这一新型交易模型对区块链系统中的身份管理及隐私保护都提出了更大的挑战.

1.2 区块链身份管理的主要内容

区块链系统中的身份管理主要包括3方面的内容: 身份标识、身份认证和身份隐藏.其中, 身份标识是构成链上资产权属标记和支付确权的基础, 而身份认证和身份隐藏方式则与交易身份的隐私保护密切相关.

1) 身份标识

身份标识是指区块链系统中用于标识交易用户身份的一种模式.在目前的区块链系统中, 大多基于密码算法和认证协议来实现身份标识.此外, 在交易过程中, 身份标识还涉及到另外两方面的内容: 首先, 如何形成有效的身份标识符以用于资产(如UTXO)的权属标记并支持基于标识符的支付确权; 其次, 出于隐私保护的目的, 交易方大多拥有多个身份标识符, 例如多对公私钥对, 从而带来了相应的密钥管理问题.如何有效地在客户端管理用户的多身份标识符并优化存储空间和执行效率也是需要关注的问题.

2) 身份认证

身份认证是指在区块链系统中确认交易者身份的过程, 从而确定该用户是否具有对交易数据的访问和使用权限以及对交易行为的确认和不可抵赖.区块链系统中的身份认证又可分为如下3种.

(1) 匿名认证

在用户身份标识的建立和认证过程中, 不允许直接或间接确定交易者的真实身份.

(2) 实名认证

在用户身份标识的建立和认证过程中, 应直接或间接地确定交易者的真实身份.

(3) 可控匿名认证

在用户身份标识的建立和认证过程中, 除监管方以外不允许直接或间接确定交易者的真实身份.在必要时, 监管方可恢复出匿名化后交易方的真实身份.

3) 身份隐藏

由于区块链系统具有账本公开、多方确认的特点, 使得简单使用匿名认证技术难于保证交易方的身份隐私, 因此引入了身份隐藏技术以用于实现动态交易过程中的身份隐私保护.交易身份隐私是指对于区块链系统中的某笔交易, 观察者无法将交易发送方和接收方的身份与该笔交易相关联.观察者主要是指除交易参与方和监管方以外的第三方.这一定义包括两方面的内容: 首先, 观察者无法确认某笔交易发送方和接收方的身份.假设区块链系统中交易用户(身份)的总数为N, 理想情况下, 观察者准确确认交易方身份的概率为1/N; 其次, 系统应确保交易身份的不可链接性.即观察者无法将同一用户的不同身份链接起来; 观察者也无法将一笔交易的发送方和接收方的身份链接起来.在具体交易场景中, 交易身份隐私保护又可细分为交易发送方的身份隐私保护和交易接收方的身份隐私保护.因此, 在交易过程中, 必须采取特定的身份隐藏技术将交易方的身份隐藏在一定的匿名集合中, 从而实现发送和接收方的身份隐藏, 以达到隐私保护的目的.

1.3 区块链身份管理的威胁与挑战

区块链系统所采用的去(多)中心化模式下基于公开账本的交易多方共识确认模型在提供了高效的信任构建方法的同时, 也带来了更多的身份管理和隐私保护问题.其威胁主要包括:

(1) 区块链系统采用了交易账本全网公开的方式来存储全部的历史交易数据, 区块链系统中的所有节点都可以看到上链数据并追溯交易流程, 这给上链的身份隐私带来威胁;

(2) 区块链系统采用多方共识方式来完成交易的确认, 参与共识的节点必然需要掌握更多的交易信息以实现交易确权验证, 一旦共识节点出现问题, 必然会给交易信息中的身份隐私带来威胁;

(3) 区块链系统中采用的UTXO模型表示方法在有效地刻画了数字资产交易流转的同时, 也带来了隐私保护的问题.首先, UTXO以编码形式在公开账本中记录数字资产, 这为信息追踪和阈下信道的利用提供了便利; 其次, UTXO模型中清晰表达了输入输出UTXO间的关系以及权属变更过程, 如: 同一交易的多个输入可能属于使用不同地址(公钥)的同一所有者; 交易输出的找零地址与输入地址为同一持有人等.相关研究工作表明, 这些特点为身份追踪提供了极大的便利.

在传统交易系统中, 用户是向中心机构公开交易身份, 由中心机构完成身份管理和隐私保护.而区块链系统中并无单一中心机构, 而是依靠系统整体安全机制来实现安全和隐私保护.区块链系统一旦身份管理的保护机制出现问题, 所带来的后果会是向所有参与方公开交易身份和交易内容, 这对于承载高价值信息的系统而言是无法接受的.因此, 确保区块链系统参与方的身份隐私安全具有非常重要的意义.

但是受限于区块链系统中交易模型的设计, 身份管理和隐私保护方案也面临着如下一些技术挑战.

(1) 交易身份是区块链系统中数字资产权属表达的重要方式, 区块链存储的交易账本公开且交易记录易被追溯, 简单的身份匿名机制无法达到隐私保护的要求.因此, 如何有效地解决公开账本下动态交易过程中的身份隐私是所面临的主要挑战之一;

(2) 区块链系统采用多方共识方式来实现交易的确认和信任的构建, 有时交易双方对于作为观察者的验证节点来说是存在交易身份隐私保护需求的, 简单的信息隐藏方法无法满足既保护信息又可验证内容的需求.因此, 如何在保护交易身份隐私的同时实现正确、有效的交易验证具有一定的挑战性;

(3) 区块链系统中采用多方确认后通过公开信道(区块链账本)进行交易信息发布, 这一过程耗时较长.因此, 在区块链系统中大多采用交易发送方到区块链网络节点的单向通信方式.这使得传统交易系统中的多轮双向交互的身份认证和隐私保护协议不再适用.因此, 如何在区块链系统单向传输交易数据的过程中实现身份认证和隐私保护也具有一定的挑战性;

(4) 随着区块链系统在行业应用中的不断普及和发展, 行业监管与隐私保护之间的矛盾也逐渐凸显.一方面, 区块链系统中缺乏单一的交易中心机构; 另一方面, 传统的公有链中无监管式的隐私保护方法又不适合于很多现实应用场景.因此, 如何在实现隐私保护的同时又可提供对于交易身份的监管也有待进一步研究.

2 区块链系统中的身份标识

在用户身份管理方面, 目前的区块链系统大多基于非对称密码算法来实现用户的身份标识.但公有链和联盟链在具体实现方案上存在较大的差异.公有链中的比特币、以太坊、门罗币、零币和Libra[18]等强调用户的隐私保护, 采取匿名身份认证机制, 用户公钥作为身份标识符, 用户自主生成和管理标识身份的密钥; 以Fabric和Corda等为代表的联盟链则更关注强监管环境下客户身份识别(know your customer, 简称KYC)的需求, 采取实名或可控匿名的身份认证机制, 使用数字证书作为身份标识符, 采用证书认证中心(certificates authority, 简称CA)来生成和管理数字证书.

2.1 公钥标识身份

目前区块链系统大多基于公钥密码体系的椭圆曲线密码算法来构建用户的身份标识.以比特币为例, 在比特币交易中用户的身份标识符A称为比特币地址(address), 其长度为160比特, 是由用户公钥P通过SHA 256和RIPEMD 160的两次哈希运算(HASH160)而生成.其运算过程如下:

$ A = {\rm{HASH}}\;160\left( P \right) = {\rm{RIPEMD}}\;160\left( {{\rm{SHA }}256\left( P \right)} \right). $

为了实现数字资产的权属标识, 在比特币的UTXO中使用用户的身份标识符(地址)A来明确标识当前UTXO属于用户A, 并通过A来控制UTXO的支付.比特币的支付过程是由交易脚本(script)来完成的, 对于属于A的UTXO进行支付的交易脚本可描述为

$ \left\langle {Sig} \right\rangle \left\langle P \right\rangle {\rm{DUP HASH }}160\left\langle A \right\rangle {\rm{EQUALVERIFY CHECKSIG}} $

为了花费UTXO, 用户必须提供公钥〈P〉和对应的私钥d所生成的交易数字签名〈Sig〉, 并通过判断公钥〈P〉的HASH 160运算结果是否与〈A〉相等和签名验证是否通过来进行支付确权.比特币使用了基于堆栈结构的脚本语言来完成上述操作, 脚本的执行过程如下.

(1) 将用户数字签名〈Sig〉压入堆栈;

(2) 将用户公钥〈P〉压入堆栈;

(3) 执行栈顶元素复制指令DUP, 将用户公钥〈P〉复制并压入堆栈;

(4) 弹出栈顶元素〈P〉并执行指令HASH 160计算HASH 160(P), 并将计算结果压入栈中;

(5) 将身份标识〈A〉压入栈中并执行指令EQUALVERIFY, 弹出栈顶两个元素并判断二者是否相等;

(6) 弹出〈Sig〉和〈P〉并执行指令CHECKSIG, 计算交易哈希值并判断签名是否正确.

由上述操作可见, 比特币基于非对称密码算法的公私钥对和签名验签实现了对链上数字资产的权属标识和支付确权.

此外, 为了实现交易过程中的身份隐私保护, 交易地址在每次交易时可动态生成, 即同一个用户通过使用多个不同的身份标识符(假名)来降低交易地址与真实身份以及不同交易之间的关联性, 这带来了钱包端密钥管理的问题.目前, 比特币提供了两种解决方案.第1种方案中用户私钥通过随机数动态地临时生成, 再计算对应的公钥.随着密钥数量的增加, 这会极大地增加密钥管理的开销; 第2种方案中用户在比特币钱包中存储根私钥, 使用时通过密钥派生算法来生成临时公私钥对, 支持这一方法的钱包也称为HD(hierarchical deterministic)钱包[19].在比特币BIP 32协议中对生成算法有详细的描述, 它基于椭圆曲线的密钥叠加特性, 即私钥叠加对应的公钥也会叠加, 利用父密钥和索引逐级派生出子密钥, 这一方法可以有效地降低钱包端的密钥管理开销.其基本结构如图 3所示.

图 3 Fig. 3 Fig. 3 Key derivation in bitcoin HD wallet 图 3 比特币HD钱包密钥派生结构

此外, 在点对点分布式存储系统IPFS[20]中, 还将公钥标识方法用于节点地址生成, 采用公钥哈希作为节点的身份标识.更多的公有链将这一方法用于用户身份生成.例如, 以太坊平台同样采用椭圆曲线密码算法生成用户身份标识(账户地址), 并直接用于标识账户所有权, 与比特币不同的是, 以太坊使用Keccak 256哈希函数来生成用户地址.公有链中的门罗币则采用了两对公私钥对来实现身份标识, 同时也采取了类似的密钥派生技术来实现钱包端的密钥管理, 详细内容可参见第4.3节.零币在交易接收地址上使用了一对公私钥对来作为身份标识, 但在货币权属标记方面则采用了基于零知识证明的方案.零知识证明是指一种证明者向验证者证明他知道某个秘密而同时又不泄露任何秘密信息的方法, 这一过程需满足正确性、完备性和零知识性.零知识证明实质上是一种涉及两方或更多方的协议, 因此又可分为交互式零知识证明和非交互式零知识证明.交互式零知识证明是指证明者和验证者通过不断交换信息来完成证明.从知识复杂性的角度来看, 交互式零知识证明就是证方传递的知识为0的交互式证明系统.非交互式零知识证明是指证明者和验证者无需多次交互也能达到零知识证明的效果.目前在区块链系统中大多使用非交互式零知识证明来实现交易身份隐私保护, 零币的相关内容可参见第4.4节.

2.2 数字证书标识身份

以Fabric和Corda等为代表的联盟链则更关注强监管环境下客户身份识别(know your customer, 简称KYC)的需求, 均提供了基于数字证书的用户身份标识, 以实现实名或可控匿名认证.

例如在Linux基金会所主导的开源联盟链平台Hyperledger Fabric[14]中, Fabric的成员服务(membership services, 简称MSP)为区块链网络提供用户注册、身份管理和审计服务.Fabric中默认的MSP实现使用X.509证书作为身份标识符, 采用传统的公钥基础结构(public key infrastructure, 简称PKI)分层模型, 并支持RSA和ECDSA公钥密码算法.PKI通过引入CA机构为注册真实身份的用户颁发数字证书, 数字证书包含用户的身份信息、用户的公钥信息、CA数字签名和有效期等信息.数字证书作为身份标识符与用户具有一一映射关系.在区块链交易过程中, 数字证书可替代公钥来作为数字资产的权属标记, 用户使用对应的私钥签名来完成支付行为的确认.此外, CA负责数字证书的全生命周期管理, 包含数字证书的签发和更新, 数字证书的撤销、查询或下载等.数字证书的申请、发布和使用如图 4所示.

图 4 Fig. 4 Fig. 4 Management and use of certificates 图 4 数字证书的管理和使用

更多的基于数字证书的身份管理机制可参见第3.2节和第3.3节.

2.3 DID标识身份

W3C组织将分布式数字身份标识符(decentralized identifier, 简称DID)[21]定义为一种新型的支持可验证、分布式数字身份的标识符, 可用来标识人、组织、物品、抽象实体等任意主体.一般而言, 数字身份通常由身份标识符及与之相关联的属性声明来表示, 分布式数字身份是基于区块链去中心化特点来构建的一种扁平化、弹性化的身份管理模式, 通过将身份数据所有权归还用户来解决隐私保护问题.分布式数字身份包括: 分布式数字身份标识符和数字身份凭证(声明集合)两部分.W3C的DID规范和可验证凭证(verifiable credential)规范[22]分别定义了代表实体的身份标识符DID及与之关联的属性声明.

实体在注册申请后可获得一个DID或多个DID, 并由自己进行管理、维护, 不同DID所代表的身份之间没有关联性, 可有效保护身份隐私.同时, 每个DID会对应一个DID Document.DID Document是一个通用数据结构, 它包含与DID验证相关的密钥信息和验证方法(目前大多为公钥和数字签名), 提供了一组使DID控制者能够证明其对DID控制的机制.实体在需要进行身份信息证明时, 可向相关发行方申请可验证凭证, 用于实现对实体特定属性的声明.可验证凭证通常由至少两组信息组成: 其一表示可验证的凭证本身, 包含凭证元数据(metadata)和声明(claim); 其二表示数字证明, 通常是数字签名.经过上述过程, 分布式数字身份系统即可通过DID来标识一个实体, 通过可验证凭证来向身份验证方出示实体所具有的身份属性信息, 并证明自己的属性是可信的, 从而完成身份认证过程.一个实体的分布式数字身份的组成如图 5所示.

图 5 Fig. 5 Fig. 5 Composition of distributed digital identity 图 5 分布式数字身份的组成

在分布式数字身份模型中, 基于区块链系统将身份标识符的生成、维护与身份属性声明的生成、存储和使用相分离, 有助于构建一个分布式、模块化和更具弹性的身份服务生态系统.目前国内外已有多个项目基于区块链系统实现了分布式数字身份.例如, 国内微众银行的WeIdentity项目[23].此外, 为了满足属性证明过程中特定的隐私保护需求, WeIdentity项目还提供了选择性信息披露的功能.发行方在构建可验证凭证签名时, 将声明中的不同字段分别计算哈希值再连接其他信息进行签名.实体在进行身份证明时, 希望披露的字段能够提供原文, 隐藏字段仅提供哈希值.这样, 验证方就仍可连接所有字段的哈希值并正确地验证签名.

综上所述, 分布式数字身份提供了一种更灵活的身份标识和属性证明方法.但从目前的方案来看, DID仍然是基于非对称密码技术来实现的, 用户身份与一对公私钥仍形成绑定关系并通过签名实现对DID使用的控制.因此, DID在区块链交易系统中标识资产权属时仍然可以使用与现有系统同样的方法, 但也会面临相同的安全隐私威胁.

3 区块链系统中的身份认证 3.1 匿名(假名)认证

公有链中的比特币、以太坊、门罗币和零币等强调用户的身份隐私保护, 为交易用户提供了匿名认证, 即用户在注册过程中无需出示真实身份即可获得身份标识并将其用于身份认证.由于系统采用无准入机制的开放网络架构, 系统中无类似CA的可信认证中心来管理身份, 用户基于非对称密码算法自主生成和管理身份, 采用第2.1节中的方法实现身份标识, 即采用公钥作为身份标识符、私钥签名实现身份认证, 身份管理的全周期过程中用户都是匿名的.此外, 为了实现交易过程中的身份隐私保护, 同一用户还可通过使用多个不同的身份标识符(假名)来降低交易地址与真实身份以及不同交易之间的关联性.

虽然匿名认证能够在一定程度上保护用户隐私, 但值得注意的是, 由于区块链交易系统具有账本公开、多方确认的特点, 简单使用匿名(假名)认证并不能完全有效地解决交易身份隐私保护的问题.因此, 必须引入相应的身份隐藏机制来解决动态交易过程中的身份隐私保护问题, 详细内容可参见第4节.

3.2 实名认证

为了实现用户的准入控制并符合交易监管要求, Fabric、Corda、趣链[24]、微众银行的FISCO BCOS[25]等联盟链更关注强监管环境下客户身份识别(know your customer, 简称KYC)的需求, 在身份管理中采用基于数字证书的实名认证方案.系统中部署PKI/CA来管理身份, 用户基于非对称密码算法通过CA生成和管理数字身份, 用户实名认证获得数字证书身份标识的过程如下.

(1) 用户发送实名注册信息给CA申请数字证书;

(2) CA核实用户实名信息, 如果有误, 则终止申请过程;

(3) CA基于用户实名信息为用户生成公私钥对并签发实名数字证书, 确保数字证书与用户身份的一一绑定;

(4) CA将生成的数字证书和私钥发送给用户;

(5) 在区块链交易过程中用户使用数字证书作为身份标识符, 通过私钥签名实现身份认证, 身份管理的全周期过程中用户都是实名的.

基于数字证书的实名认证方案可以较好地适用于中心化系统中账本保密的应用场景.但是对于区块链中的公开账本系统, 却带来了极大的隐私泄漏风险.观察者可通过对公开账本中实名身份的分析实现交易的关联和追踪, 从而严重威胁到用户的交易安全.为了解决这一问题, 联盟链在身份管理中也提出了相应的可控匿名认证方案.

3.3 可控匿名认证

为了解决隐私保护问题, 以Fabric和Corda等为代表的联盟链在身份管理中均提供了可控匿名认证方案.例如, fabric 0.6版本中提供了基于用户交易证书TCerts(transaction cerficates, 简称TCerts)[26]的可控匿名认证方案.Fabric 0.6中的成员管理服务MSP利用注册证书(ECert)-交易证书(TCert)两级安全证书体系实现了前台匿名后台可监管的需求.用户在Fabric系统中注册, 获得由注册证书颁发机构(enrollment certificate authority, 简称ECA)颁发的实名证书Ecert, 在交易过程中, 如果选择使用此证书进行交易签名, 那么此时的交易就是实名的.当用户需匿名交易时, 可以从交易证书颁发机构(transaction certificate authority, 简称TCA)获得一批由Ecert派生出来的匿名交易证书TCerts.两级证书结构如图 6所示.

图 6 Fig. 6 Fig. 6 Tow level indentity certificates in Fabric 图 6 Fabric中的两级身份证书

其中, 根证书颁发机构(root CA), 是PKI层次结构中最上层的CA, 它代表PKI体系中的信任锚.注册证书颁发机构ECA负责给通过注册验证的用户颁发实名注册证书Ecerts.交易证书颁发机构TCA负责给提供了有效注册证书的用户颁发匿名交易证书TCerts.匿名交易证书TCerts的结构见表 1.

表 1(Table 1) Table 1 The architecture of Tcerts 表 1 TCerts结构 名称 描述 TCertID Tcert证书序列号 encEnrollmentID EnrollmentID的密文 encTCertIndex TCertIndex的密文 TCertPub_Key TCert的公钥 Extension 证书扩展域 Validity period 证书有效期 Table 1 The architecture of Tcerts 表 1 TCerts结构

其中, 监管方拥有加密用户实名注册号EnrollmentID的解密密钥, 在必要时可通过解密此字段获得用户实名身份.同时, 为了降低客户端的密钥存储数量, TCertIndex字段则用于用户密钥的派生, TCertPub_Key的生成利用了椭圆曲线的密钥叠加特性, 采用密钥派生的方法来完成.其工作原理类似于比特币中的HD钱包.用户通过扩展密钥ExpansionKey计算密钥扩展值ExpansionKey=HMAC(ExpansionKey, TCertIndex), 则用户私钥TCert Priv_Key=(EnrollPrivateKey+ExpansionValue)mod n, 根据椭圆曲线的密钥叠加特性, 则对应的公钥为TCertPub_ Key=EnrollPub_Key+ExpansionValue·G.

客户端在交易过程中使用不同的TCerts来完成不同的交易, 因此观察者无法有效识别出用户的真实身份.但这一方案也存在一定的问题: 第一, 为了实现更好的身份隐私保护, 这一方案要求TCA和用户维护大量的TCerts证书, 从而增加了系统在密钥管理、通信和存储方面的负担; 第二, 如果用户重复使用TCerts也会带来交易的可链接性问题; 第三, 对于发行TCerts的TCA而言, 它仍然可以链接用户的不同交易.

为了弥补TCerts方案的不足, 目前在Fabric 2.0版本中引入Idemix方案[27]来实现用户身份的匿名性和不可链接性.Idemix方案是基于支持多消息的盲签名和零知识证明来构建的, Fabric 2.0版本中的Idemix实现方案主要是基于文献[28-30]中的工作.Idemix提供的匿名身份认证机制具有如下特性[31].

(1) 签发者签发包含一组用户属性的凭证(credential);

(2) 用户在使用凭证进行身份认证时通过零知识证明向验证方证明其拥有凭证并可选择性地出示相应的属性.这一过程是零知识的, 不会向观察者泄漏任何其他信息;

(3) 匿名性, 即通过认证过程观察者无法获得用户真实身份信息;

(4) 不可链接性, 即观察者无法将用户的多次认证过程链接在一起.

Idemix方案与X.509数字证书认证方案的不同在于Idemix使用零知识证明, 向验证者证明证明者拥有签名及相应属性且无需出示这些值.Idemix与X.509证书方案的比较如图 7所示.

图 7 Fig. 7 Fig. 7 Comparisons between Idemix and X.509 in Fabric 图 7 Idemix和X.509方案的比较

此外, Corda中也引入了隐蔽身份(confidential identities)的概念使用临时生成的密钥对来保护隐私[32], 它的设计原理类似于Fabric中的TCerts机制, 这里不再赘述.

微众银行的FISCO BCOS区块链平台为了提高用户交易过程中的身份隐私保护, 引入了群签名(group signature)技术用于实现用户身份的可控匿名认证.在一个群签名方案中, 群成员可以通过匿名的方式代表整个群体对消息进行签名, 验证方可采用群公钥对签名进行公开验证以确保签名来自于合法的群成员, 必要时群管理员可“打开”群签名用以恢复签名者的真实身份.

一个群签名方案包含如下过程.

(1) 创建: 创建群并指定群管理员, 生成群公钥和私钥;

(2) 加入: 群管理员执行新增群成员操作, 生成群成员私钥和证书, 证书用于证明群成员身份;

(3) 签名: 由群成员执行, 输入消息和群成员私钥, 输出消息签名;

(4) 验证: 验证者通过群公钥验证签名的合法性以确保签名来自于合法的群成员, 但无法确定是哪一个群成员的签名;

(5) 打开: 群管理员可通过签名信息和群私钥获取签名者证书, 从而恢复出签名者的真实身份.

FISCO BCOS选择了支持群成员撤销和短签名特性的BBS 04方案[33], 在客户端提供群签名库用以支持群成员使用私钥完成签名操作, 区块链平台以预编译合约的形式集成了群签名的签名验证算法, 上链的签名信息可通过预编译合约验证链上的群签名.必要时群管理员可通过签名恢复出签名者证书, 从而确定签名者真实身份.FISCO BCOS中基于群签名的可控匿名认证方案如图 8所示.

图 8 Fig. 8 Fig. 8 Group signature scheme in FISCO BCOS 图 8 FISCO BCOS中的群签名方案

此外, FISCO BCOS也提供了强匿名的环签名方案用于用户身份隐私保护.这些方案在联盟链中如何与数字资产交易相结合仍有待进一步加以研究.

综上所述, Hyperledger Fabric等联盟链通过使用交易证书TCerts和Idemix来实现用户身份的可控匿名认证.对于TCerts方案, 交易身份隐私保护的有效性取决于TCerts证书数量的多少, 这也带来了增加计算存储开销的问题; 对于Idemix和群环签名方案, Fabirc和FISCO BCOS并未给出匿名认证与资产确权、交易流程相结合的具体实现方案, 因此还有待进一步加以研究.

4 区块链系统中的身份隐藏 4.1 交易身份的隐私保护问题

值得注意的是, 由于区块链交易系统具有账本公开、多方确认的特点, 简单使用前述的匿名身份认证并不能有效地解决交易身份隐私保护的问题.

以使用匿名(假名)身份认证的典型代表比特币为例, 虽然比特币采取了匿名身份认证的“假名”机制, 但基于对公开账本数据的分析, 仍可推测出参与方的交易身份隐私信息.这是由比特币UTXO交易模型的特点所决定的.

(1) 比特币UTXO交易模型中确定资产权属的身份标识为明文、确定的交易地址(假名), 未采取任何身份隐藏措施;

(2) 通常在同一个交易中, 所有的输入地址大多属于同一个用户;

(3) 找零地址和输入地址属于同一个用户.找零地址的特征包括: 作为输出地址的情况通常只会出现1次; 找零地址不会同时出现在输入地址和输出地址; 输出地址中不能只有找零地址.通过找零地址的聚类分析, 同样可以有效地识别同一用户的多个地址.

基于上述交易特征, 交易分析技术通过分析公开账本中的交易记录, 发现不同交易身份之间的关联关系, 从而推测出匿名用户的交易规律, 相关研究工作已取得了较好的分析效果[34-40].公有链的另一个典型代表以太坊[16]、央行数字货币原型系统RSCoin[12]和Facebook的Libra[16]均采取了类似的身份认证机制.相关的研究工作表明, 基于上述特点, 观察者可以有效地将同一用户的不同交易进行关联, 在辅以其他信息的情况下, 甚至可以还原出交易者的真实身份[41-43].因此, 在区块链系统中单独使用匿名身份认证而不采取身份隐藏机制并不能完全有效地保护交易方的身份隐私.

为了防止通过公开账本的数据分析来获得用户身份隐私信息, 相关研究工作在比特币交易模型的基础上提出了改进方案, 通过引入身份隐藏技术来保护身份隐私.从身份隐藏技术保护的对象而言, 可将身份隐藏划分为交易发送方的身份隐藏和交易接收方的身份隐藏.从身份隐藏所采取的不同技术手段来看, 身份隐藏技术可分为两类.

(1) 混币交易技术

混币交易技术是指在交易过程中增加中间环节对多个交易进行混淆, 从而增加攻击者的分析难度, 保护用户身份隐私.这种方法在数字货币领域通常被称为“混币”机制, 它是区块链系统中实现交易身份隐藏的基本思想.混币技术又可分为需非交易方主动参与的协同混币技术、交易方自主发起并完成的自主混币技术和系统体系架构内生的全局混币技术.上述3种“混币”机制分别在第4.2节~第4.4节中进行了详细的讨论.

(2) 无标识交易技术

无标识交易技术是指在链上资产的表示(如UTXO)中不包含资产所有者的身份标识, 资产权属变更过程中的交易确认是由用户采用资产表示中的秘密因子进行相应的密码运算来完成的, 接收方通过密码运算的结果来判断资产权属和交易确认的正确性.无标识交易技术在第4.5节中给出了详细的讨论.

4.2 协同混币技术

协同混币机制的基本设计思路是: 交易发送方在交易过程中引入一组并发交易用户并通过混淆器(mixer)混淆来共同完成交易, 从而实现交易输入、输出地址对应关系的隐藏, 使得观察者无法通过账本分析获得交易隐私信息.所谓“协同”是指混币过程中需要第三方机构或交易人的主动参与才能完成混淆过程.混币的工作机制如图 9所示.

图 9 Fig. 9 Fig. 9 Mechanism of mixing coin 图 9 混币的工作机制

目前, 协同混币技术可大致分为两类: 中心化混币和去中心化混币.

在中心化混币方案中, 第三方独立机构充当混淆器, 参与混币的交易发送方首先将数字货币发送给第三方机构, 第三方机构对交易进行混淆, 然后将同等额度的数字货币转移给交易接收方.很多网站, 如Blockchain. info、BitCoin Fog等均提供在线的混淆服务[44, 45].但这一方案的问题在于混淆服务的提供者本身掌握用户输入输出地址的对应关系, 存在隐私泄露隐患.为了提高混币机构的作恶成本, Bonneau和Narayanan等人提出了MixCoin方案, 增加了混币过程的可审计性[46].用户在与第三方机构协商混币的过程中, 会获得机构对混币金额、代理地址、输出地址、混币时限等信息的签名担保(warranty).在用户完成对代理地址的支付后, 一旦机构未按照约定完成对输出地址的支付, 则用户可公布该机构的失信行为和担保信息, 从而警示其他交易者.虽然这一方案通过信誉机制提高了混币服务机构的作恶成本, 但输入、输出地址的对应关系对第三方机构仍然是可见的.针对这一问题, Valenta和Rowan提出了BlindCoin方案, 在MixCoin的基础上引入盲签名技术进行优化[47].盲签名技术最早是由Chaum在eCash的设计中提出来的[48], 它是一种签名者对签名消息不可见、签名结果不可追踪的数字签名方案.消息发送者首先将消息进行盲化, 而后让签名者对盲化的消息进行签名, 最后发送者对签名信息进行脱盲操作, 获得原始消息的签名.BlindCoin方案中引入了一个公开日志(log)用于记录交互信息, 用户首先将盲化后的输出地址交由混币机构签名, 在完成代理地址转账确认后, 将脱盲后的输出地址和签名信息公布在公开日志中, 最后由混币机构按照输出地址完成支付交易.Heilman和Baldimtsi等人也基于盲签名技术提出了Blind Signed Contract方案[49].Blind Signed Contract方案通过引入中间机构将交易发送发的比特币转化为机构盲签名发行的匿名代币V=(sn, σ), 交易双方通过中间机构和匿名代币为中介来完成支付.由此可见, 在中心化混币方案中, 中间机构充当了混淆器的角色来完成交易混淆, 虽然对外部观察者而言, 交易身份具有不可链接性, 但中间机构却可掌握混币交易发送方和接收方的身份链接关系.

去中心化混币方案则采取了去掉第三方机构的方法来规避隐私泄露风险.在去中心化方案中, 互不信任的用户无需依赖第三方, 可以自由组合来构建混币交易.由Maxwell首次提出的Coinjoin[50]是目前典型的去中心化混币方案.其基本思想是: 想要混合他们比特币的用户产生一个单独的混合交易, 其包含用户的当前地址作为输入并且洗牌的新地址作为输出.它描述了一种特殊的交易: 当一个用户希望发起一笔交易时, 他可以寻找另外一个想要发起交易的用户, 一起构建一个联合交易.如图 10所示, 如果有用户A想转账给用户C, 用户B想转账给用户D, 则通过Coinjoin, 他们可以将两笔交易结合成一笔交易.交易包含两个输入: A和B以及两个输出: C和D.输入和输出的顺序是完全随机的, C或D可能收到A的转账或是B的转账, 或是A和B两人的转账.这样就削弱了对交易输入和输出的关联分析.同时, 参与Coinjoin交易的用户越多, 交易的混淆程度就越高, 参与用户还可商定一个统一的输出大小以增加隐私性.目前, Coinjoin已在Dark Wallet、JoinMarket、DashCoin中得以实现.

图 10 Fig. 10 Fig. 10 Mechanism of CoinJoin 图 10 CoinJoin工作原理

虽然Coinjoin交易对外是不可链接的, 但是对参与Coinjoin交易的用户来说, 由于每个用户都必须对交易进行签名, 所以每个用户都知道其他用户的交易信息.因此, Coinjoin交易不满足内部不可链接性.为了解决这一问题, Ruffing和Moreno-sanchez等人提出了CoinShuffle方案[51].CoinShuffle不仅可以允许去中心化的Coinjoin交易, 还可以保护交易内部各参与方的隐私.它的设计受到Dissent[52]中匿名群组消息协议的启发, 对输出地址的隐藏采用的是Chaum提出的级联加密方案[53], 从而使得交易混淆过程中输入、输出地址满足内部不可链接性.CoinShuffle方案如图 11所示.每一个混币交易者都使用后续交易者的公钥对其输出地址进行级联加密ci= Enc((eki+1, …, ekN), vki), 其中, ek为交易者加密密钥, vki为输出地址.从第1个交易者开始顺序进行, 每个交易者解密前序地址并加密自己的地址加入洗牌向量中, 最后一个交易者获得全部输出地址明文并完成交易构造.设用户数为n, 则CoinShuffle方案执行的公钥加密次数为(n–1)·n/2–1;设原有地址大小为s、加密后的地址大小为se, 则混淆过程所产生的身份标识信息大小为se·(n–1)+s.

图 11 Fig. 11 Fig. 11 Mechanism of CoinShuffle 图 11 CoinShuffle工作原理

为了进一步提高CoinShuffle混币过程中的通信效率, Ruffing等人进一步提出了CoinShuffle++改进方案[54].CoinShuffle++中混币用户的匿名群组通信采用了DC-net(dining cryptographer net)[55]的设计思想: 假设在3个节点P1、P2和P3的群组通信过程中每一对节点(i, j)共享一个对称密钥Kij.P1为了匿名发布消息m, 它发送消息M1=m⊕K12⊕K13, P2发布消息M2=K12⊕K23, P3发布消息M3=K13⊕K23.观察者可通过计算m=M1⊕M2⊕M3恢复出消息m, 但无法确认m是谁发送的.DC-net方案较级联加密方案具有更高的效率, 加密密文长度等于原文长度, 同时仍可确保混币过程中输入、输出地址的内部不可链接性.设用户数为n, 则CoinShuffle++方案执行的公钥加密次数为n–1;设原有地址大小为s、加密后的地址大小为se, 则混淆过程所产生的身份标识信息大小为se·(n–1)·n+s=s·(n2–n+1).

综上所述, 协同混币技术在混淆过程中通过引入一组并发用户实现了交易接收方的身份隐藏, 通过混淆机制隐藏了混币交易中用户输入、输出地址(交易发送、接收方)间的对应关系.假设一个混币交易集合中的用户数为M, 则对于外部观察者而言, 准确确认交易接收方身份的概率为1/M.因此, 混币过程确保了输入、输出地址的外部不可链接性.但在中心机构或自组织用户的混币交互过程中, 不同混币方案在提供内部不可链接性方面存在差异.在中心化混币方案中, 直接混币和MixCoin中作为观察者的混淆器可查看所有的输入、输出地址的对应关系, 因此对混淆器而言系统并未提供身份隐私保护; 在BlindCoin方案中, 混币过程使用盲签名技术实现了对中心混币机构的交易接收方身份隐藏; 在Blind Signed Contract方案中, 通过使用匿名代币实现了交易发送方的身份隐藏.在去中心化混币方案中, CoinJoin在混币过程中未对交易接收方采取隐藏措施, 因此不具有内部不可链接性; CoinShuffle和CoinShuffle++则通过匿名群组通信方案实现了交易接收方的身份隐藏, 因此具有更好的内部不可链接性.

协同混币技术在提供身份隐私保护的同时, 也存在着一定的问题: 首先, 协同混币过程必须需要其他用户的主动参与, 任何一个用户的退出都会导致混币交易失败; 其次, 在提供了更好隐私特性的方案中, 如: MixCoin、BlindCoin、Blind Signed Contract、CoinShulffle和CoinShuffle++等, 均在链外引入了实体(混淆器、用户等)间的多轮交互协议以提高安全性.这在一定程度上增加了系统实现的复杂性和运行开销.文献[56, 57]中引入了聚合签名技术, 从而实现参与混币方之间的非交互式混淆过程.所谓聚合签名(aggregate signature)是指可将多个消息的不同签名σ1, σ2, …, σn聚合为一个签名σ并可进行有效验证的签名算法.非交互式聚合签名特性确保了交易用户无需主动参与混淆过程, 聚合签名的单向性确保了观察者无法通过聚合签名获得原始签名, 从而隐藏了真实交易的输入、输出对应关系.但交易的签名聚合过程需由第三方完成, 如: 矿工、Joiners或Merging Service等.因此这一过程并未完全解决交易的内部不可链接性问题, 仍存在一定的身份隐私泄漏风险.

4.3 自主混币技术

自主混币技术的典型代表是门罗币(Monero)[10].它是一个衍生自比特币的开源加密货币, 其用户在混币过程中无需第三方中心机构和其他用户的参与, 可实现自主混币, 能够有效杜绝原有混币方案面临的问题.门罗币的设计基于CryptoNote协议[58], 并且提供了更强的隐私保护特性.在身份隐私保护方面, 首先门罗币沿用了比特币中基于椭圆曲线公钥密码体制的匿名身份认证技术, 门罗币中每个用户随机生成两个椭圆曲线公钥(A, B)作为用户的公开身份标识, 相对应的私钥(a, b)由每个用户私自持有, 并在交易过程中用于生成签名信息, 完成用户的身份认证和支付确认.但它不同于比特币所使用的NIST曲线和ECDSA签名算法[59], 门罗币选用了设计更为公开和高效的ED 25519数字签名模式[60, 61]; 其次, 门罗币实现了交易过程中的身份隐藏机制, 它使用环签名实现了交易发送方的身份隐藏, 使用隐蔽地址(stealth address)实现了交易接收方的身份隐藏[62].一次性地址和环签名组合方案构成了门罗币的自主混币技术.

门罗币沿用了比特币中的UTXO交易模型并设计了基于隐蔽地址的交易接收方身份隐藏机制.在每次交易过程中, 通过使用发送方生成的随机数和接收方的身份标识(A, B)来运行一个半Diffie-Hellman密钥交换协议派生出一个一次性接收地址, 从而将真正的交易接收方身份隐藏在整个可能的用户空间中, 而只有持有相应私钥(a, b)的人才能够判断出这是一笔发送给(A, B)的交易.此时对于系统总用户数为N的情况, 观察者可成功判断出接收方身份的概率为1/N.

设椭圆曲线中的基点为G, G的阶数为l, 则门罗币中的隐蔽地址计算流程如图 12所示.

图 12 Fig. 12 Fig. 12 Generation algorithm of stealthy address 图 12 隐蔽地址的生成算法

(1) Alice想要付款给Bob, Alice先需获取Bob的公钥信息(A, B);

(2) Alice产生一个随机数r∈[1, l–1], 然后计算一次性公钥P=HS(rA)G+B;

(3) Alice计算R=rG, 然后生成一笔交易将P作为目的地址, 并将R也放入交易中;

(4) Alice将交易广播到区块链上;

(5) Bob检查区块链上每一笔交易, 并用他自己的私钥(a, b)计算出相应的P'=HS(aR)G+B, 因为aR=arG=rA, 如果P=P', 那么说明这笔交易就是发送给自己的;

(6) Bob找到自己的交易后就可以算出对应的一次性私钥x'=HS(aR)+b, 且P'=x'G, 他可以使用私钥x'签名交易来进行支付.

为了满足门罗币用户使用和管理多个地址(身份标识)的需求, 类似于比特币中的HD钱包方案, 门罗币又提出了用户子地址(sub-address)的概念[63], 用户可通过自己的主钱包地址派生出任意数量的不可链接的子地址.在进行交易接收地址搜索时, 使用主私钥进行一次计算既可以判断出是否为子地址对应的输出地址, 从而避免了使用多个私钥进行多次计算匹配的复杂操作开销.用户通过自己的主钱包地址(A, B)和索引i派生出相应的子地址并存储在列表中, 生成方法如图 13所示.

图 13 Fig. 13 Fig. 13 Generation algorithm of sub-address 图 13 子地址的生成方法

交易过程中生成的一次性子地址的判断方法如图 14所示.接收方在判断子地址时只需通过主私钥a、一次性子地址P和交换的随机变量R进行计算获得D'i并和列表中的Di比较即可.匹配成功后, 用户可通过主私钥(a, b)和索引i生成相应的一次性私钥.

图 14 Fig. 14 Fig. 14 Decision of stealthy sub-address 图 14 一次性子地址的判断方法

门罗币中交易发送方的身份隐藏是通过环签名技术来实现的.环签名是由Rivest等人在如何匿名泄漏秘密背景下提出来的新型签名技术[64].环签名不同于群签名[65], 它在构造匿名集合的过程中无需配置过程和管理者, 因此为自主混淆提供了便利.在环签名中, 签名者将自己的公钥和另外一些公钥(但不知道私钥)进行混淆构成匿名集合, 然后再对消息进行签名.这样对于观察者而言, 无法区分签名来自匿名集合中的哪一个公钥(真正的签名者).环签名的定义如下.

给定一个环U={U1, U2, U3, …, Un}, 环中每个成员的公私钥对为(pki, ski), i=1, 2, ..., n.不失一般性, 假设Uk(1≤k≤n)是签名人, 则环签名、验签算法可如下定义.

环签名生成算法.由签名人运行.其输入是待签名的消息m、环中所有成员的公钥pki、真正签名人的私钥skk; 其输出就是Uk对消息m的环签名σ.

环签名验证算法.由签名验证者运行.其输入是待验证的消息签名对(m, σ)、环中所有成员的公钥, 当接受该签名时输出为1, 否则输出为0.

门罗币中所使用的是一类具有可链接性的环签名, 称为可链接环签名.可链接性是指如果环U={U1, U2, U3, …, Un}中的某个签名人产生了两个消息签名对(m, σ1)、(m, σ2), 则存在有效算法使得签名验证者可以确定这两个消息是由环中同一个签名人产生的.其中, 判断链接性的算法如下定义.

签名链接算法.其输入是环U={U1, U2, U3, …, Un}的两个消息签名对(m, σ1)、(m, σ2), 当签名σ1、σ2是由同一个环成员产生时, 算法输出为1, 否则为0.

门罗币用户在进行交易时首先执行自主混币过程, 即搜索链上具有相同面额的UTXO, 选择它们的公钥和自身公钥一起来构成环(匿名集合); 其次, 用户通过自身私钥和环成员的公钥对支付消息生成环签名; 最后, 验证节点验证环签名的有效性和链接性(防双花).门罗币自主混币过程的实例如图 15所示: 以其中的交易TXN2为例, 交易发送方P4与具有同等货币面额的支付者P2、P5、P6混淆在一起构成一个环进行交易.对于观察者来说, 通过支付信息和签名无法辨别出交易发送方的真实身份.

图 15 Fig. 15 Fig. 15 Mixing coin in Monero 图 15 门罗币自主混币过程

通过对上述分析可知, 门罗币采用基于可链接环签名技术的混淆方案实现了如下3个功能: (1) 利用环签名的匿名性将交易发送方的身份隐藏在环成员构成的匿名集合中; (2) 利用环签名的不可伪造性实现了用户对交易行为的确认和不可否认; (3) 利用可链接环签名的可链接性防止货币(UTXO)双花(double spending).

门罗币早期版本使用的是CryptoNote协议中定义的一次性环签名算法[58], 该算法是对Fujisaki和Suzuki工作的改进[66].

(1) 密钥生成

签名者首先随机选择一个私钥x∈[1, l–1], 然后计算对应的公钥P=xG和密钥镜像I=xHp(P).其中, 密钥镜像用于可链接性的判断.

(2) 签名验签

签名者随机选择一个包含n–1个元素的公钥集合, 然后与自己的公钥进行混淆产生混合后的集合S=(P1, P2, …, Pn), 使用输入消息m、集合S和私钥x基于文献[67]中的零知识证明技术来生成签名信息σ=(I, c1, …, cn, r1, …, rn).这一协议过程是证明签名者知道私钥x, 该私钥对应于集合S中的某个公钥P=xG且Hp(P)=I·x–1.验证者接收到签名后使用输入消息m和公钥集合S对签名进行验证.

(3) 链接算法

若验签通过, 则验证者还需进一步检查I是否曾被用于过去的签名.如果存在重复使用, 则说明签名来自同一个私钥x, 意味着存在货币双花问题.

门罗币在发展过程中也在不断进行环签名技术的优化.2015年, Back等人提出了对CryptoNote一次性环签名结果存储空间的优化方案[68].该方案基于Liu等人提出的可链接自组织匿名群签名方案LSAG(linkable spontaneous anonymous group signatures, 简称LSAG)[69], 改进后的签名数据为σ=(I, c1, r1, …, rn), 在存储空间上约缩减为原来的一半.但采用LSAG的CryptoNote方案也存在不足.首先, 明文的交易金额为观察者提供了分析的便利, 基于特定金额可实现身份追踪; 其次, 由于交易发送方在自主混币过程中需在公开账本中寻找相同金额的UTXO并使用其属主身份构成环(匿名集合), 这在一定程度上带来了交易过程中匿名集合过小的问题, 从而造成身份隐私泄漏.此外, LSAG方案只能支持单输入交易的身份混淆, 这限制了其应用范围.

为了解决LSAG方案的上述问题, 后续的门罗币Ring CT(ring confidential transactions)版本又提出了多层可链接自组织匿名群签名方案MLSAG(multilayer linkable spontaneous anonymous group signature, 简称MLSAG)[62].Ring CT是将环签名、同态承诺与范围证明相结合来构建的基于自主混淆的身份隐私保护方案. Ring CT使用了基于Pedersen承诺的保密交易技术来实现交易金额的隐藏, 在交易平衡性验证上使用了类似于MimbleWimble的盲化因子差值的签名验证(关于保密交易技术的详细介绍可参见第4.5节中的分析), 不同点在于门罗币在通过同态承诺隐藏金额的同时还需通过混淆过程实现交易身份的隐藏.Ring CT方案在如下几个方面进行了改进: 首先, Ring CT方案通过交易内容的隐藏避免了CryptoNote混淆方案中明文金额易追踪和相同金额用户匿名集合过小的问题.其次, 为了在确保交易身份和输入承诺一一绑定的情况下支持多输入交易成组混淆和密态交易平衡性验证, MLSAG方案将UTXO中Pedersen承诺的交易平衡性证明加入到环签名中, 并一次性地对用户密钥组进行运算生成多层环签名.在MLSAG方案中, 假设有n个环成员, 每个环成员都有m对密钥, 则这些成员公钥组成的密钥向量为$ \left\{ {P_i^j} \right\}_{i = 1...n}^{j = 1..m}, $签名用户π的镜像向量为$ \left\{ {P_\pi ^j} \right\}_{}^{j = 1...m}, $其中, i为环成员的索引, 表示环集合中第i个成员, j为成员密钥的索引, 表示某成员的第j个密钥.对于一个用户的一组交易输入而言, 构成如下的交易组向量$ \left\{ {\left( {P_\pi ^1, C_\pi ^1} \right), ..., \left( {P_\pi ^m, C_\pi ^m} \right), \left( {\sum\nolimits_{j = 1}^m {P_\pi ^j + } \sum\nolimits_{j = 1}^m {C_\pi ^j - \sum\nolimits_i {{C_{i, out}}} } } \right)} \right\}, $其中的公钥即可构成了该成员的公钥向量, MLSAG可使用匿名集合成员的公钥向量构造多层环签名以实现交易的成组混淆.假设运算密钥为n·m个, 则MLSAG生成的多层环签名为$ \sigma = \left( {{I_1}, ..., {I_m}, {c_1}, r_1^1, ..., r_1^m, ..., r_n^1, ..., r_n^m} \right).$不同于LSAG使用匿名集合用户的n个密钥签名, MLSAG是使用用户的n个密钥向量进行签名.验证者(矿工)在未知具体交易输入UTXO的情况下可通过验证该签名确保交易平衡性并通过镜像向量$ \left\{ {I_\pi ^j} \right\}_{}^{j = 1...m}$的重复性检测实现防双花.这既支持了多输入交易成组混淆, 又有效提高了签名效率.2019年, Brandon等人又提出了紧凑可链接自组织匿名群签名方案(compact linkable spontaneous anonymous group signature, 简称CLSAG), CLSAG方案在运算密钥数为n·m的情况下, 生成的多层环签名为σ=(I1, …, Im, , c1, r1, …, rn), 提供了更高的运算效率以及更短的签名长度[70].

综上所述, 门罗币在使用匿名身份认证的同时, 在交易过程中又提供了基于自主混币的交易身份隐藏技术.它通过隐蔽地址技术实现交易接收方的身份隐藏, 在设定系统总用户数为N的情况下, 观察者有效识别接收方身份的概率为1/N, 具有很好的隐私保护特性; 通过可链接环签名完成了交易发送方的自主混币过程, 从而实现了发送方的身份隐藏.理想情况下, 环成员个数为M时观察者可有效识别发送方身份的概率为1/M.

门罗币通过一次性地址和环签名所构建的自主混币与协同混币技术存在着类似的混淆过程, 但二者又存在不同: (1) 门罗币的混淆过程无需发起方与参与方间的交互; (2) 参与方无需真正发起交易.这些特点使得门罗币基于非交互模式的自主混淆过程实现了发送方的身份隐私保护.

但门罗币的自主混币方案也存在一定的风险: 首先, 在接收方身份隐藏机制方面, 如果交易发送方在与同一用户交互过程中使用相同的随机数, 则两笔不同交易的接收地址相同, 会带来两笔交易产生关联的问题.因此, 接收方交易关联的隐私问题会一定程度地依赖于发送方的行为可信.其次, 在发送方身份隐藏机制方面, 发送方身份隐私的保护程度依赖于混淆过程中环成员的多少以及参与混淆的UTXO在其他交易中的使用情况.相关研究工作表明, 在用户自主混淆过程中选择较少的环成员(如2个)会带来一定的隐私泄露风险[71, 72]; 而参与混淆的UTXO在其他交易中的信息泄露又进一步增加了分析成功的概率[73, 74].由此也说明, 在区块链交易模型中账本公开的特性使得交易方的身份隐私强度并不简单等同于所采用的密码算法所提供的匿名性.以门罗币交易发送方的身份隐藏为例: 在文献[73, 74]中分析的特定情况下, 当环成员个数为M时, 观察者可有效识别发送方身份的概率是大于1/M的.

4.4 全局混币技术

全局混币技术的典型代表是零币(Zcash)[75].它是由麻省理工学院和霍普金斯大学的研究者发起的一种强隐私保护的开源加密货币.它仍然沿用了比特币中的UTXO交易结构, 但对于完全基于零币的隐蔽(shielded)交易而言, 交易结构中隐去了交易地址, 通过引入承诺Merkle树、零知识证明和加密技术提供了更强的隐私保护特性.零币的设计思想来源于1999年Sander等人设计的一种可审计匿名电子货币系统[76], 它将传统电子货币的防伪验证由中心机构的签名验签问题转变为一个已发行货币列表的成员证明问题, 这也是实现零币中全局混币技术的基础.2013年, Miers等人设计了基于区块链的匿名分布式电子现金系统Zerocoin[77], 它通过使用区块链来确保货币列表的完整性.2014年, Ben-Sasson等人设计了Zerocoin的升级版本Zerocash[78], 由此奠定了Zcash交易协议的理论基础.基于Zerocash设计的密码货币Zcash, 目前已经过Sprout和Sapling两个主要版本的开发[79].在身份隐私保护方面, 首先, 零币沿用了比特币中基于椭圆曲线公钥密码体制的匿名身份认证技术, 但其用户地址形式和作用不同于比特币; 其次, 零币实现了交易过程中的身份隐藏机制, 通过全局混币和基于零知识证明的货币权属确认实现了交易发送方的身份隐藏, 通过交易内容的链上加密传输实现了交易接收方的身份隐藏.

在此, 我们以Zcash中实现方式最接近于原Zerocash论文的Sprout版本为例介绍零币中的身份隐私保护.零币中仍然沿用了比特币中的匿名身份认证机制, 但密钥形式和作用与比特币有很大的不同.在Sprout中, 用户密钥和地址之间的关系如图 16所示: 零币中的每个用户均具有两个密钥对(apk, ask)和(pkenc, skenc), 由用户自主匿名生成.其中, apk和pkenc统称为支付地址, 作为用户交易过程中的身份标识符.apk称为支付密钥, 在发起交易时用于计算新生成硬币的承诺, pkenc称为传输密钥, 用于加密消息, 指定交易的接收者.apk和skenc统称为收入查看密钥, skenc又称为接收密钥, 这两个密钥在接收某笔交易时使用.ask称为花费密钥, apk和skenc密钥均是由ask通过伪随机函数(pseudo random function, 简称PRF)派生而来.(pkenc, skenc)则是ED 25519算法中的一对公私钥.在Sprout系统中可以简单地理解为用户只有拥有了ask, 才能有花费某个匿名资产的权利.零币中的密钥体系是系统实现交易隐私保护的基础.

图 16 Fig. 16 Fig. 16 User addresses and keys in ZCash 图 16 零币中的用户密钥和地址

为了实现交易的隐私保护, 零币系统并未将货币明文直接存储在公开账本中, 而是将系统已生成货币的承诺值列表和已花费货币的序列号列表公开, 交易过程中的货币合法性验证即成为一个承诺列表的成员证明问题, 防双花问题则通过已花费货币的序列号比对来完成.零币中的每个货币np可以表示为由以下内容构成:

$ np: = \{ {a_{pk}}, \nu , \gamma , rcm\} , $

其中, apk是货币持有者公钥, ν是货币金额, γ是一个秘密值, 用于计算硬币承诺和硬币的序列号, rcm是门限值.货币承诺的计算方式如下:

$ cm: = {\rm{SHA }}256(10110000\left| {{a_{pk}}} \right.\left| \nu \right.\left| \gamma \right.\left| {rcm} \right.). $

零币系统通过两类交易实现新币承诺的生成: mint和pour交易.其中, mint用于由基础币(Basecoin)生成零币; pour用于实现用户间的交易支付.每个新生成的货币承诺cm会被加入一棵承诺Merkle树中, 如图 17所示.

图 17 Fig. 17 Fig. 17 Commitment Merkle tree in ZCash 图 17 零币中的承诺Merkle树

整棵Merkle树构成了系统中已经出现过的所有匿名货币列表(包括已经花费和未花费的), 其中每个币的承诺值cm充当这棵树的叶子节点, 每个承诺Merkle树均具有一个根散列值rt.由此, 对于交易过程中所使用的货币合法性验证即转化为一个证明承诺值cm是否属于承诺Merkle树的成员证明问题.此外, 为了防止货币双花, 零币系统还维护了一个已花费货币序列号Nullifier Set, 矿工如果检测到支付出现在列表Nullifier Set中的货币, 则终止交易.其中, 序列号Nullifier的生成方式如下:

$ Nullifier: = {\rm{SHA}}256{\rm{compress}}(1110\left| {{a_{pk}}} \right.\left| \gamma \right.). $

零币用户在使用pour交易进行支付时, 假设持有密钥对$ \left( {a_{pk}^{old}, a_{sk}^{old}} \right)$的交易发送方使用拥有的零币$ {c^{old}}: = \left( {a_{pk}^{old}, {v^{old}}, {\gamma ^{old}}, rcm_{}^{old}} \right)$分别向地址为$ \left( {a_{pk}^{new1}, pk_{enc}^{new1}} \right)$和$ \left( {a_{pk}^{new2}, pk_{enc}^{new2}} \right)$的交易接收方支付货币$和$ c_1^{new}: = \left( {a_{pk}^{new1}, {v^{new1}}, } \right.{\gamma ^{new1}}, c_1^{new}: = \left. {rc{m^{new1}}} \right)$则交易发送方在构建pour交易时使用接收方支付密钥$ c_2^{new}: = \left( {a_{pk}^{new2}, {v^{new2}}, {\gamma ^{new2}}, rc{m^{new2}}} \right), $和新生成的秘密值γnew*构建新币的承诺$ cm_1^{new}$和$ cm_2^{new}, $公开已支付货币的序列号Nullifierold并确保νold=νnew1+νnew2.交易发送方将构建后的pour交易向全网广播.为了实现对上述非明文交易内容的验证, 零币采用了零知识证明技术zk-SNARK[80-87]生成交易对应的证明信息πPOUR: 发送方持有的货币cold所对应的承诺cmold为根散列值为rt的Merkle树中的叶子节点; 发送方持有花费密钥$ a_{sk}^{old};$能够正确地构建出所有的货币cold、$ c_1^{new}$、$ c_2^{new}$及其承诺cmold、$ cm_1^{new}$、$ cm_2^{new}$; 给出了cold所对应的真实的Nullifierold.其中, Zk-SNARKs零知识证明的过程主要有以下3个步骤.

(1) KeyGen(1λ, C)→(pk, νk).输入一个安全参数λ和F域-算数电路C, 生成零知识证明中的证明密钥pk和验证密钥νk;

(2) Prove(pk, x, a)→π.输入一个证明密钥pk和信息x(证明者和验证者均能够获得)以及证明者自己所拥有的某些秘密信息a(只有证明者知道), 输出一个非交互式证明π, 来表示证明者确实拥有某些知识;

(3) Verify(νk, x, π)→b.输入一个验证密钥νk、一个x、一个证明π, 如果验证者验证通过, 即他相信证明者确实拥有某种知识, 则验证输出为b=1.

由此可见, 零币的支付过程将发送方的支付货币混淆在Merkle树的全部成员(已生成货币)中, 交易结构中并不包含交易发送方的身份信息, 只需发送者证明他拥有输入货币承诺对应的花费密钥ask即可, 由此声明自己对该货币的权属并实现支付行为的确认.当矿工验证交易时, 会对该证据πPOUR进行验证, 如若通过验证, 则交易有效.整个验证过程是零知识的, 矿工只能判断出发起者是不是货币的拥有者, 而不会得到有关aPk、ask、cmold的任何信息.在Zcash中, 除了发送者自身外, 矿工及第三方(包括交易的接收者)都无法得知发送者的身份.这一方案既实现了交易发送方的身份隐藏, 又实现了支付货币的全局混币, 极大地提高了交易隐私保护的力度.

在零币的交易结构中同样不存在接收方的任何地址信息, 而是通过对交易内容的加密来指定交易接收方. Zerocash方案中使用key-private encryption scheme[88]的公钥加密模式[88], 通过使用接收者的公钥对交易中的敏感信息(ν, γ, rcm)进行加密, 然后将密文包含在隐蔽交易中并广播到区块链.接收方需要监听区块链上的交易, 尝试用自己的私钥解密隐蔽交易中包含的加密信息, 如果解密成功, 则代表该隐蔽交易的接收方是自己, 存储解密后的敏感信息并在未来支付时使用.零币中的Sprout版本则通过Curve 25519密钥协商协议[89]在发送方与接收方之间产生一个共同的会话密钥, 而后通过一次性认证对称加密方案(authenticated one-time symmetric encryption)对敏感交易信息进行加密.接收者监听链上的交易, 尝试利用自己的私钥skenc计算会话密钥并解密隐蔽交易中包含的加密信息, 如果解密成功, 则代表自己是该交易的接收方, 并接受这笔交易.

此外, 基于企业以太坊Quorum平台ZCash开发团队开发了ZSL[90]强隐私保护的密码货币交易模型.在ZSL交易模型中, 仍使用零币中的全局混币方案, 通过货币承诺列表和Zk-SNARKs来实现货币的支付与正确性验证, 由此构成的隐蔽交易由Quorum主链平台上的z-contract合约来实现, 交易流程隐藏了交易方身份和交易金额.基于Quorum构建隐私交易系统时, 可通过z-contract来发行代币资产, 以保护交易隐私.交易双方的代币资产在进行交易时, 通过私有合约(private contract)来定义特定交易流程, 私有合约由Quorum中的Constellation系统来完成, 用以确保交易内容的保密性.不同于零币方案交易信息加密传输, ZSL中的货币np是由私有合约直接传送给接收方的, 私有合约的保密性确保了交易隐私.ZSL方案如图 18所示.

图 18 Fig. 18 Fig. 18 ZSL transaction model 图 18 ZSL交易模型

综上所述, 零币在使用匿名身份认证的同时在交易过程中又提供了基于全局混币的交易身份隐藏技术.它通过零知识证明和(自主)全局混币技术实现了交易发送方的身份隐藏; 通过交易内容的加密接收实现了交易接收方的身份隐藏.在设定系统总用户数为N的情况下, 观察者有效识别发送方和接收方身份的概率为1/N, 具有很好的隐私保护特性.但零币的隐私保护方案也存在一定的问题: 首先, 由于系统大量引入了零知识证明算法, 因此增加了交易操作的时间复杂度和空间复杂度.设n为算数电路门数, l为证明实例大小, 则zk-SNARK证明算法的时间复杂度为O(nlogn), 验证算法的时间复杂度为O(l); 其次, zk-SNARK在系统初始化时需要安全地生成公共参数(public parameters), 如果初始化各方私自留存秘密信息, 则可以共谋伪造zk-SNARK证明证据从而伪造新币, 这给零币的安全隐私带来较大的威胁.文献[91]在公共参数生成过程中引入多方安全计算以提高生成过程的安全性.目前系统初始化参数的可信生成问题仍有待进一步加以研究[92]; 此外, 零币系统中也存在着透明交易以及基础币和零币之间的转换交易, 2019年, Alex等人在文献[93, 94]工作的基础上进一步分析了通过交易数据特征值及利用密码算法特点构建阈下信道从而发现交易关联性的身份隐私泄露风险[95].这进一步说明了编码型数字资产在账本公开条件下实现隐私保护所面临的巨大挑战.

4.5 无标识交易技术

无标识交易技术的典型代表为MimbleWimble协议[96].2016年7月, 化名作者Jedusor首次提出了MimbleWimble协议.2016年10月, Poelstra在最初版本上进一步进行了研究和完善[97].Wimble沿用了比特币的UTXO交易结构, 但采用了保密交易(confidential transaction, 简称CT)技术[98, 99], 并去除了交易地址, 从而提供了更好的交易隐私保护特性.Fuchsbauer等人于2019年对MimbleWimble协议进行了可证明安全的分析[100].目前, 实现MimbleWimble协议的项目主要包括Grin[101]和Beam[102].

为了实现交易内容的隐私保护, MimbleWimble使用了保密交易(confidential transaction)技术对交易金额进行隐藏.保密交易技术最初是由比特币开发人员Back和Maxwell提出来的[98, 99], 通过在比特币网络中使用Pedersen承诺(Pedersen commitment)[103]实现对UTXO中交易金额的隐藏和隐藏交易的验证.承诺是密码学中重要的安全原语.承诺方在对一个选定的值进行承诺后将承诺值发送给接收方, 并能够在之后揭示所承诺的值. Pedersen承诺在1991年由Pedersen提出后得到了广泛应用, CT中使用的是基于椭圆曲线构建的Pedersen承诺方案.设G为椭圆曲线点群中的生成元, H为椭圆曲线中的一个点, 则对金额v的Pedersen承诺为

$ C(r, \nu ) = rG + nH, $

其中, r为随机生成的盲化因子且不公开.Pedersen承诺所具有的隐藏性(hiding)和绑定性(binding)使得观察者无法通过公开账本中记录的承诺值C(r, v)还原出交易金额, 从而实现了交易内容的隐私保护.此外, Pedersen承诺具有加法同态特性, 即:

$ C\left( {{r_1}, {v_1}} \right) + C\left( {{r_2}, {v_2}} \right) = C\left( {{r_1} + {r_2}, {v_1} + {v_2}} \right). $

这为矿工(验证者)使用金额承诺进行隐藏交易验证提供了便利.假设一个交易的输入为v1、v2, 输出为v3.为了确保交易平衡, 即v1+v2=v3, 构建的交易承诺应满足:

$ C\left( {{r_1}, {v_1}} \right) + C\left( {{r_2}, {v_2}} \right) = C\left( {{r_1} + {r_2}, {v_1} + {v_2}} \right) = C\left( {{r_1} + {r_2}, {v_3}} \right). $

因此, 矿工只需通过公开承诺的加法运算即可完成交易平衡性的验证.

为了实现交易过程中的身份隐藏, MimbleWimble采用了改进的CT方案.首先, MimbleWimble系统中取消了用户交易地址, 公开账本中记录的每一条UTXO中不再存有标识用户身份的公钥信息, 这使得所有基于交易地址的关联分析技术失效, 尤其是增加了交易可链接性的分析难度; 其次, 为了解决无用户地址情况下的UTXO确权问题, MimbleWimble在交易输出承诺的构建过程中指定接收方随机秘密选择交易输出的盲化因子r, 并由此实现对该UTXO的权属控制.由于这一过程带来了输入输出承诺盲化因子的差值excess[101], 因此也将矿工对交易平衡的等式验证过程转化为验证交易双方共同构建以excess为私钥的正确签名过程.此外, 在隐去交易身份标识的同时, 基于签名方案的平衡性验证也使得在MimbleWimble中实现交易聚合的CoinJoin方案成为可能.如果在以excess为私钥构建签名的过程中使用可聚合签名技术, 如文献[104-106]中的聚合签名方案, 则矿工在出块过程中可将同一区块内的交易与excess签名进行聚合构成多输入输出交易, 从而更好地实现了交易双方的身份隐私保护.

综上所述, MimbleWimble通过无标识交易的方式来实现交易发送方和接收方的身份隐藏, 具有较好的隐私保护特性.但这一方案也存在着一定的问题: 首先, 由于MimbleWimble隐藏了身份标识, 因此交易构建过程需要双方通过链外方式进行参数交互, 这一方面增加了交易过程的复杂度, 另一方面也带来了链外通信的隐私泄露风险; 其次, MimbleWimble并未采取混币技术进行交易身份隐藏, 因此UTXO间的对应关系仍可为观察者提供关联分析的便利.即使是采用CoinJoin聚合方法, 矿工在交易聚合过程中仍可看到原始交易输入输出的对应关系, 这一过程并未完全解决交易的内部不可链接性问题, 仍存在一定的隐私泄漏风险; 此外, 文献[95]通过在Pedersen承诺所提供的阈下信道中嵌入特征值来实现货币追踪的方法, 这同样会对MimbleWimble中的交易链接和身份隐私构成威胁.

5 总结及未来展望

区块链系统中的身份管理技术是当前的研究热点, 也是制约区块链系统整体安全和应用推广的关键要素.但是由于在应用需求、信任模型和法规遵从等方面存在较大的差异, 因此目前主流区块链身份管理系统所采取的研究方法和技术路线上也各有不同.

首先, 在身份标识方面, 目前的区块链系统大多采用基于非对称密码体制的公私钥对来进行用户的身份标识.目前的公有链密码货币项目大多选择ECDSA和ED 25519算法, 出于对算法的安全性、签名验签性能、密钥交换效率等方面的考虑, 不同的项目, 有不同的选择.此外, 如零币中并不使用身份标识的私钥签名来完成货币支付行为的确认, 因此在其身份标识中引入了另一对用于零知识证明的算法因子, 以实现对货币的权属控制.对于无标识交易技术MimbleWimble, 虽然可以通过取消身份标识来增加隐私保护, 但也带来了链外通信的额外开销.对于目前的联盟链, 如Hyperledger Fabric、Corda等, 多以选择ECDSA、RSA等传统的公私钥密码体制为主, 并通过CA颁发数字证书来实现用户身份的实名或可控匿名认证.

其次, 在身份认证方面, 为了解决身份隐私保护的问题, 公有链和联盟链都提供了匿名身份认证的机制.与公有链中用户自主生成标识身份的公私钥不同, 为了实现监管友好的目的, 联盟链更多地采用由中心机构CA来生成用户实名或匿名认证的身份标识, 从而实现实名认证和可控匿名的设计需求.但应注意的是, 由于区块链交易系统具有账本公开、多方确认的特点, 简单使用匿名身份认证并不能有效地解决交易身份隐私保护的问题.

此外, 为了有效解决交易身份的隐私保护问题, 必须在交易过程中采取相应的交易身份隐藏技术.目前的隐藏方法多以“混淆”思想为主, 如何构建更为高效、安全的混币过程得到了密码货币项目的广泛关注.在联盟链中, 这一问题关注得较少, 仍有待进一步加以研究.对于区块链系统的行业应用而言, 自主混币和全局混币技术明显具有更广泛的应用场景.

综上所述, 我们将目前主流区块链系统中的身份管理技术加以总结, 详见表 2.

表 2(Table 2) Table 2 Summay of the identity management in blockchain 表 2 区块链系统身份管理技术总结 身份标识 身份认证 身份隐藏 实现复杂度 发送方身份隐藏 接收方身份隐藏 比特币[1] 公钥 匿名 无 无 低 协同混币[46, 50, 51] 公钥 匿名 混淆 混淆 中 自主混币[10] 公钥 匿名 可链接环签名 一次性地址 高 全局混币[75] 公钥+零知识证明 匿名 零知识证明 一次性认证加密 高 无标识支付[96] 无标识 匿名 无地址 无地址 低 Hyperledger Fabric[14] 数字证书 实名 无 无 低 Idemix 可控匿名 无 无 中 Corda[13] 数字证书 实名 无 无 低 隐蔽身份 可控匿名 无 无 低 FISCO BCOS[25] 数字证书 实名 无 无 低 群签名 可控匿名 无 无 中 趣链[24] 数字证书 实名 无 无 低 Table 2 Summay of the identity management in blockchain 表 2 区块链系统身份管理技术总结

随着区块链技术在多领域的广泛推广和深入应用, 基于区块链构建的交易系统也对隐私保护技术提出了更多的需求, 未来亟需在以下几个方面展开作更进一步的研究.

首先, 在身份管理的功能需求层面, 随着区块链技术在金融、社会治理等领域的广泛应用, 传统公链中无监管的身份隐私保护方案无法满足交易可监管的需求.因此必须提供内置于交易模型和交易流程中的可监管技术, 在必要时可正确地恢复出交易身份和内容, 以防止非法交易行为.如何设计更高效、安全的可监管隐私保护方案有待进一步研究.此外, 随着近年来分布式身份管理和分布式数字身份(decentralized ID)概念的提出, 如何将分布式数字身份管理与区块链系统相融合, 实现DID在区块链系统中的应用也是未来的关注点.

其次, 身份管理的算法设计一直是研究的热点.一方面, 随着新应用场景的不断出现, 区块链系统已经从简单的密码货币应用走向分布式基础信任架构, 设计适合于新需求的身份认证和隐私保护算法是推进区块链系统深入发展的必然要求, 如基于身份的密码体制、零知识证明、多方安全计算、同态加密等密码学机制在交易身份和内容隐藏的研究方面都得到了广泛关注; 另一方面, 原有的算法方案在安全性和性能方面的不足, 也会推动相关问题的进一步研究.门罗币、零币、Fabric等隐私保护方案的快速迭代充分表明了这一方向的研究工作非常活跃.

最后, 在身份管理方案的实现层面, 提高算法实现的性能和安全性也有待深入研究.身份认证和隐私保护方案大多基于复杂的密码学运算, 较低的性能一直是制约其大范围推广的瓶颈环节, 因此, 高效的算法实现方案备受关注; 此外, 通过引入, 如TEE、SGX和USB Key等系统安全技术, 为隐私保护方案提供安全存储和安全计算环境, 从而提高性能和安全性也具有非常好的研究和应用前景.

6 结束语

本文基于区块链交易模型的特点, 分析了区块链系统中身份管理技术涵盖的主要内容、关键问题及安全挑战, 从身份标识、身份认证和身份隐藏3个方面比较分析了目前主流区块链平台中身份管理和隐私保护的不同实现技术, 并展望了相关领域的未来研究方向.随着区块链技术的不断普及和推广, 其应用场景和应用模式也会日益丰富, 作为区块链系统基础组件的身份管理必然会受到更多的关注, 希望本文能够为未来的研究工作提供有益的借鉴.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有