计算机系统应用  2022, Vol. 31 Issue (3): 178-187   PDF    
基于教育区块链与无证书签名的身份认证方案
王晓欣1, 陈志德2     
1. 福建师范大学 计算机与网络空间安全学院, 福州 350117;
2. 福建师范大学 福建省网络安全与密码技术重点实验室, 福州 350007
摘要:针对当前教育资源共享安全性低和身份认证困难的问题, 提出了一种区块链技术与无证书签名相结合的可跨域身份认证方案, 将无证书签名技术的高安全性、无密钥托管问题等优点应用到区块链的分布式网络中, 实现了身份认证过程中用户安全、跨域认证、恶意用户可追溯、注册信息不可篡改. 首先, 基于教育区块链与无证书签名的身份认证方案是建立在区块链架构下的身份认证模型, 设计了域内区块链和跨域区块链, 建立了跨域认证的模型. 其次, 利用无证书签名以及陷门哈希函数, 确保认证过程用户安全以及恶意用户可追溯. 通过分析, 本方案满足相互认证、用户身份安全等安全属性. 与其他方案相比, 用户计算代价小, 安全性更高, 更能满足用户端算力有限的计算环境.
关键词: 区块链    身份认证    无证书签名    可追踪恶意用户    
Identity Authentication Scheme Based on Educational Blockchain and Certificateless Signature
WANG Xiao-Xin1, CHEN Zhi-De2     
1. College of Computer and Cyber Security, Fujian Normal University, Fuzhou 350117, China;
2. Fujin Provincial Key Laboratory of Network Security and Cryptology, Fujian Norm University, Fuzhou 350007, China
Abstract: To address the low security and identity authentication difficulties of education resource sharing, this study proposes a cross-domain identity authentication scheme based on Blockchain technology and certificateless signature. The user security, cross-domain authentication, traceability of malicious users, and non-tamperable registration information are realized during the identity authentication process by the sharing of high security and no need for key escrow in the certificateless signature technology with Blockchain distributed networks. First, intra-domain Blockchain and cross-domain Blockchain are designed to facilitate the cross-domain authentication by a Blockchain-based identity authentication model. Then, user safety and traceability of malicious users are guaranteed by certificateless signature and trapdoor hash functions in the authentication phase. Through the analysis, this scheme meets the security attributes such as mutual authentication and user identity security. Compared with other schemes, it has advantages in computing overhead and communication overhead. The scheme can better meet the computing environment with limited computing power on the user side.
Key words: Blockchain     identity authentication     certificateless signature     traceable malicious user    

随着云计算技术和互联网技术的不断发展, 在教育领域, 教育云平台已经成为了实现教育信息化的重要方式, 而教育信息化的发展程度更是成为了衡量一个国家教育现代化程度的重要标志[1]. 教育云平台可以为用户提供方便快捷的教育资源和服务, 但是也带来了一些问题. 首先, 为了访问不同平台的资源, 用户需要注册多个平台, 这使得一旦一个平台泄露用户信息, 用户在其他平台的数据也可能会威胁; 另外大部分平台采用中心化的管理方式, 平台抵抗恶意攻击的能力差, 用户隐私数据也容易泄露; 最后, 对于用户来说, 管理多个账号信息也比较麻烦. 针对以上问题, 可以让同区域的教育云平台构建区域教育网络, 让用户注册一个账号就可以访问本域和权限范围内的异域教育平台的资源. 为了保证用户隐私安全, 因此需要在区域教育网络中建立一种安全、可跨域的身份认证方案.

目前, 在云环境中常用身份认证方案有以下几种: 1)基于公钥基础设施(public key infrastructure, PKI)的身份认证方案[2]; 2)基于无证书的公钥密码体制认证方案[3, 4]; 3)基于代理盲签名的认证方案[5]. 其中文献[2]改进了传统的PKI, 设计了轻量型的PKI身份认证方案, 但是证书验证过程复杂.文献[3]和文献[4]则是引入无证书密码体制来解决了PKI体系中的证书问题, 其中文献[3]通过无对运算的聚合签名实现高效的批认证, 提高认证效率, 但未解决双向认证的问题; 文献[4]利用便携式TPM (portable trusted platform module, PTPM)实现任意终端与云端的双向认证, 但是未解决跨域认证问题. 在文献[5]提出了代理盲签名的异构身份认证方案, 解决了异构跨域身份问题, 但该方案中需要引入可信第三方, 一旦可信第三方遭受攻击便会对用户造成巨大损失.

区块链技术作为一种新兴的技术, 具有匿名性、去中心化、不可篡改、可追溯的特性, 因此在身份认证领域地吸引了大量学者进行研究. 文献[6]提出了一种基于区块链的分布式物联网设备认证框架, 解决了集中式认证兼容性低和单点故障的问题, 但未解决跨域认证的问题. 文献[7]提出了一种基于区块链的高效跨域认证方案, 解决了跨域认证问题, 并可以实现高效的身份认证, 但不能进行异构的身份认证; 文献[8]提出了一种基于区块链的跨异构的认证方案, 解决了异构的跨域认证, 但是该方案只能针对基于PKI的信任域和基于身份密码体制的信任域的异构跨域认证. 文献[9]设计了一种基于可编辑区块链的身份认证方案, 解决了跨域认证问题, 但是该方案需要网络供应商的参与, 方案实施比较困难.

本文针对多区域教育网络的身份认证问题, 提出了一种基于教育区块链和无证书签名的身份认证方案. 首先给出了身份认证模型, 通过建立本地链和跨域链, 来实现用户访问本地资源的本域身份认证和访问其他域的跨域身份认证. 利用无证书签名算法和用户身份证明来设计身份认证的具体过程, 保证了用户的安全也解决了密钥托管问题; 通过设置陷门哈希, 当有恶意节点出现时, 便可以追溯到真实的恶意用户. 本方案在安全性上实现了用户身份的匿名性, 以及用户和机构的双向认证, 可以抵挡多种安全攻击. 在性能上, 与其他方案相比, 用户的计算开销较少, 签名过程也比较简单.

1 相关知识 1.1 区块链技术

