APP下载

基于区块链和PKI的身份认证技术研究

2024-03-05李铭堃马利民王佳慧

信息安全研究 2024年2期
关键词:数字证书服务端长安

李铭堃 马利民 王佳慧 张 伟

1(网络文化与数字传播北京市重点实验室(北京信息科技大学) 北京 100101)

2(北京信息科技大学计算机学院 北京 100101)

3(国家信息中心信息与网络安全部 北京 100045)

身份认证是计算机及网络系统确认操作者身份的过程.身份认证技术经过长期发展,出现了:短信认证等非生物认证;指纹、视网膜认证等生物认证;也出现了数字签名和短信密码组合的多因素认证.在诸多认证方式中,基于非对称密码算法的公钥基础设施(public key infrastructure, PKI)技术是应用广泛的身份认证技术[1].PKI由密钥管理中心、证书认证机构(certificate authority, CA)、证书系统等组成,根据不同根证书划分成不同PKI域,根据PKI域将身份认证划分成域内认证和跨PKI域间认证.数字证书是用于身份认证的数字凭据,包含公钥、数字签名等信息,是PKI技术中重要组成部分.

PKI原理是基于信任锚沿着信任路径的信任传递,信任锚是CA中心根证书,信任路径是证书链[2],该认证体系存在中心化问题,CA节点宕机或被攻击将导致整个信任域功能丧失[3].在域内认证和域间认证中,PKI技术必须围绕数字证书作大量证书解析、证书路径构建、证书有效性验证、签名验签等操作,需要不断与上级CA进行数据通信和数据交互,认证流程较为繁琐.

区块链技术最早于2008年中本聪发表的论文中有所阐述[4],作为一种分布式账本技术,具有点对点传输、加密安全、不可篡改和去中心化等特点.区块链本身不具备身份认证功能,但可以基于共识机制建立分布式的信任验证,解决PKI技术中单点故障、中心渎职[5]等问题.刘腾飞等人[6]阐述了区块链在工业互联网领域和公共服务领域的应用前景,同时提出各国应当推动区块链数字身份系统建立的观点.首个基于区块链的分布式PKI系统Certcion由麻省理工大学的Connoer提出[7-8],该系统完成证书签发后,将用户身份数据和证书本身数据存储于区块链中,以公开方式将用户身份和公钥作绑定.但该系统链上数据未进行处理,存在用户信息隐私泄露风险.Axon[9]提出一种改进的Certcion方案:带隐私保护的PKI认证系统.滕鹏国等人[10]提出一种基于区块链的身份认证方案,该方案减少了认证过程中证书解析、签名验签等操作,但该方案使用RSA算法,计算开销较大且无法实现密码算法自主可控.该方案证书撤销操作通过用户新注册证书方式实现,计算开销较大且用户旧证书和私钥泄露会造成假冒身份的安全隐患.马晓婷等人[11]结合区块链技术和国密SM9算法提出一种基于区块链技术的跨域异构认证方案,设计了跨域认证协议和重认证协议.周致成等人[12]提出一种基于区块链的高效跨域认证方案,通过颁发跨域区块链证书实现不同域之间身份认证,减少了签名验签等操作,但该方案仅讨论和设计了认证服务器和信任模型间的认证,并没有设计用户和认证服务器间的身份认证,存在假冒身份的隐患,且该方案证书数据直接存储于链上,存在用户信息隐私泄露的问题.长安链作为我国自主研发的新一代区块链软硬件技术体系,具有安全、自主、高效、灵活的特点.长安链已经成功应用于北京冷链食品追溯平台项目,北京电子印章项目、教师资格认定项目等多种场景,国家层面也在稳步推进长安链在身份认证[13]、身份管理、金融贸易、电子病历等多方面的实践.

本文提出基于长安链的身份认证模型,设计长安链数字证书,提出一种基于长安链数字证书和公钥基础设施的认证方案.

图1 传统PKI认证模型及证书链示意图

1 传统PKI身份认证模型

具有三级CA的身份认证模型如图1所示,该模型由根CA服务器、数据库服务器、注册机构、安全服务器、目录服务器(lightweight directory access protocol, LDAP)等组成,且该模型根CA下层包含二级CA和某系统服务端CA,通过颁发证书构建证书链,达到信任传递目的,对应的证书链如图1所示.

1.1 PKI域内身份认证流程

持有证书的用户User通过客户端访问某系统,身份认证流程如图2所示:

1) 用户通过客户端发出认证请求;

2) 服务端生成真随机数random返回;

3) 客户端使用用户私钥对random签名生成签名值signature;

4) 客户端将签名值signature、用户证书cert发送给服务端;

