1.一种基于联盟区块链的医疗数据存储共享方法,其特征在于,包括以下步骤:S1、搭建联盟区块链及私有IPFS网络,将模型中的各实体注册到系统中,获得公私钥对,初始化系统,生成系统的公共参数与主密钥;
S2、采用链上链下混合存储结构实现医疗数据的安全存储:患者从医院获取自身医疗数据,本地生成与医疗数据相关的访问策略,利用多权限属性基加密算法对医疗数据及访问策略加密,得到密文,将密文本地存储在搭建的私有IPFS网络中,私有IPFS网络为存储在网络中的密文分配一个独一无二的IPFS哈希值并反馈给患者;患者将与密文对应的IPFS哈希值存储在联盟区块链中;
S3、当数据请求者请求访问患者的医疗数据时,通过在链上检索类交易获得密文的IPFS哈希值,数据请求者通过密文的IPFS哈希值在IPFS网络中下载患者加密的原始医疗数据,但能否解密成功取决于数据请求者的自身属性集合是否满足患者设定的加密医疗数据访问策略中的属性阈值,若数据请求者的属性集合满足患者设定的访问策略中的属性阈值,则成功解密患者医疗数据,获得数据明文;反之解密不成功。
2.根据权利要求1所述的一种基于联盟区块链的医疗数据存储共享方法,其特征在于,步骤S2中,多权限属性基加密算法实现数据的加解密过程包括五种算法: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
3.根据权利要求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的共识确认后,将类交易打包上链。
4.根据权利要求3所述的一种基于联盟区块链的医疗数据存储共享方法,其特征在于,联盟区块链Fabric中的验证节点群包含两类节点:备份节点和共识节点;其中备份节点负责与IPFS节点交互、接收信息,同时将接收到的信息发送到共识节点;共识节点负责交易的验证打包及确认上链。
5.根据权利要求1所述的一种基于联盟区块链的医疗数据存储共享方法,其特征在于,步骤S3中,数据请求者访问患者加密医疗数据的流程具体包括:S31:数据请求者向中央授权机构CA发送的真实身份,获取CID,向各属性授权机构AA发送CID,获取与身份相关的属性集合S与私钥集合P;
S32:数据请求者向联盟区块链Fabric验证节点群中的节点发送访问数据请求,请求中包含医生的CID、访问数据的名称及所有者;节点收到访问请求后,首先验证数据请求者的身份,身份验证通过后,根据被访问数据的名称及所有者在链上检索类交易,找到对应的类交易后,将包含请求内容的相关类交易及数据请求者的CID发送到IPFS节点群;
S33:IPFS节点群中的节点首先验证数据请求者的身份,验证通过后,从类交易中提取访问数据对应的IPFS哈希值,根据该哈希值在模型中的私有IPFS网络中检索患者完整的加密数据,找到后,将密文发送给数据请求者;
S34:数据请求者收到患者加密的原始医疗数据后,利用自身属性集合S及与属性相关的密钥解密密文,若数据请求者的属性值满足患者设定的访问策略,则成功解密出患者完整的医疗数据;反之,解密失败。
6.一种基于联盟区块链的医疗数据存储共享系统,其特征在于,包括联盟区块链网络、数据存储模块和数据共享模块,所述联盟区块链网络用于提供联盟区块链网络环境;所述数据存储模块用于将患者的医疗数据链上链下存储到对应网络中;所述数据共享模块用于将患者的医疗数据安全共享给获得许可的数据请求者。
7.根据权利要求6所述的一种基于联盟区块链的医疗数据存储共享系统,其特征在于,所述数字存储模块包含混合存储模型,所述混合存储模型为链上链下混合存储结构,首先在链下利用私有IPFS网络存储原始的大宗医疗数据;私有IPFS网络为存储的内容分配一个独一无二的IPFS哈希值,再将该IPFS哈希值存储在联盟区块链上。