基于联盟链的医院人事档案数据存储方案研究

2023-05-30 06:27李菲
电脑知识与技术 2023年1期
关键词:身份认证人事档案

李菲

摘要:传统医院人事档案多为纸质版,会集中存储在档案室,由专人进行管理。由于纸质档案存在易丢失、易篡改和易损坏等缺点,对档案的查阅与审核带来不便。文章基于联盟链技术提出医院人事档案数据存储方案,方案中的主节点负责对故障的普通节点进行账本同步,并对加入联盟链的节点进行身份认证,保证了各节点数据的时效性,避免了恶意节点对档案数据的影响。通过改进的共识算法,将医院人事档案数据存储在区块中,保证了档案数据的完整性和一致性,并在共识算法中加入主节点更换机制,有效地避免了单点故障。链上哈希链下存储方式,实现了档案数据的高效存储。

关键词:人事档案;纸质版;联盟链;身份认证;共识算法

中图分类号: TP311        文献标识码:A

文章编号:1009-3044(2023)01-0046-03

医院人事档案是医务人员业务能力、工作表现的重要反应,为医院合理配置人才提供了重要依据。但目前大部分医院仍然停留在手工操作的层面上,毁坏、丢失、涂改人事档案的现象仍有发生,严重阻碍了医院人事档案资源的开发和利用。如何推进档案电子化[1]存储是当前迫切需要解决的问题。

区块链按照節点准入机制分为三类,分别为公有链、私有链和联盟链[2]。目前联盟链是区块链技术领域的主要研究对象。结合联盟链的特征,把信息存储到不同的节点中,即使某一节点受到攻击,其他节点的信息依然会保留信息不会缺失。并且存储在区块中的数据无法修改,保证了数据的真实性。

王辉等[3]对实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT) 进行改进并使用星际文件系统,实现人事档案的可追溯性和本地备份,但存储开销较大,缺少身份认证机制,并且当主节点出错或成为恶意节点时主节点选取随意,通信复杂度过高,可拓展性比较低。Azaria等[4]提出一种新的分布式电子健康档案管理系统,通过区块链技术实现了对电子健康档案的数据访问和权限管理,但共识算法采用工作量证明(Proof of Work, PoW),所需的算力较大。本文基于文献[3]和文献[4],提出了基于联盟链的医院人事档案数据存储方案,实现了节点管理、共识算法和链上哈希链下存储。

1 基于联盟链的医院人事档案数据存储方案

1.1 网络模型

本文方案的网络模型由主节点、从节点、普通节点(医院)、哨兵和认证中心(Certification Authority,CA) 组成,采用一主多从三哨兵的部署方案。按照地理范围将节点划分为若干个区域,每个区域都由32位的区域标识符进行标识,区域中包括一个从节点和若干个普通节点,节点间采用P2P方式进行通信。为了使每一个区域能够和本区域以外的区域进行通信,本文方案使用层次结构的区域划分,在上层的区域叫作主干区域,作用是用来连通其他在下层的区域,如图1所示。

主干区域中的主节点、从节点都安装非关系型数据库redis(remote dictionary server),存储各普通节点登录医院人事档案应用系统的用户账号、密码信息。普通节点部署关系型数据库,用于存储本医院人事档案信息和经过主节点验证通过的用户登录信息token。哨兵是不提供数据服务的redis服务器,通常哨兵配置数量为奇数。哨兵通过发送命令,让主节点和从节点中的redis服务器返回其运行状态。主节点负责对普通节点进行身份认证、对联盟链网络账本信息进行同步,在此过程中主节点成为整个系统的单点故障,若主节点宕机则无法向故障的普通节点同步账本信息。从节点作为主节点的备份,当主节点宕机时,哨兵在从节点中选举新的主节点,并将新的主节点信息打包成区块广播给其他节点。