区块链最早是由中本聪在2008年的论文“Bitcoin: A peer-to-peer electronic cash system” [10]中提出的. 在2009年, 中本聪建立了比特币网络, 并开发了其第一个区块, 名为创世区块. 区块链技术具备去中心化、可追溯、不可篡改等优势.根据准入机制的不同, 区块链可以分为3类: 公有链、联盟链和私有链. 其中公有链任何人都可以读取, 所有数据默认公开, 但交易速度慢; 私有链将区块链的写入权限仅仅在一个组织或者个人手里, 具备交易速度快、安全性更高但是中心化程度更高; 联盟链是介于公有链和私有链之间的区块链, 一般指若干机构或者组织共同参与管理的区块链, 其交易速度比公有链快, 去中心化程度比私有链好. 在本方案中, 我们域内区块链和跨域区块链都是联盟链.

1.2 无证书签名体制

在2003年, Al-Riyami等人提出了无证书的密码体制CL-PKC (certificateless public key cryptography, CL-PKC)[11]. 在该密码体制中其中用户的私钥是由密钥生成中心KGC (key generation center)生成的部分私钥和用户秘密值的组合. 因此, CL-PKC解决了密钥托管问题. 对于无证书签名来说, 一般包含以下6个算法[12]: 系统初始化、部分私钥生成、秘密值的生成、用户公私钥生成、用户签名算法生成、签名验证.

在本方案中, 用户的部分密钥生成算法、秘密值的生成以及用户公私钥的生成均在用户注册过程中完成.

1.3 困难问题及假设

椭圆曲线离散对数问题(elliptic curve discrete logarithm problem, ECDLP): 给定一个椭圆曲线群G, 且 $ P, Q \in G $ , 找到一个标量点 $ a \in {Z_P} $ , 满足 $ Q = aP $ , 其中, P是群G的生成元, QG中的一个元素.

2 基于教育区块链身份认证模型的设计

在本节介绍了基于教育区块链的身份认证模型的模型假设、身份认证模型以及设计目标.

2.1 模型假设

(1)整个系统中的每一个节点都有唯一分配的地址, 对应其真实ID;

(2)假设方案初始化的阶段是安全的;

(3)权威节点是教育局等权威机构, 具备完备的安全性;

(4)权威节点和机构节点都具备一定的存储和计算能力;

(5)用户可以下载机构节点和权威节点的公钥和身份.

2.2 教育区块链身份认证模型

基于教育区块链的身份认证方案, 设计了域内联盟链以及跨域联盟链两种类型的区块链. 域内区块链负责本域内用户对域内的机构进行访问时的身份认证; 跨域区块链在身份认证中负责用户对跨机构进行访问时的身份认证.

该模型有3种类型的参与者: 普通用户、机构、权威部门. 其中跨域区块链由教育局这样的权威部门构成权威节点来进行维护, 普通用户以及机构节点可以查看区块链中的信息; 域内区块链主要由本域的机构节点来维护账本信息, 本域内的普通用户节点只有查看的权限. 模型架构图如图1所示.

图 1 基于区块链的多域身份认证模型

权威节点: 主要负责机构节点的身份注册以及为合法的跨域用户颁发跨域身份证明, 并将跨域用户的信息进行上链处理.

机构节点: 主要包括学校、教育机构等, 他们负责帮助普通用户节点完成注册, 并将域内合法用户的注册信息写入到域内联盟链中.

普通节点: 主要由学生、教师等组成.他们是机构节点的用户, 教育资源的拥有者和使用者.

2.3 设计目标

在教育云场景中用户的身份隐私安全有比较高的需求, 设计了以下几个目标.

去中心化: 针对目前教育资源共享平台大多采用集中式的管理方式, 这使得用户的隐私数据很容易被第三方掌控, 一旦第三方被攻击, 很有可能会造成用户在各个平台数据的泄露.

用户身份安全: 教育资源共享平台往往掌握大量用户数据, 为了保证用户的隐私安全, 采用匿名的用户身份, 并且让用户私钥掌握在自己手中.

相互认证: 在用户注册以及认证过程, 不仅仅限于机构对用户进行认证, 用户同样也对机构进行认证. 双向认证可以提高用户的信任, 增加用户的使用率. 并且可以及时发现用户或者机构的恶意行为.

恶意用户追溯: 针对教育资源共享时, 用户量大. 确保当系统中出现恶意用户时, 可以及时将恶意用户记录在本域和跨域区块链上, 并且不再为该用户服务. 这样可以防止恶意用户在其他机构节点进行再次注册, 同样也可以避免恶意节点占用通信资源. 因此本方案的设计目标可以实现恶意用户节点的可追溯, 从而追溯到真正的用户, 防止其恶意行为的再次发生.

3 跨域-追溯认证方案

本节介绍了基于教育区块链的身份认证方案的具体细节, 包含方案总述、具体方案两部分.

3.1 方案总述

在本方案中, 我们采用通过区块链技术来实现分布式的身份认证, 并根据文献[3], 设计无双线性对的无证书认证方案, 来提高认证的效率.

该方案包含初始化阶段、注册阶段、认证阶段、恶意节点追溯阶段4个阶段.

(1) 初始化阶段. 初始化阶段主要生成全局参数以及权威节点的公私钥.

(2) 注册阶段. 包含机构注册和用户注册两部分. 用户通过域内联盟链的机构节点完成用户注册. 跨域区块链的权威阶段主要完成对机构节点的注册.

(3) 认证阶段. 包含域内认证和跨域认证. 对用户和机构进行双向身份认证, 从而保证双方访问的安全性.

(4) 恶意节点追溯阶段. 对于出现恶意节点, 通过查询区块链中的注册信息追溯恶意节点, 将恶意节点信息写入到联盟链中.

3.2 具体方案

(1)初始化阶段

初始化阶段为系统生成全局参数进行广播, 每个权威节点也生成各自的公私钥对, 然后将他们各自公钥和权威节点身份上传到域间区块链.

KGC作为全局的参数生成中心, 首先, 随机选择一个安全参数 $ k \in {Z^ + } $ 作为输入; 然后KGC会选择一个椭圆曲线上的加法群G, 素数q, 并且PG的生成元. 再选择3个抗碰撞的哈希函数 ${H_i}:{\left\{ {0, 1} \right\}^*} \to Z_q^*{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} (i = 1, 2, 3)$ .最后广播系统参数 $params = \left\{ {G, q, P, {H_1}, {H_2}, {H_3}} \right\}$ .

