面向医疗隐私保护的双区块链模型研究

2021-03-04 02:51董文华安天博匡哲君史丽娟徐大伟
信息安全研究 2021年2期
关键词:哈希密文加密

赵 剑 董文华 安天博 匡哲君 史丽娟 徐大伟

1(长春大学网络安全学院 长春 130022) 2(长春大学计算机科学技术学院 长春 130022) 3(长春大学电子信息工程学院 长春 130022)

(zhaojian@ccu.edu.cn)

现实生活中,大多数患者往往都有过在其他医院重新经历一次在上一个医院经历过的检查[1],这种现象的出现主要是由于以下原因引起的:医疗数据主要由医疗机构管理,并且政策对重要个人信息(例如医疗记录)的传输和共享有严格的限制和规定.医疗数据分散在各个医疗机构中,并且不同医疗机构的数据标准不统一,导致各机构之间医疗信息系统的互操作性较低.另外,能够处理医学数据的受试者是有限的.除了患者要求转移和查看其个人病历的要求外,原则上,不允许在医疗机构之外转移和共享医学数据.所有这些导致医学数据的交换和共享非常困难,严重地阻碍了其有效性,不能充分发挥医疗数据的作用.

基于这种背景下,以医疗机构为主的现代医疗数据管理系统,无法有效地保证数据的隐私性、完整性和安全性.近年来,国内外由于医疗信息系统被入侵导致的信息泄露事件多次发生,泄露数据涉及多个个人隐私信息.根据2020年医疗行业网络安全白皮书[2]数据显示:2019年大量的放射性图像服务器暴露在公共互联网中,其中涉及我国14个服务器,包含近28万条医疗数据.根据调查,医疗隐私泄露事件数量仅次于互联网隐私泄露事件,且造成的个人隐私泄露数据是最大的.因此,实现一个具有可靠性、共享性、不变性以及可验证性等特点的医疗数据管理系统是当务之急.

区块链[3]作为一种去中心化机制的数据库,为医疗数据管理系统中存在的低共享性、低有效性和安全性问题提供了可靠的解决方案.其具有的防篡改和唯一性能够在医疗记录安全性领域得到充分的应用,可以在实时共享的区块链平台记录数据,并添加时间戳保证数据的不可篡改性,在许可的区块链上,区块链成员可以通过访问操作等获取数据的信息,在非许可区块链上,允许成员查看概要信息,从而保证数据的共享性

区块链技术为医疗领域的进一步发展提供了契机,本文基于区块链技术设计了一种存储方案来管理医疗数据.其主要贡献如下:1)提出了一种基于区块链技术的医疗存储方案,将个人信息和医疗信息分别存储在不同的链上,设计其独特的区块结构和功能,实现了个人医疗数据的安全存储;2)搭建了新的医疗数据共享框架,帮助科研机构等能够批量获取相关数据,提高数据的获取效率,最大化地开发医疗数据的功能;3)详细描述了医疗区块链的特征,使患者能够有效管理自己的医疗数据,在实现患者隐私保护的基础上,充分发挥其共享能力.

1 背 景

1.1 区块链技术

区块链技术是一种去中心化的存储技术,其本质是一种分布式全局账本数据库,具有去中心化、开放性、独立性、安全性、匿名性等特征[4],其中每个区块中包含的哈希散列把任意长度的输入经哈希算法变换成由字母和数字组成的固定长度的输出,在模型的实现中能够将前一个区块形成的哈希散列通过区块链连接起来,实现过往交易的按顺序排列.共识算法保证了区块链链中每个节点维持1份相同的数据.其目的是保证比特币不停地在最长链条上运转,从而保证整个记账系统的一致性和可靠性.区块链技术运用基于数学原理的共识算法,在节点之间建立“信任”的网络,利用技术手段实现一种创新式的信任网络,主流的共识算法包括工作量证明(POS)、权益证明(POW)、委托权益证明(DPOS)和Pool验证池等.方法的选择需根据实际情况进行,本文选择DPOS作为共识算法.

1.2 代理重加密技术