由于区域之间频繁地交换区块数据,因此所有的节点最终都能建立一个完整的账本,多个账本记着同一个账,而且每个账本都是一样,可以相互校验。CA用来将公钥与其对应的节点进行绑定,每个节点都有CA发来的证书,里面有公钥及其拥有者的标识信息(节点地址信息)。此证书被CA进行了数字签名,任何节点都可从可信的地方获得CA的公钥。此公钥用来验证某个公钥是否为某个节点所拥有(通过向CA查询)。

1.2 节点管理

区块链各节点之间的通信方式是对等方式(P2P方式),在P2P网络中,用户可以随时加入、离开网络,提供一种分布式、自组织的连接模式。而且随着用户节点的加入,系统整体的服务能力也在相应地提高。但缺少身份认证、数据验证、网络安全管理等机制[5],P2P通信易遭受截获攻击、篡改攻击、恶意程序和拒绝服务等攻击。相对于C/S通信方式,P2P通信无法使用安全级别更高的防火墙和入侵检测等技术。

本文方案对医院人事档案联盟链节点进行管理,实现节点的加入认证和权限管理。由公钥、私钥和地址可以唯一的确定一个节点,私钥通过椭圆曲线生成公钥,公钥通过哈希函数生成地址,这两个过程都是单向的。普通节点首次加入联盟链网络,需要将数字证书发送给主节点。主节点对数字证书进行验证,若证书有效则允许普通节点加入联盟链中,并将自己的数字证书发送给普通节点,否则拒绝其加入。主节点验证普通节点数字证书有效后,普通节点需要将节点的用户信息(账号、密码等)通过椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm, ECDSA) 进行数字签名,并对数字签名进行加密后发送给主节点。主节点收到签名信息后,对签名信息进行验证,确认收到的信息的确是普通节点发送的,如图2所示。

主节点将收到的普通节点的用户信息和相应节点的地址绑定后存入redis中,并同步给从节点。当系统中检测到有恶意节点加入,主节点可以停用恶意节点用户信息,使得恶意节点无法登录系统。本文方案在医院内部采用B/S架构,医院的服务器端作为普通节点。当用户通过普通节点登录系统时,将用户账号、密码通过P2P的方式发送给主节点,主节点对账号密码进行验证,若验证通过则生成令牌token,并回送给普通节点。普通节点将用户账号、token存储在本地关系型数据库中。并返回给前端用户登录页面,前端保存到window.sessionStorage中,每次访问接口的时候都需要提交token作为验证,验证通过则可以访问接口。主节点通过redis存储用户的账号、密码信息,用于对普通节点发送过来的登录信息进行验证。若主节点宕机,redis将采用哨兵模式切换主从节点,保证用户提供正常的用户登录验证功能。redis采用哨兵模式切换主从节点后,新的主节点将本节点的信息打包成区块发送给其他区块,收到区块的节点记录新的主节点信息。用户登录时,普通节点将账号、密码信息发送给新的主节点进行验证。

1.3 IPoW共识算法

不同医院的人事档案数据相互独立存储和维护,彼此间相互孤立。通过在联盟链下多方参与共识,可以解决数据孤岛问题。区块链系统作为一个多节点的分布式账本系统,当有新的信息(一个区块)需要更新到本地的账本记录中,哪个节点来负责记账,哪些节点负责验证记账结果,如何让各个节点达成最终一致,将记账结果被网络中所有节点以同样的顺序复制并记录下来,就是共识算法要做的事情。比特币系统和以太坊系统均基于工作量证明PoW算法来实现其共识机制。

本文对PoW共识算法进行改进,将挖矿过程限制在较小的区域内,对共识过程中节点间传输的数据进行加密处理,并为获得记账权的节点设置随机的退避时间,得出改进的工作量证明(Improved Proof of Work, IPoW) 共识算法,如算法1所示。

算法1  IPoW共识算法

1) 主节点选定一条椭圆曲线E和基点G广播给其他节点。

