APP下载

基于区块链的共享病历系统的设计

2022-06-11邵辉

电脑知识与技术 2022年13期
关键词:智能合约区块链加密

邵辉

摘要:文章设计并实现了一种基于区块链的共享病历系统,通过医院、病人、医生三种用户类型进行使用,有效促进了共享病历的发展,改变了当前病历信息不标准、不规范、内容少的问题。电子共享病历能全面客观地描述病情,更好地促进医疗事业的发展,而区块链技术也有力保障了病人的隐私问题。

关键词:区块链;共享病历;共识协议;智能合约;加密

中图分类号:TP301.6      文献标识码:A

文章编号:1009-3044(2022)13-0063-02

医疗卫生领域的改革虽然一直在进行,但是效果有限,看病难最大的一个原因是各级医院间的信息不畅通[1],特别是医疗数据只在医院内部流转和共享[2],导致诊治医生不能看到病人完整的历史就诊记录,无法实施精准施治。为破解这个难题,文章提出共享病历的构想,建设以共享病历为基础的区域卫生信息平台[3],促进各级医疗卫生机构之间数据共享。当病历实现共享后,病人就没有必要做同样的化验和检验,在不同的医院也可以采用同一版病历。医生在得到病人授权后,就可以直接调取病人病历,查看其所有的看病情况。

但是如何构建数据共享机制来指导共享病历的建设是目前的一大问题[4],各个医院参与意愿很低,而且病人的隐私也容易被不法分子窃取,传统的技术很难满足这两点要求。但区块链技术出现后,它的特性决定了能有效破解安全、共享两大难题。

区块链利用块链式数据结构来验证与存储数据,它是一种去中心化和防篡改的分布式网络数据库,还具备很多新型计算机技术应用模式,包括加密机制、共识算法、分布式数据存储、点对点传输等。共享病历采用区块链技术,首先因为区块链拥有时间戳,这样保存在链上的数据都会带有时间标识,更因为在每次交易时采用密码学方法使区块和邻近的两个区块均有联系,因此任何一次交易均可追溯,所以可以保证病历记录可追溯;其次可以保证病历数据不被篡改,因为区块链利用分布式节点共识算法来生成和更新数据,存储的数据都是不可篡改的日志类型数据;最后可以保证病历数据的安全性,因为区块链利用密码学的技术,保证数据传输和访问的安全。

1系统架构

基于区块链的共享病历系统采用区块链网络Hyperledger Fabric,该网络串联起各个医院等机构组成联盟。医院联盟提供数据共享的基础设施,可以实现多个医院组织间共享电子病历。每一条医疗链完整的区块链服务均存放于每家医院,利用此链可以完成医疗数据的查询、验证等服务。另外还建立一台访问服务器用以提供对外访问服务,此访问服务器保存的内容有:医疗服务的服务器地址、医疗信息的文件权限信息。当存储地址变更时,只需修改访问服务器。系统建立在一个分散的网络上[5],连接所有的医疗大型机构,如图1所示。

2 系统关键问题

本系统有三个关键问题,分别是加密算法、智能合约和共识算法。

2.1 区块链的加密算法

当前采用基于属性基加密的方案有两种:采用密文策略的属性基加密[6]和采用密钥策略的属性基加密[7]。在现代密码体制下,密码系统的安全性更多地取决于密钥的保密性。一般不联网访问的私钥存储为冷钱包,联网访问的为热钱包。冷钱包避免了黑客盗取私钥的风险,比热钱包更安全,但是热钱包可以随时交易。本系统为实现安全的病历数据共享,采用KP-ABE算法来生成公私钥对,用公钥对病历进行加密。

在KP-ABE算法里一个访问控制对应一个密钥、一个属性集合对应一个密文,只有当属性集合中的属性可以满足此访问结构时才能进行解密。也就是说利用相关的属性对密文加密后保存于服务器,然后让用户利用授予的特定的访问结构来访问相应的消息。

2.2 区块链的智能合约

区块链系统使用智能合约来管理对病历的授权,除非得到用户授权,否则他人查看到的只是加密后的数据。区块链的智能合约[8]是一种具有状态的、由事件触发的协议,它能够自行进行验证并能自动执行。

在Fabric架构中智能合约也称为链码,包括:系统链码、用户链码。通常用GO语言或者JAVA语言来实现链码所要求的接口代码;链码对不同的运算操作会分别设置不同的函数,并且对其进行一定的逻辑判断;链码与其他数据库中的所有数据之间能够实现交互是基于运算方法getstate()和putstate();通常将链码在背书节点上安装,定义好背书策略再于某通道进行实例化后才能运行链码;链码作为访问账本的基本方法,在一个安全的背书节点创建和管理的沙盒内运行,这样可以将背书节点隔离于链码的运行环境。

2.3 区块链的共识算法

共识算法使一组节点能够基于特殊节点列表形成共识。区块链数据的一致性是利用共识协议来保证,共识算法不同则适用情况也不同。常用的共识算法包括权益证明算法、工作量证明算法、股份授权证明算法和PBFT算法。实用拜占庭容错算法是首个解决拜占庭将军问题的方案,在Hyperledger Fabric中应用十分广泛。PBFT算法使用较少的预选定将军数,即参与投票节点的身份是事先知道的,因此运行非常高效,交易的确认时间只需几秒钟。

