基于区块链和亲友节点的电子健康记录安全共享方案
2024-06-01刘惠文邓小鸿熊伟志拜亚萌
刘惠文 邓小鸿 熊伟志 拜亚萌
摘 要:區块链技术在电子健康记录安全共享上具有巨大潜力,然而,目前的解决方案存在着如存储空间大和共识效率低等问题。为此,提出了一种基于区块链和亲友节点的新方案。首先,采用分布式文件系统将用户完整的电子健康记录存储在线下服务器,并构建用户的亲友节点集,每个用户的数据由其亲友节点冗余存储,链上仅存储区块头信息,降低了存储空间;其次,设计了基于多签名技术的数据访问机制,采用Shamir秘密共享机制将用户的私钥分发给其亲友节点,亲友节点中的过半数可以利用自己的私钥重建出用户私钥,解决紧急情况下的数据访问问题;最后提出了基于信用的拜占庭容错共识机制,将信用值排名前10%的节点作为领导者节点集,采用随机算法在领导者节点集中生成主节点,提高了共识安全性。实验结果表明,所提方案所需的链上存储空间是现有方案的1/7,数据访问效率提高了15倍,同时在保证较好时延和吞吐量的情况下,具有更高的共识安全性。该方案可实现电子健康记录的安全高效共享,为区块链在医疗领域应用提供案例。
关键词:区块链; 亲友节点; 电子健康记录; 智能合约; 共识算法
中图分类号:TP311.13 文献标志码:A 文章编号:1001-3695(2024)05-006-1321-07
doi:10.19734/j.issn.1001-3695.2023.08.0380
Secure electronic health records sharing scheme based onblockchain and friend and relative nodes
Abstract:Blockchain technology has great potentiality in the secure sharing of electronic health records. However, current solutions face issues such as large storage space and low consensus efficiency. This paper proposed a novel scheme based on blockchain and friend and relative nodes. Firstly, this paper adopted a distributed file system to store users complete electronic health records on offline servers, and constructed a set of users friend and relative nodes. Each users data was stored redundantly by its friend and relative nodes, and only the blocks header information was stored on the chain, reducing sto-rage space. Then, this paper designed a data access mechanism based on multi-signature technology, using Shamir secret sharing mechanism to distribute users private keys to their relatives and friends. More than half of the relatives and friends could use their own private keys to reconstruct users private keys, solving data access problems in emergency situations. Finally, this paper proposed a credit based Byzantine fault-tolerant consensus mechanism, which used the top 10% nodes with credit values as the leader node set and utilized a random algorithm to generate the master node in the leader node set. And it improved consensus security. The experimental results show that compared with existing methods, the proposed scheme reduces the on-chain storage space by 1/7, improves data access efficiency by 15 times, and has higher consensus security while ensuring good latency and throughput. The proposed scheme can achieve secure and efficient sharing of electronic health records, providing a case for the application of blockchain in the medical field.
Key words:blockchain; friend and relative nodes; electronic health records; smart contracts; consensus algorithm
0 引言
电子健康记录(EHR)作为临床诊断和构建全民健康大数据的重要基础,对医学研究进步起着重要作用。但由于缺乏标准化的数据格式、安全可靠的互操作平台,不同利益相关者之间的EHR共享仍然具有挑战性[1,2]。在当前中心化的医疗信息系统中,当患者需要将自己的EHR在不同机构间共享时非常低效,甚至患者并没有权限操作属于自己的健康数据,由此引发的隐私泄露等风险剧增。
面对中心化系统暴露出来的问题,研究者提出使用区块链技术来提升医疗信息系统的性能,包括去中心化的数据存储、基于智能合约的互操作性、身份验证和数据完整性。此外,研究表明,基于区块链的系统还将降低数据维护和共享成本[3]。当然,区块链无法作为一种解决现有中心化系统问题的万能方法,因其本身也存在着如共识效率、数据存储空间、智能合约漏洞等性能或安全方面的隐患,而在设计基于区块链的医疗信息系统解决方案时必须考虑必要的安全因素[4,5]。目前,现有研究主要是利用Hyperledger Fabric和以太坊等平臺构建健康数据共享系统,使用智能合约实现数据的访问控制。考虑到健康数据的存储空间问题,链上通常是存储数据的映射关系。因此当系统遭受DoS攻击和面临通信瓶颈时,基于区块链的方法与传统的中心化系统并没有显著区别,因为数据存储和访问仍然是集中式的。同时,链上的映射数据可能会使用户面临隐私链接攻击。除此之外,现有研究极少数考虑在患者无法亲自提供数据解密私钥的紧急情况下,医疗机构如何获取患者的隐私数据而进行及时的救助。
综上所述,采用区块链来进行EHR安全共享具有诸多优势,但仍然存在着一些典型的问题需要解决。例如如何降低区块链系统的存储空间问题、如何保证隐私数据的安全访问问题、如何进一步提高共识算法效率和解决紧急情况下的数据访问等。针对上述问题,本文提出了一个基于联盟链和亲友节点的EHR共享方案,其中个人用户(包含患者本人及亲友)、医疗服务机构、科研机构和监管部门一起组成联盟链,所有用户经过身份验证才能加入到Hyperledger Fabric网络中。所提系统使用区块链进行数据操作的权限管理,区块链上只存储链下数据的哈希引用索引,而将实际数据采用分布式文件系统(distributed file system,DFS)链下存储在分布式的服务器中。本文的主要工作如下:
a)提出一种基于区块链的去中心化EHR共享架构和相关智能合约设计,结合用于链下数据存储的去中心化文件系统,提供与现有集中式数据库系统相当的性能,同时提供更好的安全性,保护系统免受DoS攻击、消除单点故障的影响,并提高数据完整性。
b)设计一种基于亲友节点和多签名技术的数据授权访问机制,每个用户在链上的数据仅存储在数量有限的亲友节点集中。另外在用户无法提供自己的私钥时,通过其亲友节点集中过半数的节点共同签名完成授权访问,该机制在节省存储空间的同时较好地解决了紧急情况下隐私数据的访问问题。
c)设计一种基于信用的实用拜占庭共识协议(practical Byzantine fault tolerance based on credit,CPBFT),利用节点信用值快速挑选可信赖的主节点,与现有共识协议相比,该协议在延迟、吞吐量和安全性方面具有更好的性能。
1 相关工作
Azaria等人[6]较早地提出使用区块链技术来实现医疗健康数据的共享,在提出的共享模型MedRec中,健康数据并不上链存储,而是仍然存储在数据提供者的数据库系统中,区块链的引入主要是提供数据访问的智能合约,提高数据操作的可控性和互操作性。但该模型存在几个典型问题:a)数据的安全性完全由数据持有者保证,数据被泄露和攻击的风险较大;b)MedRec采用工作量证明(proof of work,PoW)共识算法,能量消耗大,并且具有高延迟和低吞吐量;c)没有考虑特殊情况下数据的授权访问问题。2019年,Daraghmi等人[7]在前人研究的基础上,提出了一种基于区块链的电子医疗系统的新架构,架构使用了更高效的基于活动证明(proof of activity,PoA)的共识算法,鼓励节点积极提供有效医疗记录来完成“挖矿”。另外,新的架构使用代理重加密方案替代了数据共享时需要的对称密钥,并设计了新的智能合约来实现更加细粒度的数据访问控制。但该方法仍然将数据存储在链下传统的中心化数据库中,也没有考虑紧急情况下的数据访问。2020年,Tanwar等人[8]提出了一种基于联盟链的EHR共享系统,该系统能够在患者、临床医生和护理提供者之间共享数据。系统将健康数据链上存储,并使用Raft共识协议进一步提升共识效率。另外,首次对基于区块链的医疗保健系统的性能评估进行了深入研究,从延迟和吞吐量、内存使用率、CPU和网络消耗等方面进行了性能对比。该方法的缺点是没有考虑拜占庭将军问题,链上数据的增长会带来性能的显著下降。同年,Huang等人[9]提出一种基于区块链的医疗数据隐私保护和安全共享方案,数据存储在半可信的云服务器中,采用零知识证明实现在不泄露病人隐私数据的情况下满足数据访问需求,代理重加密技术以确保研究机构能够解密中间密文。该方案的缺点是采用的PBFT共识机制在网络节点数较多时,系统的性能显著降低。
文献[4]提出基于区块链的电子医疗病历可控共享模型,病历数据实现链上和链下的混合存储,结合聚类算法改进PBFT共识协议获得更高效的共识效率,同时引入基于属性的加密方法实现病历数据的安全可靠共享。Deepika等人[10]提出基于区块链的去中心化安全共享个人健康记录的方法,采用加密的权益证明(proof of stake,PoS)共识算法来提高系统效率,并将数据加密存储在代理云服务器中,链上存储数据的存储位置及哈希值。Rajesh等人[11]提出基于区块链和同态加密的医学图像隐私保护聚合模型,为去中心化网络中的医学图像数据共享带来新的范式。Erikson等人[12]设计了一种基于区块链的安全共享医学图像数据的协议,可记录用户访问图像数据的行为。Shuaib等人[13]提出了一种基于许可区块链的医疗数据共享系统,该系统集成了区块链技术、去中心化文件系统和门限签名来解决数据链下访问效率和安全授权问题,其共识机制采用了伊斯坦布尔拜占庭容错算法(Istanbul BFT,IBFT)。为了解决区块链中医疗数据的真实性来源问题,研究者们将物联网技术融合到医疗区块链中,Sharda等人[14]构建了一个基于区块链的医疗物联网原型,使用区块链技术来消除匿名数据访问,确保患者数据的隐私性。Qi等人[15]创新地提出一个集成了深度学习、区块链和IoMT技术的框架,深度学习技术可正确预测病人的压力级别,区块链中的智能合约确保安全事务和健康检查,IoMT设备准确获取病人的多模态数据。上述方法虽然较好地解决了医疗数据共享过程中出现的隐私泄露和安全共享问题,但也存在着共识效率不高和缺乏紧急情况下数据授权访问的问题。
表1对目前的研究工作做了一个简单的对比,主要从系统采用的区块链框架、共识算法、数据存储策略、去中心化访问和数据授权访问(紧急情况下)方面进行比较。从表1可以看出,目前绝大部分方法选用了Hyperledger联盟链架构作为系统的底层框架,原因是联盟链更方便对网络中的节点进行信任管理。采用的共识算法绝大部分采用具有容错功能的PBFT及其改进算法,原因是该共识算法在节点数量较小时具有高的共识效率和抵抗少数节点作恶的能力。但是,上述方法很少考虑到紧急情况下的数据授权访问问题,极少数方法采用门限签名策略来实现。综上所述,基于区块链的EHR共享系统仍然有关键技术需要突破,如更加高效和安全的共识机制,紧急情况下患者隐私数据的授权访问问题。
2 提出的系统架构
本文提出的基于区块链和亲友节点的EHR共享方案由EHR存储方案和共享方案两个部分组成,分別如图1、2所示。考虑到目前EHR保存的实际情况,数据可由机构或者患者本人提出上链存储,存储步骤如下:a)数据在机构中,机构代表患者上传数据,需获得患者同意,得到授权后方可将拥有的数据进行上传,称为机构上链;b)患者本人可将自己的数据上链存储,称为自主上链;c)将EHR采用数据拥有者的公钥进行加密,得到加密后的EHR;d)将加密后的EHR存储到患者的亲友节点中,亲友节点的构建将在第3章介绍;e)亲友节点广播加密后的EHR数据;f)共识节点集运行CPBFT算法挑选主节点,主节点将亲友节点广播的数据进行打包区块,构建Merkle tree;g)将Merkle root上链存储,形成区块头链,区块头中包含Merkle树根、对应的DFS地址、时间戳等信息,相比现有的区块链,并不存储区块体信息;h)将Merkle tree存储到DFS中,实现链下存储。
在本文方案中,由医院、监管部门和科研机构组成共识节点,负责运行共识算法得到主节点和维持链上数据的一致性。共识节点执行如下功能:向DFS系统添加数据,将相应的事务信息上传到区块链,验证从外部用户收到的各种交易,如权限请求和权限授予等。本文采用基于信用的PBFT算法CPBFT,CPBFT在PBFT算法上进行改进,将节点的信用机制引入到主节点产生阶段。首先,通过节点信用值评估机制计算节点的信用值,并按照信用值高低进行排序,将信用值排名前10%的节点作为领导者节点集;其次,利用可验证随机函数(verifiable random function,VRF)随机挑选一个节点作为主节点,当发现主节点故障或作恶时,可从领导者节点集中再次快速产生一个主节点。信用值高的节点具有低的作恶概率,能有效降低拜占庭节点对系统性能的影响,另外通过信用值来快速生成领导者节点,能显著提高共识效率。
EHR存储方案能将机构或者患者本人拥有的健康数据进行链上和链下的结合存储。健康数据被加密后存储在数据拥有者的亲友节点中,并由共识节点选举出来的主节点完成区块的生成工作,将生成区块过程中形成的Merkle根进行链上存储,将Merkle树存储在多个DFS中,链上和链下的数据映射关系和Merkle根一起形成区块头链存储在链上所有节点中。
在完成电子健康记录的存储后,可按照如下步骤完成数据的共享:a)数据访问者通过向区块链系统提出访问请求,由许可合约向数据的拥有者提出本次访问的授权;b)数据拥有者对本次访问进行授权;c)数据访问者通过正常访问方式从DFS中获取数据;d)数据拥有者在紧急情况下无法实现授权访问,则改为向其亲友节点集提出授权请求,由亲友节点联合授权;e)数据访问者通过紧急访问方式,直接从亲友节点处访问数据。
EHR共享方案实现了每一次访问数据的权限控制功能,在正常情况下,数据访问者请求访问数据,许可合约会判断数据访问者的权限和是否得到数据拥有者的授权,如果满足合约执行条件则能从DFS访问数据。在数据拥有者无法亲自授权时,许可合约尝试从其亲友节点中获得联合授权,如果满足合约条件则直接从亲友节点中快速获取数据。
为了实现数据的安全访问,主要设计了注册合约、数据合约和许可合约三种类型的智能合约。
1)注册合约
为了保护系统免受恶意用户的攻击,要求所有用户都在注册合约上匿名注册。这些数据包括用户公钥及其角色,如患者、医疗机构、科研机构和监管机构。主节点在验证发送到数据合约和权限合约的交易时,会检查用户的合法性。
2)数据合约
数据合约存储在一个记录列表,用于指示用户与其数据之间的映射。列表中的每个数据行都由数据所有者的公钥、使用公钥加密的对称密钥、数据类型和指向链下存储的原始数据的数据哈希组成。用户的电子健康记录数据由主节点,即数据提供者代表用户上传至DFS,同时数据合约提供了添加和修改数据的功能接口,用户可以调用接口修改数据。
3)许可合约许可合约保存数据访问权限的记录,显示用户对数据具有的不同权限。每个访问权限由权限授予者的公钥(数据所有者的身份)、权限请求者的公钥(数据访问者的身份)、使用请求者公钥加密的对称密钥(用于保证本次数据访问的机密性)和数据的哈希四个部分组成。许可合约也提供相关的功能接口,允许系统中的参与者请求权限、授予权限和修改权限。
3 方案具体实现
为了更加方便地描述细节,表2给出相关变量和函数的形式化描述与说明。
3.1 共享方案初始化
1)基本假设
医院、监管部门和科研机构负责产生主节点,它们中的单个个体可能会存在恶意行为,但选举出的主节点具有高可信度,生成的区块数据值得信赖。
a)数据拥有者:拥有自己数据的控制权,想获取其他用户的数据。
b)数据访问者:可能会有恶意行为,试图破坏数据的机密性或修改、删除其他用户的数据。
c)DFS:分布式文件系统是安全的,未经授权的用户不能修改或删除数据。
上述假设并不影响方案的实际应用,共识节点中个别节点存在恶意行为本身就在PBFT共识机制的考虑范畴之内。数据拥有者和访问者具有潜在的非法访问数据的动机在任何信息系统中均存在,而DFS作为分布式存储中的主要技术方法,在安全性上具有较好的保障。
2)初始化
a)系统实体身份。每个系统实体都生成一个公钥-私钥对{PK, SK},公钥用于实体在区块链中进行秘密通信,如实体A要向B发送隐秘信息时,用B的公钥进行加密后发送。私钥用于实体向注册合约发送由其私人密钥签署的注册交易,一般用于数字签名。
b)亲友节点集构建。每个节点(数据拥有者)选择大于等于三个节点作为自己的亲友节点集,并将自己加密后的EHR、拆分后的私钥发给亲友节点。
c)智能合约部署。在区块链上部署注册合约、数据合约和许可合约三个智能合约。
d)数据表示。用户数据在系统中表示为四元组{PK,HI,DT,ED}。其中:PK是数据所有者的公钥;HI是数据的哈希;DT是数据类型;ED是数据D的加密形式。
3)亲友节点集构建
区块链系统的数据存储方式是让系统中的所有节点来存储区块的信息,即让每个节点存储所有个体的健康数据,这对于存储代价和运行效率均是挑战。一个可行的方案是每个节点均存储若干个体的数据信息,因为从人类社会关系网络来看,每个人的社交圈涉及的个体是有限的。个体A的健康数据由A的N(N≥3)个亲友节点和其本身存储,个体A的亲友节点集如图3所示。节点A的外围是其N个亲友节点,负责存储节点A的记录备份,节点间具有p2p网络中典型的对等关系。
4)基于多签名技术的数据授权访问方法
在本文方案中,每个个体拥有对自己健康数据的直接访问和授权访问的权限。当数据访问者(如医疗服务机构)需要访问个体的健康数据时,个体提供自己的私钥解密后发给医疗服务机构;但是,当个体无法提供私钥时,医疗机构如果需要授权访问数据,可以通过个体的亲友节点授权来完成。为了避免亲友节点中个体拥有私钥产生信息泄露的问题,医疗机构需要获得亲友节点中的过半数的节点共同授权才能访问。基于多签名技术的数据授权访问模型如图4所示,其工作步骤如下:
a)节点A将自己的私钥分成N份(图中假设N=3,N为节点A亲友节点的个数),如SK_A1、SK_A2和SK_A3;
b)节点A分别用N个节点的公钥对划分的私钥进行加密,得到EPK_1(SK_A1)、EPK_2(SK_A2)和EPK_3(SK_A3);
c)节点A将步骤b)的结果采用Shamir秘密共享方式[16]分别发送给N个亲友节点;
d)数据访问者(如医疗机构)需要访问节点A的健康记录明文时,在不能直接从A处获得私钥SK_A时,通过向A的亲友节点发出请求以获得A的私钥;
e)亲友节点中过半数的节点用自己的私钥签名后,可以合成A的私钥SK_A;
f)数据访问者得到私鑰后,可以从节点A的任一亲友节点中访问其健康数据。
由于节点A的私钥重建需要参与亲友节点的私钥签名,可以判断本次授权访问是哪些节点参与了授权。
3.2 基于信用的PBFT共识机制
节点的信用值计算是CPBFT的基础,采用笔者前期所提的节点信用值计算的通用模型[17],描述如下:
Ci=F(Ti)(1)
其中:Ci代表节点i的信用值;F为信用值计算函数,可表示为线性计算公式或神经网络训练函数;Ti为节点i参与系统行为的特征向量。F函数如笔者之前提出的基于BP神经网络的节点信用值评估机制[18],可更为准确地评价节点信用,解决线性算法无法有效对节点的行为特征进行描述的问题。具体的实现细节可参考文献[17,18],本文不再重复介绍。
PBFT算法可大致分为主节点选取、请求、预准备、准备和提交五个阶段。CPBFT算法对主节点选取阶段进行改进,引入节点信用值和VRF挑选主节点,具体描述如算法1所示。在主节点生成后,客户端向其发送请求消息(请求阶段),然后主节点生成预准备消息并广播给跟随者节点(预准备阶段),跟随节点将带有自己签名的投票消息广播给其他节点(准备阶段),主节点收到来自2f+1个诚实节点的反馈后,将消息打包反馈给客户端(提交阶段)。在预准备阶段,一旦发现主节点作恶,将作恶主节点从领导者节点集中剔除,并重新选择主节点。
算法1 CPBFT中主节点选取算法
输入:所有节点集合N={n1,n2,…,ni};节点私钥SKi;公钥PKi;随机种子seed;抽签阈值NUM。
输出:主节点nj。
N′={n1′,n2′,…,ni′}←sort(N) //对节点集合进行信用值排序
l←i×10% //前l个节点作为领导者节点集
L={n1′,n2′,…,ni′} //领导者集合
function selection(L,l,SKi,PKi,seed)
j←1
while j≤L.length do
Y←VRF_hash(SKj,seed) /*在领导者集合中使用VRF产生随机数Y*/
proof←VRF_proof(SKj,seed) //生成证明
if Y>NUM && VRF_verify(PKj,seed)==true then /*验证抽签结果*/
return nj //返回主节点
j++
end if
end while
leader←selection(L,l,SKi,PKi,seed) /*确定主节点,准备开始PBFT后续阶段*/
3.3 智能合约设计
1)数据合约
EHR数据可以由两种方式添加到共享系统中,一种是由主节点代为上传,另一种是由数据拥有者自己上传。
a)主节点上传用户数据。假设主节点m想要上传属于用户u的数据,m一方面要将数据加密存储在DFS上,另外还要将等效事务发送到区块链上。其操作时序如图5所示,详细操作步骤如下:
(a)加密原始数据RD,m生成对称加密密钥key,加密RD,得到Ekey(RD)。
(b)生成哈希索引,m为加密数据生成哈希,HI=hash(Ekey(RD))。
(c)将数据存储在DFS上,发送到DFS进行数据存储的消息表示为SD=PK_u‖DT‖HI‖Ekey(RD)。
(d)得到用户u的公钥PK_u。
(e)m使用PK_u加密key,得到EPK_u(key);使用用户的公钥对对称密钥key进行加密,允许用户稍后解密并获得密钥。因此,只有用户u才能访问对称密钥。
(f)生成区块链交易BT,BT=PK_u‖DT‖HI‖EPK_u(key)。
(g)数字签名BT,m使用其私钥对BT进行签名,如SigSK_m(BT)。
(h)分发BT和验证签名。m将BT发送给其他参与共识的节点进行签名,并从N个节点中收集至少t个签名,表示为SKS。
(i)发送交易到区块链,发送到区块链的最终交易是SigSSK(BT)‖BT。
b)数据拥有者上传个人数据。过程与前面所述的主节点上传用户数据类似,但更为简洁,只需要用自己的私钥进行加密或者签名。设用户u上传自己的个人数据,其步骤如下:
(a)将数据上传到DFS。该步骤与前面步骤(a)~(c)相似,不再赘述。
(b)将交易发送到区块链。创建区块链交易,区块链交易的内容为BT=PK_u‖DT‖HI。签署并发送交易,要发送到区块链的交易被签署为SigSK_u(BT)‖BT。
2)许可合约
对于数据拥有者本身,当交易被发送到区块链时,系统会向其发送通知。一旦用户接收到通知,他就从数据合约中下载元数据,包括哈希索引和加密的对称密钥key。接下来,使用用户的私钥对对称密钥进行解密。然后,通过向附近的DFS节点之一发送由哈希索引组成的查询来检索加密数据。一旦用户接收到加密数据,就使用对称密钥对原始数据进行解密。
对于其他用户,他们可以看到谁拥有什么数据。任何对数据感兴趣的人都可以通过发送请求访问到许可合约,许可合约对请求者的身份进行验证,并向数据的请求者发送访问请求,得到其授权后可以同意本次数据访问请求。请求访问数据表示为SigSK_i(HI)‖HI,其中i是请求数据访问的用户。
数据所有者收到数据访问的授权请求通知后,可以批准或拒绝该请求。如果同意本次访问,则发送一个事务,该事务包括请求数据的HI、请求者的公钥以及用请求者公钥加密的解密数据用的对称密钥。权限授予数据表示为SigSK_j(HI,PK_i),EPK_i(key))‖{HI, PK_i,EPK_i(key)},其中i是许可请求者,j是批准请求的数据所有者。一旦许可被批准,用户就下载加密的密钥并解密对称密钥(满足一次一密原则)。然后可以通过使用HI从附近的DFS节点检索数据,并使用对称密钥解密数据。
4 方案安全性分析
4.1 机密性、完整性和可用性
1)机密性
在本文方案中,所有EHR在上传到DFS之前,都由主节点或者用户自己使用安全加密算法进行加密。安全加密算法保证了EHR数据的机密性。假设某医疗机构A想在没得到患者D授权的情况下获取D的数据,如果A不是主节点,从3.3节中介绍的方案可以看出,只有主节点或用户自己可以访问原始数据,所以A只看到散列和加密的数据。如果A通过许可合约来申请访问数据,只有获得D的私钥才能解密数据,在公私钥密码体制中,从公开的公钥获得私钥在计算上是不可能的。从以上分析可以得出,本文方案具有高的数据机密性。
2)完整性
在本文方案中,不论是主节点还是用户自己将数据添加到链上存储时都需要加他们的数字签名,而数字签名的私钥只能由他们自己保存,其他实体无法获得,这确保了签名验证的真实性和不可抵赖性。区块链中的交易数据一旦通过CPBFT算法达成共识并上链存储后,区块的顺序和交易将受到哈希链的保护,每个区块的哈希值是唯一的,一旦链下数据进行了更改,必然会造成链上哈希链数据的不一致。假设攻击者Alice修改了DFS中存储的数据信息,那么Merkle树的树根值必然会发生变化,这与区块头链中存储的Merkle根值不一致,此功能可确保数据的完整性。
3)可用性
在本文方案中,只有授权实体才能使用其用户的私钥来解密其EHR。当用户自己能提供私钥时,许可合约能保证本次数据访问的正常进行;当用户在紧急情况下不能提供私钥时,可以通过其亲友节点构造出用户的私钥来完成数据访问。假设患者Bob无法提供自己的私鑰,数据访问的许可合约会从Bob的亲友节点中去尝试联合授权,如果授权成功,可直接从Bob的某个亲友节点中获取数据,此功能可确保数据的可用性。
4.2 容错性
a)拜占庭节点数。本文提出的CPBFT基于PBFT改进,在抗拜占庭节点数量上保持一致,假设共识节点的总数为3f+1,那么允许的拜占庭节点的最大数为f。
b)主节点作恶。当出现主节点作恶行为时,将会重新在领导者节点集中随机再次选出一个主节点,由于领导者节点集为信用值排名前10%的节点,具有高的可靠性,一定程度上保证了系统的安全性。另外从领导者节点集中快速产生新的主节点,也避免了由原始PBFT算法的视图切换带来的性能下降。
c)单点失效。本文方案采用了去中心化存储系统结构,能有效地解决单点故障问题。首先,用户在链上的数据会重复存储在其亲友节点中;其次,链下的数据存储在分布式的文件系统DFS中,均避免了因单个节点失效而带来的数据丢失问题。值得注意的是,本文方案中每个区块数据不是由链上的所有节点存储,而是存储在少数节点中,这将大大减小存储压力。
d)可追踪性。本文方案中,所有个体通过统一的许可合约访问数据,并且均需要提供请求访问者的私钥,一旦发生隐私数据的泄露,都能唯一定位到曾经访问数据的个体。另外在紧急情况下,亲友节点可以构造出用户的私钥,该过程也需要每个亲友节点的私钥参加,也就是能确定哪些个体参与到了本次操作,说明本文方案具有可追踪性。
4.3 存储效率与时间效率
a)存储效率。本文方案对EHR的存储仍然使用的是链上+链下的方式,典型的区别在于一个用户的EHR数据会冗余地存储在其链上的亲友节点中,而现有方法是让所有节点存储数据的映射关系,并不存储完整的数据。为了节省存储空间,本文方法链上存储仅仅只存储区块头,而一般的方法是包含了区块头和区块体的,在链上节点数量较大时,本文方法所需的总存储空间仍然占有优势。
b)时间效率。通常情况下,现有链上+链下方法在访问数据时,要先通过链上访问,遍历区块头,再找到区块体,从区块体中找到链下存储的DFS服务器地址,最终找到数据。本文方法是先遍历区块头,再找到DFS,从DFS存储的区块体中找到所需的数据。可以理解为通常方法是区块头→区块体→DFS,本文方法是区块头→DFS→区块体,在时间效率上和现有方法基本一致。
5 仿真实验与性能评估
本文采用Hyperledger Fabric联盟链框架来实现提出的电子健康记录安全共享原型系统,使用DFS来进行去中心化的数据存储。编程语言采用Python,前端展示采用Vue框架,传统数据库使用MySQL和Redis,操作系统采用Windows 10。在学校实验室环境中配置了15个区块链节点,其中医疗机构4个,科研机构3个,监管部门1个,患者及亲友7个。经实际运行,构建的原型系统能较为快捷有效地完成数据的链上链下混合存储,并没有显著增加链上节点的存储空间,数据共享访问所需的时间在可接受范围内。另外,为了更加方便对比本文方法的性能,在Ubuntu虚拟机上进行一系列的仿真实验,该虚拟机配置120 GB的内存、16个CPU内核,每个内核的速度为2 GHz。为了评估本文算法的可扩展性,实验中模拟了不同数量的节点,分别为50、100、150、200、250、300、350和400。每个节点都运行Hyperledger Fabric区块链客户端软件的一个实例。本文使用Python编程实现了用户客户端应用程序,并为每个用户分配了公钥和私钥。实验中EHR数据采用了某医院外科提供的100份脱敏后的EHR。
5.1 存储空间
为了评估本文方法在存储空间上的性能,记录区块链系统在写入不同份数EHR记录时所需的存储空间,区块链中的节点数设置为50个。实验中将本文方法与传统链上+链下结合存储的方式进行性能对比,实验结果如图6所示。从图6中可以看出,随着上链存储的EHR数量越多,区块链系统所需的存储空间越大,并且传统链上+链下存储方法的增长速度较大,而本文方法增长较为平缓,在全部100份EHR记录上链存储时,传统方法所需的存储空间在3.2 MB左右,而本文方法仅需0.46 MB。其原因是传统链上+链下的存储方式将完整的电子健康记录存储在链下的数据库中,而链上存储链下数据的映射关系,并且链上的每个节点都需要存储完整的区块链信息(含区块头和区块体),虽然区块体中不再包含具体的交易信息,而是一些数据存储关系映射,但当节点数增多时,链上存储压力仍然较大。而本文方法中链上的每个节点都只需要存储其亲友节点的数据和区块头信息,在节点数较多和需存储的EHR增多时具有显著优势。实验中,亲友节点数设置为10,虽然随着亲友节点数的增大,其存储空间会增大,但增长幅度非常小。从存储空间的实验结果来看,本文方法可大大节省链上存储空间,具有较好的可扩展性。当然本文方法需限制亲友节点数大小,因为亲友节点会冗余存储完整数据。
5.2 时延
在时延的仿真实验中,主要对比了系统中数据的访问时延和系统在执行不同共识算法时的时延。数据的访问时延对比了文献[9]的云服务器存储方法和本文采用的分布式文件系统,记录了系统在处理不同并发访问次数时的耗时(所有访问全部成功执行所需的时间),实验结果如图7所示。
从图7可以看出,随着系统中并发访问数增多,两种方法的数据访问所需时延都在增大,但文献[9]明显大于本文方法,在并发访问数达到100时,文献[9]所需的时延约为16 min,而本文方法仅需0.5 min左右。特别注意的是,当并发访问数达到60后,文献[9]的访问时延增长速度明显增大。其原因是文献[9]将所有EHR都存储在中心化的云服务器中,当并发访问数增大,云服务的处理压力将会显著增大,虽然目前的云服务器都有任务负载均衡的机制,但当处理请求达到云服务器的处理瓶颈时,系统的访问时延将会受到较大影响。而本文方法将EHR数据分布式地存储在不同的服务器中,当并发访问数增多时,所需的时延虽然会增大,但分布式的服务器较大程度缓解了集中式的访问瓶颈问题。
图8给出了模拟不同共识算法在不同节点数量下达成共识所需的时延,分别比较了本文方法(CPBFT)和(PBFT)[4]、PoS[10]和IBFT[13]。從图8中可以看出,三种基于PBFT的共识算法比PoS具有更低的时延,这是因为PoS是基于PoW共识机制进行改进的,虽然不再需要消耗大量的能量去“挖矿”,在一定程度上缩短了共识达成的时间,但本质上仍然需要“挖矿”取得代币,通过“币龄”来确定参与共识的节点。IBFT和CPBFT共识均是在PBFT基础上进行改进的,在共识时延上具有明显改进。值得注意的是,本文CPBFT时延低于IBFT,这是因为前者需要额外计算参与共识节点的信用值,在每轮共识结束后,都要进行节点信用值和领导者节点集的更新。当然,CPBFT共识算法在共识流程中还有待进一步的优化,特别是引入节点信用值后,可以将算法的五阶段流程进行精简,提高共识效率。
5.3 吞吐量
本文设置系统并发事务量为200 笔/s,吞吐量对比实验如图9所示。从图9可以看出,四种不同共识算法的吞吐量随着参与共识节点的数量增多而缓慢下降,原因是在固定的交易数量下,共识所需的时延在增大。四种方法中PoS的吞吐量最低,在138~150 TPS,PBFT次之,吞吐量在235~221 TPS,IBFT和本文CPBFT的吞吐量较为接近,其中IBFT略高于CPBFT。原因在于,PoS共识需要花费最多的时间来选取主节点,PBFT共识在选取主节点上进行了优化,能大大加快主节点生成时间,CPBFT增加了节点信用值的计算,所需的时间略高于IBFT。
5.4 主节点作恶
虽然本文CPBFT在时延和吞吐量上相比IBFT不具有优势,但在主节点选择的安全性上具有更好的性能。图10给出了四种不同的方法在不同的共识次数后,发现恶意节点作恶的概率。实验中限定50个共识节点,其中从第5轮共识开始,随机从50个节点中选择10%的节点作恶。从图10可以看出,所有的共识算法随着共识次数的增大,可以逐渐发现恶意节点。其中,PoS具有非常低的恶意节点驱逐概率,基本没有抗拜占庭节点的能力;三种类PBFT算法具有较好的抗拜占庭节点能力,在共识次数超过60次时,可以排除70%的恶意节点,其中本文CPBFT具有最好的性能,明显高于PBFT和IBFT,在共识次数达到70次时,能识别所有作恶节点。原因在于:PoS共识算法没有考虑拜占庭容错问题;PBFT支持拜占庭容错但需要一定时间的视图切换才能定位故障节点;IBFT在PBFT基础上改进,优化了共识流程,能更快地发现故障节点;CPBFT引入了信用机制,通过节点信用值能有效驱逐恶意节点。
6 结束语
本文提出了一种基于区块链和亲友节点的EHR安全共享方案。采用链上+链下结合存储的方式确保了数据的安全性和访问效率,链下采用DFS分布式文件系统存储电子健康记录,链上采用联盟链存储电子健康记录的映射关系。首次提出亲友节点集和多签名技术的数据存储和访问方法,节点的EHR数据仅存储在其亲友节点中,链上仅存储区块头信息,大大节省了存储空间,通过多签名技术构造出用户私钥,解决了紧急情况下的授权访问问题。另外,设计了基于信用的拜占庭容错算法,提升了共识效率和安全性。实验结果表明,本文方案相比现有基于区块链的解决方案表现更好,同时提供了更好的数据安全性和访问效率。下一步将在CPBFT基础上进行优化,精简共识流程,并设计结构化的拓扑结构来进一步提升共识算法的效率。
参考文献:
[1]Valeria M, Gianvito P, Francesco G, et al. On the exploitation of the blockchain technology in the healthcare sector: a systematic review[J]. Expert Systems with Applications, 2023, 213: 118897.
[2]Kumar A, Krishnamurthi R, Nayyar A, et al. A novel smart healthcare design, simulation, and implementation using healthcare 4.0 processes[J]. IEEE Access, 2020, 8: 118433-118471.
[3]王利朋, 关志, 李青山, 等. 区块链数据安全服务综述[J]. 软件学报, 2023,34(1):1-32. (Wang Lipeng, Guan Zhi, Li Qingshan, et al. Survey on blockchain-based security services[J]. Journal of Software, 2023,34(1): 1-32.)
[4]张磊, 郑志勇, 袁勇. 基于区块链的电子医疗病历可控共享模型[J]. 自动化学报, 2021,47(9): 2143-2153. (Zhang Lei, Zheng Zhiyong, Yuan Yong. A controllable sharing model for electronic health records based on blockchain[J]. Acta Automatica Sinica, 2021,47(9): 2143-2153.)
[5]陳友荣, 陈浩, 韩蒙, 等. 基于信用等级划分的医疗数据安全共识算法[J]. 电子与信息学报, 2022,44(1): 279-287. (Chen Yourong, Chen Hao, Han Meng, et al. Security consensus algorithm of medical data based on credit rating[J]. Journal of Electronics & Information Technology, 2022,44(1): 279-287.)
[6]Azaria A, Ekblaw A, Vieira T, et al. MedRec: using blockchain for medical data access and permission management[C]//Proc of the 2nd International Conference on Open and Big Data. Piscataway, NJ: IEEE Press, 2016: 25-30.
[7]Daraghmi E, Daraghmi Y, Yuan S. Medchain: a design of blockchain-based system for medical records access and permissions management[J]. IEEE Access, 2019,7: 164595-164613.
[8]Tanwar S, Parekh K, Evans R. Blockchain-based electronic healthcare record system for healthcare 4.0 applications[J] . Journal of Information Security and Applications, 2020,50: 102407.
[9]Huang Haiping, Zhu Peng, Xiao Fu, et al. A blockchain-based scheme for privacy-preserving and secure sharing of medical data[J]. Compu-ters & Security, 2020, 99:102010.
[10]Deepika K M, Sanjay H A, Mohan M M K. Blockchain-based decentralized security using crypto-proof of stake for securing sensitive personal health care records[J]. Advances in Engineering Software, 2022,173: 103235.
[11]Rajesh K, Jay K, Abdullah A K, et al. Blockchain and homomorphic encryption based privacy-preserving model aggregation for medical images[J]. Computerized Medical Imaging and Graphics, 2022,102: 102139.
[12]Erikson J A, Alyson J S, Rodolfo I M, et al. A blockchain-based protocol for tracking user access to shared medical imaging[J]. Future Generation Computer Systems, 2022,134: 348-360.
[13]Shuaib K, Abdella J, Sallabi F, et al. Secure decentralized electro-nic health records sharing system based on blockchains[J]. Journal of King Saud University-Computer and Information Sciences, 2022,34(8): 5045-5058.
[14]Sharda T, Namrata D, Harsh D. A real time secured medical management system based on blockchain and Internet of Things[J]. Measurement: Sensors, 2023, 25: 100630.
[15]Qi Pian, Chiaro D, Giampaolo F, et al. A blockchain-based secure Internet of medical things framework for stress detection[J]. Information Sciences, 2023, 628: 377-390.
[16]Priyanka S, Balasubramanian R. Reversible data hiding based on Shamirs secret sharing for color images over cloud[J]. Information Sciences, 2018,422: 77-97.
[17]劉惠文, 谢才炳, 邓小鸿. 基于信用的区块链共识算法对比研究[J]. 计算机应用研究, 2023,40(2): 321-327. (Liu Huiwen, Xie Caibing, Deng Xiaohong. Comparative research on blockchain consensus algorithm based on credit[J]. Application Research of Computers, 2023,40(2): 321-327.)
[18]Deng Xiaohong, Li Kangting, Wang Zhiqiang, et al. A novel consensus algorithm based on segmented DAG and BP neural network for consortium blockchain[J]. Security and Communication Networks, 2022, 2022: 1060765.