一种基于联盟区块链的医疗数据存储共享方法及系统转让专利

申请号 : CN202110047989.1

文献号 : CN112910840B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 唐宏刘双向俊玲周磊

申请人 : 重庆邮电大学

摘要 :

本发明涉及医疗数据共享技术领域,具体涉及一种基于联盟区块链的医疗数据存储共享方法及系统,包括:存储医疗数据时,利用多权限属性基加密算法将原始医疗数据及访问策略加密,将密文存储到私有IPFS系统中,IPFS系统为存储的密文分配一个独一无二的哈希值,将哈希值存储在联盟区块链Fabric上,以此提高医疗数据存储效率及安全性;其中私有IPFS网络可以提高系统效率,多权限属性基加密算法能够保障患者医疗数据的安全性及患者对自身医疗数据的完全掌控。本发明方法适用于医疗数据存储共享、加密数据访问控制领域;基于IPFS的联盟式医疗区块链将赋予医疗数据存储共享系统更高的安全性与高效性,提高用户医疗数据的隐私性。

权利要求 :

1.一种基于联盟区块链的医疗数据存储共享方法,其特征在于,包括以下步骤:S1、搭建联盟区块链及私有IPFS网络,将模型中的各实体注册到系统中,获得公私钥对,初始化系统,生成系统的公共参数与主密钥;

S2、采用链上链下混合存储结构实现医疗数据的安全存储:患者从医院获取自身医疗数据,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法对医疗数据及访问策略加密,得到密文,将密文本地存储在搭建的私有IPFS网络中,私有IPFS网络为存储在网络中的密文分配一个独一无二的IPFS哈希值并反馈给患者;患者将与密文对应的IPFS哈希值存储在联盟区块链中;

多权限属性基加密算法实现数据的加解密过程包括:S211:初始化算法:输入安全参数K,输出全局公共参数GP、授权机构标识符aid和用户身份标识符uid;

Setup(k)→(GP,aid,uid)其中,Setup(·)表示初始化阶段的输入;

S212:属性授权机构初始化算法:输入全局公共参数GP;输出该属性相关授权机构的公钥PKaid与私钥SKaid,其中公钥PKaid广播给组织中各实体;

AuthSetup(GP)→{PKaid,SKaid}其中,AuthSetup(GP)表示输入全局公共参数GP;

S213:密钥生成算法:输入系统的全局公共参数GP,授权机构的私钥SKaid,用户标识符uid及属性集S;输出用户属性集相关联的解密密钥SKuid;

KeyGen(GP,{SKaid},uid,S)→SKuid其中,KeyGen(·)表示密钥生成阶段的输入;

S214:加密算法:输入系统的全局公共参数GP,该属性相关授权机构的公钥PKaid,明文M,访问策略A;输出密文CT;

Encrypt(GP,{PKaid},M,A)→CT其中,Encrypt(·)表示加密阶段的输入;

S215:解密算法:输入系统的全局公共参数GP,密文CT,与用户属性集相关联的解密密钥SKuid;若属性大于访问策略中的属性阈值,解密输出明文M;否则,解密失败,表达式如下:Dec(GP,CT,SKuid)→M;

S3、当数据请求者请求访问患者的医疗数据时,通过在链上检索类交易获得密文的IPFS哈希值,数据请求者通过密文的IPFS哈希值在IPFS网络中下载患者加密的原始医疗数据,但能否解密成功取决于数据请求者的自身属性集合是否满足患者设定的加密医疗数据访问策略中的属性阈值,若数据请求者的属性集合满足患者设定的访问策略中的属性阈值,则成功解密患者医疗数据,获得数据明文;反之解密不成功。

2.根据权利要求1所述的一种基于联盟区块链的医疗数据存储共享方法,其特征在于,步骤S2中,采用链上链下混合存储结构实现医疗数据的安全存储,具体包括以下步骤:S221:患者从医院获取到自身的医疗数据后,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法将医疗数据原文以及访问策略进行加密,生成密文,利用私钥SKaid对密文进行数字签名,将密文及密文对应的数字签名发送到模型中的IPFS节点集群;