代理重加密就是委托可信第三方或是半诚实代理商将自己公钥加密的密文转化为可用另一方私钥解开的密文,从而实现密码安全性.以图1为例,A,B分别请求服务器生成自己的公私钥对,服务器将生成的公私密钥返回给A,B.A利用AES算法加密数据M生成密文C1,A根据第2层加密算法并利用自己的公钥加密AES的密钥生成密文C2,A把加密后的数据密文C1和C2上传到服务器.之后A向服务器请求B的公钥,服务器将B的公钥返回给A,A利用自己的私钥和B的公钥生成重加密密钥KA→B,并将其上传到服务器上.服务器利用重加密密钥KA→B和之前的A上传的密文C2做代理重加密运算生成新的密文C3.当B需要数据时,B向服务器请求解密数据M对应的密文C1,服务器将重加密后生成的密文C3和C1发送给B.B解密密文C3得到对称密钥,并用该密钥解密C1,得到原始的明文数据M.

图1 重加密密文算法流程图

1.3 默克尔帕特里夏树

默克尔帕特里夏树(Merkle patricia tree, MPT)是一种加密的数据结构,MPT树中的节点包括空节点、叶子节点、扩展节点和分支节点.

本文主要用MPT树中[key,value]节点(叶子节点和扩展节点)中的key,来进行数据的搜索,方便科研机构或者是医疗机构采用key值进行相关内容的查询,解决了数据获取困难的问题,提高了模型的扩展性.另外,本文采用HP(hex-prefix)编码,用来对key进行编码,易操作且计算量低,无论key是奇数长度还是偶数长度,HP都可以对其进行编码,如图2所示.

本文主要采用区块链技术对医疗双链模型进行重构,通过代理重加密方案保证密码正确性和安全传输率,利用MPT树保证交易链数据的安全性,同时利用key值快速搜索查询相关数据.

图2 MPT树的结构图

2 相关工作

医疗数据是关键且高度敏感的私人信息,此信息需要医疗机构中各个参与者进行频繁的共享与传播.参与者之间共享医疗信息是非常具有挑战性的,因为在操作过程中可能会泄露或篡改数据[5].医疗机构为了更好地治疗患者,需要对医疗信息进行共享,这样做能够帮助医生更好地诊断病情.然而,当前的医疗信息管理系统不足以给患者提供在保护隐私性的基础上实现医疗信息的共享[4].因此迫切需要对此进行创新.同时针对数据需求的第三方平台(例如科研机构等)需要大量的同类型数据进行实验的分析,进而研究更有助于医疗的设备和算法,帮助患者更好地预防和治疗疾病.

因此,区块链技术在医疗领域的相关研究也相继出现,其主要研究包括:医疗信息保护、医疗数据存储、数据共享、药品溯源、预测分析等.Mettler[6]介绍了区块链在医疗领域可能出现的问题.Yue等人[7]提出了一个基于区块链的医疗保健数据应用程序,使患者能够轻松地访问、控制自己的数据.Peterson等人[8]提出了一种区块链的方法来共享患者数据.Kuo等人[9]使用区块链网络技术创建了机构间医疗健康预测模型.Kumar[10]提出了一种基于区块链的药品溯源系统,主要追踪和监测假冒药品.

除此之外,对于当前医疗数据在共享过程中存在的安全性和隐私性问题,一些作者也试图提出相应的解决方案.Azaria等人[11]提出了MedRec模型,该模型利用区块链技术,展示了如何将分散化原理应用在EMR系统中,实现了患者数据共享,使医疗数据能够真正受到患者的控制,未经过患者授权的医疗机构无法私自使用病人的医疗数据,有效地保护了患者数据的隐私性.薛腾飞等人[12]提出了一个医疗区块链框架,利用代理重加密技术实现数据的访问和下载,在提高数据隐私性的基础上,也提高了共享的效率.Xia等人[13]提出了一个基于区块链的医疗数据共享系统MeDShare,通过智能合约来保证区块链上的所有操作,智能合约的使用能够提高用户的访问权限,验证访问用户身份,从而保证了数据的隐私性,同时利用其来实现数据的共享.这2种模型都很好地保护了数据的隐私性,但是如果有第三方机构需要大量同类型数据时,获取数据的过程很耗时,无法使数据做到最大化的利用.同时这些模型将医疗信息和访问记录、治疗方法等全部存储在1条链上,单链结构将导致存储链的扩展性变差,吞吐能力下降[14].基于此,张利华等人[15]提出了双区块链的医疗记录安全存储与共享方案EMRSBC,该模型使用了2条联盟链分别用于数据的存储和共享,解决了单链结构吞吐量低等问题,使得保密性提高,但是针对科研机构的大量数据使用,仍然需要患者逐个授权,耗时较多,便捷性较差.