PBFT算法有三个重要阶段:预准备、准备和确认。预准备阶段和准备阶段要确定同一个view里每个副本节点均认可的序列,然后按照序列执行;准备阶段和确认阶段则确保已经达到确认状态的请求在发生view change后仍然在新的view里维持原序列。

算法具体做法如下:

1)客户端发起请求后,系统轮流选举出主节点,初始化时发出View-new消息,同步所有节点的数据。

2)用户将请求转发给主节点并由其验证通过后再进行广播,发起预准备消息给所有的下一個节点并且保存。

3)所有的下节点收到预准备消息后进行校验,防止造假或者篡改。

4)下节点验证正确之后永久写入,再广播预准备消息并一起进入预准备阶段。

5)根据所有节点统计的结果,当超过2f个节点后,大部分节点均已持久化,则进入确认阶段。

6)把确认消息进行广播并统计收到的确认消息的数量,当超过2f节点后,则写入数据。利用状态机更新,然后将最后一次请求返回给用户端。

7)当用户端统计消息超过f个节点后,则交易已被确认成功。如果超时则向所有的非主节点广播。

PBFT共识遵循核心成员的“51%权利”,它的初始特殊节点列表要接纳一个新成员,必须由51%的会员投票通过;PBFT算法具备权限分级能力,性能更高,耗能更低;PBFT算法是采用“许可投票、少数服从多数”来选举领导者并进行记账的共识机制,它使用拜占庭容错机制,而且每轮记账都会由全网节点共同选举领导者,允许20%的节点作恶,也就是说容错率为20%,如果区块链上总的节点数是n个,则可以容忍(n-1)/5个节点出现拜占庭错误。

因为医疗系统是一个相对安全、稳定的环境,而且实用拜占庭容错算法在吞吐量以及交易确认时间方面有着巨大的优势,因此本系统使用PBFT共识机制来使系统快速达成共识,每个区块链服务器都会保存一份病历链的完整副本。

3 系统实现

系统设计如图2所示:

系统分为前端和后端。前端的逻辑业务层为各种用户可以访问的页面提供支持。前端系统包含三类用户:病人、医生、医院管理人员,区块链中的账本数据都是由这三类用户来操作。例如病人、医生和医院管理人员的登录界面如图3所示:

前端系统包括以下主要功能模块:身份认证模块用来确认登录账号是否正确,并根据账号角色来分配相应的操作权限。无论是具有管理权限的账号还是只能浏览查看的账号,身份认证模块均可以记录所有用户的操作行为到日志文件作为存证,病人也可以授权给医生是否可以查看自己病历,如图4所示;查询模块用来根据用户所输入的查询指令在区块链数据库中获取相应的信息,例如病人想查看自己的病历,则查询模块根据病人的指令要求,显示相应的病历信息;加密模块用非对称加密的方式来将区块链数据库的病历信息进行加密,进一步防止病历信息的泄露;处理模块用来将电子病历信息保存到区块链型数据库中。

后端为与Fabric交互的数据信息操作层,后端系统主要包括共识机制模块、区块链验证模块和交易执行与存储模块。

4结束语

本文基于区块链设计并实现了共享病历系统,此系统设计了符合医院需求的业务设计,并通过编写和部署智能合约到区块链上来实现,最后利用VUE框架和JAVA语言完成了前端页面实现。本系统的实现会促进共享病历的发展,有效改变当前病历信息不标准、不规范、内容少的问题。电子共享病历将能更全面客观地描述病情,促进医疗事业的发展,而区块链技术也有力保障了病人的隐私问题。

参考文献:

[1] 高敏,叶晰,蒋静,等.电子病历信息安全共享关键技术[J].计算机系统应用,2012,21(12):12-16.

[2] 尤麗珏.区域性电子病历信息共享的探索和研究[J].中国医疗设备,2009,24(2):84-85.

[3] 马锡坤,杨国斌,于京杰.国内电子病历发展与应用现状分析[J].计算机应用与软件,2015,32(1):10-12,38.

[4] 林娟娟,陈小嫦.构建医疗联合体的关键问题分析及其对策建议[J].南京医科大学学报(社会科学版),2014,14(2):104-108.

[5] 张辰,马素刚,李宥谋,等.基于区块链的医疗系统[J].现代电子技术,2021,44(4):133-137.

[6] Bethencourt J, Sahai A, Waters B. Ciphertext-policy attribute-based encryption[C]//Berkeley,CA,USA:2007 IEEE Symposium on Security and Privacy.IEEE,2007:321-334.

[7] 周正强,陈玉玲,李涛,等.基于联盟链的医疗数据安全共享方案[J].应用科学学报,2021,39(1):123-134.

[8] Szabo N.Smart contracts: building blocks for digital markets[EB/OL].[2020-08-26]. https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool20 06/szabo.best.vwh.net/smart_contracts_2.html.

【通联编辑:张薇】

猜你喜欢

智能合约区块链加密
一种基于熵的混沌加密小波变换水印算法
区块链技术在互联网保险行业的应用探讨
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
基于区块链技术的数字货币与传统货币辨析
区块链技术在会计中的应用展望
智能合约与金融合约
认证加密的研究进展
用“区块链”助推中企走出去
基于ECC加密的电子商务系统