刘荣管,王兆栋,邓兰华,陈长源,陈佩江
(1. 临沂亿通软件有限公司产品开发部,临沂 276000;2. 临沂市大数据协会,临沂 276000;3. 临沂大学机械与车辆工程学院,临沂 276000)
近年来,随着计算机和信息技术的快速发展,电子病历已基本取代纸质文本,给患者就医、医院管理都带来了极大便利。病历的电子化既解决了纸质文本的存放和丢失问题,也为科学研究提供了宝贵资源。然而,随着智慧医疗和医疗大数据应用的快速发展,仍存在一些障碍。一是医疗数据的安全存储,电子病历一般由医疗机构集中存储在单位数据库,容易受到单点攻击,导致患者数据丢失和隐私泄露[1];二是医疗数据共享,各医疗机构的信息系统不兼容,沟通不畅,担心信息泄露,不愿分享信息,形成数据孤岛;三是数据所有权,患者是电子病历的所有者,希望有权管理个人数据,并可以根据请求者身份和内容决定是否授予相应权限。
医疗数据的共享和访问新技术主要有两种方法:云计算和区块链。云计算是指把医疗数据上传到云端实现存储和共享,有效减少本地存储成本,方便用户访问数据,但这种方法的隐患是如果云端服务器出现故障或受到恶意攻击,会引起数据丢失或泄露[2]。区块链是一种由许多节点通过一致性协议进行维护的分布式账本,具备去中心化、可追溯、不可篡改、集体维护等特点,医疗数据可以在互不信任的环境下保证安全和使用的可追溯性,电子病历等数据可以在众多医疗机构之间安全传输和共享,实现医疗体系的互联互通,提高医疗服务质量和准确的远程会诊[3],为医疗数据共享所面临的问题提供了新的解决方法。
电子病历等医疗数据的共享与应用具有极其重要的意义,本文基于区块链技术,提出一个电子病历的访问控制方案,实现医疗数据的共享和隐私保护,促进医疗大数据的应用。
区块链是一种链式数据结构,以时间为顺序把数据区块相连接,其核心是分布在P2P 网络中的账本,用于存储交易公共记录,对所有用户共享以及验证交易。
作为一种数据结构,区块由区块内结构与区块间链式结构组成。一个区块结构含有头信息和体信息。头信息是元数据,包括时间戳、前区块哈希值、随机数、Merkle 根值等,用于验证区块,并把其前驱和后继区块联系起来;体信息用于交易序列[4]。哈希值作为区块的唯一标识,把区块链接起来,前区块哈希值决定了所链接的唯一区块,最终构成一种链状数据结构。
作为分布式系统,为让所有主机都能达到一致性,区块链利用了共识机制,常用算法包括:权益证明(PoS)、工作量证明(PoW)、委托权益证明(DPoS)和实用拜占庭容错算法(PBFT)等。
在委托权益证明区块链中,节点能根据其权益来选择证人[5],获得最高票数的前N个节点具有记账权利,至少有50%的投票利益相关者才有足够的权力下放。DPoS 的每个客户端都有权利选择可信任节点[6],被选中节点可轮流记账,有效地减少了验证节点的个数,既能保证网络安全,又提高共识验证效率,降低运行成本,更高效、节能和去中心化[7]。
智能合约被定义为是可以自动执行的电子版合同,其实智能合约就是代码程序,它被部署在区块链区块中,当一个预先编制好的条件被触发时,智能合约自动执行该工作,目的是用于验证和执行合约。智能合约协商签订后,如果有用户发起交易,会向区块链网络提交智能合约,经网络传输和矿工验证存储在特定区块,向用户返回地址和接口等信息,可调用合约[8]。合约代码检查信息、判断是否满足触发条件,并执行响应、更新状态。
智能合约适用于各种不同的区块链网络,并可应用在电子商务、供应链优化等具体场景中,智能合约执行的自动化和智能性提高了交易的安全性和效率。
在基于区块链的电子病历系统中,产生新区块的医院账号、患者号码和加密的病历内容写入区域数据库。如果某患者在多个机构就诊,区域数据库将存储若干条记录。电子病历类型多样,文本内容丰富,涉及的数据既有健康数据,也有非健康数据,前者与个人身体状况相关。有些数据涉及患者隐私,比如个人属性数据、健康状况数据、医疗应用数据、医疗资金和支付数据等,这些数据的隐私情况不同,利用价值也有区别。
为有效控制电子病历访问,按数据敏感程度把患者隐私信息分为三个等级:一级敏感度最高,对应权值最大,二级、三级的相应权值依次减小。一级隐私信息主要是病人的身份信息,比如:姓名、性别、身份证号、家庭住址等;二级隐私信息主要为患者医疗记录;三级隐私信息主要为患者诊断辅助数据。将患者的各级隐私逐条分块处理,加密存储。
为了实现电子病历的共享和访问控制安全,基于区块链设计一个电子病历共享模型,其中主要有四个实体。
(1)权威中心,即密钥生成中心。由区块链中的医院、医学研究院等机构联合组成,负责系统主密钥的生成,并和各机构协商生成对应私钥[9]。
(2)数据拥有者,即数据的所有者。患者拥有自己的电子病历数据,一般授权医生生成病历,加密存储在区块链中。在数据共享过程中,负责生成代理重加密密钥,并发送给代理者[10]。
(3)数据用户,即各医疗机构。医疗机构如有需求,经授权后发送请求,获取重新加密电子病历文本,并可利用私钥来解密阅读。
(4)代理者,即执行重加密的节点。根据委托权益证明共识算法所推举出来的矿工节点作为代理节点,对数据拥有者发送的密文重新加密。
医疗信息化系统拥有大量用户,各有其特点,可利用用户特点制定访问控制模型,更好地满足医疗电子病历系统的要求。此模型主要有如下几个基本要素:用户、角色、权限和会话;为用户分配角色,角色具备相应权限,在系统应用中,角色把用户与权限之间联系起来,用户通过其所处角色具有了相应权限。
为做好电子病历的隐私信息保护,基于用户角色实现电子病历的访问控制,主要过程如下:①根据要求的安全参数,进行系统初始化;②根据系统初始化结果,生成主密钥,得到主公钥和主私钥;③根据主密钥,生成用户私钥;④对电子病历文本进行加密;⑤对电子病历文本进行解密。
将制定的访问控制流程用智能合约来实现,降低了管理员的工作量,提高了隐私数据安全性[11]。本智能合约定义了一系列角色与相关访问权限,不同角色有不同权限,不同权限用户可操作不同的数据检索指令。当数据访问者的角色满足权限要求,经身份认证后,方能满足医疗信息访问请求。
基于角色的电子病历访问控制流程如图1所示,主要有六个步骤:身份验证、处理访问信息、访问权限验证、信息量计算、访问控制策略和访问记录修改等。
图1 基于角色的EMR访问控制流程
电子病历访问控制模型对不同用户进行了角色和权限的划分,利用区块链技术,电子病历数据分块存储,具有文件存储安全、防止数据篡改和盗窃,制定动态访问策略,可以实现对医疗数据的完全控制,有效保护患者隐私。
为测试电子病历访问控制模型的性能,利用访问行为的准确率来验证安全性,主要指标有正常访问行为准确识别率、非法访问行为准确识别率和总访问行为准确识别率。
测试数据为公司所用电子病历数据库,在实验中,选取120 次电子病历访问行为进行测试。在每次测试中,设置为不同角色,既包括本科室的合法访问,也有跨部门的非法访问,其中,符合访问控制策略的行为,即正常访问数量为40;不符合控制策略,即非法访问数量为80。电子病历访问控制的测试结果如图2所示。
图2 电子病历访问行为识别结果
根据图2 测试结果,经分析可知:正常访问、非法访问和总访问的行为识别准确率分别为97.5%、96.25%、96.7%。同时可发现,尽管电子病历访问行为正确识别率不是100%,但由于对每次访问都有记录,可以有效约束访问行为,防止医疗数据隐私泄露。
鉴于医疗大数据应用的意义,电子病历等医疗数据需要在各医疗机构中传输和共享,医疗数据的安全性和患者隐私保护是重要的研究热点。考虑到区块链的去中心化和防篡改等特点,基于用户角色,提出了一种电子病历访问控制方案,提高医疗信息的隐私保护。
区块链的信息安全以私钥安全为前提,患者私钥一旦丢失,就需要重新考虑隐私安全性;本方案是以DPoS 算法为基础实现的,其效率和应用效果有待进一步提高。此外,由于性能测试采用的公司测试数据库,电子病历规模比较小,测试结果难免会受到一定影响,在后面研究中,需要改进算法和模型,增加测试数据集,提高访问控制效果。