S222:IPFS节点集群中的某个IPFS节点接收到患者上传的数据,首先通过验证患者的数字签名来证实患者身份;确认患者身份后将密文上传到模型中的私有IPFS网络中,IPFS网络根据节点上传的内容为该IPFS节点返回一个独一无二的哈希值;IPFS节点利用公钥PKaid对收到的哈希值进行数字签名,得到哈希值的数字签名,将密文、返回的哈希值及哈希值的数字签名发送给IPFS网络节点集群中的每个IPFS节点验证;

S223:IPFS节点集群中的每个IPFS节点验证患者身份,并本地计算密文的哈希值,若与IPFS网络返回的哈希值一致,则通过验证,并向与患者交互的IPFS节点发送确认消息;该IPFS节点收到其他IPFS节点的确认消息后,将患者身份及发送的密文哈希值、密文发送时的时间戳打包成类交易,用患者公钥为类交易编号;将编号后的类交易发送到联盟区块链Fabric中;

S224:联盟区块链Fabric中的某备份节点收到IPFS节点发送的类交易后,首先验证IPFS节点身份,接着验证元数据中的各项内容,若通过验证,则将类交易本地备份,利用基于可验证随机函数来随机选取交互的共识节点,将类交易发送给共识节点;

S225:共识节点收到备份节点发送的类交易后,验证类交易中的各项内容及节点身份,验证成功后,对类交易签名,发送给联盟区块链中验证节点群中的每一个节点,利用PBFT算法对类交易进行共识验证,得到超过2/3的共识确认后,将类交易打包上链。

3.根据权利要求2所述的一种基于联盟区块链的医疗数据存储共享方法,其特征在于,联盟区块链Fabric中的验证节点群包含两类节点:备份节点和共识节点;其中备份节点负责与IPFS节点交互、接收信息,同时将接收到的信息发送到共识节点;共识节点负责交易的验证打包及确认上链。

4.根据权利要求1所述的一种基于联盟区块链的医疗数据存储共享方法,其特征在于,步骤S3中,数据请求者访问患者加密医疗数据的流程具体包括:S31:数据请求者向中央授权机构CA发送的真实身份,获取CID,向各属性授权机构AA发送CID,获取与身份相关的属性集合S与私钥集合P;

S32:数据请求者向联盟区块链Fabric验证节点群中的节点发送访问数据请求,请求中包含医生的CID、访问数据的名称及所有者;节点收到访问请求后,首先验证数据请求者的身份,身份验证通过后,根据被访问数据的名称及所有者在链上检索类交易,找到对应的类交易后,将包含请求内容的相关类交易及数据请求者的CID发送到IPFS节点群;

S33:IPFS节点群中的节点首先验证数据请求者的身份,验证通过后,从类交易中提取访问数据对应的IPFS哈希值,根据该哈希值在模型中的私有IPFS网络中检索患者完整的加密数据,找到后,将密文发送给数据请求者;

S34:数据请求者收到患者加密的原始医疗数据后,利用自身属性集合S及与属性相关的密钥解密密文,若数据请求者的属性值满足患者设定的访问策略,则成功解密出患者完整的医疗数据;反之,解密失败。

5.一种基于联盟区块链的医疗数据存储共享系统,用于实现权利要求1所述基于联盟区块链的医疗数据存储共享方法,其特征在于,包括联盟区块链网络、数据存储模块和数据共享模块,所述联盟区块链网络用于提供联盟区块链网络环境;所述数据存储模块用于将患者的医疗数据链上链下存储到对应网络中;所述数据共享模块用于将患者的医疗数据安全共享给获得许可的数据请求者。

6.根据权利要求5所述的一种基于联盟区块链的医疗数据存储共享系统,其特征在于,所述数据存储模块包含混合存储模型,所述混合存储模型为链上链下混合存储结构,首先在链下利用私有IPFS网络存储原始的大宗医疗数据;私有IPFS网络为存储的内容分配一个独一无二的IPFS哈希值,再将该IPFS哈希值存储在联盟区块链上。

