区块链系统身份管理机制研究综述
2024-01-18李馥娟
李馥娟,马 卓,王 群
1.江苏警官学院 计算机信息与网络安全系,南京 210031
2.计算机软件新技术国家重点实验室(南京大学),南京 210093
信息系统的出现和应用,中心化管理机制一直发挥着关键作用。直到1998 年,亚裔密码学家戴维(Wei Dai)提出了B-money[1]设计架构,其核心思想是通过一组协议来构建一个集体记账、不可追踪、去中心化的分布式匿名电子现金系统,以打破传统系统中心化机制存在的种种弊端,但B-money 只提供了一个功能描述,并没有代码实现。2008 年,自称为中本聪(Satoshi Nakamoto)[2]但其真实身份未知的神秘作者发表了一篇名为Bitcoin:a peer-to-peer electronic cash system的论文,描述了一种称之为比特币(Bitcoin)的加密数字货币,其算法实现的核心是一项以去中心化的分布式账本为基本特征,以P2P传输、共识机制、密码学、博弈论、经济学等众多技术和理论为保障的区块链(blockchain)技术[3]。2009 年1 月3 日,根据中本聪设计方案开发的比特币系统正式上线,印证了区块链技术的可行性,也使去中心化从概念和设想变成了现实。至此,区块链技术开始引起学术界和产业界的普遍关注,社会各领域力求借助区块链技术在解决传统系统中遇到的一些问题和困扰的同时,以其创新技术来催生新的发展范式。区块链新型应用范式的出现引发了用户身份管理机制的变革,也促使学术界和产业领域加快了对区块链系统身份管理技术的研究。
在人际交流和社会管理中,身份特指人的出身和社会地位,身份管理既包括属于人力资源管理范畴的以自然人为对象的实体身份管理,也包括属于信息管理范畴的与自然人相对应的线上身份、组织机构代码身份以及智能设备编址身份的管理。IET(International Electrotechnical Commission,国际电子技术委员会)将信息系统的“身份”定义为“一组与实体关联的属性”,这里的实体包括自然人、组织机构、智能设备等可以被信息系统识别和管理的对象。传统的身份管理(identity management,IDM)是账号管理、认证管理、授权管理和审计管理解决方案的统称,称之为4A(账号-account,认证-authentication,授权-authorization,审计-audit)。由于区块链提供的是一种去中心化的底层服务,主要通过共识机制实现不同节点之间的协同,从而在一个不可信网络环境中共同维护同一个分布式账本,所以在讨论区块链中的身份管理时一般主要集中于身份标识和身份认证两个方面,有关资源授权功能则由上层应用系统来实现,而区块链账本的公开性也使针对用户访问的审计功能失去了效能。W3C(World Wide Web Consortium,万维网联盟)分布式标识符工作组也在文献[4]中将区块链身份管理分为身份标识和身份认证(包括身份证明和身份验证)两部分。为此,本文重点从身份标识和身份认证两个方面讨论区块链的身份管理技术,不但符合区块链作为底层技术的特点,也反映了统一身份管理技术的发展趋势,同时能够抓住问题的关键,聚焦核心技术的分析和主要问题的解决。
在以身份标识和身份认证为重点的区块链身份管理研究中,国内姚前等人[5]重点针对隐私保护需要综述了区块链中的身份管理技术涵盖的主要内容;宋靖文等人[6]借鉴门罗币中的身份隐私保护方法,设计了针对公有链中基于匿名身份认证的可监管的交易隐私保护方案;佘维等人[7]针对区块链隐蔽通信,提出了一种可以实现对敏感文档和发送者身份信息进行隐藏的区块链隐蔽通信模型。在国外研究方面,Genkin等人[8]在回顾了基于区块链的加密数字货币中隐私保护实现机制的基础上,重点对不同实现机制功能特点进行了对比分析;Dunphy 等人[9]在系统介绍区块链身份管理特点和存在不足的基础上,选择了几个典型的区块链身份管理系统进行了分析;Buccafurri 等人[10]针对区块链公钥地址在交易过程中存在的伪匿名特征,提出了一种基于身份加密(identity-based-encryption,IBE)的解决方案,以提高身份的匿名性。上述工作多针对加密数字货币为代表的公有链环境,主要以用户隐私保护为目的,集中于解决用户身份隐藏中涉及的具体技术,也有部分对一些区块链身份管理系统的功能实现和技术特点进行了比较分析。但并未对区块链系统身份管理技术涉及到的结构、方法、特征及适用性等内容进行系统研究和全面梳理。此外,随着区块链技术的日臻成熟和应用领域的不断拓宽,区块链技术应用场景也被细分,但现有工作并未进行有针对性的分类研究。本文对近年来区块链系统管理技术进行了较为全面的梳理,对比分析了传统系统和区块链系统身份管理的主要差异,系统阐述了区块链系统身份标识和身份认证机制,其中,针对区块链系统身份标识特点,从公钥密钥、数字证书和去中心化数字身份3个方面进行了分类分析,针对公有链和联盟链(包括去中心化程度更高的私有链)特征,分匿名身份认证、实名身份认证和可控匿名身份认证3类应用场景讨论了区块链身份认证模式的实现方法。最后,针对公有链和联盟链身份管理技术的差异性,分类对相关技术的未来发展进行了展望。
1 区块链身份管理特点
1.1 传统系统与区块链系统的对比分析
在身份管理机制方面,传统系统与区块链之间的区别在于:首先,区块链系统采用去中心化机制,身份标识和安全验证都是构建区块链技术的内生要素和核心组件。而对于中心化的传统系统而言,安全和身份管理一般只作为系统的附加配置,是否需要为每个用户赋予唯一身份和分配相应权限,可由中心化的身份管理和认证中心来实现;其次,区块链的身份管理和安全机制一旦确定将无法变更,否则将会导致区块链的硬分叉而产生新的系统。而传统系统可通过对中心化系统的升级,以打补丁方式解决发现的一些身份管理和安全问题;还有,区块链系统采用了经济奖惩机制,在对忠诚矿工进行奖励的同时,将使恶意节点对其作恶行为付出经济代价,以此来保障系统运行的安全性。传统系统中针对用户身份的管理多采用冻结或关闭用户账户的单一模式,无法实施对用户的有限度惩戒;再者,区块链系统中为了实现中心化机制,必须全网公开所有的交易记录,并利用共识机制对交易进行背书和验证[11]。而在传统系统中,所有事务都由中心化机制进行统一验证和确认,而且验证内容、过程和结果都控制在封闭环境中,不对外公开;同时,传统系统的中心化机制将权利全部集中于平台,平台拥有用户创造的数字资产,并对用户及资产进行集中管理,由用户资产创造的价值也归平台所有,但由用户不当操作造成的不良后果则由用户承担,平台一般只负责监管责任。这种高度中心化的管理模式和资源垄断方式使传统系统在发展过程中遇到了瓶颈,所以在区块链技术出现后,中心化与去中心化之争自然而然地引起了各方面的高度关注,而去中心机制在众各领域蕴藏的诸多价值和变革引发了一轮信息技术的应用创新。
综上分析,区块链系统在打破了传统系统中央控制机制存在的种种弊端的同时,也对参与实体的身份管理提出了挑战。如何在开放网络环境中,在互不信任的节点之间实现用户身份标识和身份认证,对深入研究区块链系统的身份管理机制,进而实现信息发现和价值挖掘具有重要意义。
1.2 区块链交易模型
区块链系统以链式结构的分布式账本形式来管理数据,用户与交易关联,通过共识机制将交易打包进区块,在挖矿过程中胜出的矿工将新区块追加到链尾(同时获得系统一定金额的挖矿奖励),由此形成一条以区块为单位的前后有序连接的区块链。由于区块链起源于以比特币为代表的加密数字货币,所以在相关的应用和研究中大家习惯于借用加密数字货币的场景来描述区块链中的概念和模型。因此,针对与用户身份最紧密的交易对象,按照记账方式的不同,可将区块链交易模型分为以比特币为代表的UTXO(unspent transaction outputs,未花费的交易输出)模型[12]和以以太坊为代表的账户(account)余额模型[13]。同时,交易模型决定了区块中交易的组织和管理模式,为此,针对比特币的UTXO 模型提供了默克尔树(Merkle tree)[14]组织交易,而针对以太坊的账户余额模型提供了默克尔帕特里夏树(Merkle patricia tree,MPT)[15]组织交易。
1.2.1 UTXO模型
UTXO模型因比特币的兴起而进入人们的视野,随后大量公有链(如零币[16]、门罗币[17]、维基币[18]等)和一些联盟链(如Fabric[19]、Corda[20]、BigBang Core[21]等)广泛采用该模型。本小节选取比特币应用场景,分析UTXO模型和默克尔树的工作原理与应用特点。
UTXO模型与账户模型不同,不存在具体的用户账户来记录详细的交易过程和结果,而提供的是一个与具体交易地址相关联的交易关系和交易金额的集合,是一个包括了交易数据和可执行代码的数据结构[22]。如图1 所示,在UTXO 模型中,每一笔交易(transaction)都由交易哈希(Tx_hash)、交易输入(Inputs)和交易输出(Outputs)3个基本属性组成,相关描述如表1所示,其中交易哈希用于唯一地标识本笔交易,每笔交易可能存在多个输入和输出。当产生一个交易输出时,该输出被锁定,只有在进行下一步交易时由该用户的私钥进行解锁,同时,在一笔交易中需要调用一个未花费的交易输出作为本笔交易的输入时,也只能由该用户进行解锁操作,以此来防止双重花费的发生。一笔交易的完整过程其实质是对一定数量的输入和输出的封装,并对封装结果用交易哈希进行标识。UTXO 模型具有良好的可扩展性,并在一定程度上提供了对交易隐私的保护功能。
表1 UTXO模型的属性功能描述Table 1 Description of attributes of UTXO model
图1 UTXO模型中的交易结构Fig.1 Transaction structure in UTXO model
作为比特币等主流区块链系统使用的数据结构,默克尔树利用基于哈希值的二叉树结构实现对交易数据的组织和完整性验证。默克尔树是一种特殊的哈希列表(Hash list),其叶子节点存放交易数据的哈希值,依次将相邻两个哈希值串接后再计算其哈希值,将得到上一层节点的哈希值。依此类推,将最后形成的默克尔根(Merkle root)写入区块头部指定的字段。默克尔树为大规模数据结构提供了针对交易数据的快速查询和针对区块数据的高效校验功能,其中,当一个区块中打包进N个交易时,查询某个交易是否存在于该区块的算法复杂度为lbN。同时,利用区块头部字段信息的完整性和稳定性,可以使得区块头部只保存默克尔根而不需要封装底层的数据,使得区块链可以脱离底层数据而在计算能力和存储空间有限的智能终端或物联网设备上运行,并支持轻量级的SPV(simplified payment verification,简化支付验证)[23]协议。
在UTXO模型中,每笔交易的输入和输出都对应一个唯一的可动态生成的交易地址,用户与交易地址之间没有显性的对应关系,交易地址为用户的假名。根据交易需要,同一用户可能会随机生成多个不同的交易地址。同一笔交易中的不同输入和输出地址也可能属于同一个用户。虽然区块链中的账本是公开的,但从公开账本中直接得出真实用户身份的可能性是很小的。目前,也有研究者通过大数据分析技术,借助机器学习等方法,并利用网络地址、论坛公开信息等链下数据可以窥探出部分交易地址之间的关系以及交易与用户之间的关联性[24]。为解决上述问题,可通过信息混淆机制对交易信息进行混淆,隐藏输入地址与输出地址之间以及不同交易地址之间的关系,增加隐私保护能力。加密数字货币中的混淆技术称为“混币技术”[25],根据是否借助第三方机构的不同,可以分为中心化混币技术和去中心化混币技术两种类型,与中心化混币技术相比,去中心化混币技术由于无须第三方机构的参与,所以技术实现更便捷,方案实施更安全。
1.2.2 账户余额模型
账户余额模型是一种类似于银行账户的传统交易模型,账户与用户相对应,交易在账户之间进行,所有账户信息、交易记录、当前余额都存储在账户中。除以太坊外,EOS(enterprise operation system,商用操作系统)[26]、WisdomChian[27]、CITA[28]等使用账户余额模型。
以太坊使用账户余额模型的初衷是为了更好地支持智能合约,因为智能合约需要一个相对稳定的身份,而不是像UTXO 模型那样频繁地生成交易地址。以太坊中的账户分为外部账户(external owned account)和合约账户(contract account)两种类型,其中外部账户由私钥创建并用于交易和执行合约代码,而合约账户由外部账户或其他合约账户创建,且拥有一个账户地址,用于存储合约代码以及与合约相关的数据。
以太坊使用MPT 组织和管理用户的账户数据,并生成区块中交易集合的哈希值。比特币中的默克尔树无法描述交易的资产持有者、合约状态等信息,而MPT通过融合默克尔树、Patricia 树和Trie 树的数据结构特点[29],从而形成一种基于密码学的自校验、防篡改的数据结构。为了尽可能降低树的高度,进而降低操作的复杂度,MPT 采用RLP(recursive length prefix,递归长度前缀)编码来组织数据,引入了空(empty)节点、叶子(leaf)节点、扩展(extension)节点和分支(branch)节点类型,分别采用键/值(key/value)对来存储数据,将除叶子节点外的其他节点的数据存储在LevelDB 关系型数据库中。
只有满足应用需求的技术才是最优的。有关UTXO模型和账户余额模型在交易的可追溯性、计算复杂度、空间(计算和存储)占用、可扩展性、可编程性、应用的灵活性和对跨链操作的支持等方面的比较如表2所示。
表2 UTXO模型与账户余额模型主要性能比较Table 2 Main performance comparison between UTXO model and account balance model
2 区块链身份标识机制
身份标识是指信息系统中用于识别用户身份唯一性的一种方法。区块链系统采用密码学算法生成身份凭证(身份标识符)。无论采用UTXO 模型还是账户余额模型,区块链系统都必须建立身份标识机制来确定用户的数字资产的权属,再通过身份认证机制来确保交易行为的可信性和可确认性。具体而言,目前的公有链由于强调匿名性,所以多基于公钥密钥算法实现对用户身份的标识,一般用公钥作为身份凭证,用对应的私钥实现对身份的验证。而在联盟链环境中,一般需要对用户身份进行实名认证,所以联盟链系统多直接采用传统系统中已成熟的基于PKI(public key infrastructure,公钥基础设施)来管理用户身份,利用数字证书作为用户的身份标识。其实,不同区块链环境下生成用户身份凭证时都采用了公钥密钥算法,只是在不同类型区块链中的实现方法不同。
2.1 基于公钥转换的身份标识机制
为实现交易的匿名性,有效保护用户隐私,比特币、零币、门罗币等基于公有链的加密数字货币采用开放网络架构,提供无准入机制的匿名身份认证模式。用户利用钱包工具,基于公钥密钥算法生成和管理自己的身份,即通过公钥派生出身份标识符,用对应的私钥签名完成身份认证。
目前,区块链系统一般采用公钥密钥算法中基于椭圆曲线数学的椭圆曲线密码(elliptic curve cryptography,ECC)算法来生成用户身份标识,依赖于椭圆曲线离散对数问题的困难性实现身份管理的安全性[30]。以比特币为例,采用了加拿大Certicom公司推荐的secp256k1椭圆曲线密码算法实现用户的身份标识和验证。比特币用交易地址(Tx_Address)来间接地标识用户身份,具体由secp256k1 算法生成的公钥(key_pub)经SHA256和RIPEMD160 两次哈希运算生成的160 bit 的字符(具体为40 位十六进制数)来表示,其运算过程为(实现过程如图2 所示,其中Base58Check 编码用于将比特币中的字节数组编码为可分类、易读的字符串):
图2 区块链交易地址的生成过程Fig.2 Blockchain transaction address generation process
Tx_Address=RIPEMD160(SHA256(key-pub))
每笔交易地址对应的私钥存放在用户端的钱包中,只有通过私钥才能访问和使用对应交易地址中锁定的资产,一旦私钥丢失或被窃取,对应交易地址中的资产将全部丢失。区块链钱包的功能不仅仅是用户私钥的创建、存储和运用,还包括交易地址的生成。以比特币为例,其公钥密钥对的生成有两种方法:一种是利用钱包通过伪随机数生成器(pseudorandom number generator,PRNG)生成一个256 bit 的私钥,然后使用椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ECDSA)再生成对应的公钥;另一种方法是将钱包中的私钥作为种子(seed)密钥,再利用密钥派生函数(key derivation function)生成真正用于交易的私钥,然后再通过椭圆曲线生成公钥。后一种钱包称之为HD(hierarchical deterministic,分层确定性)钱包[31]。为此,钱包中首先生成私钥(private key),然后利用私钥生成公钥(public key),再利用公钥经转换后生成地址(address),3者之间的关系如图3所示。
图3 比特币私钥、公钥和地址之间的关系Fig.3 Relationship between private key,public key,and address of Bitcoin
HD 钱包也称为“身份钱包”,采用分层确定性算法通过对种子密钥的逐层扩展得到私钥,继而得到扩展公钥和地址。HD钱包是目前广泛使用的虚拟货币钱包标准,钱包中密钥对的生成过程在BIP(Bitcoin improvement proposal,比特币改进建议)32[32]中进行了详细描述,具体过程如图4所示。BIP 32建议提出使用种子生成树形结构的密钥,HD钱包只需要保存种子,在不同的应用场景下可通过种子派生出不同的私钥,再由私钥生成公钥,直至生成地址。
图4 比特币HD钱包中密钥的派生过程Fig.4 Derivation process of key in Bitcoin HD wallet
2.2 基于数字证书的身份标识机制
与以比特币为代表的加密数字货币不同的是,许多联盟链(如Fabric、Corda 等)需要对用户身份进行严格审核后才决定是否允许其以实名方式加入,PKI作为一种建立在公钥加密基础上的安全架构,不但是传统系统中提供身份认证、信息安全、访问控制等服务的关键技术,同时也是强监管环境下区块链身份管理的主要选择。
PKI由硬件、软件、人员、策略和过程等共同组了一个分布式环境基础设施,用于数字证书的创建、分发、使用、存储和撤销等全生命周期的管理。通过PKI 系统,终端用户将在分布式环境中拥有数字签名和基于公钥加密的数据保护能力,PKI是用于实现安全交易和通信的安全架构的基石[33]。数字证书、公钥和私钥、证书授权中心以及证书撤销列表构成了PKI 的4 个关键要素。在PKI 中,由证书认证中心(certification authority,CA)为用户签发数字证书,数字证书中存放有由CA签发给用户的用于标识身份唯一性的公钥,同时绑定了证书发行者对证书的签名、证书的发行机构名称、证书的有效期等信息。在一个完整的PKI系统中,还提供有用于认证用户身份的“注册机构”(registration authority,RA)、存储已签发证书和公钥的“数字证书库”、记录已失效证书的“证书撤销列表”(certificate revocation list,CRL)以及与应用程序之间进行对接的“应用程序接口(API)”等内容。如图5所示,PKI用户首先向可信CA申领数字证书,通过身份信息审核的用户获得经CA签名的数字证书,并将其保存在本地计算机中,用来验证与之通信的其他PKI用户的数字证书链,以此来获得该用户的公钥,从而实现对用户身份的可信验证。
图5 数字证书的申领和使用过程Fig.5 Digital certificate application and use process
通常情况下,PKI由根CA(root CA)和一系列中间CA(intermediate CA)组成的信任链建立可验证的身份管理体系,即采用分层结构。在该结构中,根CA一般不直接向用户颁发证书,而由根CA 签发的中间CA 实现对实体或用户的证书颁发与管理,以确保CA服务的安全性、高效性和可扩展性。例如,可以在根CA 下创建CA-A和CA-B,其中CA-A颁发的证书用于实名认证,而CA-B颁发的证书用于匿名认证,使CA-A和CA-B分别服务于不同认证方式的系统。同时,也可以根据认证需要,建立根CA 下不同CA 之间的关联,当需要进行实名认证时直接使用CA-A颁发的证书,而针对用一用户需要进行匿名认证时,则由CA-A颁发的证书自动派生出CA-B下的证书,由被派生出的证书进行匿名认证,而且在后台(CA 管理端)做到匿名与实名之间的关联[34],以便于实现对用户的监管。
2.3 去中心化身份
分布式数字身份也称为自主管理的数字身份,它使用用户自己独立拥有的数字标识符和可验证凭据来实现受信任的数据交换,其目的是使用区块链、分布式账本和公钥密钥加密技术来保护隐私,实现安全的在线交互。基于区块链技术的去中心化身份(decentralized identity,DID)是一种不依赖于中心化机构作为信用背书的数字身份,目前主要有W3C的DID[35]和DIF(decentralized identity foundation,去中心化身份基金会)的DID[36]两个标准。其中,W3C 的DID 主要致力于“DID规范”(DID specification)和“可验证凭证”(verifiable credentials,VC)两个方面展开研究,如图6 所示;而DIF的DID 目标是通过创建通用的身份验证协议以提高区块链系统的互操作性,推动基于开源代码的去中心化标准的创建。需要说明的是,虽然区块链技术不是DID的必选项,但从目前的技术实现来看,区块链技术能够有效地推动DID技术的实现和应用推广,便于以较低成本实现DID 信任体系的构建。为此,本节选取W3C 的DID,主要基于区块链技术的DID进行阐述。
图6 W3C的DID组成Fig.6 W3C DID composition
2.3.1 DID规范
DID 规范由DID 标识符和DID 文档两部分组成。其中,DID 标识符是一个去心化的全局标识符,是实现自主身份(self-sovereign identity,SSI)[37]的基本身份标识。利用DID可以在实体之间建立可信的通道,实现信息交换和身份认证,而无需任何中心化机构的干预。DID规范通过使用生成具有足够熵的128位值的算法,使得在DID 标识符集合中几乎不可能出现两个完全相同的DID标识符,实现了DID标识符在身份识别空间的唯一性。由于DID建立在区块链技术上,所以DID标识符的生成和管理不需要依赖于PKI中的CA或其他任何第三方,使得用户的身份信息完全掌控在自己手中。
DID标识符是通过DID URL关联到描述目标对象的DID文档(DID document)的唯一标识符,即通过DID标识符能够在注册数据库中找到与之对应的DID 文档。DID 标识符的命名方式为<did:+DID method:+DID Method Specific Identifier>,示例如“did:example:123456789abcdefghi”,类似于TCP/IP 中的“http://www.http://cea.ceaj.org”。DID 标识符各字段的功能描述如表3所示。
表3 DID标识符各字段功能描述Table 3 DID identifier function description of each field
每个DID标识符对应一个DID文档,该文档包含有所有与实体DID 标识符相关的信息。DID 文档是一个通用数据结构,验证DID标识符时所有使用的公钥信息以及采用的验证方法(主要有公钥验证和数字证书)等内容都包含在该文档中。DID 文档通常由DID 控制器(DID controller)负责数据的写入和更改,DID控制器既可以是实体本身,也可以是第三方机构。DID标识符与DID 文档之间利用类似于互联网DNS 的DID 解析器进行一对一地映射。DID 规范采用键/值<key/value>方式在数据库或分布式账本中记录和存储信息,其中DID标识符是键,而DID文档是对应的值。DID文档由DID实体、公钥、身份验证、授权、服务端点和时间戳等字段组成。
(1)DID实体(DID subject)。指该DID文档描述的对象,通常一个实体可以同时拥有多个身份,每个身份分配一个唯一的DID以及与之关联的公私钥对,不同身份之间没有关联。每个DID文档对应一个DID实体。
(2)公钥(public key)。实现身份认证和其他的加密操作(如与服务端点之间建立安全通道),当DID文档中的公钥被撤销或失效时,DID文档必须包含或引用相应的撤销列表。
(3)身份验证(authentication)。是指DID 实体通过基于密码学的加密方式来明证其与DID相关联的过程。
(4)授权(authorization)。是指委托其他实体执行操作,例如,当密钥丢失时可委托指定的实体更新DID文档内容以恢复密钥。
(5)服务端点(service endpoint)。用于描述实体希望公告的任何类型的服务,包括身份认证、授权、交互等去中心化身份管理服务。
(6)时间戳(time stamp)。用于证明DID 文档自指定时间(时间戳确定的时间)后内容保护完整、未被更改。DID 文档的内容一经更新,将会产生一个新的时间戳。
需要强调的是,每个DID标识符对应的DID文档是独立的,以此来实现不同DID 标识符之间的信息隔离。在进行身份认证过程中,DID标识符拥有者可以根据需要对不同的DID标识符进行授权,验证者只能查阅被授权的DID 文档内容,而无法获得其他更多的信息,从而实现了DID实体的信息保护。
2.3.2 可验证凭证
DID 标识符和DID 文档本身都不包含实体的真实信息,如自然人实体的用户姓名、家庭住址、手机号码等,可验证凭证规范的主要功能便是建立DID与现实世界中实体之间的关联。具体讲,可验证凭证用于定义可在实体之间交换的凭证格式,并提供关于实体的属性说明。
声明(claims)是指与身份关联的属性信息,它是一种断言(assert)数字身份的方式,独立于任何需要依赖它的特定系统。以自然人为例,声明信息包括用户姓名、身份证信息、受教育情况、家庭住址等内容。声明可以由个人或组织等单一身份所有者自行发起,也可以由发行者(issuer)签发,当一个声明由发行者签发时称之为可验证声明(verified claims)。多项声明的集合称为凭证(credentials)。如图7所示,可验证凭证系统中的声明通常由发行者(issuer)、验证者(inspector)、持有者(holder)和可验证身份注册表(identifier registry)4部分组成,每部分的功能描述如表4 所示。其中,由请求者向发行者请求发行声明,发行者向持有者签发可验证声明,再由持有者向验证者披露可验证表述,最后由验证者向身份依赖者验证可验证表述。
表4 可验证凭证系统中的声明组成Table 4 Claims in verifiable credential system
图7 可验证凭证模型Fig.7 Verifiable credential model
声明(或凭证)交换的核心技术是密码学,主要用于证明可验证声明或可验证表述(verifiable presentation)[38]中信息的完整性与真实性。可验证表述是一种防篡改描述,它来自一个或多个可验证凭证,并由披露这些凭证的实体用私钥进行签名。声明持有人可以使用零知识证明(zero-knowledge proofs,ZKP)[39]将不同声明之间披露的信息量减至最小。凭证和对应的私钥存放在代表实体身份数据容器的身份钱包中,身份钱包是将身份控制权置于身份所有者手中的保证。
2.3.3 DID应用场景
在去中心化数字身份系统中,实体通过向DID身份注册机构提出申请以获得用于标识该实体身体唯一性的DID标识符,然后依托DID标识符向发证方申请各类可验证凭证,最后通过向身份验证方提供DID标识符和可验证凭证以证明自己身份的真实性和可信性,从而完成身份认证操作。在去中心化数字身份系统中,一个实体的数字身份组成如图8所示。
图8 实体的去中心化数字身份组成Fig.8 Decentralized identity composition of entity
目前,已经推出的DID 项目有Microsoft DID[40]、基于以太坊的分布式数字身份管理服务uPort[41]、微众银行推出的基于联盟链身份的实体身份标识和可信数据交换解决方案Weldentity[42-43]等。例如,WeIdentity 主要包括DID 规范和Credential 两部分,其中DID 规范模块在FISCO-BCOS[44]区块链底层平台上实现了W3C 的DID规范,Credential 提供了一套基于W3C 可验证凭证规范的解决方案,以新入职员工背景调查为例,首先,员工、学校、公司分别进行DID 注册及KYC(know your customer,客户身份识别)认证;然后,员工向学校申请学历学位证明凭证(Credential),并向前雇主公司申请工作及离职证明凭证;接着,员工将这些凭证提交给现雇主公司,现雇主公司通过凭证验证(verify)接口对上述凭证进行验证;最后,如果验证通过,现雇主公司将给该员工发放入职通知。在此过程中,任何参与身份管理的一方都没有泄露该员工的身份信息,实现了身份信息的有效保护。
表5从实现原理、实现方式、安全性、隐私性和中心化程度等方面,对3种身份标识技术进行了对比分析。
表5 身份标识技术比较Table 5 Identification technology comparison
3 区块链身份认证方式
简单讲,身份标识用于说明“我是谁”,而身份认证则用于证明“你是谁”。身份认证系统对用户提供的身份信息进行验证,以证明该身份的真实性、合法性和不可抵赖性。在区块链系统中,交易是与用户紧密关联的最小数据单位,所以身份认证的功能便是确认交易者具体身份、建立交易者与交易信息之间的联系。从安全角度出发,区块链系统中的身份认证是一个确定用户是否能够对交易数据访问或操作的过程,也是一个对访问或操作者的具体身份信息进行确认并防范可能发生的抵赖现象的过程。根据应用场景和实现方式的不同,可将区块链系统的身份认证分为匿名身份认证、实名身份认证和可控匿名身份认证3种类型。
3.1 匿名身份认证
匿名身份认证是指用户在注册过程中无需提供身份信息便可以获得身份标识并用于系统认证。匿名的目的是隐藏真实的身份信息,而不是在信息交互过程中不需要提供身份标识,只是无法通过线上身份标识符来直接获取到线下实体的真实身份信息。以比特币、以太坊为代表的公有链系统采用无准入机制的开放系统架构,为用户提供匿名身份认证方式,以隐藏交易者的真实身份信息,起到了保护交易者隐私的功能。
在无准入机制的区块链系统中,用户多采用钱包方式进行系统注册,注册过程无需提供用户身份信息。成功注册后将生成一个私钥,然后通过该私钥利用椭圆曲线密码算法生成对应的公钥(具体过程见图2所示),其中公钥经转换后作为交易者的身份标识符,利用对应的私钥签名实现身份认证。在此过程中,始终未出现过用户的真实身份信息,实现了认证过程的匿名性。另外,在UTXO 模型中,使用了假名机制以实现交易的匿名性,即用户在进行交易时,涉及到的交易输入和输出地址都以假名形式出现,即使同一笔交易中有关同一用户的不同地址之间也没有显性的关联性,实现了交易过程中对用户真实身份信息的保护。
由于区块链账本的公开性和多方确认等特征,攻击者通过对账本数据的聚类分析便可将交易信息关联到具体的身份,所以使匿名身份认证对用户隐私的保护效果具有一定的局限性。为此,在对身份和交易信息的匿名要求较高的区块链系统中,引入了身份隐藏机制来实现对用户身份隐私的进一步保护[45]。
在匿名认证过程中,身份认证者向应用系统中的身份证明者模块提交表示可以访问该系统的身份凭证,服务证明者模块只能判断出该身份凭证拥有访问系统的资格,但无法确认具体的身份信息。但在很多情况下,凭证中披露的信息往往超出身份证明者需要的信息,带来用户身份隐私泄露的风险。为解决此问题,一种称为匿名凭证(anonymous credential)[46]的解决方案提出被得到应用。匿名凭证是一种由凭证发行者提供的包含用户信息的特殊凭证,它用于发送声明信息,但不包含具体与声明相关的明文或密文信息,只是提供有关声明结果的密码学验证方法。这样,服务提供商将无法得到具体的凭证内容,也无法利用该凭证模拟其他用户身份进行中间人(man in the middle,MITM)[47]攻击,提高了认证过程的用户身份隐私性。
3.2 实名身份认证
实名身份认证是指从用户身份标识到身份认证的身份管理全生命周期过程中涉及到的用户身份都是真实的,其中身份标识的实名制是实现实名身份认证的前提和保证。实名身份认证是强监管系统中身份管理的基本要求,为用户提供准入机制并保证交易、交流等行为符合监管规定。区块链系统中的实名身份认证在沿用了传统系统中的PKI/CA身份认证或动态口令认证方式的基础上,结合了区块链中交易数据的防篡改性和公开透明性等特点,一方面解决了区块链系统的身份认证需求,另一方面将区块链的功能和特征应用于自身的身份认证过程。整体来看,区块链中的身份认证是基于中心化机制的身份管理与去中心化或部分去中心化的区块链应用相模式的结合,其实质是将身份认证模块嵌入到区块链系统中,在一个已通过身份认证的准入环境中部署区块链系统。
3.2.1 基于PKI/CA的身份认证
区块链系统中的实名身份认证多出现在采用准入机制的联盟链中(如Fabric、Corda等),其基本实现方式之一是在区块链系统中部署PKI/CA来生成和管理数字证书,建立用户与CA 之间的信任关系。用户向CA 提交实名身份注册信息,CA 核实用户身份信息并对通过审核的用户生成一对非对称密钥,其中公钥封装在数字证书中,用户从CA处获得所选取用户的数字证书和自己的私钥,在之后的交易过程中就可以使用数字证书作为身份标识,用私钥签名实现身份认证。由于用户真实身份信息已绑定到CA颁发的自签名证书上,所以在认证过程只需要验证CA自签名证书的有效性,提升了认证效率。同时,证书由PKI 中的第三方可信CA 进行监管,减轻了系统运行的额外负担。另外,考虑到身份认证系统中CA 的重要性,Fabric 提供了一个称为“Fabric CA”的内置CA 组件,允许用户在自己的区块链网络中创建一个私有根CA 来提供和管理具有X.509 数字证书,用于对Fabric用户的身份认证。
隐私保护是区块链的一项内生功能,而基于PKI/CA 数字证书的身份管理机制则与之相冲突[48]。很显然,区块链借助于中心化的PKI机制实现了用户身份认证的实名化,但却带来了严重的隐私泄露问题,攻击者通过对账本中交易信息的分析可以窥探出不同用户之间以及不同交易之间的关联性,用户的交易隐私几乎暴露无遗。为此,在采用实名制的联盟链中进行有效的用户隐私保护,就需要提供一套有效的账本保护机制,只允许特权用户来访问账本信息,而不是像公有链那样将账本公开给所有用户。
3.2.2 基于区块链的PKI身份认证
基于PKI/CA的身份认证在传统信息系统中正在发挥着极其重要的作用,但针对区块链应用场景中交易的高频发、匿名等要求,在效率、可靠性、安全和隐私等方面存在不足,尤其是PKI 主要依赖于中心化的CA 来颁发、存储和管理密钥对,很容易出现中间人攻击,为加密通信和身份隐私带来了安全隐患。区块链系统中交易数据的不可篡改性、账本信息的公开透明性等特征以及智能合约的应用,为构建基于区块链的PKI身份认证技术提供了保障[49-51]。
作为首个基于区块链的PKI 项目,CertCoin[52]摒弃了传统PKI/CA中的CA,将公钥证书和域名发布在区块链上,通过公开透明和分布式存储的区块链账本来替代CA,为区块链用户提供身份验证方案。同时,CertCoin系统引入了累加器和布隆过滤器技术,使得区块链系统使用较小的存储空间来保存证书。图9 给出了基于区块链的PKI身份认证系统的操作示意图,其中主要的操作过程如下:
图9 基于区块链的PKI身份认证示意图Fig.9 Schematic diagram of PKI identity authentication based on blockchain
(1)证书申请。用户生成SSL 自签名证书,向数字证书的注册节点提交证书发布申请。注册节点对申请者提交的证书和用户身份进行验证,对通过验证的证书发布申请经签名后提交给区块链系统。
(2)证书发布。区块链系统中的节点在接收到证书发布申请后,会对证书格式、内容及持有者的签名等信息进行验证,通过验证的合法证书发布申请将被共识算法打包进区块,即将证书内容和证书状态写入区块链。
(3)证书更新与撤销。当用户在证书到期之前需要对其进行更新或需要对正在使用的证书进行撤销时,可通过注册节点向区块链系统提交更新或撤销申请,区块链系统在对申请内容和申请者身份进行验证后,通过调用智能合约对分布式账本中的证书进行更新操作或设置为撤销状态,并将结果写入区块链。
(4)证书查询与应用。在证书使用中需要对证书的真实性和合法性进行查询时,证书依赖方首先从证书持有者处获得完整证书或证书摘要,然后通过证书查询节点向区块链系统求证证书的合法性和有效性。
由于区块链的不可篡改性,写入区块链的证书无法被修改或删除,这在确保了证书应用和管理的安全性的同时,却为证书的更新和撤销带来了困难。利用区块链智能合约和共识机制可以解决这一问题[53]。在证书过期后,证书持有者通过智能合约对原有证书进行更新从而生成新证书并写入区块,同时声明用新证书来替代原有证书的使用。这样,原有证书将永久保存在区块链中,而新的证书将作为唯一合法有效的证书来使用。此功能还实现了PKI 系统的可审计性及对证书应用的溯源功能。
图10是传统PKI/CA系统与基于区块链的PKI系统之间的区别。可以看出,在传统PKI/CA 机制中,CA 基于对用户的信任来对用户提供的公钥、DID 等签发证书,在使用证书时,证书依赖方需要向CA进行证书状态查询。而基于区块链的PKI 机制通过去中心化特征建立信任关系,将传统CA集中式的证书发放转变为以分布式方式的自动实现。用户可自行生成自签名证书,再经注册节点验证后提交给区块链系统,通过矿工节点的验证和共识后,证书将被写入区块。在证书使用过程中,用户需要将证书提交给认证方,认证方再通过区块链系统验证证书的合法性和有效性。
图10 两种类型PKI系统之间的区别Fig.10 Dfference between two types of PKI systems
基于区块链的PKI 身份认证方式在解决了传统PKI/CA 固有的安全性差、存在单点故障、多CA 部署复杂、证书查询过于依赖CA等问题的同时,利用区块链自身的技术特点可以提升区块链用户身份认证的一些性能。例如,利用分布式账本的特性,在基于区块链的PKI系统中不再需要CRL服务,而且对证书状态信息的更新可以快速得到应用,同时避免了传统PKI/CA 中的单点故障问题;再如,利用区块链的去中心化特征,由区块链中的共识节点共同对证书进行验证,并将结果保存在区块链中,供区块链用户进行身份认证时使用。除此之外,基于区块链的PKI还可以支持X.509证书[54],以兼容传统PKI/CA,同时通过自行搭建证书验证节点,实现证书状态的本地验证,以扩展身份认证的实现范围,并提高验证效率。
3.2.3 基于动态口令的身份认证
基于口令的认证是传统信息系统中较早使用且一直沿用至今的一种经典身份认证方式。由于口令认证易被暴力破解,也易受重放攻击和弱口令攻击,所以在安全性要求较高的应用中逐渐被动态口令替代。动态口令因其具有较高的安全性、易操作性以及与传统信息系统之间的兼容性,已广泛应用到区块链系统的身份认证中[55]。
早在1981 年,Lamport[56]就提出了基于哈希链的动态口令(one-time password,OTP)解决方案,目前使用的各类动态口令解决方案基本上是在该方案基础上的改进。动态口令也称为一次性口令,是采用“一次一密”方式在客户端与服务器之间通过共享密钥实现的一种强认证机制,合法用户利用动态令牌生成动态密码,认证服务器通过验证密码的正确性来实现对用户身份的认证。OTP算法的实现主要有以下3种类型:
(1)HOTP。HOTP(HMAC-based one-time password,基于HMAC的OTP)算法[57]基于HMAC(hashed message authentication code,散列消息验证码),利用HMACSHA-1算法生成一次性密钥,具体算法为:
其中,Truncate()是一个将160 bit的HMAC转换为32 bit的HOTP 值的函数,HOTP 是一个无符号整数;K为输入的密钥;C为计数器值,每次在使用HOTP 时,C值都会在前一次基础上自动增加,从而实现每次认证时使用的HOTP 值不同。HMAC-SHA-1 算法的安全性决定着HOTP的安全性。
(2)TOTP。TOTP(time-based one-time password,基于时间的OTP)算法[58]利用一个共享密钥,再结合当前时间来计算动态口令,其算法定义为:
TOTP算法基于HOTP算法来实现,其中K是一个共享密钥,T为时间步长(系统默认值为30 s,即每过30 s更换一次口令),即从用UNIX时间戳表示的初始时间T0到当前时间Tnow所经历的时间步长数,T=(Tnow-T0)/X,X为默认的时间步长。
(3)基于挑战/应答的OTP。在基于挑战/应答(challenge/response)的OTP 算法中,一次性口令由服务器发出的挑战值经客户端的应答算法产生,其中挑战值由服务器随机生成或使用计数器产生。
将动态口令技术应用到区块链系统的身份认证,实现了传统OTP技术与区块链系统身份管理的结合,OTP采用动态密钥生成机制,同一用户在不同时间段访问系统时会使用不同的密钥,而且密钥无需记忆和保存。同时,OTP采用双因素认证机制,即使密码被窃取,也不会造成损失。另外,由于OTP技术自身实现简单且提供了功能完备的接口,身份认证系统可以独立于区块链系统,在保证了区块链系统完整性的同时,利于在各类区块链钱包或平台中的实现[59]。
针对区块链系统的身份认证要求,许多学者通过理论研究和实践探索提出了一些创新应用和方案。其中,Park[60]通过对Lamport提出的OTP中加密哈希函数的改造,形成的新哈希链在无需证明者和验证者之间预共享密钥的前提下,能够无限制地生成用于身份验证的密钥,在保留Lamport 方案优点的同时,满足了区块链系统中针对大量交易用户身份认证的需要;Erdem 等人[61]提出了一种基于云服务的OTP方案,该方案将验证器置于云端,为不同系统提供可靠、便捷的身份认证服务,并可抵御外部攻击;Zhang 等人[55]将区块链分布式账本技术与OTP 技术结合,提出了基于区块链的OTP 身份认证方案。在该方案中,由区块链分布式账本作为验证器来替代传统OTP中的服务器,并通过一个安全标准列表来实时分析身份验证协议的安全性,以抵御重放攻击、暴力破解、OTP 伪造等攻击行为的发生;Catalfamo 等人[62]针对基于双因素认证(two-factor authentication,2FA)等典型身份认证方案中因集中式认证导致的拒绝服务(DoS)攻击和中间人(MITM)攻击等安全威胁,提出了一种分散的微服务(microservices)和基于区块链的一次性密码(blockchain based one time password,MBB-OTP)协议,用于提升身份认证的安全性。以上方案,有些是对传统OTP方案性能的改进,有些是利用云计算优势对身份认证方案和功能的优化,有些是将区块链技术与OTP 技术进行结合以丰富身份认证功能并增强系统的安全性。
表6基于区块链系统身份认证具体要求,从实现原理、证书类型、验证者、安全性、隐私性、可扩展性和中心化程度等方面对不同方案进行对比分析。
表6 实名身份认证机制对比分析Table 6 Comparative analysis of real-name identity authentication mechanism
3.3 可控匿名身份认证
为了解决联盟链中基于PKI/CA数字证书的身份认证带来的用户隐私泄露问题,一些对隐私保护要求较高的联盟链(如Fabric、Corda、FISCO BCOS[63]等)在身份管理上采用了可控匿名身份认证方案。可控匿名身份认证是指根据不同的监管需要,同一系统中同一用户在不同场景中采用不同的身份认证方式,一般在前台应用中采用匿名身份认证,而在后台监管中采用实名身份认证。可控匿名身份认证模型如图11所示。
图11 基于PKI/CA的可控匿名身份认证模型Fig.11 Controllable anonymous authentication model based on PKI/CA
可以看出,可控匿名身份认证一般是在PKI/CA 工作机制的基础上,通过在系统中增加监管者身份来实现。其中,可控匿名身份认证的CA具有对匿名数字证书的追踪功能,当因交易纠纷等原因需要核实用户真实身份信息时,监管者可将核实信息发送给CA,由CA将匿名数字证书持有者的真实身份信息反馈给监管者。
以由微众银行牵头研发的区块链底层开源平台FISCO BCOS 为例,在身份管理方面FISCO BCOS 提供了区块链治理通用组件,通过“轻量解耦”将身份管理功能与具体业务解耦,以方便系统的部署和管理。同时,FISCO BCOS 提供了证书管理组件(Governance-Cert)和私钥管理组件(Governance-Key),证书管理组件提供了X.509 标准的多级证书签发、验证、重置、撤销、导出及托管等功能,私钥管理组件提供了私钥的生成、保存、托管、使用等能力。为了实现可控匿名身份认证,FISCO BCOS的账户治理组件还提供了如图12所示的双重账户体系,其中,具体交易过程中使用的账户不再直接使用公钥地址,而是采用经公钥派生出来的内部账户,以提供交易的匿名性。但是,在需要对用户身份进行监管时,监管方可以通过公钥账户地址与内部账户之间的映射关系得到该用户的真实身份信息。
图12 传统账户模型与双重账户模型对比Fig.12 Comparison between traditional account model and dual account model
基于PKI 机制的Fabric 采用两级证书体系实现可控匿名认证。在Fabric中,一个组织一般拥有一个MSP(membership services provider,成员关系服务提供者)[64],MSP采用PKI分层架构,默认使用X.509证书来标识联盟链中的用户身份,为用户提供证书签发与验证、证书撤销等服务,并利用“注册-交易”两级证书体系实现同一用户的前台匿名认证与后台监管。MSP 是一个为Fabric 中的节点提供身份认证的可信权威机构,SMP中提供了注册证书颁发机构(enrollment certificate authority,ECA)和交易证书颁发机构(transaction certificate authority,TCA)两类CA,其中由ECA 签发的注册证书(Ecert)用于实名身份认证,而由TCA 签发的交易证书(Tcert)用于交易中的匿名身份认证,同时TCA 在签发交易证书Tcert 时受注册证书Ecert的控制,以此实现针对同一用户的不同类型数字证书之间的关联。
在Fabric中,Tcert由Ecert派生产生,同时Tcert基于椭圆曲线密钥叠加算法生成交易中使用的公私钥对,在监管过程需要知道Tcert 的真实身份信息时,可利用Tcert公钥的可恢复特征恢复出该公钥持有者的真实身份。具体实现过程为:当用户向TCA申请用于交易的Tcert 时,TCA 首先通过随机数种子生成一个派生密钥DF_key,同时利用用户提交的Ecert 证书中的公钥及相关参数生成Tcert 证书的公钥,并将最后生成的Tcert 以及DF_key 通过安全通道(一般采用PKI 系统集成的SSL/TLS 加密通道)发送给用户;用户利用从TCA 处申请到的Tcert和DF_key生成Tcert的私钥。因为ECA在生成用于加密EcertID(注册证书ID)的密钥时使用了监管方可见的加密密钥pre_key,即:
那么,监管方可利用EcertID_key 解密位于Tcert 证书中的encEcertID(身份证书ID的密文)得到EcertID:
另外,MSP 在传统PKI 的基础上,还提供了一个用于存放可依赖用户信息的列表,以实现对用户身份的进一步分类管理。
表7 主要从身份标识方式、主要实现原理、准入机制、区块链类型和典型应用场景等方面对3种身份认证方式进行了综合比较。
表7 区块链身份认证方式比较Table 7 Blockchain identity authentication mode comparison
4 总结与展望
无论是信息交换还是价值转移,身份管理都是区块链系统的核心要素和研究重点。由于不同的区块链系统在功能实现、应用场景、准入机制等方面存在较大差异,所以针对主流区块链系统身份管理的研究方法和实现路径也有所不同。
4.1 有关联盟链的身份管理
对于Fabric、Corda、FISCO BCOS 等典型联盟链的身份管理主要采用PKI/CA 数字证书作为用户身份标识,实现实名或可控匿名身份认证。近年来,PKI 体系在区块链应用中存在的主要问题集中于安全、效率和可扩展性等方面。
首先,是数字证书的安全问题。区块链用户一般通过配置客户端(一般为Web 浏览器)对根CA 的信任来实现对服务器证书的验证。但是,近年来大量出现的证书验证安全漏洞引发的中间人攻击,使得为用户签发数字证书的CA服务的可信度受到威胁。如果用户不能正确地验证CA签发的数字证书,那么攻击者很容易通过将自己假扮为合法的CA为用户提供虚假的证书服务,从而窃取或篡改用户之间的交易,扰乱整个系统的正常运行。针对此问题,一些改进方案相继被提出并得到应用[65],以提升CA 证书服务的安全性。例如,在CA 服务端,为了防止CA被攻击后签发虚假的数字证书或进行其他的恶意操作,谷歌(Google)公司早在2013 年就提出了certificate transparency[66]技术,通过引入日志服务(log server)部件让CA 签发数字证书的服务具有公开审计性,以增强证书签发阶段的安全性;在用户端,可通过对浏览器或钱包的设置,使其只信任满足一定条件的CA 签发的数字证书,从而通过对客户端的配置来增强数字证书的安全性。
其次,是交易的效率问题。在交易过程中,由于需要通过数字证书对交易者的身份信息进行频繁的验证,每一次验证都需要访问数字证书的证书库,以获得证书链上的CA 证书、CRL 文件信息以及OCSP(online certificate status protocol,在线证书状态协议)等服务内容,这一过程需要占用一定时间,会在较大程度上影响到交易效率,尤其是在需要进行跨域部署PKI的大规模区块链系统中,此问题更显突出。针对此问题,需要借鉴PKI在大范围跨域交叉认证已有成果的基础上,结合区块链系统具体应用场景,进行性能优化[67]。另外,基于公钥密钥机制的PKI系统在证书管理上的复杂性在很大程度上影响了交易的效率。为解决此问题,早在1984年RSA算法的作者之一以色列密码学家Adi Shamir就提出了IBC(identity-based cryptography,基于身份的密码系统)[68]的概念,直接利用用户身份标识信息作为公钥来绑定用户身份,用户私钥由拥有主密钥的私钥生成器(private key generator,PKG)生成。IBC 不再依赖于PKI 系统,从而极大地简化了管理密码系统的复杂性。IBC技术自提出后在应用过程中不断发展和完善,目前,在区块链用户身份管理中,IBC也已作为PKI机制的发展和补充得到进一步的研究,既保证签名的安全性,又满足各种应用场景的安全需求。还有,2003 年,Al-Riyami等人[69]提出了无证书公钥密码学(certificateless public key cryptography,CL-PKC)的概念,它与IBC 一样不需要数字证书,而且避免了PKI系统中的私钥托管(key escrow)问题,也不涉及到数字证书的管理,因此具有系统开锁小、效率高等优化,更适用于区块链技术在智能手机、物联网等资源有限的环境中的应用。
最后,是信息管理的可扩展性问题。通过跨链技术打破单一区块链系统的封闭性,实现不同区块链系统之间的信息共享和价值转移是区块链技术发展的大势所趋和必然要求。然而,不同区块链系统所采用的共识算法和底层数据结构有所不同,为跨链身份认证带来了挑战[70]。为此,如何提供适应于跨链操作环境要求的身份管理机制,提升区块链身份管理的可扩展性,以适应不同类型联盟链之间互操作过程中的差异化身份认证,还需要在已取得成果的基础上进行深入研究[71-72]。
另外,PKI依赖于数字签名技术在实体之间建立信任联系和数据的安全传输,允许实体使用标准化数字证书(如X.509)与身份认证进行互操作。尽管PKI技术被许多应用程序作为其安全保障(如Web/Https/TLS、云支持服务、VPN、IP 安全等),但因中心化信任固有机制产生的缺陷随着新应用的出现不断暴露出来,与此同时,区块链技术所见长的去中心化、账本公开、不可篡改等机制,使PKI的应用受到极大挑战。早在2016年,IETF(Internet Engineering Task Force,Internet 工程任务组)就提出了一个专门的草案,描述了PKI 存在的主要问题,并认为基于中心化机制的PKI 已无法满足数字化环境的应用需求,建议开发去中心化的PKI[73]。DPKI(decentralized public key infrastructure,去中心化公钥基础设施)[74-75]是对PKI的改进和完善,通过建立一个去中心化的身份管理体系来解决中心化机制存在的不足,为构建新型网络信任环境提供了保障。
4.2 有关公有链的身份管理
以加密数字货币为典型应用的公有链,在身份管理方面存在的主要问题是处理好隐私保护与身份监管之间的关系,其研究重点集中于安全和隐私保护两个方面。
公有链使用开放架构的无准入机制的匿名身份认证方式,并通过地址混淆等手段加强交易过程中用户身份的隐私性,以此来防范区块链公开账本中用户隐私泄露的风险,但隐私保护机制为基于区块链加密数字货币的交易监管带来了挑战。加密数字货币的重要特点之一是交易的匿名性,而在金融和证券等区块链应用场景中则强调用户交易的强监管,有效打击金融网络犯罪,这就要求系统在能够保护用户交易隐私的同时,必须为监管需要(如调查取证、交易信息核查等)提供交易用户的真实身份信息,引发了隐私保护与交易监管之间的博弈。在此情况下,如何在公有链加密数字货币系统中引入联盟链中的可控匿名身份认证,实现前台匿名与后台实名的按需可控匿名身份管理机制,是目前区块链应用中亟待解决的关键技术。
在安全方面,采用匿名身份认证的公有链采用非对称密钥机制的ECDSA[76]、ED25519[77]、EdDSA[78]等椭圆曲线密钥算法,算法自身及其实现过程的安全性很大程度上决定着应用的安全性。就算法自身而言,算法提供的是一套完整的用系统的方法描述和解决问题的策略或机制,是对输入范围和输出结果的明确限定。如果一个算法存在设计上的缺陷,或不适宜于某一问题的具体解决,那么使用这一算法的具体应用便存在安全隐患;就区块链身份管理中算法的实现过程而言,椭圆曲线签名算法只是提供了一种算法的完整描述,可是椭圆曲线的参数选择是多样的,所以参数选择是否规范和贴合实际,不仅仅影响着应用中的安全问题,还会影响算法的空间复杂度与时间复杂度。区块链的签名算法是区块链应用和身份管理研究的重点之一,为此,下一步研究需要在对算法自身进行优化的基础上,结合具体应用场景选择适合区块链系统自身业务需求的签名算法,并通过合理的参数选择和环境配置提升安全性。
在隐私保护方面,虽然区块链采用了经转换的公钥来作为身份标识,并且UTXO 模型提供了假名机制,以此来保护交易过程中用户的隐私。但区块链所具有的账本公开和多方确认机制给交易身份的隐私保护提出了挑战。其中,匿名身份认证和基于“混淆”思想的身份隐藏技术是解决这一问题的主要方式,在此基础上,结合联邦学习、零知识证明、环签名、安全多方计算等技术,提出了大量创新应用[79-80],为匿名和可控匿名身份管理提供了有效解决方案。
总之,身份管理作为信息系统的基本特征,可根据不同的应用需求选择不同的身份标识方法和身份认证机制,实现了对用户的全过程管理,从而为应用系统的资源授权、数据溯源和数据取证等工作提供保障。本文在对比分析传统系统与区块链系统差异性的基础上,分别讨论了区块链身份标识和认证的相关技术,并对区块链系统身份管理的下一步发展和研究进行展望。随着区块链技术的迭代发展和应用领域的不断拓宽,也将对区块链系统身份管理技术提出更高要求。因此,如何将密码学、分布式计算、博弈论、零信任等领域的最新研究成果深度融入到区块链系统身份管理技术,构建安全、高效、可扩展的区块链身份管理体系是需要进一步研究的一个方向。