对于每一个权威节点AIDi, 随机选择数 ${y_i} \in Z_q^*$ , 并计算其公钥 $P{K_i} = {y_i}P$ , 私钥为 $S{K_i} = {y_i}$ , 并广播到跨域区块链上 $ \{ AI{D_i}, P{K_{AI{D_i}}}\} $ .

(2)注册阶段

注册阶段包含机构的注册以及用户的注册. 当注册完成将会把它们的公钥以及身份信息分别上传到跨域区块链以及用户所在的域内区块链, 并且注册节点会为注册的机构和用户生成身份证明, 如表1.

表 1 身份证明

1)机构节点的注册

机构节点注册需要经过权威节点对其进行身份验证, 验证通过便完成机构节点注册, 然后权威节点将注册信息上传到区块链中. 机构注册流程图如图2所示.

图 2 机构注册流程图

$I{D_i}$ $AI{D_j}$ 发送注册申请

机构 $I{D_i}$ 先下载权威节点 $AI{D_j}$ 的公钥, 然后生成时间戳 ${t_{reg}}$ 以及随机数 ${N_1}$ 向本域的权威节点发送注册请求 $reg\_re{q_{I{D_i}}}\left(En{\left( {I{D_i}, {t_{reg}}, {N_1}} \right)_{P{K_{AI{D_j}}}}}, {t_{reg}}, AI{D_j}\right)$ .

$AI{D_j}$ 回复 $I{D_i}$ 的注册请求

权威节点 $AI{D_j}$ 先检查 ${t_{reg}}$ 是否合理. 解密消息之后, 检验 ${t_{reg}}$ 是否一致, 然后查询域间的区块链上是否存在该机构. 如果存在则返回 $ reject $ 拒绝机构的注册申请; 如果 $I{D_i}$ 不存在则允许机构用户进行注册, 并为 $I{D_i}$ 生成部分私钥和部分公钥. 首先, 权威节点 $AI{D_j}$ KGC为其随机选择随机数 $ {r_i} \in Z_q^{\text{*}} $ , 然后计算 $ {h_{1, i}} = {H_1}(AI{D_j}, I{D_i}, {R_i}) $ , 从而为机构 $I{D_i}$ 生成部分公钥 $ {R_i} = {r_i}P $ 和部分私钥 $ {d_i} = ({r_i} + {y_j}{h_{1, i}})\boldsymbolod q $ . $AI{D_j}$ 通过安全通道发送给 $I{D_i}$ 带有其部分公私钥并允许机构注册的回复 $rep\_re{q_{AI{D_j}}} $ $ ({H_2}(I{D_i}||AI{D_j}||{N_1}), {t_{req}}, {R_i}, {d_i})$ .

$I{D_i}$ 生成公私钥并将公钥发送给 $AI{D_j}$

机构用户 $I{D_i}$ 接收到消息先检查 $ {t_{req}} $ 是否合理, 然后验证 ${H_2}(I{D_i}||AI{D_j}||{N_1})$ 的正确性. 如果验证不通过则用户返回error, 若想需要重新提交信息注册. 若验证通过, 机构节点 $I{D_i}$ 随机选取一个随机数 $ {x_i} \in Z_q^* $ , 计算 $ {X_i} = {x_i}P $ $ {h_{2, i}} = {H_2}(AI{D_i}, I{D_i}, {X_i}) $ , 计算部分公钥 $ {Q_i} = {R_i} + $ $ {X_i}{h_{2, i}} $ . 随后 $I{D_i}$ 生成计算自己的公钥 $ P{K_{I{D_i}}} = ({Q_i}, {X_i}) $ 和私钥信息 $ S{K_{I{D_i}}} = ({d_i}, {x_i}) $ . 然后 $I{D_i}$ 生成自己的签名信息, 先随机选择一个 $ {u_i} \in Z_q^{\text{*}} $ , 计算 $ {U_i} = {u_i}P $ $ {h_{3, i}} = {H_3}(I{D_i}||P{K_i}||t) $ , 生成签名 $ {\delta _{I{D_i}}} = {u_i} + ({d_i} + {x_i}{h_{2, i}}){h_{3, i}}\boldsymbolod q $ , 其中t是机构签名时间. 然后 $I{D_i}$ $AI{D_j}$ 发送带有签名和其公钥的回复消息 $ m = \{ P{K_{I{D_i}}}, I{D_i}, En{(t, {\delta _{I{D_i}}}, {U_i})_{P{K_{I{D_i}}}}}\} $ .

$AI{D_j}$ $I{D_i}$ 生成身份证明并将其注册信息上链

$AI{D_j}$ 解密消息, 提取出 $ {\text{\{ }}t, {\delta _{I{D_i}}}, {U_i}{\text{\} }} $ .先计算 $ {h_{3, i}}{\text{ = }} $ $ {H_3}(I{D_i}||P{K_i}||t) $ .验证机构 $I{D_i}$ 的签名是否满足: ${\delta _{I{D_i}}}P\mathop = \limits^? $ $ {U_i} + {h_{3, i}}({Q_i} + P{K_{AI{D_i}}}{h_{1, i}})$ .等式成立即代表对用户身份验证通过, 为其生成身份信息.首先获取当前时间ttemp, 并计算 $ {T_1} = {H_1}(AI{D_i}||P{K_{AI{D_i}}}||t) $ . 然后生成签名 ${\delta _{AI{D_j}}} = ({r_{I{D_i}}} + $ $ {y_i}{H_1}(I{D_i}||AI{D_j})){T_1}$ . 然后为机构注册节点 $I{D_i}$ 颁发它的身份证明 $\{ En{(cer{t_{I{D_i}}})_{p{k_{I{D_i}}}}}, {t_{\rm{temp}}}\}$ .

最后, $I{D_i}$ 解密消息先时间戳 ${t_{\rm{temp}}}$ , 之后保存身份证明 $ cer{t_{I{D_i}}} $ .权威节点 $AI{D_j}$ 然后将机构 $I{D_i}$ 注册信息 $ \{ I{D_i}, P{K_{I{D_i}}}{\text{, }}{H_1}{\text{(}}I{D_i}||AI{D_j}{\text{)\} }} $ 上传到区块链中.

