一种基于区块链技术的医疗数据共享模型研究
2024-01-14龙草芳江荣旺
魏 爽 龙草芳 江荣旺
(三亚学院信息与智能工程学院,海南 三亚 572000)
1 引言
在数字化时代的今天,数据大量存储在云端。医疗机构使用私有电子数据库存储信息,当患者由于各种原因更换医疗机构时,患者的数据就会分散在各个医疗机构中,由于缺乏统一的数据共享和管理机制,导致医疗机构之间缺乏互操作性。另外,为了维护医院和病人的隐私,病历都存储在前一家医院的私人数据库中,医生无法获得病人以前的治疗记录,从而无法制定未来的诊断计划。因此,数据查询和共享已成为一个严重的问题。基于云存储的解决方案虽然能解决数据共享问题,但存在集中控制、安全和隐私方面的问题。而通过加密的方法尽管可以解决云服务提供商在医疗数据共享中的隐私和安全问题,但这些方案效率较低。区块链的分布式架构克服了查询过往记录的性能瓶颈,并通过部署高效的身份验证和授权机制维护了安全性和隐私性,因此区块链技术适合医疗数据共享。
区块链是一种由比特币衍生的基于密码学和点对点网络的分布式账本技术[1,2],将数据组织成特定的块结构,这些块按时间顺序形成链线结构,通过使用共识算法和密码学技术,保证了数据的完整性和安全性。块的动态创建和验证依赖于业务逻辑,业务逻辑使用自动化可执行机制,可进行分布式计算验证和有效性确认,从而实现同步和防篡改。区块链由于其去中心化的架构,适合用来提供准确信息,通过部署高效的认证和授权机制,保证了安全和隐私的同时克服了查询记录的性能瓶颈问题。这样就方便患者查询数据,进而提高了医疗机构的运营效率。在健康管理领域,医疗数据的存储和共享受到了越来越多的关注。区块链技术通过改变信息共享的方式,为各行业提供了无集中权威的分布式环境,带来了革命性的影响。
本文采用线性拟合和深度学习的方法获得了高预测精度的混合模型,称之为“医疗链模型”。该模型是一个用于显示患者信息的自动去中心化的嵌入式系统。该系统通过使用区块链集成无线网络来协助监控患者的生理动态。该独立模型提供了完整的身份认证、授权和访问控制,以此来维护和验证设备、服务和管理用户身份认证。
2 安全认证架构
医疗链模型对现有系统进行了简化,有助于减少患者和医院检索和访问分布式医疗信息所需的平均通信时间。该架构增强了患者和医院在检索医疗数据时的信任度,解决了安全认证阶段存在的问题。模型部署了基于BAN(Burrows Abadi Needham,BAN)逻辑[3,4]的认证方法,维护了数据提供方和用户之间的第三方信任,降低了系统的通信时间成本。图1 所示为基于区块链的系统体系架构,其中包括了认证机构(Certification Authority,CA)、用户层和处理层。每个医院的每条医疗记录的计算哈希值都以加密形式储存在区块链网络上。区块链网络上的节点分为设备节点、用户节点和云节点,每个节点有其特定的功能。
图1 系统模型结构图
CA负责给连接到区块链网络的实体创建并发布数字证书。患者使用的公钥由CA 生成,目的是规范去中心化网络上的信息共享并在需要的时候使用患者的私钥解密数据。CA 负责检查系统的运行状态。所以,检测和移除系统上的恶意节点也由CA负责。
用户层包含所有的患者、医生、设备等用户。患者通过使用私钥获得存储在联盟链上的医疗记录,并通过使用公钥加密数据和使用私钥签署数据,将所有与医院就诊相关的信息存储在联盟链上。
处理层包含了医院服务器和数据库。这些数据库存储了与患者相关的数据如既往病历、检查报告、处方等,以及医院的数据,如医生提供的治疗、治疗时间、账目等,这些数据对应的哈希值以加密的形式存储在区块链网络上。联盟链网络就是由这些记录形成的链线结构,其中每一条记录代表了一家特定的医院的医疗数据,其架构图如图2所示。
图2 基于区块链的医疗记录架构
2.1 双线性映射概念
双线性映射技术将配对的概念应用于椭圆曲线[5,6]。设G1、G2 都是阶为p的循环群,p是素数。如果映射e:G1×G1→G2 满足以下性质:对于任意a,b∈Zp和R,S∈G1,有e(Ra,Sb)=e(R,S)ab;存在R,S∈G1,使得e(R,S)≠1G2。这里1G2 代表G2 群的单位元;存在有效的算法对任意的R,S∈G1,计算e(R,S)的值。则e是一个双线性映射。
病历发布流程:一般来讲,由于区块链存储内存限制,所有的医院都会将病历数据通过密码文本、病历哈希值、摘要及其云存储位置等形式存储在联盟链主节点中。M是每家医院的哈希值,用于加密病历摘要;L表示病历的云存储位置。L应始终用该医院的公钥进行加密并发送到区块链网络。下面为该算法的步骤:
输入:每个医院的医疗记录
输出:医疗数据的交易结果
第1步:生成相应的Epubkey{Mac||H(M)||L};
第2步:将第1步生成相应的信息保存到医疗联盟链中;
第3步:处理所有的交易并广播到区块链网络中;
第4步:更新记录,并输出反映医疗数据的记录。
2.2 安全认证机制
医疗链上共享医疗记录的机制需要在区块链网络上存储医疗记录信息。当医院H1 需要来自医院H2 的病历信息时,H1 使用H1 的数据和私钥向区块链网络发送请求,医疗记录将数据更新到联盟链网络的主节点MN。网络上的超级节点SN负责密钥管理和属性生成。医疗链的安全认证分为三个阶段:初始化、注册和认证。表1所示为安全认证机制使用的符号说明。
表1 符号说明
(1)初始化阶段
医疗链超级节点SN 生成密钥对,并提供系统参数供进一步处理,系统参数表示为(L,A1,A2,q,P,e,H,h)。然后,使用医疗链的共识机制生成公私钥对。
(2)注册阶段
医院H1 在网络上创建唯一标识ID 和随机数R,创建所需的医院数据请求记录R1,形成参数Parameter=(ID,R,R1),并将该参数发送给医疗链网络上的超级节点。医疗链上的超级节点接收到参数后,计算QID和SID并将参数通过安全通道发送给H2,表示如下:
QID=H(ID⊕R⊕R1),SID=QID*SSN,Parameter=(SID,QID)
H2收到参数后将其进行安全存储以备将来使用。
(3)认证阶段
在H1选择随机数后,计算X、X'、QID、r、s、U和W,如下所示。然后,H1 给区块链网络上的主节点发送时间戳参数。
X=x*P,X'=x*QMN,QID=H(ID⊕R⊕R1),r=H(ID||R||QID||QSN||X||X'||tc),s=h(X||X'||tc||R1),U=SID+x*r*QID=W=ESID(ID,R,U)
主节点收到时间戳后开始进行验证。如果发现其无效就拒绝,否则主节点开始计算安全哈希,并使用医院H1的公钥解密,以获取ID、R和U,然后创建验证参数。如果不满足条件,主节点就选择随机数。此外,主节点还会计算会话密钥和验证密钥,并将参数发送给医院H1。计算公式如下:
y∈Z*q,X′=SMN*X,s=h(X||X′||tc||R1),e(U,P)=(QID,QSN+r*xP),T=y*P,V=y*X=x*y*P,M=EQID(R||L|||(M)||Mac),SK=h(X,X,T,V),AK=(W,Tc,X,X,T,V),Parameter=(T,AK,M)
H1收到时间戳参数后,立即计算V并验证是否成立:V=x.T and h(X,X,T,V)。如果没通过验证就拒绝该请求。否则,使用H1 的私钥解密M,得到R、L、M 和Mac。至此,H1 和主节点通过验证,获得了与病历、医院H2位置索引和病人相关的所有信息。
3 认证机制有效性检查
本节使用BAN 逻辑对前面的验证过程进行验证和分析。该算法通常用于定义和分析协议之间的信息交换,证明协议的有效性。图3 所示为使用BAN 逻辑[7,8]验证协议的工作原理。
图3 BAN逻辑验证流程图
BAN 逻辑启动后,首先检查协议描述的参数,然后为协议的所有属性,如协议假设、协议目标设置、会话细节管理等初始化值。如果通过BAN逻辑验证的协议目标为true,则认为协议是安全的。
下面介绍BAN 逻辑的数学表示,BAN 逻辑用到的符号如下所示:
P believes X:P认为X为TRUE。
P sees X:在一个特定的时间(过去或者现在),P 收到消息X。
PsaidX:在某一个特定时间,P 发送了一个包含X 的消息,且在发送时PbelievesX。
PcontrolX:P 对X 有管辖权,即如果认为P 为TRUE,则也认为X为TRUE。
Fresh(X):X 在协议运行之前没有被发送过。通常用nonces来证明新鲜度,也包括时间戳。如果没有nonces则表示消息不新鲜。
P↔KQ:P和Q共享用于通信的密钥K。这里,除了P、Q以及P与Q信任的委托人之外,任何委托人都不能发现K。
{X}k:使用密钥k对X进行加密。
下面列出的式子表示一些用于确定证明的逻辑规则。
(1)规则1:消息解释规则
该规则说明了当公钥被使用时,使用式1进行消息解释:
用于生成公钥的信息解释规则,如式2所示:
(2)规则2:Nonce验证规则
该规则如公式3所示,判断消息的新鲜度和对发送者的信任。
(3)规则3:管辖规则
如公式4所示:
(4)规则4:评价公式
(5)规则5:公式有效性
如果任意的公式是新鲜的,那么所有公式都是新鲜的,如公式6所示:
4 结果
当应用BAN逻辑来验证所提的算法模型时,可以发现:区块链上的医院H1和主节点MN之间的身份认证需要的时间是离散对数阶。因此,所提协议实现了较高效率的同时,协议实现了在医疗链上存储和共享数据的安全会话密钥的建立。下面从存储开销和计算成本来展示其性能。
通过分析存储容量和密钥存储要求可以计算存储开销。本文中,q阶加法群的长度为1024,q阶乘法群的长度为512,G1的长度为512,大素数的长度为160,时间戳为34。首先,计算H1 存储密钥的要求{SID+R+R1}=1024+64+42=1130。主节点私钥需要区块链上的155位存储空间。
下面通过演绎法对模型进行正确性分析。区块链上的医疗节点接收H1 发送的参数(W,X,R1,tc)后,需要进行授权确认和准确性计算。假设QID 为l,QSN 为m,SID 为n,SSN为o,则有:
E(U,P)=e(l,m+r*x*P)
e(n+x*r*l,P)
e(l*o+x*r*l,P)
e(l*o,P)*e(x*r*l,P)
e(l,P*o+x*r*P)
e(l,m+r*x*P)
上面的推导说明了模型的正确性。
通过采用配置为8KBRAM,128KBROM 和7.38MHz 的Atmega 128L 单片机作为平台,对模型的计算开销进行了评估。在时间方面采用双线性配对,RAM和ROM使用TinyOS库。运算时间开销为5TG(mul)+1TG(add)+1TG(exp)+2Th,结果约为10.65秒。
5 结语
针对现存基于区块链的架构无法直接应用于医疗领域,本文通过整合区块链和云存储技术,为医疗数据共享提供了一个安全的平台。考虑到医疗行业所面临的挑战,所提模型保证了在成本开销、安全共享和数据真实性方面的高性能。基于区块链和网络模型的去中心化和安全传输特性,设计了一个用于数据传输的安全医疗链架构,该架构保证了安全的同时,其性能良好。