2) 网络中所有节点选择自己的私有密钥ki,并根据椭圆曲线E和基点G生成相应的公开密钥Ki=kiG。

3) 普通节点获取需要存儲在区块体中的档案数据data和区块链最后一个区块的哈希值hash。通过档案数据data构造merkle哈希树,并设置一个计数器nonce,初始值为0。

4) 对hash、merkle树根和nonce进行字符串拼接,并通过安全散列算法(SHA, Secure Hash Algorithm) 进行哈希运算,SHA256(hash+merkle树根+nonce)。

5) 检查上一步的哈希值是否满足某个条件(如哈希值前4位都是0) ,满足则停止计算,不满足则nonce加1,然后重复第4步和第5步,直到满足这个特定的条件为止。

6)将新产生的区块编码到椭圆曲线E上的一点M,并产生一个随机整数r,计算Ci=M+rKi (i=1,2,...) 和C=rG。并将Ci、C发送给同一个区域内的其他相应节点。

7) 其他节点收到信息后,计算[Ci-kiC=M+rKi-ki(rG)=M+r(Ki-kiG)=M],结果就是点M。

8) 将点M恢复为最初的区块数据,收到区块的节点验证区块哈希值是否满足指定条件(如哈希值前4位都是0) ,若不满足则丢弃该区块。

9) 获取新区块的首部标志字段flag(1-普通区块 2-主节点更换通知区块),判断收到的区块类型。若标志字段flag为1,该区块为普通区块。若标志字段flag为2,该区块为新的主节点广播的主节点更换通知区块,获取创世区块中存储的哨兵节点信息(IP地址、端口号等),遍历哨兵节点获取主节点信息,验证收到的区块中存储的主节点信息,若不匹配则丢弃该区块。

10) 收到区块的节点验证区块头部中上一区块哈希值字段与本节点区块链最后一个区块的哈希值是否一致,若一致则将区块加入本地区块链中,通过从节点所在的主干区域将区块广播给其他区域,其他区域收到经过共识的区块则直接加入本地区块链中,若不一致则丢弃该区块。

11)节点记账成功后,需要退避一个随机时间才能再次争夺记账权。基本退避时间选取系统平均出块时间τ,从整数集合[0, 1, ... , (2k -1)]中随机地取出一个数记为r,其中k = min[出块次数,3],退避时间就是r倍的基本退避时间。

1.4 数据存储

医院人事档案包含《干部基本信息审核表》《干部履历表》《入团志愿书》《入党志愿书》《转正定级材料》等档案材料,数据存储采用“链上哈希,链下存储”的方式[6],区块上通过merkle哈希树存储档案摘要信息,医院本地关系型数据库中存储档案详细信息和区块哈希值。《干部基本信息审核表》在区块上存储哈希值和摘要信息(姓名、性别、出生年月、民族和籍贯),如图3所示,区块的数据结构如下:

block= {

“blockHead” : {

“index” : “区块索引号(区块高度)”,

“hash” : “当前区块的hash值”,

“previousHash” : “前一个区块的hash值”,

“merkle” : “merkle树根节点的哈希值”,

“timestamp” : “生成区块的时间戳”,

“nonce” : “工作量证明,计算正确hash值的次数”,

“flag” : “区块类型标志字段”

},

“blockBody” : [{

“name” : “姓名”,

“gender” : “性别”,

...

}]

}

在医院本地关系型数据库中存储《干部基本信息审核表》详细信息和区块的哈希值。通过区块上存储的哈希值和摘要信息,可以定位到关系型数据库中的详细信息。当医院职工调离工作岗位需要转移其个人人事档案。首先由个人向原单位申请,原单位查询存储在联盟链上的人事档案,将链上数据重新打包成新的区块,通过IPoW共识算法进行共识。共识通过后将存储在数据库中的链下数据加密处理后发送给接收单位。若接收单位接收该人事档案,则将收到加密的链下数据进行解密处理后加入本地节点中,并向原单位发送一个接收确认,原单位则将该档案的状态标记为调离。