3 基于双区块链的医疗存储和共享模型

3.1 双区块链模型的介绍

现有的医疗记录存储区块链模型存在以下问题:医疗数据完全掌握在患者手中,医疗机构和第三方机构对医疗数据的使用都需要经过患者的授权,这样做有效地保证了医疗数据的安全性,增强了患者信息的隐私性.但是数据并没有被全部利用起来,科研机构获取大量的数据耗时久,各种治疗疾病的措施无法在各个医院之间形成共享.基于此本文设计了一种基于双区块链的医疗数据存储和共享模型,采用“用户链”和“交易链”2条链来保证用户的隐私性、医疗记录的共享性和安全性.其中“用户链”主要用于存储患者的基本信息,“交易链”用来存储医疗数据、记录访问信息.模型如图3所示,医疗机构,患者和第三方机构(科研机构等)是医疗区块链中的3个主要交易实体,医疗机构负责治疗疾病并生成病例,上传数据.患者可以查询和共享自己的个人医疗数据,第三方机构能够批量获取同类型的数据等.不同类型的交易实体具有不同的权限,具体的权限如表1所示.

图3 基于双区块链的医疗存储与共享模型

表1 3种交易主体的权限

用户数据、医疗数据和交易数据这些数据量很大,由于区块链容量、成本等的限制,难以将所有的数据全部上链,因此我们采用了云存储的方式来实现数据的存储,区块链上只记录索引信息和交易记录,而医疗记录、视频、用药等均通过加密的方式进行云存储,云储存的数据均通过区块链中的哈希值进行关联,分别授予不同的访问机构以不同的访问权限.

3.2 用户链的设计

用户链仅用于存储用户信息,包括患者基本信息、对应的病例资料以及该病例对应产生交易的哈希值.其设计结构如图4所示,该链只用于用户信息的存储以及患者通过自身密钥查看和调用自己的医疗数据.

在该链上主要功能是用户信息的保存和患者对自己医疗信息的处理.

用户信息的保存:当患者前往医疗机构时,患者事先填写自己的基本信息,该信息利用患者自己的公钥加密并发送到区块链中.

用户信息的上链和管理:上链流程如图5所示,患者在医疗机构治疗时,医生为患者生成诊断数据,医生通过系统生成医疗数据的摘要和哈希值,使用医疗机构的私钥登录并将其发布到交易链中,同时使用代理重加密的方法对医疗数据进行代理重加密,并将其一同发给患者,患者验证机构的签名,然后使用自己的私钥对自己医疗数据的加密密钥、签名等进行解密,确认无误后,将医疗数据加密后存储到云存储中,并返回对应的哈希值,并将其填入用户链中.这样用户可以通过用户链查看自己的基本信息和医疗数据,在转院治疗时,可以给某个机构授权查阅自己的医疗记录.

图4 用户链设计结构

图5 用户链上链流程

3.3 交易链的设计

交易链是存储医疗数据和交易访问的1条链,在该链可以提供患者、医疗机构各种访问权限,用于医疗数据的共享和传播,同时交易链使用MPT树来存储诊疗数据,通过(key,value)对来存储数据,除了可以保证交易结果的真实性和完整性之外,还易于通过key值查询和追溯交易结果,为今后业务的链式扩展预留下接口.

图6 交易链交易流程

