区块链系统的认证机制研究
2019-03-27李强舒展翔余祥黄郡
李强 舒展翔 余祥 黄郡
区块链技术是一种广泛应用于数字加密货币的基础架构与计算范式,突破了传统中心化技术的局限,具有去中心化、去信任、匿名、数据不可篡改等特性[1-9],能够有效地解决数字货币长期以来所面临的拜占庭将军问题[5]和“双花”问题[6].区块链技术的核心优势是去中心化,在节点无需互相信任的分布式系统中实现点对点交易、协调与协作,解决了中心化机构普遍存在的高成本、低效率和数据存储不安全等问题,能够在没有第三方中心的条件下,通过分布式的节点验证和共识机制解决去中心化系统节点间信任建立的问题.近年来,区块链技术在不同领域的快速发展表明,它有望像互联网一样,彻底重塑人类社会活动形态,实现从目前的信息互联向价值互联的转变[7].
目前,绝大多数区块链系统是通过匿名的公钥地址代替用户的真实身份,用户可控制多个匿名地址并可选择性地公开它们,从而达到保护用户隐私的目的[8].然而,过强的匿名性将使得区块链用户的身份易于伪造并且难以监管.同时,强匿名性还可能导致恶意节点接入、用户非法访问、内部恶意攻击等后果,从而带来严重的安全问题.Wired 杂志发布的一份调查报告指出:世界上绝大多数国家对以比特币为代表的匿名数字货币的日趋严重的非法交易现象表示担忧,并开始着手抵制匿名数字货币的交易行为[10].
完备的认证机制对保障区块链系统的安全性和可受监管性具有十分重要的意义.2019年1月10日,国家互联网信息办公室颁布的《区块链信息服务管理规定》要求:区块链信息服务提供者需要对区块链信息服务使用者进行基于组织机构代码、身份证件号码或者移动电话号码等方式的真实身份信息认证,不得为不进行相关身份信息认证的用户提供区块链服务[11].
本文对近年来针对区块链系统或基于区块链的信息系统的认证机制研究进行综述,根据区块链系统认证对象、认证方法和认证行为的不同,将区块链系统认证机制研究分为节点认证机制、用户身份认证机制和用户权限管理机制.区块链系统节点认证可阻止、过滤、剔除恶意节点进入区块链系统,实现区块链系统节点间互相信任的建立; 区块链系统用户身份认证是对区块链系统用户身份合法性的判别,实现用户身份注册、身份信息存储、身份信息更新和撤销等; 区块链系统用户权限管理是对区块链系统中用户访问控制权限的管理,目的是阻止非法用户对系统内的数据、服务、存储空间等高价值资源的访问和使用,保证区块链系统数据的安全和业务的正常运转.
1 区块链认证技术
1.1 基本概述
在当前区块链技术得到广泛应用的同时,其自身和应用的安全性以及监管问题也日益受到重视[12-13].传统的区块链具备较好的匿名特性,可以帮助用户隐藏真实身份,有效地保护用户的隐私信息.但在一些特定的金融或其他的非金融活动中,过强的用户匿名性将会对洗钱、非法交易、内部恶意攻击等违法活动带来庇护,不利于监督、审计等部门实施管理.
区块链系统的认证机制是指在区块链中引入认证技术[14-15],对区块链交易过程中的用户身份合法性、签名完整性和数据安全性等信息进行认证,保证区块链系统内部工作节点和外部注册用户身份的可验证性和可受监管性,从而实现过滤非法用户、阻挡攻击者和划分用户权限等功能.如表1所示,将近年来相继问世的区块链系统进行对比可知,在区块链系统中引入认证技术,已被绝大多数区块链系统所应用,是保障区块链系统安全性的一大重要解决方案.
表1 主流区块链系统的认证技术应用对比
认证技术是保障信息安全的关键技术之一,也是现代通信体系中重要的技术手段[16-18].认证按照功能不同一般可分为身份认证和信息认证两个方面:身份认证用于鉴别用户身份,限制非法用户访问网络资源;信息认证用于检验通信双方的传输信息,保证了信息在传送过程中的完整性和信息来源的可靠性[17].常见的认证技术有:口令认证、密钥体制认证和生物特性认证.
1.1.1 口令认证
口令认证包括静态口令认证和动态口令认证.
1)静态口令认证
静态口令认证是最简单的认证方法,在该方法中,系统保存由每个用户的身份标识和静态口令组成的二元组(IDx,PWx),用户x 在进入系统时输入用户信息IDx和静态口令PWx,系统通过将保存的用户信息与输入的用户信息作比较,从而判断用户身份的合法性.这种认证方式操作简单,但同时也非常不安全.因为其安全性仅建立在口令的保密性之上,长度较短、易于猜测的口令难以抵御口令猜测攻击;口令的明文传输使得攻击者可以通过窃听的方式获取用户口令; 用户信息存储在系统的数据库或数据列表中,一旦被攻破将导致用户信息的泄露; 另外,这种方法也无法抵抗重放攻击和字典攻击.
2)动态口令认证
动态口令认证又称为一次性口令认证,即每次在用户登录系统时生成随机的口令,系统通过验证随机口令的合法性完成对用户身份的认证.动态口令通常采用请求(challenge)/应答(response)的方式生成,即在用户登录时系统向用户发送一条信息,用户通过将该信息绑定个人数据进行计算,生成一个随机的口令字串,用户通过输入这个字串完成一次登录过程.典型的基于请求/应答方式的动态口令认证方法是Schnorr 身份认证机制[19].
1.1.2 密钥体制认证
密钥体制认证是以密码学为基础的认证技术,在信息安全领域得到了广泛的应用.密钥体制认证主要包括基于私钥体制的认证和基于公钥体制的认证.
1)基于私钥体制的认证
基于私钥体制的认证技术通过共享的对称密钥实现通信主体的身份认证,这种认证方式的典型应用是Kerbros 认证体制[20].基于私钥体制的认证过程如图1所示.
图1中,设有通信主体A和B,A和B共享的对称密钥为KA,B.M为A发送给B的消息.为防止M在公共传输信道被窃听,A使用KA,B将M加密后再传送.由于KA,B为A和B的共享密钥,B经过解密后可以确定M是由A所发出的.这是一种简单的信息来源认证方法,在认证的同时对信息M也进行了加密,单向Hash 函数提供了一种信息完整性的验证方法.基于私钥体制的认证技术的优点是速度较快,缺点是通信主体A、B需要事先约定KA,B,而且如果一方需要与n个主体进行通信,就必须事先约定n-1 个密钥,并且对密钥进行保存,这一缺点使得它不适用于大型的网络环境,它的另一个缺点是通信双方需要使用相同的密钥,无法实现数字签名的功能.
图1 基于私钥体制的认证技术工作流程
2)基于公钥体制的认证
基于公钥体制的认证技术利用公私密钥对的加、解密过程实现通信主体之间的身份合法性认证和信息完整性的认证.基于公钥体制的认证技术包括PKI 技术[21]、IBE 技术[22]等.在基于公钥体制的认证技术中,公钥PKx通常作为主体x 的身份凭证,持有该凭证的主体可以被认定为合法; 私钥S Kx通常用于数字签名,利用数字签名和单向Hash 函数实现信息的可证完整性.在实际应用中,为了保证用户公钥的安全性,公钥通常保存在X.509 标准的数字证书目录中.X.509 标准定义的证书格式如表2所示.
表2 X.509 标准证书格式
基于公钥体制的认证技术主要利用数字签名和Hash 函数实现,其工作流程如图2所示.
图2中,设A 对消息M 的Hash 值H(M)的签名为S igS KA(H(M)),其中S KA为A 的私钥.A 将消息M||S igS KA(H(M))发送给主体B.B 通过A 的公钥对签名进行解密,从而确认信息是由A 所发出的,并且通过计算Hash 值还可对信息M 的完整性进行鉴别.在信息需要保密的情况下,A 和B 还可以通过密钥分配中心获得一个会话密钥KA,B,A 将信息签名和加密后再传送给B.由于A 和B 拥有KA,B,因此,B可以确认消息的完整性以及消息来源(即主体A)的合法性.
图2 基于公钥体制的认证技术工作流程
1.1.3 生物特性认证
基于生物特性的认证方式以人体特有的生物特征为依据,利用计算机与光学、声学、生物传感器和生物统计学等手段结合实现身份认证[23-24].目前,生物特性认证通常对手型、指纹、掌纹、脸型、虹膜、视网膜等方面的特征进行识别.由于人类的生物特征通常具有唯一性、不变性、可测量性等特点,因此,生物特性认证技术较传统认证技术存在较大的优势.然而,生物特性认证受到现有生物特征识别技术成熟度的影响,如生物特征识别的准确性和稳定性,造成了生物特性认证的实际应用还存在较大的局限性,目前仅适用于一些对安全性要求较高的场合,如银行、机场、政府机关等,还无法做到大规模的市场化推广.
1.2 区块链系统认证机制分类
区块链环境下的认证机制按照功能划分可分为:
1)节点认证机制:指对入网节点的安全性进行认证,阻止恶意节点的入网.Heilman 等指出[25],在区块链技术的基础架构模型中,区块链的网络层建立在P2P 网络的基础之上,包括分布式组网机制、数据传播机制和数据验证机制,具有分布式、自治性、开放可自由进出等特性.P2P 网络中通常没有认证服务器来统一管理入网的节点,去中心化的同时也导致恶意节点极易入网,并且入网节点自身的安全缺乏保障,容易受到外部或者内部的恶意攻击.对入网节点的安全性进行认证,排除恶意节点,可以有效地保障区块链系统的安全性和可靠性.
2)用户身份认证机制:指对区块链系统注册用户的身份合法性进行鉴别,验证用户身份信息是否属实或者是否有效的一个过程.其基本思想是通过检查用户自身的属性或携带的第三方授权资源,来达到对用户身份真实性、合法性进行证实的目的.通过对注册用户的身份进行认证,可以保证区块链使用者身份的合法性;此外,真实的用户身份也有助于第三方监管部门的监督和审查.
3)用户权限管理机制:指对注册用户在区块链系统中的操作权限进行授权和控制的过程.这一过程确保只对有资格访问或操作相关数据的用户授予对应的权限,同时令所有未被授权的人员无法接近数据.对区块链已注册用户的操作权限进行授权和控制,能够预防越权操作、非法访问和数据泄露等问题的发生.
2 节点认证机制
区块链系统的建立是基于P2P 对等网络的,区块链系统节点认证是指对P2P 网络中的节点安全性进行认证通过认证,过滤恶意节点,建立节点间互相信任的网络环境.
区块链系统按照是否具有节点准入的授权与控制机制,可分为许可区块链(Permissionbased Blockchain)和非许可区块链(Permissionless Blockchain)[26].非许可区块链是完全开放的,也被称为公有链,节点可以自由地加入或退出,非许可区块链的典型应用为比特币、以太坊等[4,27];许可区块链中节点的加入与退出、用户的访问权限均需要受到区块链系统授权主体的控制,按照授权主体集中程度可以分为联盟链和私有链,许可区块链的典型应用为超级账本(Hyperledger)[28].
2.1 非许可链环境下的节点认证
非许可链的建立依托于完全开放的传统P2P 对等网络,传统P2P 对等网络具有节点加入与退出不受控制的特点,因此在非许可链的网络环境中,无法直接通过第三方限制节点加入网络.目前,针对非许可链网络环境的节点认证方式主要包括节点行为检测和信任关系建立两部分.
1)节点行为检测
在完全开放的非许可链网络环境中,可以采取监测节点行为的方法,发现恶意节点并加入黑名单,阻止恶意节点继续搜集敏感信息.
You J 等将P2P 网络中的节点按照节点的历史行为采用N-gram 算法进行聚类[29],预测节点的可用性情况.实验结果表明,基于聚类的方法能够有效地将节点按照可用性情况进行分类,并根据不同簇之间的可用性差异识别恶意节点.
Epishkina 等采用了T 模式的方法对非许可链的节点进行隐藏时间模式聚类[3],实验发现事件必须重复不低于两次,才能使用此方法发现潜在的模式.
Huang B 等提出一种基于行为模式聚类的恶意节点检测方法[31],并针对区块链聚类提出BPC(Behavior Pattern Clustering,BPC)算法,对比了常用的长度计算方法,依据区块链节点的行为依据DTW 长度进行聚类,实验证明此方法能够从大量区块链节点中发现并分离恶意节点.
在文末结合不同的开源区块链项目的实际应用情况[32],杨保华等提出通过审计和分析系统对入网节点中的可疑行为进行嗅探和响应,利用区块链共识机制排除恶意节点的方法.
2)信任关系建立
实际上,可以考虑开放P2P 网络环境下新加入节点与原有节点之间相互信任的问题,通过信任关系的建立实现对等节点之间的互认证机制.
Fang W 设计了一种信任建立方法,设置了信任关系的累积速率阈值[33],通过信任度的积累实现节点间的信任关系.该方法认为在某一时间段内,若节点的信任度大幅累积,累计速率大于平均速率,则降低该节点后续的信任度累积速率.Yu H 等根据信任网络中各节点之间建立起来的信任关系边,利用随机游走的方法将节点划分为诚实节点和Sybil 恶意节点两个子集,并过滤Sybil 节点群[34].Wang L 等根据不同信任值的节点获取资源能力的差异,提出分布式网络下基于信任的访问控制模型[35].王鹏等提出限制节点加入的认证方案[36],规定只有具有一定算力的节点才能加入网络,从而提高恶意节点入网的难度,但是该方法也带来了节点计算资源的浪费,且存在多个恶意节点通过合谋手段提升算力而获取入网资格的风险.
2.2 许可链环境下的节点认证
许可区块链系统在传统的P2P 对等网络的基础上引进可信第三方,建立中心化的节点准入机制,利用可信第三方签发的证书实现对等节点的认证.
许可区块链系统的节点认证方案在Hyperledger Fabric v1.3 中提出[37],通过区块链系统中的可信第三方Fabric-CA,检验入网节点的标识信息;检验通过后,Fabric-CA 使用双线性映射的签名算法,签署一份绑定有节点标识信息的匿名登记证书Idemix,并将证书颁发给节点,作为节点的入网凭证; 持有Idemix 的节点与系统网络中的其他节点依据TLS 协议创建加密的通信信道,完成节点的入网.
一种基于许可区块链的远程证明模型被刘明达等提出[38].模型针对新节点的入网认证和节点间的通信认证问题设计了安全认证协议.相较于Hyperledger Fabric v1.3 中的节点认证方案[37],基于许可区块链的远程证明模型[38]为了解决入网节点的安全性问题,在参与区块链网络的对等节点中加入可信赖平台模块(Trusted Platform Moudule,TPM),节点通过提供合法的TPM 标识,作为自身可信身份的证据,基于此,认证模型中的CA 使用直接匿名证明方案(Direct Anonymous Attestation,DAA)[39]生成可验证的节点匿名身份证书,实现了节点身份的认证.
综上所述,区块链系统在节点认证方面实现了:
1)非许可链环境下,通过恶意节点检测、建立信任网络等方式实现P2P 对等网络节点之间的可信认证;通过提高节点入网的准入门限,增加节点入网的难度,阻止恶意节点的入网.
2)许可链环境下,利用可信第三方签发的证书作为节点的入网凭证,阻止了非法节点的加入.
同时,也应看到,随着区块链技术的发展,对区块链系统节点认证也提出了新的要求,原有已取得的区块链系统节点认证机制的研究存在一些需要进一步解决的问题:
1)节点行为检测的效率问题
现有的绝大多数研究成果,如文献[29-31]所述,使用了数据挖掘技术实现对P2P 网络的恶意节点探测,该方法需要庞大的数据量为节点行为分析作支撑,消耗大量的时间和计算资源.
2)证书认证体制安全问题
文献[37-38] 提出了将证书作为节点入网许可凭证,这种节点认证方法也被目前几乎所有的许可区块链系统所应用,通过可信第三方签发的数字证书实现了节点身份的合法性和可验证性,但是该方法缺乏对节点安全性的验证机制和恶意行为的记录机制,无法保证节点本身的安全性,存在节点获取证书入网后开始作恶的风险.
3 用户身份认证机制
用户身份认证是对区块链系统用户身份合法性进行判别的技术,包括用户身份注册、身份信息存储、身份信息更新和撤销等.目前,区块链环境下的用户身份认证机制研究主要包括:基于PKI 体制的用户身份认证、基于IBE 体制的用户身份认证、基于数字代币的用户身份认证、基于区块式证书的用户身份认证、基于生物特性的用户身份认证等5 个方面.
3.1 基于PKI 体制的用户身份认证
公开密钥基础设施PKI (Public Key Infrastructure,PKI)在1976年由Diffe 和Hellman 首次提出[21],是目前为解决网络系统安全认证问题所普遍采用的技术.PKI 认证体制通常采用数字证书的形式管理用户公钥,通过受信任的第三方机构— 认证中心CA(Certificat Authority,CA)签发数字证书,绑定用户的公钥和其他标识信息(如姓名、生日、籍贯等信息).PKI 体制下的用户身份证书通常与根CA 和中间CA自身的证书以链式的结构进行连接,组成一条证书链.在网络通信的过程中,用户通过向通信对方出示身份证书的方式,由通信对方遍历证书链的颁发机构密钥标识符(Authority Key Identifie,AKI),检验证书链是否存在根CA 的签名,从而验证用户身份的合法性.
在传统的比特币区块链系统中,用户通常采用椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)[40]自生成身份公私钥对,并通过标准SHA-256 散列计算函数得到用户的比特币交易地址.这种方法保证了比特币地址与用户真实身份之间的不可链接性,由此造成了比特币地址的匿名性.
为此,Ateniese G 等提出在比特币区块链中引入基于PKI 的比特币地址认证机制[41].该文献提出了一种将比特币地址链接用户真实身份的方法,即在比特币的交易区块中,通过PKI 的CA 中心在产生的区块中添加绑定用户身份信息的、经过CA 签名的比特币地址,从而生成“可验证”的比特币区块链.该方法有助于国家及相关组织对比特币持有人的身份实施监管.但是,该方法存在一个明显的缺点,那就是没有考虑区块链环境下的证书更新和撤销问题.由于区块链交易产生的区块数据只增不删,撤销或者更新某个证书(公钥地址)信息可能需要顺序遍历整个区块链,极大地增加了时间和空间开销.
相较于以数字加密货币为代表的非许可区块链(公有链)系统,PKI 在许可区块链(联盟/私有链)系统上的应用更为广泛.Hyperledger Fabric 项目是传统中心化PKI 体系应用于许可区块链系统的一个典型案例.Androulaki E 等指出:Fabric 应用了标准的PKI方法[42],为用户提供了以证书标识、数字签名为基础的身份认证服务.Fabric 提供可信第三方Fabric-CA实现CA 认证中心的功能,为注册用户提供了在线模式(Online Mode)的证书签发过程,即用户可以在线向Fabric-CA 提交证书申请,获取由Fabric-CA 签发的身份证书,作为参与Fabric 系统交易活动的许可凭证.Fabric 中的身份认证方法分为用户身份注册、用户身份验证和用户身份注销,3 个过程的算法描述分别如算法1 ~算法3 所示.
算法1.用户身份注册算法
算法1 中,用户首先向Fabric-CA 发送注册申请信息RegisterInfo,其中包含了用户身份标识Id,Fabric-CA 收到申请后首先验证注册申请信息RegisterInfo的合法性; 验证成功后Fabric-CA 根据身份标识Id,使用RSA 算法生成用户的工作密钥对(PKUser,KSUser),其中PKUser为公钥,S KUser为私钥,Fabric-CA 按照X.509 证书格式(包括版本号、用户公钥、加密算法等信息)生成用户的身份证书,并使用自身的私钥S KFabric-CA进行签名;最后,Fabric-CA向用户返回证书信息.该算法描述了Fabric 系统用户与CA 的交互过程,通过用户端向Fabric-CA 递交证书申请,由Fabric-CA 行使认证中心CA 的职责,即检查用户的身份合法性与签发用户的身份证书.
算法2.用户身份验证算法
算法2 中,对交易申请req和用户身份证书CertUser进行打包处理,生成区块链交易申请提案PropTransaction,再进行签名处理,生成签名提案SignedProp; 再将S ignedProp发送给Fabric 的验证节点群Endorsers; 在收到用户的签名提案后,Endorseri(i∈[1,n])判断提案中证书链的合法性以及签名的有效性,如果有效,对签名提案S ignedProp进行签名后加入到proposalRes中,如果无效,则加入拒绝信息Msgre ject.该算法实现了向区块链系统的工作节点验证操作用户的合法身份的功能,能够有效地排除持有非Fabric-CA 签发的伪证书或者无证书的非法用户.
算法3.用户身份注销算法
算法3 中,首先向Fabric-CA 发送证书撤销申请信息RevocationReq,其中包含用户的身份注销申请reqrevoke和用户证书CertUser;Fabric-CA 收到申请后,首先验证RevocationReq的合法性; 验证成功后,Fabric-CA 将用户证书CertUser的信息写入证书撤销列表(Certificat Revocation List,CRL)中.算法3 通过传统PKI 体制的证书撤销方法,即使用CRL 的方法,实现了过期证书或者失效证书的撤销过程,但是该过程无法实现将证书从本地文件系统中移除的功能,容易造成巨量失效证书占用本地存储空间的问题.而使用手工移除失效证书的方式则会耗费维护人员大量的时间、工作量开销.
Hardjono T 与Xia Q 等对许可区块链交易过程中的身份认证问题[43-46],在传统的PKI 认证体制基础上,基于零知识证明理论[47],提出了ChainAnchor模型.
Hardjono T 等详细描述了ChainAnchor 的模型框架和工作原理[43-44],设计了基于零知识证明理论的身份认证协议并进行了安全性、可行性的分析,在基于区块链实现的云端物联网设备中引入ChainAnchor 模型[45],描述了ChainAnchor 在用户注册过程中的身份认证方法.
Xia Q 等则将ChainAnchor 模型架构用于医疗区块链系统的身份认证工作[46].ChainAnchor 模型将CA 认证中心划分为身份发布者(Permissions Issuer,PI)以及身份验证者(Permissions Verifie,PV).ChainAnchor 为区块链系统中的注册用户提供了匿名的、可验证的身份标识,并且为用户在区块链系统中的交易活动提供保护.
ChainAnchor 模型基本架构如图3所示.
ChainAnchor 模型基本工作流程是:
1)PI 基于RSA 算法生成成员关系验证公钥KPG,成员关系临时私钥,并将KPG通过加密通信信道发送给PV;
2)用户A 向PI 提交注册申请和身份标识信息;
3)待审核通过用户的身份信息后,PI 向用户A提供KPG;
4)用户A 验证KPG的合法性,验证完成后,提取KPG的部分信息,生成身份验证元集u,返回给PI;
5)PI 依据u产生用户匿名身份的生成元集σ,发送给用户A;
6)用户A 利用σ 生成身份私钥K-1PG-Ui和交易密钥对
7)用户A 向PV 提交验证申请,在申请通过后由PV 执行基于零知识证明的EPID 方案[48],完成对身份私钥的验证,然后PV 将交易公钥KTrans存入许可数据库中;
8)验证完成后,用户可以参与区块链的交易,并使用对交易进行签名;9)由共识节点获取被签名交易区块;
10)共识节点依据交易区块的签名,查询许可数据库列表,如果可以查询到签名对应的交易公钥KTrans,则可以确认签名的合法性;
11)共识节点将交易区块加入到区块链的公共账本中.
ChainAnchor 相比传统PKI 体制的优势在于,用户可以自生成代表身份私钥和交易公私钥对,避免了CA 的单点失效问题,并且在为用户颁发合法身份凭证的同时,通过匿名化、多标识的方法保护了用户的隐私.但是该模型存在的问题是,PI 掌握用户的真实身份信息的相关数据,而用户无法验证PI 的合法性,因此这种认证方式本质上是一种单向的身份认证,它带来的危害是:一旦PI 被外部攻击者控制,非法存储或传递用户身份信息,将危害用户隐私.
3.2 基于IBE 体制的用户身份认证
图3 ChainAnchor 模型架构图
IBE 认证体制在传统的PKI 体制基础上发展而来,它的全称是基于身份的加密方案(Identity-Based Encryption,IBE).Shamir A 首次提出了IBE 的初步概念[22],Boneh D 和Franklin M 首次设计了基于IBE的身份认证协议[49].在IBE 认证体制中,用户的身份标识直接作为用户的身份生成元集,通过可信的第三方密钥生成机构— 密钥生成中心KGC (Key Generation Center,KGC),生成用户的基于身份标识的密钥对,并将密钥对通过安全的通道传输给用户.IBE 认证体制创建了用户身份与密钥之间的映射,其整体认证过程无需通过数字证书进行用户身份的绑定,从而简化了在具体应用中大量数字证书的交换和撤销问题.
Wang H 等在基于区块链的安全电子记录系统中使用KGC 生成用户的签名私钥[50],为系统中产生的所有医疗数据日志实现基于用户身份的签名(Identity-Based Signature,IBS),并将日志保存在区块链的公共账本中,保证了医疗数据在传输过程中的完整性、可验证性以及数据日志的安全性和可追溯性.
Chaieb M 等为部署在以太坊平台上的投票系统设计了基于IBE 的投票人身份认证协议[51].其中,在注册阶段,投票者向注册服务器(即KGC)出示自身的身份信息PWi,注册服务器生成投票人的身份密钥对(S KPWi,PKPWi),并通过离线的方式发送给投票者;在投票阶段,投票者向监票员出示由身份私钥S KPWi签署的选票,在得到签名合法性的验证后,计票员将该选票的记录以区块的形式写入以太坊区块链中.该协议通过IBE 解决了传统投票系统中选票人身份造假的问题,通过区块链保证了选票记录的不可篡改性.
Wei S 等提出基于区块链和IBE 认证体制的LEO 卫星通信网认证模型BAVP[52].该模型利用KGC 生成用户的密钥对和身份授权令牌,用户可以通过身份授权令牌实现登录区块链系统时的身份认证.BAVP 中的身份认证过程主要分为身份注册阶段、访问认证阶段和通信对象切换认证阶段,作者分别设计了3 个阶段的安全协议.协议中约定:PKx表示主体的公钥,S Kx表示主体的私钥,Kx,y表示两个主体x和y之间的共享密钥,{x}K则表示对消息x用密钥K加密(用私钥加密即意味着签名).具体的协议描述如下所示.
身份注册阶段指用户在初次访问系统网络时申请访问身份的过程.该过程首先由用户A 向密钥生成中心KGC 提交身份IDA,随后由KGC 审核IDA的合法性后,并在审核完成后生成A 的密钥对(PKA,S KA)和授权令牌AuthToken.协议如图4所示.
图4 身份注册协议
其中,AuthToken的组成如式(1)所示.
式中,U_Authority代表KGC 授予的用户权限,S_tarttime和S_toptime分别代表令牌有效期限的开始时间和结束时间.
访问认证阶段指拥有身份授权令牌的用户在登录区块链系统时所需要执行的身份认证过程.在该过程中,用户A 和节点S 首先通过KGC 的公钥PKKGC计算出对方的公钥,再由S 向A 分发会话密钥KS,A,A 在确认消息后在Msg3 中向S 发送访问申请reqS ervice、身份授权令牌AuthToken和用户基本信息infoUser,S 在验证了这些信息的合法性后,向A提供访问服务S erviceAccess,并打包A 的认证记录,最后将记录以交易区块的形式加入到区块链中.访问认证协议的执行过程如图5所示.
图5 访问认证协议
其中,m1的组成如式(2)所示.
式中,timestamp代表当前的时间戳,r代表随机数.
通信对象切换阶段是指用户将通信对象由初始节点S1转移至相邻的另一个节点S2时所需要执行的认证资源的转移过程.协议的执行过程如图6所示.在该过程中,用户首先将切换申请(即Msg1 中的IDA,IDS2)发送给S1,S1确认了申请的合法性后将“切换许可”消息m2发送给A,随后A断开与S1的连接,并在Msg3 中通过转发消息m2的方式同另一个通信对象S2取得联系,双方在Msg4 中约定会话密钥,完成通信对象的切换.
图6 通信对象切换协议
在这个协议中,消息m2的组成如式(3)所示.
式中,S erviceHandover代表切换对象服务,由节点Sx提供.
BAVP 模型通过IBE 体制的相关方法生成用户的身份授权令牌,实现了轻量级的身份认证,降低了存储空间的开销; 通过将认证日志以交易区块的形式记录在区块链中,保证了认证结果的公共性和权威性,同时还能提升审计工作的效率.该方法结合了IBE 体制和区块链技术的优势,实现了由用户驱动的、透明化的身份认证.
3.3 基于数字代币的用户身份认证
基于数字代币的用户身份认证是利用公有链的数字代币功能,将数字加密货币(如比特币)作为身份的许可凭证,实现对用户的身份认证.
Raju S 等基于以太坊钱包,通过将公钥地址与用户身份信息的绑定,在认知蜂窝网络中实现了对入网用户的身份信息管理[53].Sanda T 等使用比特币2.0 技术建立了无线网络的用户身份认证机制[54],该方法将数字货币作为用户身份凭证,通过基于比特币钱包的认证管理中心Auth-Wallet 为合法注册用户分发用于登录认证的数字令牌“Auth-Coin”,拥有这种数字令牌的用户即可在登录过程中通过身份认证,从而访问无线网络.该方法的优势是用户在登录认证的过程中不需要透露自身的用户名、口令等信息,简化登录过程的同时,减少了用户隐私泄漏的风险.
不同于Raju S、Sanda T 等以数字货币作为身份凭证的方法,Matsumoto S 等结合以太坊平台的工作特性[55],提出了改进的PKI 架构—IKP 模型(Instant Karma PKI,IKP),其组成架构如图7所示.
图7 IKP 框架图
IKP 基于以太坊平台进行设计,以颁发数字代币的经济激励形式促进CA 的发证工作,并对颁发非法证书的CA 收取一定额度的数字代币作为惩罚.IKP 引入了第三方的探测工具,检测网络中的非法证书并进行上报.参与IKP 的组织域通过发布域证书策略(Domain Certificat Policy,DCP)来规定域内证书的标准,所有违反DCP 的证书都被视为非法的证书.成员CA 在IKP 中注册响应策略RP(Reaction Policy),RP 规定了发布非法证书的CA 应执行的赔付金额.同时,如果探测工具上报非法证书的情况属实,也可以获得相应的代币奖励.
3.4 基于区块式证书的用户身份认证
基于认证中心的集中式证书颁发体制已经难以适应规模日益庞大的网络环境[56-58],因此,可以利用区块链的不可篡改和伪造、分布式存储的特点,优化传统的PKI 体制,建立以区块为单元的分布式证书链,实现去中心根的分布式身份认证.
Fromknecht C 等首次提出了基于区块链技术的分布式证书管理模型Certcoin[59],它利用了区块链系统的链式公共总账记录用户证书,并将用户身份与证书公钥相关联,从而在区块链中实现了PKI 体制的去中心化.在Certcoin 模型中,去中心化的证书签发与记录机制,避免了CA 的单点故障问题;另外,Certcoin 中的任何用户都可以在区块链上查询证书签发过程,解决了传统PKI 技术存在的证书签发过程不透明的问题.
Certcoin 架构如图8所示.
图8 Certcoin 架构图
Certcoin 以交易区块的“产生确认上链”周期替代了传统的数字证书的生命周期,通过发布用户ID、公钥信息实现了证书的注册、更新和撤销过程,通过上链后的交易区块不可篡改的属性来确保证书的安全性.
由于Certcoin 模型直接将公钥链接用户真实身份的方式,因此,不适用于物联网、车载网、金融交易等需要保护用户身份隐私的环境.针对这些特定的环境,Axon L 改进了Certcoin 模型,提出了一个隐私感知的身份证书管理模型PB-PKI[60].PB-PKI 模型不同于Certcoin 直接通过公钥链接用户真实身份,而是通过线下密钥(Offline Keys)对线上密钥(Online Keys)进行加密的方式,隐藏用户真实身份,实现对用户隐私的保护.
3.5 基于生物特性的用户身份认证
生物特性具有唯一性和在一定时间内不发生明显变化的稳定性[61].近年来,基于生物特性识别的身份认证技术也在区块链系统的身份认证领域得到了应用.
Hammudoglu J S 提出了一种基于区块链的生物认证方案[62].该方案提取用户指纹信息的二进制特征向量,经过Hash 处理后以数字摘要的形式存储在新的交易区块中.在交易的过程中,交易接收方通过验证区块的数字摘要信息的完整性,确认交易发送方的用户身份是否合法.
基于区块链技术,周致成等提出了生物特征结合动态口令的跨域认证方案[63].该方案使用模糊提取技术[64]提取生物特征,生成随机密钥,利用区块链结构存储生物特征的公开信息,基于区块链去中心化的数据存储功能,设计了用户在本地和异地环境下的跨域认证协议,通过区块链不易篡改的特性解决了模糊提取技术易受主动攻击威胁的问题.
Nandakumar K 等设计了一套基于生物特性令牌的区块链身份认证与管理系统SOBT[65],它的系统框架如图9所示.系统基于用户的生物特征模板(如指纹、虹膜等信息)生成生物特征数据,并加入到加密的数字令牌中分发给相应用户,用户在登录系统时需要提供加密令牌和自身的生物特征模板来完成身份认证.该方法主要分为身份注册和身份验证两个阶段.
身份注册阶段的工作流程:
1)用户向系统提供注册需要的生物特征样本,即生物特征模板be,利用随机生成的密钥K1,使用对称加密算法(如AES 算法)对be进行加密,得到加密数据E(be,K1);
2)节点i(1 <i<N)作为分发者(Issuer)使用Shamir 密钥共享算法[66]将密钥K1划分成n个密钥碎片并通过其余区块链节点的加密公钥EPKn进行加密处理,最终得到共享的密钥碎片集合再由该节点将密钥碎片分别发送至全网节点中;
3)节点i创建IssueToken 类型的区块链交易提案(提案包括:交易ID、令牌状态、加密生物特征模板的Hash 值H(E(be,K1))和密钥碎片集合S,再使用其签名私钥S S Ki签名后将其广播给网络中的其他区块链节点,收到交易的节点通过检查签名验证交易的有效性,经过区块链共识机制完成交易的检验,通过后将交易写入区块链账本中;
4)如果交易写入成功,则系统分发给用户该加密令牌,完成身份注册.
身份验证阶段的工作流程:
1)用户需要向系统出示生物数据加密令牌和自身的生物特征模板ba,节点j(1 <j<R)作为验证者(Verifier)验证令牌和生物模板ba的有效性,并将用户登录信息连同验证数据打包成RedeemToken 类型的区块链交易提案,广播给其他节点;
2)其他节点在通过验证后通过自身的解密私钥ES Kn对密钥碎片集合S进行解密,得到自身的密钥碎片,并使用验证节点j的加密公钥EPKj进行加密,得到新的共享的密钥碎片集合并发送给节点j;
图9 区块链身份认证与管理系统SOBT 框架图
3)j通过解密S′得到密钥K1的碎片,并将碎片重新生成K1,对E(be,K1)进行解密处理得到be,并将ba与be进行匹配,根据匹配度判断用户身份的合法性.
在SOBT 中,生物加密令牌的生成信息被记录在区块链系统的公共账本中,而解密密钥的碎片则分散地存储于区块链节点中,只有获得超过阈值M的密钥碎片时才能完成密钥的恢复.这些功能保证了数字令牌的不可篡改性以及用户生物特性数据的安全性和隐私性.同时,该方案还提供了令牌撤销机制,使令牌具备不可重用性,有效避免了令牌丢失、被盗的现象.
综上可以看到,区块链系统用户身份认证的研究在基于PKI 体制、基于IBE 体制、基于数字代币、基于区块式证书、基于生物特性等5 个方面展开并取得了一定的研究成果:
1)将传统的PKI 体制、IBE 认证体制引入区块链,在区块链环境下实现了基于可信第三方的身份认证机制; 并利用区块链的分布式特性改造了PKI体制中心化的结构,实现了去中心化的PKI 建设.
2)结合区块链的金融功能,以数字代币作为用户的身份令牌,简化了用户登录认证的流程.
3)利用区块链不可篡改的属性,将用户的生物特征信息存储在区块链中,实现了用户身份的唯一性认证.
需要对区块链系统用户身份认证机制作进一步研究的问题有:
1)身份认证单向性问题
绝大多数的区块链系统,如文献[41,43,46,51,63,65]等所述,其身份认证机制为单向的认证机制,即通信双方只有一方被另一方验证身份,这种认证方式容易受到类型缺陷攻击,如Clark&Jacob 攻击[67]、Abadi 攻击[68]等,容易产生非法用户通过伪装身份进入系统的风险.
2)PKI 体制中心化问题
PKI 体制作为目前主流的密钥认证体制,在区块链系统的身份认证机制的研究中被广泛地使用[4,46].PKI 自身存在的中心化问题在许多方面与区块链系统去中心化的宗旨不符:CA 被攻击或恶意的CA 签发证书将为区块链系统带来重大的安全隐患,攻击者可以通过攻击用户所信任的CA 来签发包含虚假信息的用户证书,从而实现中间人攻击; CA 签发证书的过程无法被用户所验证,存在证书透明度问题;如果CA 的签名失效,将会影响CA 签发的所有证书的正常使用,存在单点故障问题;另外,不同CA 所签发的证书无法直接进行交叉认证,存在跨域访问的认证难题.
3)证书更新/撤销问题
应用传统PKI 体制的区块系统,如文献[41-42]所述,其中的证书更新或撤销受通信环境、存储空间、网络时延等因素的影响,难以完成实时的证书更新或撤销操作,易受到重放攻击的影响;
4)IBE 体制安全问题与开销问题
文献[50-52]论述了IBE 体制在区块链系统中的实际应用,IBE 中的KGC 能够生成所有用户的私钥,使其可以容易地获取用户私钥,进而能够在不被用户所察觉的条件下解密用户密文或伪造用户签名.因此,使用IBE 体制的用户必须保证KGC 完全可信作为使用前提,但是这一点在区块链系统的分布式网络环境中难以实现.另外,IBE 体制相较于PKI 体制,它的密钥生成算法基于对(Pairing)的计算实现,在计算次数、算法复杂度等方面要明显地高于PKI体制,如文献[52]所述,基于IBE 实现的身份认证机制加重了区块链系统的计算开销.
4 用户权限管理机制
用户权限管理机制用于对用户在区块链系统中的访问控制权限实施管理,以阻止非法用户对系统内的数据、服务、存储空间等高价值资源的访问和使用,从而保证数据的安全和业务的正常运转.目前,区块链系统中的用户权限管理机制研究主要包括基于区块链交易的用户权限管理和基于智能合约的用户权限管理两个方面.
4.1 基于区块链交易的用户权限管理
在区块链上记录的数据具有公开透明、不可篡改的特性,因此,可以使用区块链交易过程中产生的交易区块记录用户的访问控制策略,以此来实现对用户访问控制权限的管理.
在自主访问控制模型的基础上,Zyskind G 等提出Zyskind 机制[69],以区块链交易的形式实现了对移动设备应用程序的权限管理.每个用户和应用程序都拥有一个公钥地址作为身份令牌,并由两类身份令牌共同组成复合身份(Compound Identity),通过发布不同类型交易的形式实现对访问控制权限的管理.Zyskind 框架如图10 所示.
User 表示用户,Service 表示应用程序或服务,Taccess是附着有权限管理策略的交易类型,Tdata表示访问数据的交易类型,DHT表示分布式哈希表,用于存储交易区块索引的数据.
Maesa D 等提出了Damiano 模型[70],采用了区块链交易的形式管理基于标准XACML 框架的访问控制策略.该模型基于比特币区块链系统实现,对基于属性的访问控制模型的标准工作流进行了扩展,使用区块链对访问控制策略进行创建、更新、存储,通过区块链交易的形式对访问控制策略进行执行.
图10 Zyskind 框架功能示意图
Damiano 系统结构如图11 所示.
Damiano 中的交易类型包括策略创建类型交易(Policy Creation Transaction,PCT)和权限转移类型交易(Right Transfer Transaction,RTT),PCT 表示权限策略的创建、更新和撤销事务,RTT 表示不同用户之间的权限策略转移事务.
Damiano 模型执行用户权限管理的工作流程:
1)用户首先向资源发送访问请求,并通过资源中的策略执行点(Policy Enforcement Point,PEP)将请求转发给授权系统中的上下文处理器(Context Handler,CH);
2)CH 向策略管理点(Policy Administration Point,PAP)发送策略查询请求,PAP 在请求中提取RTT 链接,并在区块链中检索所有与此链接相关的RTT;
图11 Damiano 系统结构图
3)PAP 整合检索得到的RTT 数据与原始访问请求,生成一个标准的XACML 策略,并返回给CH;
4)CH 请求策略信息点集(Policy Information Points,PIP)检索XACML 策略中的相关属性;
5)PIP 执行检索工作,将获取的属性信息嵌入到原始访问请求中生成新的请求,并转发新请求给策略判决点(Policy Decision Point,PDP);
6)由PDP 对用户的访问权限进行评估,并将评估结果(同意或拒绝)返回给CH;
7)CH 将评估结果发送至PEP,由PEP 执行策略.
Damiano 在生成PCT 后,通过在原有PCT 的基础上增加额外的交易输出,生成新的PCT 并将其链接入区块链中,从而实现权限策略从创建到更新、撤销的生命周期的管理.另外,权限策略及其转移行为保存在区块链的交易区块中,还实现了公开的、不可篡改的记录审查功能,能够有效防止参与者伪造已被策略授予的权限.
Ouaddah A A 等为解决物联网IoT 设备中存在的用户访问权限的控制与管理问题[71-73],提出了FairAccess 模型.在论述IoT 设备访问控制机制的基础上[71],对区块链IoT 访问控制机制研究的现状和发展趋势进行了综述; 针对IoT 设备存在的问题[72],设计了基于区块链技术的IoT 系统;针对该系统的权限管理问题,提出了FairAccess 模型并设计了模型核心部分的安全协议;详细描述了FairAccess 模型的模型整体架构、访问控制策略和功能实现算法[73],根据原型系统的演示实例验证了FairAccess 的可用性.
FairAccess 模型框架如图12 所示.
FairAccess 模型将用户的访问控制策略通过的二元组(resource,request)的形式存储在区块链中,使用比特币钱包Wallet 作为授权第三方,通过向得到访问授权的用户发放授权令牌的形式实现了权限管理机制.拥有授权令牌的用户能够访问区块链系统内对应的自治组织,令牌由各个自治组织的私钥签名,以此来保证令牌的不可伪造性.
除此之外,FairAccess 还引入了比特币的交易机制:不同用户的比特币交易通过未支付交易输出UTXO(Unspent Transaction Output)实现,交易的输入是交易发起方在上一次交易中得到的UTXO,输出是交易过程中新创建的、数额不超过输入值的UTXO.与比特币的交易机制类似,FairAccess 使用授权令牌来替代UTXO,通过GrantAccess Transaction、GetAccess Transaction、DelegateAccess Transaction 3 种交易类型分别实现了授权、权限获取和权限分发.
FairAccess 通过授权令牌的分发,简化了区块链IoT 设备处理用户权限信息的操作步骤,减小了计算开销,实现了高效、透明的用户权限管理.
4.2 基于智能合约的用户权限管理
智能合约(Smart Contract)由法国学者Szabo 在1995年首次提出,是一种通过计算机代码自动执行合同条目的交易协议[74].在区块链中,智能合约是指存储在区块链上能够自动运行的程序[75],具备可编程性、原子性、一致性等特点.只要满足了智能合同的相关条款,区块链交易将在无第三方监督的条件下自动地执行.一些学者希望利用智能合约的特点,通过使用智能合约来实现对用户访问区块链数据的权限管理.
为解决医疗数据共享度低、隐私保护不足等问题[76-77],结合以太坊区块链平台和智能合约的工作特性,MedRec 模型被提出.MedRec 将智能合约与访问控制机制相结合,在以太坊区块链中实现了对不同医疗组织下属医疗数据的整合和自动化的访问控制.Azaria A 等简述了MedRec 的组成和工作原理[76],并从可用性和安全性的角度对MedRec 模型进行了证明;针对医疗机构中数据普遍存在安全、效率问题[77],Ekblaw A 等引入基于MedRec 的区块链系统,详细论述了MedRec 的工作过程以及核心的实现原理.
图12 FairAccess 模型框架
图13 MedRec 的智能合约框架示意图
MedRec 包括了3 种类型的智能合约:Registrar Contract 合约用于注册病人身份,Summary Contract合约用于关联病人的身份信息与权限信息,Patient Provider Relationship 合约用于对数据访问行为执行操作权限的管理,如图13 所示.
MedRec 的优势在于:
1)基于区块链技术的去中心化属性,实现了跨医疗组织的医疗数据整合,提高了医疗数据的共享程度;
2)依照智能合约的工作模式,医疗组织无法在未获取病人许可的前提下私自使用病人医疗数据,有效地保护了病人的隐私.
MedRec 使用了PoW 共识机制,使得区块链节点维持数据一致性所需的计算开销庞大,并且达成一致性的时间较长,不适用于对医疗数据时效性要求较高的环境.为此,Xia Q 等对MedRec 框架中的共识机制进行调整[78],使用DPoS 共识机制[79]替代PoW 共识机制,减轻了区块链节点的计算压力;该方案还采用了代理重加密的方法对医疗数据的访问权限进行管理,在保护数据隐私的同时,有效地提高了数据共享效率,但也存在数据存储能力有限的不足.
区块链系统在用户权限管理方面取得的研究成果有:
1)将区块链技术结合当前主流的访问控制模型(如DAC 模型、MAC 模型、ABAC 模型等)和标准访问控制策略语言(如XACML、SAML 等),能够实现用户对系统或数据库资源的访问权限管理.
2)利用了区块链不可篡改、时序性的特征,将用户的访问控制策略写入生成的交易区块中,即通过区块链存储与管理用户的权限.
3)将智能合约作为用户访问控制策略的存储媒介,利用智能合约自动化、强制性的特点,执行访问控制策略.
综上分析,区块链系统用户权限管理机制研究中存在的问题是:
1)多域访问权限管理问题
从文献[67-68,70,74,76]中可以看出,当前大多数的区块链系统用户权限管理机制主要是用来实现对单一服务或机构内部用户的权限管理问题,没有解决实际应用场景中多个服务域、组织域之间不同用户的跨域访问的权限管理问题.
2)权限管理细粒度控制问题
文献[67-68,70]中介绍的用户权限管理机制仅能实现强访问控制形式的“允许访问”和“拒绝访问”功能,没有将权限作用对象做进一步的划分,无法实现对用户权限的细粒度控制.
3)用户权限管理的安全问题和效率问题
基于区块链交易的用户权限管理机制中[67-68,70],权限信息公开在区块链的公共总账上,容易被攻击者利用,从而产生安全问题; 另外,区块链交易确认需要时间(如比特币区块链系统10 min左右才产生新的区块),无法对用户的实时请求进行响应.
5 结论
区块链系统已建立了节点认证、用户身份认证、用户权限管理的认证体系,为区块链系统或基于区块链的信息系统的安全认证提供了强有力的技术支持.现有区块链系统认证机制还不够完善,存在效率低、非国产化、不可自主控制等问题,难以适应当前网络空间中大规模网络认证、现场认证的需求,不能有效地支持云计算、大数据、安全操作系统、安全数据库、安全应用软件等,PKI 证书认证也好,IBE 标识认证技术也好,都不能实现自主控制.因此,需要在区块链系统中引入基于国产密码算法的标识证书认证体制—CFL 认证体制[80],构建自主可控、去中心化、更安全的区块链系统认证机制.同时,需要解决区块链系统用户身份认证的单向性问题和证书撤销问题,需要解决用户权限管理的细粒度控制问题,并通过基于角色的访问控制模型(RBAC 模型)和区块链智能合约,为不同操作角色的用户编写区块链系统的访问控制策略,解决区块链系统用户权限的自动化管理和细粒度用户权限管理问题.
随着认证技术特别是区块链系统认证技术研究的深入进行,区块链系统认证体制、认证技术和认证方式必将日趋成熟与完善,区块链系统认证体制也将迎来更广阔的发展空间,展现出区块链系统更加安全的特性与应用价值.