2) 普通用户的注册

普通用户的注册需要经过机构节点对其进行身份验证, 验证通过之后机构节点将注册信息上传到区块链. 普通用户的身份注册流程如图3所示. 为了保护用户的身份信息, 规定用户 $ {u_i} $ 的身份为idi=hash(ui||IDi).注册具体过程如下.

图 3 用户注册流程图

$ i{d_i} $ $I{D_j}$ 发送注册申请

用户 $ i{d_i} $ 先下载注册机构 $I{D_j}$ 的公钥 $ P{K_{I{D_j}}} $ , 然后生成时间戳 ${t_{reg}}$ 以及随机数 ${N_1}$ .然后向 $I{D_j}$ 发送注册申请 $reg\_re{q_{i{d_i}}}\left(En{\left( {{u_i}, {t_{reg}}, {N_1}} \right)_{P{K_{I{D_j}}}}}, I{D_j}\right)$ .

$I{D_j}$ 回复 $ i{d_i} $ 的注册请求

机构节点 $I{D_j}$ 先解密消息之后, 检查 ${t_{reg}}$ 是否合理, 再查询域间的区块链上是否存在该用户. 如果存在该用户则返回 $ reject $ 拒绝该用户的注册申请; 如果 $i{d_i}$ 不存在则允许用户 $ {u_i} $ 注册, 为它生成其部分私钥和部分公钥. 首先机构节点先生成随机数 $ {v_i} \in Z_q^* $ , 计算出用户的部分公钥 $ {V_i} = {v_i}P $ . 然后计算 $ {h_{1, i}} = {H_1}(I{D_j}, i{d_i}, {V_i}) $ 再计算得到用户的部分私钥 $ {b_i} = ({v_i}{\text{ + }}{x_j}{h_{1, i}})\boldsymbolod q $ . 通过安全信道发送回复 $rep\_re{q_{I{D_j}}}({H_2}(i{d_i}||I{D_j}||{N_1}), {t_1}, {V_i}, {b_i})$ 给用户.

$i{d_i}$ 生成公私钥并将公钥发送给 $I{D_j}$

机构用户 $ i{d_i} $ 接收到消息先检查 ${t_1}$ 是否合理, 然后验证 ${H_2}(i{d_i}||I{D_j}||{N_1})$ 的正确性. 如果验证不通过则用户返回 $ error $ , 若想继续注册则更换其他机构节点进行注册.验证通过后, 用户 $ i{d_i} $ 提取出部分公钥 ${V_{i{d_i}}}$ 和部分私钥 ${d_{i{d_i}}}$ . 然后 $ i{d_i} $ 生成随机数 $ {o_i} \in Z_p^* $ , 计算出用户 $ {u_i} $ 部分公钥 $ {O_i} = {o_i}P $ , 随后计算 $ {h_{2, i}} = {H_2}(I{D_j}, i{d_i}, {O_i}) $ , 然后计算 $ {C_i} = {V_i} + $ $ {O_i}{h_{2, i}} $ , 生成公钥 $ p{k_{i{d_i}}} = ({C_i}, {O_i}) $ 和私钥 $ s{k_{i{d_i}}} = ({o_i}, {b_i}) $ . 然后用户 $ i{d_i} $ 随机选择一个数 $ {e_i} \in Z_p^* $ 并计算 $ {E_i} = {e_i}P $ $ {h_{3, i}} = $ $ {H_3}(i{d_i}||p{k_i}||{t_2}) $ , 生成签名信息 $ {\sigma _{i{d_i}}} = {n_i} + {h_{3, i}}({b_i} + {o_i}{h_{2, i}}) $ $ \boldsymbolod q $ , 其中 $ {t_2} $ 是用户签名时间. 发送消息 $m = \{ p{k_{i{d_i}}}, i{d_i}, $ $ En{({t_2}, {\sigma _{i{d_i}}}, {E_i})_{P{K_{I{D_j}}}}}\}$ $\;\;I{D_j}$ .

$I{D_j}$ $ i{d_i} $ 生成身份证明并将其注册信息上链.

机构 $I{D_j}$ 接收到消息 $ m $ , 解密消息得到 $ \{ {t_2}, {\sigma _{i{d_i}}}, {E_i}\} $ 然后验证用户 $ i{d_i} $ 签名的有效性.首先, $I{D_j}$ 计算 $ {h_{3, i}} = $ $ {H_3}(i{d_i}||p{k_{i{d_i}}}{\text{||}}{t_2}) $ , 然后用下面等式验证用户签名 $ {\sigma _{i{d_i}}}P\mathop = \limits^? {E_i} + $ $ ({Q_i} + {X_j}{h_{1, i}}){h_{3, i}}\boldsymbolod q $ . 若等式不成立用户公钥有误, 要求用户重新发送带有公钥信息的签名消息.若等式成立, 则用户注册成功. 机构为用户 $ i{d_i} $ 生成身份信息 ${m_{i{d_i}}} = \{ i{d_i}, p{k_{i{d_i}}}, I{D_j}, {T_{\rm{begin}}}, {T_{\rm{end}}}, Are{a_{i{d_i}}}\}$ , 其中 ${T_{\rm{begin}}}$ 是机构为用户生成身份信息的时间, ${T_{\rm{end}}}$ 是失效时间.先生成随机数 $ {s_i} \in Z_p^* $ , 计算 $ S = {s_i}P $ , 再计算 $ {T_2} = {H_1}(I{D_j}|| $ $ P{K_{I{D_j}}}{\text{||}}{m_{i{d_i}}}) $ , 为用户 $ i{d_i} $ 计算出身份证明中的签名 $ {\sigma _{I{D_j}}} = $ $ s + ({d_j} + {x_j}{H_2}(AI{D_i}, I{D_i}, {X_i})){T_2} $ . 然后, 为 $ i{d_i} $ 生成它的身份证明 $ cer{t_{i{d_i}}}{\text{ = }}\{ {m_{i{d_i}}}, {\sigma _{I{D_j}}}\} $ .