交易链的处理流程主要包括上传数据和访问数据2个部分.如图6所示,上传数据主要针对用户链中医生提交的医疗数据进行上传,具体的上传流程详见图6中蓝色线部分.

当前数据访问过程存在一些局限性,首先科研机构需与医生沟通获取数据,但是数据量仍然很难达到所需要求,耽误科研进度和任务;其次患者转院治疗时很难获取到原医疗机构的全部治疗数据;最后医疗机构之间的相互交流和病例的学习也受到了各医院数据共享的局限性.

本文针对不同的访问类型,将访问过程分为以下2种情形:

情形1.患者需要医疗数据时,患者通过自己的公钥pk在用户链中查询个人信息,用户链返回个人信息资料(个人信息中包含自己的病例的哈希值)并通过自己的私钥sk进行解密,解密完成后系统会通过哈希值在联盟链中查找对应的病例,并将自己的公钥上传至联盟链中进行数据访问(代理重加密),返回结果并根据时间顺序逐条显示,患者可以根据自己的需求,通过私钥进行逐条或批量解密显示,供自己或医生查看.

情形2.当科研机构等需要访问数据时,以关键词(key值)进行搜索,系统对关键词进行加密并发起访问请求,返回相关数据的访问结果,科研机构选择相应结果和自己的公钥提交给当值节点,当值节点将对公钥和对应的访问请求发送给医疗机构,医疗机构对其进行重加密生成重加密钥ReKeyGen(sk1,sk2)→rk1↔2,并发送给当值节点,当值节点对其代理重加密,连同加密数据发送给科研机构,同时记账节点记录该访问记录,最后医疗机构利用自己的私钥对其解密.

4 安全性和正确性分析

4.1 密文传输的正确性

本文模型的实现过程采用改进的代理重加密方案,因此密文的正确性主要包括2个方面,分别是加密密文和重加密密文的正确性.第一,需要做到任何一方不能从密文和重加密密文中得到明文信息;第二,需要做到除非得到重加密密文.否则无法得到任何明文信息的2个条件.

首先定义函数Bits(·)和Power2(·),对于v∈和X=[X1|X2|…|Xl]∈我们有Bits(v)Power2(X)=vX∈成立.

ReKeyGen(sk1,sk2)→rk1↔2.这里包括A的密钥组(A,PA,SA)和B的密钥组(B,PB,SB)结合在一起生成重加密密钥rkA→B.形式为rkA→B=(PB,Q),其中:

其中,X∈是随机选取的.噪声矩阵E是从选取的.Q的产生方式包括2种:一种是B产生E和X,安全发送X和-XSB+E给A.另一种是A使用自己的私钥SA结合从B获取的信息产生以上代理重加密密钥.

c1=e1A+e3∈
c2=e1P+e3+m·∈

ReEnc(rk1↔2,C1)→C2.使用rkA→B来转换A的密文:f1[A|PB]+[f2|f3]+[Bits(c1)|c2]·Q∈,其中的f1和f2属于都是服务器选择的.

综上所述,本文设计的密钥能够在服务器中进行正确的传输.

4.2 共识机制

区块链没有中心化的记账机构,因此区块链中每一次的数据更新都需要共识算法的参与才能够完成.考虑到我国的医疗现状,数据量巨大,如果选择算力较高的pow共识算法耗时长.因此本文采用的共识机制是DPOS(委托权益证明),DPOS是一种基于投票选举的共识算法,持币人选出几个代表节点来运营网络,用专业运行的网络服务器来保证区块链网络的安全和性能.DPOS机制中,不需要算力解决数学难题,而是由持币者选出谁是生产者,如果生产者不称职,随时有可能被投票出局,非常符合我国现在的医疗现状,也解决了POS存在的性能问题.

4.3 隐私保护和安全性分析

患者的隐私性和模型的安全性针对医疗数据而言是必须关注的问题,本文主要通过以下几个方面来保证模型的安全性和患者的隐私性.