2 性能分析

2.1 安全性分析

区块链网络中节点故障和网络拥塞会出现数据异常,导致不同节点账本数据不统一。本文方案网络模型采用一主多从三哨兵的部署方案,主节点负责对联盟链网络账本信息进行同步。若主节点故障,则通过redis的哨兵模式选举新的主节点,并在联盟链中进行登记。区块链的虚拟数字货币应用,例如比特币、以太坊等都是建立在不可信且透明的P2P网络上,共识算法采用PoW通过消耗算力的方式保证数据的一致性和有效性,但是没有对成员节点进行身份认证,区块链网络中存在恶意节点广播错误数据。本文方案对节点进行管理,通过数字签名算法ECDSA对加入系统的节点证明其合法性,实现区块链节点的合法加入和有效通信,从而实现拜占庭容错。

PoW共识算法在共识过程中,节点间传输的数据是明文,容易遭受篡改或监听。运行区块链系统需要消耗计算资源,随着系统的运行,资源消耗会越来越大,以至于普通的节点无法负担。具有较高算力的节点将会优先获得记账权,最终区块链系统将被有限的大型资源节点接管,存在节点间的合谋攻击。本文方案对PoW共识算法进行改进提出IPoW共识算法,对传输的档案数据通过椭圆曲线加密(Elliptic Curve Cryptography, ECC) 保密通信算法进行加密处理,实现传输数据的安全性。通过为获得记账权的节点设置随机的退避时间,实现网络中的所有节点获得记账权的公平性,避免了节点间的合谋攻击。

2.2 存储开销

医院人事档案数据量较大,若将所有数据都存储在联盟链上,每一个节点都实时同步完整账本数据,这种模式产生了大量冗余数据,随着链上数据存储量增长、数据操作量的增加,大量消耗存储资源。本系统采用“链上哈希,链下存储”的数据存储方式,通过哈希函数和merkle哈希树实现链上数据和链下数据的高效关联,联盟链上存储哈希值和摘要信息,联盟链上各节点维护的账本数据量较小,将大量的详细档案信息存储在医院本地关系型数据库中,实现在一个区块中存储一组文档。既保证了档案信息的不可篡改,又有效地降低了系统运行时的存储开销。

3 结束语

医院人事档案是医院人事管理工作的重要组成部分,本文分析了联盟链技术在医院人事档案数据存储中的应用,包括系统网络模型中节点间采用P2P通信方式、通过ECDSA数字签名算法实现对普通节点的身份认证、节点间共识采用IPoW共识算法、数据存储采用链上哈希链下存储的方式。本系统实现了传统档案的电子化、分布式存储和不可篡改性,进一步实现了档案保存的安全性,提高档案管理效率、优化管理工作质量,有效地降低了档案管理的成本。

参考文献:

[1] 吴宝康.档案学概论[M].北京:中国人民大学出版社,1999.

[2] 黄冬艳,李浪,陈斌,等.RBFT:基于Raft集群的拜占庭容错共识机制[J].通信学报,2021,42(3):209-219.

[3] 王辉,陈博,刘玉祥.基于区块链的人事档案管理系统研究[J].计算机科学,2021,48(S2):713-718.

[4] Azaria A,Ekblaw A,Vieira T,et al.MedRec:using blockchain for medical data access and permission management[C]. Vienna,Austria:2016 2nd International Conference on Open and Big Data (OBD),2016.IEEE,2016:25-30.

[5] 韓璇,袁勇,王飞跃.区块链安全问题:研究现状与展望[J].自动化学报,2019,45(1):206-225.

[6] 邵长年.基于区块链技术的疫苗追溯架构[J].中国医学工程,2021,29(1):37-39.

【通联编辑:王力】

猜你喜欢
身份认证人事档案
云电子身份管理与认证系统中的关键技术优化改进
运动员人事档案管理工作分析