温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
联盟
医院
人事档案
数据
存储
方案
研究
李菲
本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第1期(2023年1月)第19卷第1期(2023年1月)基于联盟链的医院人事档案数据存储方案研究李 菲(皖南医学院弋矶山医院,安徽 芜湖 241001)摘要:传统医院人事档案多为纸质版,会集中存储在档案室,由专人进行管理。由于纸质档案存在易丢失、易篡改和易损坏等缺点,对档案的查阅与审核带来不便。文章基于联盟链技术提出医院人事档案数据存储方案,方案中的主节点负责对故障的普通节点进行账本同步,并对加入联盟链的节点进行身份认证,保证了各节点数据的时效性,避免了恶意节点对档案数据的影响。通过改进的共识算法,将医院人事档案数据存储在区块中,保证了档案数据的完整性和一致性,并在共识算法中加入主节点更换机制,有效地避免了单点故障。链上哈希链下存储方式,实现了档案数据的高效存储。关键词:人事档案;纸质版;联盟链;身份认证;共识算法中图分类号:TP311文献标识码:A文章编号:1009-3044(2023)01-0046-03开放科学(资源服务)标识码(OSID):医院人事档案是医务人员业务能力、工作表现的重要反应,为医院合理配置人才提供了重要依据。但目前大部分医院仍然停留在手工操作的层面上,毁坏、丢失、涂改人事档案的现象仍有发生,严重阻碍了医院人事档案资源的开发和利用。如何推进档案电子化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所示。哨兵2哨兵3哨兵1监控监控监控监控监控监控主节点从节点从节点区域 0.0.0.1区域 0.0.0.2普通节点普通节点普通节点普通节点主干区域 0.0.0.0干部人事档案应用系统认证中心CA图1 网络模型示意图主干区域中的主节点、从节点都安装非关系型数据库redis(remote dictionary server),存储各普通节点登录医院人事档案应用系统的用户账号、密码信息。普通节点部署关系型数据库,用于存储本医院人事档案收稿日期:2022-04-15作者简介:李菲(1994),女,助理工程师,硕士,研究方向为医学信息学、区块链技术。E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.1,January202346DOI:10.14004/ki.ckt.2023.0034软件技术本栏目责任编辑:谢媛媛Computer Knowledge and Technology电脑知识与技术第19卷第1期(2023年1月)第19卷第1期(2023年1月)信息和经过主节点验证通过的用户登录信息token。哨兵是不提供数据服务的redis服务器,通常哨兵配置数量为奇数。哨兵通过发送命令,让主节点和从节点中的redis服务器返回其运行状态。主节点负责对普通节点进行身份认证、对联盟链网络账本信息进行同步,在此过程中主节点成为整个系统的单点故障,若主节点宕机则无法向故障的普通节点同步账本信息。从节点作为主节点的备份,当主节点宕机时,哨兵在从节点中选举新的主节点,并将新的主节点信息打包成区块广播给其他节点。由于区域之间频繁地交换区块数据,因此所有的节点最终都能建立一个完整的账本,多个账本记着同一个账,而且每个账本都是一样,可以相互校验。CA用来将公钥与其对应的节点进行绑定,每个节点都有CA发来的证书,里面有公钥及其拥有者的标识信息(节点地址信息)。此证书被CA进行了数字签名,任何节点都可从可信的地方获得CA的公钥。此公钥用来验证某个公钥是否为某个节点所拥有(通过向CA查询)。1.2 节点管理区块链各节点之间的通信方式是对等方式(P2P方式),在P2P网络中,用户可以随时加入、离开网络,提供一种分布式、自组织的连接模式。而且随着用户节点的加入,系统整体的服务能力也在相应地提高。但缺少身份认证、数据验证、网络安全管理等机制5,P2P通信易遭受截获攻击、篡改攻击、恶意程序和拒绝服务等攻击。相对于C/S通信方式,P2P通信无法使用安全级别更高的防火墙和入侵检测等技术。本文方案对医院人事档案联盟链节点进行管理,实现节点的加入认证和权限管理。由公钥、私钥和地址可以唯一的确定一个节点,私钥通过椭圆曲线生成公钥,公钥通过哈希函数生成地址,这两个过程都是单向的。普通节点首次加入联盟链网络,需要将数字证书发送给主节点。主节点对数字证书进行验证,若证书有效则允许普通节点加入联盟链中,并将自己的数字证书发送给普通节点,否则拒绝其加入。主节点验证普通节点数字证书有效后,普通节点需要将节点的用户信息(账号、密码等)通过椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)进行数字签名,并对数字签名进行加密后发送给主节点。主节点收到签名信息后,对签名信息进行验证,确认收到的信息的确是普通节点发送的,如图2所示。图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)进47本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第1期(2023年1月)第19卷第1期(2023年1月)行哈希运算,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 值的