1) 哈希算法:哈希值是一种将任何类型的数据转换为字符串的加密方法,其本身通过加密提供了安全性,同时哈希值是固定长度的,因此哈希值创建了更高效的数据存储.输入任何的更改都会产生不同的输入,无法逆转通过输出来推断原始的哈希值[16].因此要对通过区块链上链的数据进行篡改很难.

2) 数字签名:本文中数据的上链操作等均是数字化的,数字签名实质上是创建了一个“哈希值表”,用来表示数据片段中的数据代码,可以与另一个文档中的哈希值进行交叉验证,监测是否匹配,从而证明交易的安全性[17].本文所使用的数据签名算法是secp256k1算法,躲开了密码学子弹.

3) 区块链结构:本文采用了双区块链模型,分为用户链和交易链2条链,二者互不干涉,二者值通过哈希值进行联系,如果无法同时获取到用户和医疗机构的私钥,那么就无法查看到患者的个人信息和对应的诊断记录,从而保证了患者的隐私性,如表2所示,双链结构的设计相比单链而言,解决了主链压力,增强了隐私保护能力和患者对于自身数据的控制能力.针对双链结构,RMRSBC模型采用的是PBFS共识机制,可以在保证活性和安全性的前提下提供(n-1)/3的容错性,但是当1/3或以上记账人停止工作时,系统将无法提供服务,且如果这些记账人是恶意节点,那么所有的记账人将恰好被分成2个网络孤岛,出现分叉现象.本文所使用的DPOS共识机制中,去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且具有约束力的.同时根据我国的医疗现状[18]显示:我国的医疗机构的重心和民众主要的疾病治疗中心都是三甲医院,他们将担任主要工作,因此二者结合起来看,DPOS机制更加符合现状,且更具有安全性.

数据共享性方面,由表2可知,EMRSBC模型由存储链和共享链组成,数据的查询和共享需要病人进行授权,而病人从看到消息到授权都需要时间,对于需要大量类似数据的医院和科研机构而言,浪费太多的时间,容易造成疾病治疗和科研进度的延误.本文设计的模型由医院掌管病例数据,但是无法查阅患者数据,从而保障了患者数据的隐私性,而医疗数据的共享由医院控制,可以更加及时地进行授权业务,因此我们的模型具有更强的隐私性和更高的共享性.

4) 分叉:区块链的分叉发生在同一时间内发生了2条交易,因此通常会生成多个区块,但是根据本文的实施机制和对应的法规[19]可以得到解决.

5) 抗攻击性:DPOS共识算法在抵抗攻击上,因为前100名代表所获得的权力值是相同的,每名代表都有1份相等的投票权.因此,无法通过获得超过1%的选票而将权力集中到1个单一代表上.因为只有100名代表,可以想象1个攻击者对每名轮到生产区块的代表依次进行拒绝服务攻击.事实上每个代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易减小.这将使确定DDOS攻击目标更为困难.而代表之间的潜在直接连接,将使它们生产区块变得更为困难.

表2 模型方案对比

5 总 结

本文提出的新的双区块链模型,不同于原有模型的存储链和共享链,本文将用户数据和交易数据分别存储在2条链上,用户链负责用户信息的处理,交易链处理交易、共享、访问数据,二者互不干涉,不仅实现了医疗数据的分布式存储,同时在保护患者隐私基础上,更好地完成数据共享.模型的实现对于患者而言解决了其转院看病数据获取难的问题;对于医疗机构而言,除了可以获得区块奖励外,还能够了解更多的案例,帮助更精准地治疗疑难杂症,更好地服务患者,提高医疗水平;对于科研机构等第三方平台,可以方便、快速地获取大量的数据资源,用于科研的训练和学习.

猜你喜欢
哈希密文加密
一种支持动态更新的可排名密文搜索方案
一种新型离散忆阻混沌系统及其图像加密应用
基于模糊数学的通信网络密文信息差错恢复
文件哈希值处理一条龙
一种基于熵的混沌加密小波变换水印算法
一种基于密文分析的密码识别技术*
一种基于密文分析的密码识别技术*
基于OpenCV与均值哈希算法的人脸相似识别系统
认证加密的研究进展
巧用哈希数值传递文件