最后 $I{D_j}$ $ \{ En{(cer{t_{i{d_i}}})_{p{k_{i{d_i}}}}}, T\} $ 发送给注册用户 $ i{d_i} $ , 并将该用户注册信息 $ \{ i{d_i}, p{k_{i{d_i}}}\} $ 上传到域间区块链上. 用户验证时间戳之后, 解密消息并保存身份证明 $ cer{t_{i{d_i}}} $ .

(3)域内认证过程

用户注册成功, 就成为了本域的合法用户, 可以与其他节点进行通讯. 域内进行访问时, 只需要通过域内机构节点的参与下完成用户和机构的双向身份认证即可.

当用户a对域内的机构B进行访问时, 需要对完成aB之间的双向认证. 首先, a发送访问请求给机构B $ acc - connec{t_a}(En{(i{d_a}, I{D_B}, cer{t_{i{d_a}}})_{P{K_{I{D_B}}}}}, i{d_a}) $ .机构B收到请求之后, 用自己的私钥解密加密信息, 验证 $ i{d_a} $ 的一致性, 然后域内区块链来验证身份证明. 在机构B发送回复 $ acc - connec{t_B}(En{(I{D_B}, i{d_a}, cer{t_{I{D_B}}})_{P{K_{i{d_a}}}}}, $ $ I{D_B}) $ 给用户a, 用户用自己的私钥解密加密消息, 验证 $ i{d_a} $ 的一致性, 然后将身份证明 $ cer{t_{i{d_a}}} $ 交由域内区块链验证证明的有效性. 对以用户 $ i{d_a} $ 证明验证的流程如下.

1)首先查看证明里面的消息m, 检查用户a信息;

2)验证用户a注册的机构节点A签名的正确性;

3)若全部验证成功, 则返回accept, 否则返回reject;

对机构B的身份证明验证同上, 当双方均收到accept则双方身份验证成功.

算法1. 对用户 $ i{d_a} $ 的身份证明进行验证过程如下:

其中在验证用户a的身份证明中的签名时, 首先计算 $ T = {H_1}(I{D_A}||P{K_{I{D_A}}}{\text{||}}{m_{i{d_a}}}) $ , 然后检查是否满足下式:

$ {\sigma _{I{D_A}}}P\mathop = \limits^? {S_a} + ({Q_A}{\text{ + }}P{K_{AI{D_A}}}{H_1}(I{D_A}, {R_{I{D_A}}}))T $

算法1. 用户身份证明域内验证

输入: $\scriptstyle cert_{id_a} $ $\scriptstyle I{D_{B}} $

输出: accept or reject

Begin

// pb is an intra-blockchain