说明书 :

一种基于联盟区块链的医疗数据存储共享方法及系统

技术领域

[0001] 本发明涉及联盟区块链、医疗数据共享技术领域,具体涉及一种基于联盟区块链的医疗数据存储共享方法及系统。

背景技术

[0002] 生活中往往出现这类问题,患者就医时,如果医生想要获悉患者先前的就诊记录,需耗费时间翻阅多本之前不同医院开具的病历。由于纸质病历存在易丢失易损毁的弊端,
导致难以获得患者完整的就诊记录。随着互联网和大数据技术的发展,医疗数据信息化进
程已逐步走向正轨,然而类似电子病历系统(Electronic medical records,EMR)、电子健
康记录系统(Electronic health records,EHR)、个人健康记录(Personal health 
records,RHR)这类中心化的医疗数据存储共享平台,大多数由第三方机构管理医疗数据,
不但易遭遇恶意攻击,导致数据被篡改、隐藏、遗失,无法保证数据的安全性与完整性;同时
因管理方式、存档习惯存在差异,使得各机构之间数据共享成为困扰。因此急需一种不可篡
改、安全高效、透明可信赖的技术解决当前医疗行业出现的问题。区块链作为当下最受关注
的新兴技术,成为首选的解决方案。
[0003] 区块链是一种点对点的分布式数据库系统,作为比特币的底层核心技术,起源于中本聪于2009年发表在密码学组件中的文章《Bitcoin:A Peer‑to‑Peer Electronic Cash 
System》。区块链技术的核心特点在于去中心化,即系统中各个节点地位相同,没有超级节
点,抛弃第三方管理机构,各个节点共同监管维护这个分布式记账本。同时区块链集成共识
算法、密码学原理、分布式存储等多项成熟技术,用以确保链上存储数据的安全性和完整
性。如区块链系统中,数据上链前被组织成默克尔树的结构打包成区块,区块头存储树根的
哈希值,一旦树中某个位置作出细微修改,块头中的哈希值会发生变化,保证了链上存储数
据不可篡改。区块链按系统控制权与交易信息是否公开分成三类:公有链、联盟链、私有链,
其中联盟链介于公有链和私有链之间,指只有被授予身份认证的节点才能加入网络,联盟
链的使用必须是带有权限的限制访问,因此联盟区块链最适合解决医疗数据存储共享的架
构。
[0004] 基于区块链的医疗数据存储共享方法,虽然可以为医疗数据提供安全性及防篡改的优势,但由于医疗数据不仅包含文本、数字这类小规模的文件,同时还可能包含患者医学
影像、诊断流程视频等大宗文件。区块链则对链上区块的大小存在约束;同时数据只能添加
到链上,不能从链上删除,导致区块链账本不断扩张,链上存储压力过大。除此之外区块链
系统要求每个节点都要本地存储完整的账本,数据的重复存储造成了系统出现数据冗余,
对新加入系统的节点也提出较高的存储空间要求。

发明内容

