滕鹏国,刘 飞
(中国电子科技集团公司第三十研究所,四川 成都 610041)
随着网络信息技术的不断发展,各类实体事物越来越多地借助数字化形式完成自身信息全方位地呈现,并实现信息的快速传播共享。人们也更加倾向于利用应用信息系统满足自身工作和生活的需要。数字现代化已经成为未来社会的发展趋势,影响着社会发展的方方面面。
大数据、云计算、人工智能等新兴信息技术,进一步推动了社会数字化进程的发展。数字化逐渐改变了书信、动作、声音等传统信息承载方式对时空的依赖性,并作为一种新型信息的承载形式,既保证了信息传递的准确性、可靠性和长久性,又实现了信息的高效快速传播。因此,越来越多的个人、企业、组织选择通过磁盘、数据中心等媒介,将自身或相关实体信息进行数字化承载,以满足自身使用需求。
然而,现实世界各类实体信息的数字化呈现,在为人们的工作生活带来各种便利的同时,也容易遭到各类非法用户的违规使用或恶意破坏,给个人、企业、组织带来巨大的经济、业务、声誉等方面的损失。为了保障数字信息的安全性,各类安全防护技术和系统应运而生,从网络安全、计算设施安全、数据安全、应用安全、实体安全等方面保障数字信息在传输、使用、存储、共享和销毁等过程中的安全,其中身份认证技术作为实体安全的重要组成部分,受到极大的关注。
针对各类组织机构在广域环境下的去中心化身份认证需求,基于区块链技术,提出了一种无中心的身份认证方案。该方案通过建立基于区块链的实体身份网络,将人员、设备、应用等实体身份信息保存在区块链上,实现实体身份信息的就近快速验证,从而提升信息数据访问效率。
目前,随着网络信息系统的不断发展,信息网络结构正变得日益复杂,网络边界逐渐模糊,传统基于边界的网络安全防护难以满足内部人员的非法访问或操作。因此,业界提出了零信任结构,以增强系统数据访问的可靠性。零信任结构遵循“从不信任,总是验证”的设计原则,假定所有实体都是不可信的,需要不断地评估网络安全风险,并制定措施来增强各类实体身份的可信度。零信任架构理念[1]最初由John 在2010 明确并正式提出,2011年,Google 公司基于这一理念开展BeyondCorp 项目进行实践[2]。2017 年Gartner 在安全与风险管理峰会上发布持续自适应风险与信任评估(Continuous Adaptive Risk and Trust Assessment,CARTA)模型,并提出零信任是实现CARTA 宏图的基础。2020 年美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布了零信任架构草案(第二版)[3],零信任理念目前得到了业界的广泛认可,但还处于技术探索和研究阶段[4]。为了实现零信任理念,需要研究实体身份认证相关关键技术,为零信任模型下实体身份的快速识别认证提供支撑。
区块链技术[5]由于其良好的抗抵赖性和无中心等特点,为用户身份认证提供了新的方式。区块链按照共识机制,利用当前参与的节点进行交易数据的维护和更新,使用密码学原理完成交易,从而使得达成一致的双方可以直接进行交易,不需要第三方进行介入。区块链技术通常需要包括以下几个方面的概念:区块链交易,在区块链网络中,所有实体身份的注册、管理都会被视为交易,带有交易号,并利用共识机制保存在整个区块链中;区块,主要记录当前最新的交易信息,且不能被其他先前的区块记录;区块链,各个区块之间,通过前一区块交易号逐个相连,同时,区块信息一旦被记录在链上就不能被改变或删除,最终形成一条记录身份信息的链条。
区块链技术由于不需要交易第三方的参与,从而具有无中心的特点,并通过共识机制,实现区块链上信息的快速共享,能够避免信息交换瓶颈、流程复杂等集中化管理的缺陷。因此,利用区块链技术将各类实体身份信息保存在链上,进行身份信息的去中心化管理,具有非常重要的实用价值。
本文基于区块链技术,提出了一种基于区块链的身份认证方案,能够实现实体身份信息的去中心化管理和分布式认证。
随着网络信息系统的不断发展,信息资源的异地获取、广域共享的需求越来越明显,针对多用户、多设备、多样式的广域联合协同数据信息使用场景,面向不同用户实体,如人员、设备、应用等的数据访问共享需求,为满足灵活、高效、便捷的身份认证要求,本文提出了一种基于区块链的身份认证系统模型,如图1 所示,能够提升应用数据信息快速传播和数据共享能力。
在该模型中,用户通过提交自身身份认证信息至身份认证系统,完成用户身份信息的注册和上链;当用户访问业务系统时,业务系统将用户身份发送至区块链身份信息处理服务器上,并获取区块链中相应用户实体的身份信息;服务器通过对用户实体身份进行识别验证,并将结果反馈给业务系统;最终由业务系统根据反馈结果决定是否允许用户实体访问相关的业务数据。
基于区块链的身份认证系统主要包括用户实体、业务系统、身份信息处理服务器,区块链网络节点等部分,系统使用模型如图2 所示。
用户实体:访问业务系统的各类用户,包括人员、应用、设备等形式。
业务系统:提供各类业务数据的应用信息系统,需要对访问系统的实体进行鉴别。
身份信息处理服务器:提供用户实体身份信息的采集、封装、解封、识别等能力。
区块链网络节点:提供用户实体身份信息上链和查询等能力。
图1 基于区块链的身份认证系统结构
图2 实体身份区块链使用模型
在基于区块链的身份认证系统中,通过将用户实体身份信息安全上传并保存在区块链上,并进行广播和数据共享,区块链网络中的任意服务节点均可获取实体相应的身份信息,并进行核对校验,从而能够实现对用户实体身份的快速识别认证。
基于区块链的身份认证系统中,用户实体身份信息将封装在链中的各个区块中,通过链式管理,以及相关的共识机制,使得各类上链实体身份信息无法被窜改或抵赖,从而为实体的准确识别提供有力保障。用户身份信息以区块的形式永久保存在区块链中,区块分为区块头和区块体两部分:区块头主要保存了前一区块的哈希值、时间戳以及参与共识的相关信息;区块体主要包括用户实体的各类身份信息以及各种属性信息,包括用户身份ID、全域用户身份标识信息、用户身份数字签名信息等方面数据。具体可如表1所示。
表1 参数说明
用户实体身份信息形成区块后,提交区块链网络节点进行验证,并按照时间顺序加入原有区块链中。区块之间通过Hash 值进行连接,原有区块链的唯一标识就是这个Hash 值,新区块通过在头部记录Pre-Hash 就能找到原有区块链所连接的区块,随着不断有新区块加入区块链中,从而形成一条链式结构,也是用户实体身份区块链。
基于区块链的身份认证方法,通过将用户身份信息封装为各个区块,然后连接起来形成公链信息,实现用户身份信息的上链共享。用户的身份信息,包括用户身份ID、唯一身份认证信息、身份签名信息。用户通过对用户身份ID、用户唯一身份标识进行Hash,再利用用户私钥进行加密,完成对用户身份的签名。区块交易头ID,通常为用户身份信息的Hash 值。每个区块都要记录自己以及前一个区块的交易头ID,以便完成身份信息组链。
用户身份注册的流程如下所示:
(1)用户Ui输入自己的用户身份UIDi、唯一身份认证信息UAIi、密钥加密口令PKWi(用户进行注册时,用户设置的密钥加密口令)进行注册,并且通过安全信道传输给身份信息处理服务器S。
(2)身份信息处理服务器S 收到用户发送的身份信息(UIDi,UAIi,PKWi),利用密钥加密口令PKWi,根据RSA 公私钥对生成算法,生成加密公私钥对(PRKi,PBKi),其中私钥为PRKi,公钥为PBKi,并将用户公钥PBKi作为用户的全域身份标识信息GIDi,也即GIDi=PBKi。
(3)身份信息处理服务器S 根据生成的用户全域标识信息GIDi,核查GIDi信息是否已经使用,如果GIDi信息已经存在,则用户身份注册失败,返回第(2)步,重新生成GIDi信息,否则进入下一步。
(4)身份信息处理服务器S 将用户Ui的身份信息,包括私钥PRKi和用户全域身份标识信息GIDi发送给用户Ui,由用户进行妥善保管,并通知用户预注册成功。
(5)身份信息处理服务器S 将用户的UIDi、唯一身份标识UAIi进行哈希运算,得到用户身份信息摘要SMi=H(UIDi|UAIi),并利用用户私钥PRKi对用户身份信息摘要SMi加密生成用户身份数字签名SNi。
(6)身份信息处理服务器S 将用户身份UIDi、用户全域身份标识信息GIDi以及用户身份数字签名信息SNi,通过安全信道传输给区块链的网络节点x。
(7)区块链的网络节点x接收到相关用户信息后,组装成交易数据并附上交易号广播到整个区块链网络中,交易通过相关的共识机制记录到新的区块中,最终形成新的区块链。
(8)当新的区块上链后,身份信息处理服务器S 通知用户Ui其身份信息正式注册成功。
用户身份认证的流程如下所示。
(1)用户Ui借助业务系统输入自己注册成功的用户身份UIDi,唯一身份认证信息UAIi、密钥加密口令PKWi和用户全域身份标识信息GIDi*,由业务系统发起身份认证请求,并将用户身份信息通过安全信道传输给身份信息处理服务器S。
(2)身份信息处理服务器S 收到来自用户Ui的身份信息,将UIDi和GIDi*通过安全信道发送到任意一个区块链节点N上,然后根据用户UIDi查找注册时存储在数据库中的GIDi,并判断GIDi*和GIDi是否一致:
①如果GIDi*=GIDi时,则说明用户所拥有的全域身份标识信息和数据库中存储的全域身份标识信息一致,则执行下一步操作。
②如果GIDi*≠GIDi时,则用户所拥有的全域身份标识信息和数据库中存储的全域身份标识信息不一致,则登录认证失败,需重新输入用户信息,返回步骤(1)。
③身份信息处理服务器S 就近选择区块链网络节点N,并接收用户在区块链中保存的用户身份数字签名信息SNi。
④身份信息处理服务器S 利用用户全域身份标识信息GIDi*和密钥加密口令PKWi对用户身份数字签名信息SNi进行解密,得到用户身份信息摘要SMi,并通过Hash 函数计算出当前的信息摘要。
(5)身份信息处理服务器S 验证用户身份信息摘要SMi和SMi*是否一致:
①如果SMi=SMi*,则用户Ui认证输入的信息和存储在区块链数据库中的原始信息一致,身份认证成功。
②如果SMi≠SMi*,则用户Ui认证输入的信息和存储在区块链数据库中的原始信息不一致,则身份认证失败。需重新输入用户信息,返回步骤(1)。
(6)身份信息处理服务器S 将用户身份认证成功结果返回给业务系统,业务系统根据用户访问情况,为用户提供信息访问数据。
由于区块链系统作为一种无中心的分布式记账环境,为了保证数据的可靠性和安全性,区块链上的区块数据信息均不可进行修改或调整,因此具有不可篡改和伪造的特性,能够有效保障区块链中数据的真实性和抗抵赖性。但相应地也为用户身份信息的修改、更新等带来了一些的麻烦,因此需要重新设计用户身份信息的更新修改方案。
本方案拟通过添加新区块信息的形式进行用户身份信息的更新。针对用户更新身份信息的情况,身份信息处理服务器S通过注册新的用户身份信息,得到全新的全域身份信息标识GIDi,并利用新的身份信息进行用户身份的识别认证,从而实现用户身份信息的更新。
区块链系统中,缺乏中心管理节点对每一笔交易进行确认和一致性保障,因此让区块链各网络节点对每笔交易形成共识非常重要。在区块链网络中,比较常见的共识机制包括工作量证明机制(Proof of Work,PoW)和权益证明机制(Proof of Stake,PoS)。其中,PoW 通过工作量证明来决定节点是否拥有记账权力,工作量越大,则节点记账的机会越大。PoS 通过证明节点拥有的代币数量和时间长度决定节点是否具有记账的权利。
基于区块链的身份认证方法,主要针对强管控、强监管环境下的身份认证服务,因此可以选择低开效的共识机制。如通过轮询或系统规则制定的方式,进行区块链网络节点的选择。因此,区块链上链设备的选择可根据轮询或系统规则匹配的方式进行区块信息的上链,而避免通过Pow 和PoS 机制竞争上链,以减少计算和通信资源的过度浪费,有效保障业务系统的可靠运行。
基于区块链的身份认证系统主要具备以下特点。
(1)去中心化管理
通过采用区块链技术,将用户身份信息和认证数据以区块形式安全保存在区块链网络上,并通过区块链网络的传播共享,使得各个区块链节点上均可获取区块链网络中各个实体的身份信息,从而实现身份信息的去中心化管理。
(2)分布式认证
由于各个用户实体的身份信息保存在区块链上,各个区块链网络节点均可获取区块链网络中的实体身份信息,从而任意区块链网络节点均可对用户实体身份信息进行识别认证,实现用户实体身份的就近识别,提升用户实体身份认证效率,并能有效支撑用户实体的异地登录认证需求。
(3)身份信息容量大
本方案通过采用用户公钥作为用户全域身份标识,并结合用户身份信息和唯一身份认证信息完成用户实体身份的识别。其中,用户公私钥对采用RSA 生成算法,通常设置公钥长度不低于1 024 bit,则用户全域身份标识空间则不小于21024,从而能够有效保障海量用户身份的注册上链。
(4)安全性较高
本方案通过使用用户的指纹、人脸、指静脉等生物特征信息作为用户实体识别认证手段,能够更加真实准确反映用户实体身份信息,有效保障用户身份识别的准确性和可靠性。此外,为保护用户指纹、人脸等生物特征信息的安全性,也可考虑对用户多种生物特征信息融合数据作为实体身份的唯一认证标识。
本文提出了一种基于区块链的身份认证方法。利用区块链技术无中心、分布式管理特点,通过将实体身份及认证信息安全保存在区块上,构建身份认证区块链网络,实现用户实体身份的分布式认证识别,并支持身份信息的去中心化管理,能够有效避免传统集中式用户身份管理系统单点故障风险,提升实体身份识别认证效率。