If $\scriptstyle(Equal(Area_a, Area_B)\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle (UserExits(i{d_a}, PB)\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle(NodeExits(I{D_A})\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle (ValidTime({T_{\rm{begin}}}, {T_{\rm{end}}})\;{\text{ = }}\;{\rm{flase}})$ then

If ( $\scriptstyle Verify - sig({\xi _{I{D_A}}}) = {\rm{false}}$ )

Return reject;

Else return accept;

End

算法2. 对机构 $ I{D_B} $ 的身份证明进行验证过程如下:

在验证机构B的身份证明中的签名时, 首先计算 $ T = H(AI{D_B}||P{K_{AI{D_B}}}||{m_{I{D_B}}}) $ , 然后检查是否满足下式:

$ {\delta _{AI{D_B}}}P\mathop = \limits^? ({R_{I{D_B}}} + P{K_{AI{D_B}}}{H_1}(I{D_B}||AI{D_B}))T $

算法2. 机构身份证明域内验证

输入: $\scriptstyle cert_{ID_B} $ $\scriptstyle i{d_{a}} $

输出: accept or reject

Begin

// pb is an intra-blockchain

If $\scriptstyle(Equal(Area_a, Area_B)\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle (NodeExits(I{D_B}, pb)\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

// PB is an intra-blockchain

If $\scriptstyle(NodeExits(AI{D_A}, PB)\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle (ValidTime({T_{\rm{begin}}}, {T_{\rm{end}}})\;{\text{ = }}\;{\rm{flase}})$ then

If ( $\scriptstyle Verify - sig({\xi _{AI{D_A}}}) = {\rm{false}}$ )

Return reject;

Else return accept;

End

(4)跨域认证过程

在跨域身份认证过程, 用户提出跨域申请, 然后权威节点为用户颁发跨域身份证明. 表2是用户跨域身份证明格式.

表 2 用户跨域身份证明

用户跨域的主要包含: 用户跨域身份证明的申请、用户申请跨域访问两部分, 其中前者主要为用户生成用户跨域证明, 而后者主要完成双方的身份认证.

1)用户申请跨域身份证明

$ i{d_a} $ 发送跨域申请给 $ AI{D_A} $

用户 $ i{d_a} $ 想要请求异域机构时的服务的时候, 先下载权威机构 $ AI{D_A} $ 的公钥, 再发送给它注册请求.

$ reg\_carea(En{(cer{t_{i{d_a}}}, T, i{d_a})_{P{K_{Auth\_A}}}}, are{a_1}) . $

$ AI{D_A} $ 为用户生成跨域身份

权威节点 $ AI{D_A} $ 用私钥解密解密消息之后, 先检查时间戳T是否合理, 若合理将身份证明 $ cer{t_{i{d_a}}} $ 发送给域 $ are{a_1} $ 进行验证, 否则则返回reject.

若身份验证成功则为用户 $ i{d_a} $ 生成跨域身份证明 $crocer{t_a} = \{ i{d_a}, P{K_{i{d_a}}}, AI{D_A}, {T_{\rm{begin}}}, {T_{\rm{end}}}, {\xi _{AI{D_A}}}\}$ 其中, 令 $m = \{ i{d_a}, P{K_{i{d_a}}}, {T_{\rm{begin}}}, {T_{\rm{end}}}, AI{D_A}\}$ , 然后随机生成随机数 $ {w_a} \in Z_p^* $ , 并计算 $ {W_a} = {w_a}P $ , 随后计算用户跨域证明中的签名 $ {\xi _{AI{D_A}}} = {y_{AI{D_A}}}{H_1}(AI{D_A}||i{d_a}{\text{||}}T) + {w_a} $ , 其中T是允许访问的时间. 然后将消息 $ \{ En{(crocer{t_a}, {W_a})_{p{k_{i{d_a}}}}}, T\} $ 给用户 $ i{d_a} $ .

最后并将用户的跨域信息上传到区块链上 $ \{ i{d_a}, p{k_{i{d_a}}}, AI{D_A}\} $ . 而用户 $ i{d_a} $ 接收到消息之后, 用自己的私钥解密消息之后, 保存 $ {\text{\{ }}crocer{t_a}, {W_a}{\text{\} }} $ .

2)用户跨域访问

① 当用户 $ i{d_a} $ 要访问异域的机构 $I{D_{1\_B}}$ 时, 先在跨域区块链中下载它的公钥 $ P{K_{I{D_{1\_B}}}} $ , 再给异域机构发送访问请求 $ acc\_req(En{(crocer{t_a}, {W_a}, i{d_a}, t)_{P{K_{I{D_{1\_B}}}}}}) $ .

② 机构 $ I{D_{1{\_}B}} $ 收到访问请求后, 先用私钥 $ S{K_{ID_{1\_B}}} $ 解密消息, 检查时间t $ i{d_a} $ 是否合理. 若一致发送 $acc - rep $ $ (En{(I{D_{1\_B}}, i{d_a}, cer{t_{I{D_{1\_B}}}}, T)_{P{K_{i{d_a}}}}})$ $ i{d_a} $ , 同时将 $\{ crocer{t_a}, $ $ {W_a}, i{d_a}\}$ 发送给跨域区块链, 让跨域区块链验证 $ i{d_a} $ 的身份. 身份验证成功, 跨域区块链会生成accpet; 否则返回false.

③ 用户 $ i{d_a} $ 收到 $ I{D_{1{\_}B}} $ 的消息后, 用自己的私钥解密, 验证时间戳T是否合理, $ I{D_{1{\_}B}} $ 是否正确. 若均通过验证, 用户便将 $ \{ I{D_{1\_B}}, cer{t_{I{D_{1\_B}}}}\} $ 交由跨域区块链对 $ I{D_{1{\_}B}} $ 进行身份认证.

④ 若跨域区块链对 $ i{d_a} $ 的跨域身份证明和 $ I{D_{1{\_}B}} $ 的身份均验证成功, 则分别向双方返回accept; 若一方身份验证未成功, 则分别对应返回reject.

算法3. 跨域身份认证

输入: $\scriptstyle crocer{t_a} $ $\scriptstyle I{D_{1\_B}}$ $\scriptstyle {W_a}$

输出: accept or reject

Begin

// PB is an cross-blockchain

If $\scriptstyle (UserExits(i{d_a}, PB)\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle (NodeExits(AI{D_A})\;{\text{ = }}\;{\rm{flase}})$ then

Returnreject;

If $\scriptstyle (ValidTime({T_{\rm{begin}}}, {T_{\rm{end}}})\;{\text{ = }}\;{\rm{flase}})$ then

If ( $\scriptstyle Verify - sig({\xi _{AI{D_A}}}) = {\rm{false}}$ )

Return reject;

Else return accept;

End

其中验证的 $ AI{D_A} $ 签名 $ {\xi _{AI{D_A}}} $ , 先计算 $ {H_1}(AI{D_A}||i{d_a}{\text{||}}T) $ , 验证下列等式是否成立:

$ {\xi _{AI{D_A}}}P\mathop {\text{ = }}\limits^? P{K_{AI{D_A}}}{H_1}(AI{D_A}||i{d_a}{\text{||}}T){\text{ + }}{W_a} $

若上述认证算法执行完毕, 输出accept, 则对跨域用户 $ i{d_a} $ 完成了身份认证; 否则输出reject, 则对 $ t d_{a} $ 身份认证失败.

在跨域认证中, 除了验证节点变成了权威节点, 对于机构 $ I{D_{1\_B}} $ 的身份认证算法基本与域内算法一致, 这里就不再陈述.

(5)恶意用户追溯

当出现恶意用户的时候, 恶意用户可能会将自己的私钥泄露给别人, 和其他恶意用户发动共谋攻击; 或者进行重放攻击占用通信资源. 机构节点监测到用户出现上述恶意行为时, 将会通过共识机制和各个机构节点达成共识, 然后通过查询区块链中的注册信息, 让该用户的注册节点追溯用户真实身份, 然后触发智能合约将用户真实身份写入区块链中. 恶意用户真实身份信息记录在区块链上, 可以避免恶意用户更换注册节点, 进行身份再注册.

对于恶意用户, 机构节点无法知道用户的真实身份信息, 仅仅知道其“假身份” $ i{d_a} $ 是恶意的, 被访问的机构节点通过查询区块链上的信息 $ \{ i{d_a}, p{k_{i{d_a}}}, I{D_B}\} $ , 然后各个节点通过达成对 $ i{d_a} $ 真实身份的追溯的共识, 然后 $ i{d_a} $ 的注册节点 $ I{D_B} $ 将在本机构注册的全部用户的 $ {u_i} $ 带入到式子 $i{d_a}\mathop = \limits^? H({u_i}||I{D_B})\begin{array}{*{20}{c}} {} \end{array}(i = 1, \cdots ,N)$ , 其中N为在该机构进行注册的用户数量.直到找到 $ u_{s} $ 满足上述等式, 便找到了恶意用户 $ u_{s} $ , 各个节点对于结果达成一致共识之后, 便可以将恶意用户真实信息上传到区块链中, 实现恶意用户的记录. 当然对于可能误判的或者可能被窃取的恶意用户, 用户可以向权威部门进行申请, 然后权威部门将恶意记录进行消除. 将恶意节点记录在区块链中一方面可以约束用户的行为, 另一方面可以防止恶意用户的再注册, 避免浪费计算资源和通信资源.

4 方案分析

本节主要对本方案与文献[4, 13,14]在安全性、计算开销和通信开销等方面进行分析和比较.

4.1 安全分析

在本节对方案进行了安全性的分析, 并与其他方案进行比较, 比较结果见表3.

1)身份安全

在本方案中, 用户进行访问时, 采用的身份是hash(ui||IDj)的虚拟身份, 用户的公钥PK、私钥SK都是由用户自己生成的. 权威节点对机构进行身份认证, 用户由机构节点进行认证, 并分别为他们的身份证明进行签名, 确保身份的有效性. 权威节点对注册机构、机构节点对注册用户将他们的注册信息分别上传到域间区块链、跨域区块链上, 因此任何敌手都不能篡改. 每一个合法的机构和用户的(PK, SK)都是基于离散对数困难问题生成的, 对于任何一个概率多项式时间的敌手都不能根据公钥或者加密消息计算出私钥. 在本方案中用户和机构的私钥由用户自己生成, 用户只使用私钥解密消息和签名, 用户私钥只掌握在自己手里.

表 3 安全性属性比较

2)双向认证

在用注册过程, 无论是用户注册还是机构的注册都实现了用户与机构的双向身份认证、机构与权威节点的双向的身份认证. 在域内和跨域过程中通过区块链验证用户和机构的身份证书, 实现了用户对访问机构的身份认证, 以及被访问机构对用户的身份认证.

3)数据完整性

区块链作为一种分布式账本技术, 其中每一个区块链节点都会保存完整的区块链信息, 一旦某个节点出现的区块信息出现缺失, 可以通过更新区块信息, 保证本地的账本信息与其他节点一致. 从而保证节点中的区块信息的完整性, 也避免了恶意攻击篡改部分节点中的信息, 实现了区块链系统中的数据完整性.

4)分布式拒绝服务攻击

区块链的去中心化以及点对点的交互, 即使有一个或者少部分节点失效, 其余节点也不会受其影响, 并且如果需要的话在多个节点中会有一个合法节点取代失效节点工作; 恶意节点的操作也不会在共识阶段通过.因此本方案可以抵抗分布式拒绝服务攻击.

5)重放攻击

