区块链上电子病历可实现多方数据用户共享患者的数据,本文提出基于联盟区块链的医疗健康数据安全模型,患者可搜索及解密自己的医疗健康数据,经过授权的个人数据用户和第三方用户,在不对患者隐私造成侵犯的前提下也可以访问患者的数据。现对基于联盟区块链的医疗健康数据安全模型探讨如下。
一、基本结构
基于联盟区块链的医疗健康数据安全模型的基本构架见图1。
图1 医疗健康数据安全模型图示
该模型可提供3种不同的服务,包括存储、查询以及上传。
存储:可以实现对所有医疗健康数据的存储,该模型允许医院对外提供接口以实现存储服务。
查询:医院一级节点联盟群(HL-1)可以向医疗机构或者用户提供查询服务,联盟群内的医疗机构提供查询接口,用户可以进行对医疗机构授权等操作。
上传:当结束医院的访问时,用户请求加密数据后上传,医院基于存储服务,向医院一级节点联盟提出存储请求,以后当用户前往联盟内的其他医院就诊时,通过查询服务即可获得自己的历史数据。
该模型下,医疗机构联盟包括医院一级节点联盟群和医院二级节点联盟群(HL-2),使用混合共识机制兼顾性能与安全。为确保数据不被篡改、数据可信,该模型将数据摘要哈希值、数据上传者公钥、上传时间统称为一个TX,计算TX的哈希值后,将TX的哈希值存放在Merkle树的叶子节点,叶子节点两两相加并哈希后放入根节点。这样以来数据的真实性得到了保障,二级节点在验证数据的真实性时也更加方便。多个TX块组成叶子节点,之后层层向下计算哈希值直到得到Merkle树的树根,每10s进行一次,见图2。
图2 区块链结构图示
该医疗健康数据安全模型基于联盟链,因此混合共识机制可以稳定在每分钟内生成一个区块,模型每分钟冻结一次数据。由HL-1中的当值节点向区块链中提交已经生成的Merkle根,进而确保数据不被篡改。该模型下,成员基于混合共识机制快速达成一致,之后共享数据,这样一来一致性就得到了保障;在以上基础上,基于代理重加密的方式,将原始健康数据存储在分布式数据库中,进而提高了数据的安全性[1]。
二、医疗健康数据的安全存储和访问
当值节点对医疗健康数据进行检查,确认无误后,用户或者医院即可利用公钥将医疗数据加密存储于DDB中。为实现数据的安全存储和安全访问,该模型引入代理重加密(Proxy Re-encryption)。当医生提出查询病人数据的服务请求时,HL1中的当值节点R对医生需要查询的那部分数据在DDB中做正常的加密操作,并在医生和病人之间生成与他们自身相对应的代理重加密密钥[2]。HL1中的其他节点O和HL2中的检查节点C都可以申请重加密权利,HL1可以从中选取一个节点并将重加密密钥发送给它,该节点根据密文和重加密密钥完成重加密操作,然后将数据记录到区块链中,而索引标识则是提出请求的医生的公钥。医生可以利用自己的私钥,通过区块链到DDB中获取病人的医疗数据。该模型采用的是基于网格的代理重加密方案,按照初始化→生成公私钥对→加密算法→输出密文→重加密密钥生成算法→重加密算法→解密算法的流程实现加密[3]。
三、应用实现
1、网络节点架构
联盟区块链是同行业的多个机构一起联合搭建起来的,因此仅有用户的传感器节点是远远不够的,还需要医疗机构、保健机构和康复中心等提供大量的区块链节点。本文的整个区块链网络节点架构如图3所示。
图3 区块链网络节点架构
本文的联盟区块链节点分为CA节点、Peer节点和Orderer节点三大类。CA节点是Certificate Authority证书颁发中心,负责用户客户端登记注册和证书颁发,客户端在区块链上的任何操作都离不开CA节点颁发的身份证明。
Peer节点又可以细分为背书节点和记账节点。当客户端发起交易之前,会先发起交易的提案交由背书节点来模拟执行交易,背书节点是由Peer节点中动态选举出来的,因此本文选择将背书的功能交由各类机构和中心的 Peer节点来完成,减少传感器 Peer节点的负担。记账节点则只是负责同步新的交易到账本上,所有的Peer节点都可以作为记账节点,每个Peer节点都维护一份联盟区块链账本的副本。
Orderer节点也叫作排序节点,负责给新生成的交易进行排序并广播给联盟中的所有区块链Peer节点,通知它们更新自己的账本副本。
2、身份管理
身份管理机制是联盟区块链相对于公有区块链最独特的一点,也正是因为有了身份管理机制进而才能实现联盟准入机制,实现隐私数据对外不可见,这对于脆弱的体域网来说非常重要。身份管理由证书与PKI架构实现,一个传感器区块链节点的身份注册过程分为线下和线上两部分,具体的授予过程如图4所示。
图4 身份注册
用户在线下凭借身份证明向CA机构申请用户名和密码,再在客户端凭用户名和密码在线发送注册请求;CA机构会在数据库中标识该用户名和密码并返回注册证书给用户;用户凭借注册证书再向CA申请TLS证书用于连接本联盟区块链网络;CA核对数据库中是否标识了该注册用户,如果已标识则返回TLS证书给用户客户端。
3、数据安全
医疗机构对于医疗健康数据的安全性要求非常高,主要体现在数据的完整性和隐私性。本文通过以下四点来保护用户的数据:
(1)每一个区块都记录有前一个区块和自身的哈希值,这个哈希值包含了交易的内容,如果交易的内容被篡改了,哈希值会改变,前后区块就会断开,这就防止了用户的生理数据被恶意篡改。
(2)区块链中的每一个Peer节点都会维护一份账本,整个区块链就形成了分布式记账,本文采用的Kafka共识可以容忍小于1/2的节点故障,因此仅仅某一个节点恶意篡改账本上的交易是无法达成区块链大多数节点共识的,这就维护了用户数据的完整性。
(3)联盟区块链中的节点都会进行严格的身份管理和审查,在此之后才有资格加入联盟链的Channel通道中,该通道是封闭式的,只有加入到通道的节点才能发起交易和记账,因此用户的隐私数据对于通道外的节点是不可见的,这在一定程度上保障了用户数据的隐私性。
(4)在Channel通道中还可以通过私有数据Private Data技术进一步提升用户数据的隐私安全,存放在Private Data中的数据可以只针对某些机构组织开放,这些组织可以查看到Private Data中的内容,其他的记账节点只能记录这些内容的加密hash值用于校对。
结束语
区块链作为分布式、去中心化的结构,将区块链应用于区域医疗健康数据共享中,可有效解决数据可信度、数据共享、隐私保护以及安全管理等多种问题。本文提出基于联盟区块链的医疗健康数据安全模型,可满足同行业的多个机构对信息共享及安全的需求。
参考文献
[1] 牛淑芬,陈俐霞,李文婷,等. 基于区块链的电子病历数据共享方案[J]. 自动化学报,2022,48(8):2028-2038.
[2] 翟社平,汪一景,陈思吉. 区块链技术在电子病历共享的应用研究[J]. 西安电子科技大学学报(自然科学版),2020,47(5):103-112.
[3] 牛淑芬,刘文科,陈俐霞,等. 基于联盟链的可搜索加密电子病历数据共享方案[J]. 通信学报,2020,41(8):204-214