[0005] 为了解决当前医疗数据存储难共享难的问题,本发明提供一种基于IPFS的联盟区块链医疗数据存储共享方法及系统。
[0006] 一种基于联盟区块链的医疗数据存储共享方法,包括以下步骤:
[0007] S1、搭建联盟区块链及私有IPFS网络,将模型中的各实体注册到系统中,获得公私钥对,初始化系统,生成系统的公共参数与主密钥;
[0008] S2、患者从医院获取自身医疗数据,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法对医疗数据及访问策略加密,得到密文,将密文本地存储在搭建的私
有IPFS网络中,私有IPFS网络为存储在网络中的密文分配一个独一无二的IPFS哈希值并反
馈给患者;患者将与密文对应的IPFS哈希值存储在联盟区块链中(由于IPFS哈希值大小仅
为几十比特,因此该混合存储模型有效释放了链上存储空间);
[0009] S3、当数据请求者请求访问患者的医疗数据时,通过在链上检索类交易获得患者加密医疗数据(密文)的IPFS哈希值(即在IPFS网络中的存储位置),数据请求者通过密文的
IPFS哈希值在IPFS网络中下载患者加密的原始医疗数据,但能否解密成功取决于数据请求
者的自身属性集合是否满足患者设定的加密医疗数据访问策略中的属性阈值,若数据请求
者的属性集合满足患者设定的访问策略中的属性阈值,则成功解密患者医疗数据,获得数
据明文;反之解密不成功。
[0010] 在一种优选实施方式中,在步骤S2中,多权限属性基加密算法实现数据的加解密过程包括以下五种算法:
[0011] S211:初始化算法:输入安全参数K,输出全局公共参数GP、授权机构标识符aid和用户身份标识符uid;
[0012] Setup(k)→(GP,aid,uid)
[0013] 其中,Setup(·)表示初始化阶段的输入。
[0014] S212:属性授权机构初始化算法:输入全局公共参数GP;输出该属性相关授权机构的公钥PKaid与私钥SKaid,其中公钥PKaid广播给组织中各实体;
[0015] AuthSetup(GP)→{PKaid,SKaid}
[0016] 其中,AuthSetup(GP)表示属性授权机构初始化阶段的输入为全局公共参数GP。
[0017] S213:密钥生成算法:输入系统的全局公共参数GP,授权机构的私钥SKaid,用户标识符uid及属性集S;输出用户属性集相关联的解密密钥SKuid;
[0018] KeyGen(GP,{SKaid},uid,S)→SKuid
[0019] 其中,KeyGen(·)表示密钥生成阶段的输入。
[0020] S214:加密算法:输入系统的全局公共参数GP,该属性相关授权机构的公钥PKaid,明文M,访问策略A;输出密文CT;
[0021] Encrypt(GP,{PKaid},M,A)→CT
[0022] 其中,Encrypt(·)表示加密阶段的输入。
[0023] S215:解密算法:输入系统的全局公共参数GP,密文CT,与用户属性集相关联的解密密钥SKuid;若属性大于访问策略中的属性阈值,解密输出明文M;否则,解密失败,表达式
如下:
[0024] Dec(GP,CT,SKuid)→M。
[0025] 其中,Dec(·)表示解密阶段的输入。
[0026] 在一种优选实施方式中,步骤S2中,采用链上链下混合存储结构实现医疗数据的安全存储,患者上传加密数据流程包括以下具体步骤:
[0027] S221:患者从医院获取到自身的医疗数据后,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法将医疗数据原文以及访问策略进行加密,生成密文,利用私
钥SKaid对密文进行数字签名,将密文及密文对应的数字签名发送到模型中的IPFS节点集
群;
[0028] S222:IPFS节点集群中的某个IPFS节点接收到患者上传的数据,首先通过验证患者的数字签名来证实患者身份;确认患者身份后将密文上传到模型中的私有IPFS网络中,
IPFS网络根据节点上传的内容为该IPFS节点返回一个独一无二的哈希值;IPFS节点利用公
钥PKaid对收到的哈希值进行数字签名,得到哈希值的数字签名,将密文、返回的哈希值及哈
希值的数字签名发送给IPFS网络节点集群中的每个IPFS节点验证;
[0029] S223:IPFS节点集群中的每个IPFS节点验证患者身份,并本地计算密文的哈希值,若与IPFS网络返回的哈希值一致,则通过验证,并向与患者交互的IPFS节点发送确认消息;
该IPFS节点收到其他IPFS节点的确认消息后,将密文名称、哈希值及患者身份、时间戳类交
易发送到联盟区块链Fabric中;类交易中包含医疗数据拥有者及对应的IPFS哈希值;
[0030] S224:联盟区块链Fabric中的某备份节点收到IPFS节点发送的类交易后,首先验证IPFS节点身份,接着验证元数据中的各项内容,若通过验证,则将类交易本地备份,利用
基于可验证随机函数来随机选取交互的共识节点,将类交易发送给共识节点;
[0031] S225:共识节点收到备份节点发送的类交易后,验证类交易中的各项内容及节点身份,验证成功后,对类交易签名,发送给联盟区块链中验证节点群中的每一个节点,利用
PBFT算法对类交易进行共识验证,得到超过2/3的共识确认后,将类交易打包上链。
[0032] 在一种优选实施方式中,联盟区块链Fabric中的验证节点群包含两类节点:备份节点和共识节点;其中备份节点负责与IPFS节点交互、接收信息,同时将接收到的信息发送
到共识节点;共识节点负责交易的验证打包及确认上链。
[0033] 在一种优选实施方式中,步骤S3中,数据请求者访问患者加密医疗数据的流程具体包括:
[0034] S31:数据请求者向中央授权机构CA发送的真实身份,获取CID,向各属性授权机构AA发送CID,获取与身份相关的属性集合S与私钥集合P;
[0035] S32:数据请求者向联盟区块链Fabric验证节点群中的节点发送访问数据请求,请求中包含医生的CID、访问数据的名称及所有者;节点收到访问请求后,首先验证数据请求
者的身份,身份验证通过后,根据被访问数据的名称及所有者在链上检索类交易,找到对应
的类交易后,将包含请求内容的相关类交易及数据请求者的CID发送到IPFS节点群;
[0036] S33:IPFS节点群中的节点首先验证数据请求者的身份,验证通过后,从类交易中提取访问数据对应的IPFS哈希值,根据该哈希值在模型中的私有IPFS网络中检索患者完整
的加密数据,找到后,将密文发送给数据请求者;
[0037] S34:数据请求者收到患者加密的原始医疗数据后,利用自身属性集合S及与属性相关的密钥解密密文,若数据请求者的属性值满足患者设定的访问策略,则成功解密出患
者完整的医疗数据;反之,解密失败。
[0038] 一种基于联盟区块链的医疗数据存储共享系统,包括联盟区块链网络、数据存储模块和数据共享模块,所述联盟区块链网络用于提供联盟区块链网络环境;所述数据存储
模块用于将患者的医疗数据链上链下存储到对应网络中;所述数据共享模块用于将患者的
医疗数据安全共享给获得许可的数据请求者。
[0039] 在一种优选实施方式中,所述数字存储模块包含混合存储模型,所述混合存储模型为链上链下混合存储结构,首先在链下利用私有IPFS网络存储原始的大宗医疗数据;私
有IPFS网络为存储的内容分配一个独一无二的IPFS哈希值,再将该IPFS哈希值存储在联盟
区块链上。
[0040] 本发明的有益效果:
[0041] 本发明基于IPFS的联盟式医疗区块链赋予医疗数据存储共享系统更高的安全性与高效性,有助于用户的隐私保护。本发明采取混合存储方式,将原始医疗数据存储在私有
IPFS网络中,元数据存储在联盟链上,实现大宗医疗数据的有效存储,同时利用多权限属性
基加密算法保护患者上传及数据访问者访问过程中医疗数据的安全性,实现患者对自身医
疗数据的访问控制。