5) 服务端解析用户证书,获取公钥pubkey,传入signature,random,pubkey作签名值验证.若验证不通过,则返回身份认证失败,若验证通过,则进行证书有效性验证;

6) 证书有效性验证包含3方面:证书有效期验证、证书吊销列表(certificate revocation list , CRL)验证、根证书签名值验证,根证书签名值验证会构造、解析并验证整条证书链;

7) 返回认证结果.

图2 PKI域内身份认证流程

1.2 跨PKI域间身份认证流程

2个包含不同CA根节点的PKI域本文称为A PKI域和B PKI域,简称为A域和B域,存在以下场景,持有证书的A域用户(UserA)通过客户端访问B 域某系统服务端(SeverB),图3所示为身份认证流程.

图3 跨PKI域间身份认证流程

1) 用户UserA访问B域系统服务端,提交证书cert请求身份认证;

2) B域系统服务端检查证书发现该证书为A域某系统服务端CA签发,B域服务端CA向上级CA发送交叉认证请求;

3) B域根CA将交叉认证请求发送至A域根CA,A域根CA将本地根CA证书发送给B域根CA;

4) B域根CA对A域根CA证书进行签名,生成交叉证书certBA,将交叉证书certBA发送给A域根CA;

5) A域根CA将交叉证书存于LDAP目录服务器中,并返回交叉认证完成的响应;

6) B域服务端调用本地随机数模块生成真随机数random并返回;

7) 客户端使用用户私钥对random签名生成签名值signature;

8) 客户端将签名值signature、用户证书cert发送给B域服务端CA;

9) B域服务端解析用户证书,并作签名值验证,若验证不通过则返回,身份认证失败,若验证通过,则进行证书有效性验证;

10) 证书有效性验证采用反向构造证书路径方式,构造出包括B域根CA证书、certBA、A域二级CA证书、A域服务端CA证书、用户证书的证书链,解析并验证证书链;

11) 返回认证结果.

图4 证书的对比及构成

在域内认证3)5)6),域间认证4)7)9)10)等流程中存在大量证书路径构造、证书解析等操作,认证流程繁琐,效率不高.同时,PKI身份认证模型存在单点故障问题.因此,本文基于长安链设计身份认证模型,并提出该模型下的身份认证方案.

2 基于长安链数字证书和公钥基础设计的身份认证

2.1 长安链数字证书设计

长安链数字证书由长安链共识节点产生并颁发给注册用户.图4为国密SM2证书和长安链数字证书的对比及构成:

如图4所示,相较国密SM2证书,长安链数字证书主要作出以下改进:增加了颁发节点信息和颁发时间,该字段用于记录生成该证书的长安链共识节点信息;在原基本证书域中增加了256b真随机数字段,由共识节点的真随机数发生器生成,用于保证基本证书域的唯一性.共识节点信息字段,颁发时间字段和真随机数字段共同保证了证书的唯一性.基本证书域哈希值认证过程中用于验证证书是否被篡改.

2.2 认证模型设计

将原有多个PKI域根CA节点用长安链链接起来组成多节点的证书颁发和身份认证模型,如图5所示,该节点类型为长安链共识节点.

共识节点包含区块链分布式数据库模块,主要负责维护节点间的共识规则并验证交易数据以及新区块生成,区块链分布式数据库模块通过维护身份证书区块链和证书撤销区块链2条链实现身份认证.

图5 基于长安链的认证模型

共识节点也包含证书签发模块等其他模块.证书签发模块负责长安链数字证书的签发、业务应用模块负责业务调度、数据存储模块存储本地数据、签名验签模块负责数据的签名和签名值验证以及证书解析.

将某系统服务端接入长安链中,构成长安链普通全节点,只负责验证某些业务数据和联盟区块链的新区块以及同步新区块数据.普通全节点包含联盟区块链上所有区块和数据.

2.3 认证方案设计

2.3.1 用户注册

如图6所示,新用户首先进行用户注册,申请长安链数字证书.

图6 用户注册流程

1) 用户通过客户端访问系统服务端,发出身份注册请求,服务端(长安链普通全节点)返回用户注册响应.

2) 用户提交申请长安链数字证书所需注册信息,客户端生成公私钥对,私钥通过USB-Key等介质传递给用户,公钥和各项注册信息上传服务端.

图7 用户认证流程

3) 服务端对提交的信息进行审核,若审核通过,则将公钥和各项注册信息提交至长安链共识节点.

4) 长安链共识节点通过共识算法选出最终记账节点,进行长安链数字证书生成,并将证书实体存入本地分布式数据库,调用本地SM3算法计算证书哈希值,证书哈希值记入新区块,形成证书区块链.