在本方案中, 对消息添加时间戳以及采用提问、应答方式. 即使敌手截获了之前的消息, 目标服务器通过检查消息的新鲜性也会拒绝为敌手提供服务.

6)内部攻击和外部攻击

外部攻击者即使获取了权威机构的公钥或者机构的公钥, 但是也无法计算出来用户的私钥. 对于内部攻击者来说, 仅仅根据用户的公钥也无法计算出其私钥. 因此本文提出的方案能够有效地抵抗外部攻击和内部攻击.

7)女巫攻击

在本文的涉及方案中, 每一个用户在网络中都有一个唯一标识ID, 通过使用机构注册节点的信息生成唯一的标识, 并且在每次通信之前都会对用户信息进行身份认证, 认证在域内联盟链或者域间联盟链中进行, 因此攻击者无法伪装网络中的合法节点与其他节点进行通信.

以上是对本方案的安全性分析, 与近几年的跨域方案相比较, 从表3可以看出, 本方案在安全性上的优越. 在安全性上, 本方案通过区块链技术解决了认证过程中中心化可能带来的单点故障等问题; 引入无证书签名解决了密钥托管的问题; 设计时间戳机制, 解决了重放攻击; 在方案的各个阶段也都进行了通信双方的身份认证, 实现了双向的相互认证; 通过无证书机制, 让用户自己掌握自己的私钥, 也解决了内外攻击的问题. 本方案与其他认证方案在安全属性的比较如表3.

在安全属性的比较上, 与其他方案相比安全属性更好. 其中文献[4]必须集中式的认证方案, 因此不满足去中心化, 另外不能抵抗重放攻击; 文献[13]中未加入时间戳机制因此无法抵御重放攻击, 用户私钥也被存放在密钥生成中心, 容因此不满足内外部攻击; 文献[14]不能抵抗重放攻击. 本方案对于解决上安全问题上具备一定优势.

4.2 方案性能分析

对本方案的性能分析, 主要从计算开销和通信开销来与其他方案进行比较.

4.2.1 计算开销

文献[4, 13,14]是基于离散对数数学困难问题来进行双线性对计算和指数计算设计认证方案, 计算开销大; 而本文采用的是基于椭圆曲线上的离散对数困难问题, 通过椭圆曲线上的加法运算和倍点运算来实现认证方案的设计, 计算开销小. 通过Thumbur等人[15]的仿真实验可知, 椭圆曲线上的加法运算大约是倍点运算的200多倍, 在各个方案的计算开销比较上作用也微乎其微. 因此在计算开销的比较上, 不考虑椭圆去线上的加法运算. 为了对方案进行比较, 定义以下符号: TB表示一次双线性对运算开销; TE表示一次指数运算开销; TGM表示运行椭圆曲线上群G上一次点乘运算的开销, “—”表示不具备此功能.

根据文献[3]在i5-4460s 2.90 GHz CPU的计算机上部署大数运算函数库(MIRACL), 对双线性对运算、指数运算以及椭圆曲线上的倍点运算的仿真实验结果如表4.

表 4 运算操作的运行时间 (ms)

在我们的方案中, 为了实现机构和用户的双向认证, 与其他方案不同的是, 本方案也为机构也颁发了身份证明, 而且机构的数量相比较普通用户而言少很多, 因此在总体计算开销的用户注册阶段, 仅仅考虑普通用户注册时的计算开销.

本方案与文献[4, 13,14]所提出的方案在用户计算开销对比如表5. 通过表格可以明显地看出来与其他认证方案相比较本方案在计算开销上有明显优势, 并且文献[4]和文献[14]不支持跨域认证, 文献[13]未对域内认证进行分析, 而本方案对域内和域外身份认证均进行了设计.因此本方案更加全面, 计算开销也更低.

表 5 计算开销比较

4.2.2 通信开销

在通信开销的比较上, 由于文献[14]未设计详细的交互过程, 因此不参与比较, 并且为了更为直观的进行比较, 仅对用户的通信开销进行比较.假设所有的方案的身份ID长度都一致, 群上的消息长度也一致, 加密消息的长度与消息本身长度一致, 群变量信息长度是时间戳的10倍, 随机数不计入长度, 身份证明的长度与群变量一致. 现定义|p|代表群变量的信息长度, |G|代表椭圆曲线上的信息长度, |t|代表时间戳的信息长度, |id|代表用户和匿名身份的长度, |hmac|代表HMAC的信息长度. 并假设|id|的长度为80 bit; 时间戳16 bit; 群变量160 bit; 证书密文160 bit; 身份的80 bit, |hmac|是160 bit.