附图说明

[0042] 下面结合附图和具体实施方式对本发明做进一步详细的说明。
[0043] 图1为本发明的一种基于联盟区块链的医疗数据存储共享方法流程图;
[0044] 图2为本发明的各英文缩写对应实体;
[0045] 图3为本发明的患者上传数据流程图;
[0046] 图4为本发明的患者数据访问流程图。

具体实施方式

[0047] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。本发明说明书中涉及到的各英文缩写对应实体表如图2
所示。
[0048] 为了缓解区块链上数据存储压力,释放新节点的本地存储空间,本发明实施例提供一种基于联盟区块链的医疗数据存储共享方法及系统,涉及分布式存储平台IPFS,特别
涉及不同应用场景下,采用各类适配的加解密算法实现医疗数据共享模型。具体地,本发明
将分布式文件系统IPFS作为原始医疗数据的链下存储平台,星际文件系统
(InterPlanetary File System,IPFS)是一个点对点的分布式文件系统,能够为添加到网
络中的文件分配独一无二的哈希值,IPFS作为存储大宗文件的理想选择,能够永久保存文
件同时提供较高吞吐量。由于IPFS是基于内容寻址而非常见的基于地址寻址,因此相同文
件返回的哈希值是相同的,能够删除内容相同的冗余文件,同时提供高效检索服务。在存储
医疗数据时,患者首先将原始医疗数据链下存储到IPFS中,将返回的IPFS哈希值链上存储
在联盟链Fabric上。由于IPFS采用SHA256算法计算哈希值,故返回的哈希值只占几十比特,
极大释放了链上存储空间,提高医疗数据存储效率及安全性。医疗数据上链后,为了使患者
能够决定接受或拒绝数据请求者对自身医疗数据的访问请求,本发明采用多权限属性基加
密算法(MA‑ABE);
[0049] 属性基加密算法(ABE)将身份标识视为一系列属性,当用户自身拥有的属性超过发送者访问策略中描述的属性阈值,用户即可正确收到密文并成功解密。根据解密策略不
同位置,ABE可分为基于密钥策略的属性加密(KP‑ABE):密文的解密策略在生成密钥时嵌入
到用户的私钥中,相关属性在加密时嵌入到密文中,即访问策略与密钥相关联;基于密文策
略的属性加密(CP‑ABE):密文的解密策略在加密时嵌入到密文中,用户相关属性在生成密
钥时嵌入到私钥中,即访问策略与密文相关联。二者区别在于患者是否有权决定接收或拒
绝加密数据请求,由于本发明想要赋予患者对自身医疗数据的掌控权,因此选用将患者制
定的解密策略嵌入到密文中的CP‑ABE算法,但由于CP‑ABE算法中引入单一授权机构AA为每
个用户分发密钥,易造成用户隐私泄露,且面对大量请求,单一属性授权机构(AA)处理的工
作量太大成为提高系统效率的瓶颈。因此选用多授权机构的属性基加密算法(MA‑ABE)作为
本文的加密算法;
[0050] 本发明实施例提供的一种基于联盟区块链的医疗数据存储共享方法适用于医疗数据存储共享、加密数据访问控制领域;基于分布式存储平台IPFS的联盟式医疗区块链将
赋予医疗数据存储共享系统更高的安全性与高效性,提高用户医疗数据的隐私性。
[0051] 本实施例提供一种基于联盟区块链的医疗数据存储共享方法,方法流程图如图1所示,在一种优选实施方式中,包括但不限于如下步骤:
[0052] S1、搭建联盟区块链及私有IPFS网络,将模型中的各实体注册到系统中,获得公私钥对,初始化系统,生成系统的公共参数与主密钥。
[0053] 在一种优选实施方式中,步骤S1具体包括:
[0054] S11:搭建联盟区块链Fabric网络,创建验证节点群及IPFS节点群,搭建私有IPFS网络。对本地文件进行上传下载,检测网络是否搭建成功;
[0055] S12:系统中的各实体向中央授权机构CA注册,提交真实身份ID获得公私钥对(PK,SK),同时生成系统的公共参数与系统主密钥。
[0056] 公有IPFS网络中的节点遍布世界各地,导致从某个节点下载数据的速率和网络延迟得不到保障;本实施例本地构建私有IPFS网络,网络中的各节点身份已知(如联盟区块
链)能够实现私有网络中数据的快速下载,提高系统效率。
[0057] S2、采用链上链下混合存储结构实现医疗数据的安全存储。
[0058] S21、患者从医院获取自身医疗数据,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法对医疗数据及访问策略加密,得到密文,将密文本地存储在搭建的
私有IPFS网络中,私有IPFS网络为存储的密文生成一个独一无二的IPFS哈希值并反馈给患
者,获得数据的安全保障。
[0059] 由于患者从医院获取的原始医疗数据中包含医学影像、诊断流程视频等大宗文件,比特数量庞大,储存空间占用量大,不易直接在链上存储。本发明采用混合存储结构对
医疗数据进行安全存储,混合存储主要思想是患者首先将原始的大宗医疗数据通过IPFS节
点群验证,存储在私有IPFS系统上,IPFS系统会为存储在网络中的医疗数据内容分配一个
独一无二的哈希值,然后再将该IPFS哈希值通过验证节点群验证存储在联盟区块链上。由
于IPFS哈希值大小仅为几十比特,因此该混合存储模型有效释放了链上存储空间。
[0060] 在一种优选实施方式中,患者加密原始医疗数据采用的多权限属性基加密算法包括以下五种算法:
[0061] S211、初始化算法:输入安全参数K,输出全局公共参数GP;输出授权机构标识符aid和用户身份标识符uid。
[0062] Setup(k)→(GP,aid,uid)
[0063] S212、属性授权机构初始化算法:输入全局公共参数GP;输出该属性相关授权机构的公钥PKaid与私钥SKaid,其中公钥广播给组织中各实体。
[0064] AuthSetup(GP)→{PKaid,SKaid}
[0065] S213、密钥生成算法:输入系统的全局公共参数GP,授权机构的私钥SKaid,用户标识符uid及属性集S;输出用户属性集相关联的解密密钥SKuid
[0066] KeyGen(GP,{SKaid},uid,S)→SKuid
[0067] S214、加密算法:输入系统的全局公共参数GP,该属性相关授权机构的公钥PKaid,明文M,访问策略A;输出密文CT。
[0068] Encrypt(GP,{PKaid},M,A)→CT
[0069] S215、解密算法:输入系统的全局公共参数GP,密文CT,与用户属性集相关联的解密密钥SKuid;若属性大于访问策略中的属性阈值,解密输出明文M;否则,解密失败。
[0070] Dec(GP,CT,SKuid)→M
[0071] S22、患者将与密文对应的IPFS哈希值存储在联盟区块链中,构建满足访问策略的数据请求者与患者医疗数据之间的共享连接。由于IPFS哈希值大小仅为几十比特,因此该
混合存储模型有效释放了链上存储空间。
[0072] 在一种优选实施方式中,患者上传加密医疗数据流程图如图3所示,包括以下具体步骤:
[0073] S221:患者从医院获取到自身的医疗数据后,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法将医疗数据原文以及访问策略进行加密,生成密文,利用私
钥SKaid对密文进行数字签名,将密文及密文对应的数字签名发送到模型中的IPFS节点集
群;
[0074] S222:IPFS节点集群中的某个IPFS节点接收到患者上传的数据,首先通过验证患者的数字签名来证实患者身份;确认患者身份后将密文上传到模型中的私有IPFS网络中,
IPFS网络根据节点上传的内容为该IPFS节点返回一个独一无二的哈希值;IPFS节点利用公
钥PKaid对收到的哈希值进行数字签名,得到哈希值的数字签名,将密文、返回的哈希值及哈
希值的数字签名发送给IPFS网络节点集群中的每个IPFS节点验证;
[0075] S223:IPFS节点集群中的每个IPFS节点验证患者身份,并本地计算密文的哈希值,若与IPFS网络返回的哈希值一致,则通过验证,并向与患者交互的IPFS节点发送确认消息;
该IPFS节点收到其他IPFS节点的确认消息后,将患者身份及发送的密文哈希值、密文发送
时的时间戳打包成类交易,用患者公钥为类交易编号;将编号后的类交易发送到联盟区块
链Fabric中;
[0076] S224:联盟区块链Fabric中的某备份节点收到IPFS节点发送的类交易后,首先验证IPFS节点身份,接着验证元数据中的各项内容,若通过验证,则将类交易本地备份,利用
基于可验证随机函数来随机选取交互的共识节点,将类交易发送给共识节点;
[0077] S225:共识节点收到备份节点发送的类交易后,验证类交易中的各项内容及节点身份,验证成功后,对类交易签名,发送给联盟区块链中验证节点群中的每一个节点,利用
PBFT算法对类交易进行共识验证,得到超过2/3的共识确认后,将类交易打包上链。
[0078] 在一种优选实施方式中,联盟区块链Fabric中的验证节点群包含两类节点:备份节点和共识节点;其中备份节点负责与IPFS节点交互、接收信息,同时将接收到的信息发送
到共识节点;共识节点负责交易的验证打包及确认上链。
[0079] S3、当数据请求者请求访问患者的医疗数据时,通过在链上检索以患者公钥编号的类交易获得患者加密医疗数据(密文)的IPFS哈希值(即在IPFS网络中的存储位置),数据
请求者根据类交易中的密文IPFS哈希值在IPFS网络中下载患者加密的原始医疗数据,但能
否解密成功取决于数据请求者的自身属性集合是否满足患者设定的加密医疗数据访问策
略中的属性阈值,若数据请求者的属性集合满足患者设定的访问策略中的属性阈值,则成
功解密患者医疗数据,获得数据明文;反之解密不成功。
[0080] 在一个优选实施方式中,采用多权限属性基加密算法(MA‑ABE)为核心算法实现患者DO与数据请求者DU之间的医疗数据共享,如图4所示,当数据请求者访问患者加密的医疗
数据时,具体包括以下过程:
[0081] S31:以数据请求者为医生为例,向中央授权机构CA发送的真实身份,获取CID。向各属性授权机构AA发送CID获取与身份相关的属性集合S与私钥集合SK;
[0082] S32:医生向联盟区块链Fabric验证节点群中的节点发送访问数据请求,请求中包含医生的CID、访问数据的名称及所有者。节点收到访问请求后,首先验证医生的身份,身份
验证通过后,根据被访问数据的名称及所有者在链上检索类交易,找到对应的类交易后,将
包含请求内容的相关类交易及医生的CID发送到IPFS节点群;
[0083] S33:IPFS节点群中的节点首先验证医生的身份,验证通过后,从类交易中提取访问数据对应的IPFS哈希值,根据该哈希值在模型中的私有IPFS网络中检索患者完整的加密
数据,找到后,将密文发送给医生;
[0084] S34:医生收到患者加密的原始医疗数据后,利用自身属性集合S及与属性相关的密钥解密密文,若医生的属性值满足患者设定的访问策略,则成功解密出患者完整的医疗
数据;反之,解密失败。
[0085] 本实施例提供一种基于IPFS的联盟区块链的医疗数据存储共享系统,所述系统包括但不限于联盟区块链网络、数据存储模块和数据共享模块。所述联盟区块链网络用于提
供联盟区块链网络环境;所述数据存储模块用于将患者的医疗数据链上链下存储到对应网
络中;所述数据共享模块用于将患者的医疗数据安全共享给获得许可的数据请求者。
[0086] 进一步的,所述数字存储模块包含混合存储模型,所述混合存储模型为链上链下混合存储结构,首先在链下利用私有分布式存储平台IPFS网络存储原始的大宗医疗数据;
私有IPFS网络会为存储在网络中的内容分配一个独一无二的IPFS哈希值,再将该IPFS哈希
值存储在联盟区块链上。链下IPFS存储患者的原始医疗数据;链上存储医疗数据对应的
IPFS哈希值),由于IPFS哈希值大小仅为几十比特,因此该链上链下混合存储模型有效释放
了链上存储空间。
[0087] 患者利用IPFS系统能够高效存储大宗文件的特性,将原始医疗数据存储私有IPFS网络,返回的大小仅为几十比特的IPFS哈希值则被存储到联盟区块链中,以此缓解链上存
储压力。
[0088] 进一步的,利用多权限属性基加密算法保障传输过程中患者医疗数据的安全性以及患者对自身医疗数据访问控制的掌控。
[0089] 需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机
可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储
介质可为磁碟、光盘、只读存储记忆体(Read‑0nly Memory,ROM)或随机存储记忆体(Random 
Access Memory,RAM)等。
[0090] 本说明书中的各个实施例均采用递进的方式描述,本发明的方法、系统的部分特征可以相互引用,本发明对其不再一一列举,各个实施例之间相同相似的部分互相参见即
可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由
于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明
即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模
块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或
者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动
的情况下,即可以理解并实施。
[0091] 以上所述仅是本申请的具体实施方式,应当指出,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修
改、替换和变型,本发明的范围由所附权利要求及其等同物限定。