5) 长安链共识节点将长安链数字证书通过服务端节点(长安链普通全节点)返回给客户端,客户端将证书写入USB-Key等介质提供给用户.

2.3.2 用户认证

注册后的用户拥有一张该系统内代表唯一身份的长安链数字证书.持有证书的用户通过客户端访问系统服务端,流程如图7所示.

1) 用户通过客户端向服务端发出认证请求;

2) 服务端生成并返回真随机数;

3) 客户端使用用户私钥对随机数进行签名形成签名值,并将签名值和证书发送至服务端;

4) 服务端解析证书,获取公钥作签名值验证,若签名值验证不通过则身份认证失败,返回认证结果;若签名值验证通过,则进行长安链数字证书数据查询;

5) 服务端调用SM3算法计算证书哈希,并调用智能合约在服务端本地同步的2条区块链(证书区块链和撤销区块链)上进行并发查询,若证书区块链查询到对应的哈希值,撤销区块链没有查询到对应数据,则认为该身份证书受信任,并返回给客户端,身份认证通过响应;若证书区块链查询到对应的哈希值,撤销区块链也查询到对应数据,则认为该身份证书受信任且已被撤销,并返回给客户端,身份认证不通过响应;若证书区块链没有查询到对应的哈希值,撤销区块链也没有查询到对应数据,则认为该用户证书不受信任并返回给客户端,身份认证不通过响应.

3 本文方案分析

3.1 功能性分析

表1为不同认证方案与本文方案的对比,可以看出4种方案全部解决了单点故障问题,在安全性方面,文献[8-9,11]提出的方案都存在隐私泄露、假冒身份等安全隐患.在链上数据查询效率方面,文献[8]效率最低,文献[9]和文献[11]只维护一条区块链,在证书撤销场景下会导致链上数据过多,不具备并发查询条件,效率较低.本文方案通过维护证书区块链和证书撤销区块链2条区块链来实现并发查询功能,效率较高.

表1 不同方案与本文方案功能对比

3.2 本文方案计算开销分析

本节计算开销分析基于图5长安链身份认证模型展开,对比对象为图1传统PKI身份认证模型.传统PKI域内认证包含4张证书,域间认证包含5张证书,对比方向为域内身份认证和域间身份认证.

由表2可以得出,本文方案减少了证书链构建、证书解析等操作.对比传统PKI身份认证,本文方案增加了链上数据查询和返回等操作,整体上简化了认证流程.

表2 本文方案计算开销分析

4 实验仿真分析

本文实验基于长安链和Java前后端来模仿客户端访问服务端的身份认证流程.并通过统计时耗达到分析性能的目的.分别模拟了包含根CA证书、二级CA证书、服务端CA证书、用户证书的传统PKI认证模型和基于长安链数字证书的认证模型.

首先反复模拟并测算出在单线程环境下完成1次认证的总时耗,如表3所示.

由表3反复模拟得出的结论可知,本文方案总时耗低于PKI认证模型.域内认证仿真中,本文方案时耗约占PKI认证时耗的88%.域间认证仿真中,本文方案时耗约占PKI认证时耗的83%.

为让实验结果更接近于实际应用环境,实验采用Java线程池技术实现200线程、300线程、400线程、500线程、600线程、700线程、800线程数并发条件下,平均单个线程完成身份认证时耗.

表3 单线程环境下实际计算开销 ms

实验仿真结果如表4所示:

表4 多线程并发环境下平均单线程身份认证计算时耗

由表4可知,随着线程数增加单个线程完成任务时间增长,PKI身份认证模型在相同线程数条件下时耗明显高于本文方案.随线程数同幅度增加,PKI认证模型时耗增量也明显高于本文方案,增量趋势趋向于线性,达到800线程数时,本文方案时耗约占PKI认证时耗的55%.本文认证方案时耗增量显著低于PKI认证模型,但增量趋势趋向于非线性,表明随着长安链上数据增多,查询效率逐渐下降.因此,海量数据环境下,如何优化长安链上数据查询效率成为接下来研究的方向.

5 结 语

针对PKI身份认证中存在的单点故障、流程繁琐等问题,本文提出一种基于长安链数字证书和公钥基础设施设的身份认证方案,在保证安全性并实现可溯源的前提下减少了证书解析、签名验签等操作,简化了认证流程,提高了认证效率.

猜你喜欢

数字证书服务端长安
我们长安
水VS火
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
西游新记 2
在Windows Server 2008上创建应用
当心黑客利用数字证书的漏洞
基于数字证书的军事信息系统安全防护方案
管理好系统中的数字证书
水与火