对于文献[4]所述方案, 在用户注册阶段用户发送的注册信息长度为3|p|+|id|在认证阶段, 用户通信开销为2|p|+|id|+|hmac|.

对于文献[14], 用户在注册阶段的计算开销为|t|+3|q|, 在认证阶段用户的通信开销为5|p|+|t|+|id|.

对于本文方案, 在用户注册阶段, 用户发送给机构的注册信息 $\left\{ En{\left( {{u_i}, {t_{reg}}, {N_1}} \right)_{P{K_{I{D_j}}}}}, I{D_j} \right\}$ 的通信长度为2|id|+|t|, 用户给机构发送的消息 $\left\{ p{k_{i{d_i}}}, i{d_i}, En{({t_2}, {\sigma _{i{d_i}}}, {E_i})_{P{K_{I{D_j}}}}} \right\}$ 的信息长度为3|G|+|t|+|id|+|p|; 在认证阶段, 仅对用户域内认证进行分析, 用户提交的 $ En{(crocer{t_a}, {W_a}, i{d_a}, t)_{P{K_{I{D_{1\_B}}}}}} $ 的通信长度为2|t|+|G|+4|p|+|id|.

表6可以看出, 总体来看文献[4]的通信开销最小, 但是认证阶段本方案最优, 而且在这3个方案中, 用户只需要注册一次, 之后再进行访问只需要对其进行认证即可, 在认证阶段, 本方案的通信开销最小.总之, 对于用户来说本方案的通信开销可行.

表 6 用户通信开销比较

另外, 本方案采用基于联盟链的基础架构, 由机构节点和权威节点具备交易权限, 并且节点数目远小于公有链. 并且本文采用本地链和跨域链两种区块链. 因此机构节点和权威节点的计算开销和通信开销与单链架构情况下相比要小得多.

对于方案的存储需求, 区块链上的数据都是经过哈希处理的, 最终转化为固定字节的二进制数, 然后通过默克尔树来进行记录, 区块头仅存放默克尔根的哈希值. 而且区块链上存储的也仅是用户的注册信息以及恶意用户记录因此不会占据大量内存, 因此满足存储需求.

5 总结与展望

针对目前在教育场景下集中式的身份认证的弊端, 本文提出了基于无证书签名与区块链的身份认证方案. 利用区块链的分布式架构解决了集中式的单点故障问题; 利用无证书签名让用户生成自己的公私钥, 避免了密钥托管的问题; 通过颁发身份证明实现域内、跨域认证; 通过区块链技术来辅助用户来进行身份认证, 降低了用户的计算开销; 另外通过哈希函数实现用户的真实身份可追溯. 最后, 将本文所提出的身份认证方案与其他方案进行性能比较分析. 结果表明该方案具备去中心化、可跨域、隐私保护、用户可追溯的特性, 并且在安全属性和用户开销上有一定的优势. 本文虽然在教育场景下的身份认证的安全性上提供了有效的解决办法, 但仍存在较大的提升空间, 下一步利用分片技术、多通道等技术区块链系统的处理效率以及提高区块链系统的可扩展性, 并进一步研究基于教育区块链的身份认证领域.

参考文献
[1]
章泽昂, 邬家炜. 基于云计算的教育信息化平台的研究. 中国远程教育, 2010(06): 66–69, 80.
[2]
Park S, Kim H, Ryou J. Utilizing a lightweight PKI mechanism to guarantee a secure service in a cloud environment. The Journal of Supercomputing, 2018, 74(12): 6988–7002.
[3]
张文芳, 雷丽婷, 王小敏, 等. 面向云服务的安全高效无证书聚合签名车联网认证密钥协商协议. 电子学报, 2020, 48(9): 1814-1823. DOI:10.3969/j.issn.0372-2112.2020.09.020
[4]
王中华, 韩臻, 刘吉强, 等. 云环境下基于PTPM和无证书公钥的身份认证方案. 软件学报, 2016, 27(6): 1523-1537. DOI:10.13328/j.cnki.jos.004992
[5]
江泽涛, 徐娟娟. 云环境下基于代理盲签名的高效异构跨域认证方案. 计算机科学, 2020, 47(11): 60-67. DOI:10.11896/jsjkx.191100068
[6]
谭琛, 陈美娟, Ackah AE. 基于区块链的分布式物联网设备身份认证机制研究. 物联网学报, 2020, 4(2): 70-77.
[7]
周致成, 李立新, 李作辉. 基于区块链技术的高效跨域认证方案. 计算机应用, 2018, 38(2): 316-320, 326.
[8]
马晓婷, 马文平, 刘小雪. 基于区块链技术的跨域认证方案. 电子学报, 2018, 46(11): 2571-2579. DOI:10.3969/j.issn.0372-2112.2018.11.002
[9]
Xu J, Xue KP, Tian HY, et al. An identity management and authentication scheme based on redactable blockchain for mobile networks. IEEE Transactions on Vehicular Technology, 2020, 69(6): 6688-6698. DOI:10.1109/TVT.2020.2986041
[10]
张福泰, 孙银霞, 张磊, 等. 无证书公钥密码体制研究. 软件学报, 2011, 22(6): 1316-1332.
[11]
Nakamoto S. Bitcoin: A peer-to-peer electronic cash system. https://bitcoin.org/bitcoin.pdf.
[12]
Al-Riyami SS, Paterson KG. Certificateless public key cryptography. Proceedings of the 9th International Conference on the Theory and Application of Cryptology and Information Security. Taipei: Springer, 2003. 452−473.
[13]
杨小东, 安发英, 杨平, 等. 基于无证书签名的云端跨域身份认证方案. 计算机工程, 2017, 43(11): 128-133, 145. DOI:10.3969/j.issn.1000-3428.2017.11.021
[14]
Hung YH, Tseng YM, Huang SS. A revocable certificateless short signature scheme and its authentication application. Informatica, 2016, 27(3): 549-572. DOI:10.15388/Informatica.2016.99
[15]
Thumbur G, Rao GS, Reddy PV, et al. Efficient pairing-free certificateless signature scheme for secure communication in resource-constrained devices. IEEE Communications Letters, 2020, 24(8): 1641–1645.