一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于双区块链的医疗数据管理系统、病人授权病历共享方法与流程

2021-12-07 21:38:00 来源:中国专利 TAG:


1.本发明涉及可认证密钥协商算法、基于身份的数字签名算法技术领域,具体地,涉及一种基于双区块链的医疗数据管理系统、病人授权的病历共享方法。


背景技术:

2.近年来,电子健康记录(ehr,electronic health record)系统在世界范围内广泛使用,医疗保健系统之间的及时医疗数据共享在降低卫生保健成本、提高医疗服务质量和加强疾病监测方面显示出巨大的好处。电子健康记录是数字化的患者医疗数据记录的集合,这些信息一般由医疗机构生成并由医疗机构使用以帮助医生有效地评估患者的病情并做出正确的疾病诊断。电子病历涉及病人的体征数据,是高度隐私的。因此,越来越多的研究关注共享电子病历的数据安全性和保护患者的隐私。共享病历本质上是隐私数据的共享,因此共享可能会导致存储安全性和隐私泄漏问题。为了解决这些问题,基于云的电子病历共享已经被提出。由于云服务器是半信任的。如果云服务器受到攻击或缺乏适当的监控,将导致单点故障。区块链技术因为其链上数据不可篡改,上链数据可溯源,网络节点平等地位等特点,被越来越多的研究者引入医疗数据安全共享领域。
3.此外,最近有迹象表明,医疗数据共享的研究发展已经转向以患者为中心的互操作性。要实现真正的以患者为中心的电子病历共享系统,患者就应该完全控制自己病历的访问权限,创建病历数据列表、确定共享病历权限、确认数据使用、批准共享数据的生命周期。


技术实现要素:

4.本发明的目的是提供一种基于双区块链的医疗数据管理系统及病人授权病历共享方法,该基于双区块链的医疗数据管理系统及病人授权病历共享方法可以实现病人控制自己病历数据的访问权限,运用基于身份的密钥协商算法提高数据传输的安全性,具有病人授权的病历请求端可以向病历存储端请求对应的病历,并通过和医疗区块中的哈希值对比来验证所得病历的真实性、完整性。本方法结合智能合约,实现了病人清醒情况下和病人昏迷情况下的病历安全共享,使得该发明更加符合医院诊治病人的实际情况。本方法使用监管区块链对较为活跃的医疗区块链进行监管,以防止自私挖矿攻击。为了实现上述目的,本发明提供了一种基于双区块链的医疗数据管理系统,其特征在于,所述基于双区块链的医疗数据管理系统包括:医疗区块链,用于:运行分等级工作量证明共识来生成新的区块;记录包含病历的哈希值的交易;监管区块链,用于:运行实用拜占庭容错共识以对所述新的区块进行排序;记录所述医疗区块链的区块哈希值;病历存储端,用于:为病历访问控制端生成并存储原始的病历数据;将所述原始的病历数据进行散列计算以得到数据摘要;将所述数据摘要写入交易并上传至所述医疗区块链以进行存证;与病历访问控制端协商用于共享病历数据的可认证身份对称密钥;根据病历请求端提供的授权来共享本地存储的所述原
始的病历数据;验证待上链的交易并执行分等级工作量证明共识以生成新的医疗区块,并且每隔预设定的时间间隔将所生成的所述新的医疗区块对应的区块哈希值存入所述监管区块链;所述病历访问控制端,用于:在能够主动授权的情况下,向所述病历请求端发送访问所述病历的授权;在无法主动授权的情况下,被动向病历请求端提供指纹信息以查询查询请求对应的相关医疗信息;调用智能合约存储包含病历关键词的健康记录;所述病历请求端,用于:在病人清醒时获取主动授权并向病历存储端发送非紧急病历请求以获取所述原始的病历数据;在病人处于昏迷状态时调用智能合约搜索与病人指纹匹配的健康记录以获得所述病历关键词;向所述医疗区块链发送紧急访问病历的请求并向所述病历存储端请求所述原始的病历数据。
5.优选地,所述医疗区块链用于:
6.记录区块的类型;其中,所述类型包括记录包含病历哈希值的交易的普通类型的区块,记录所述紧急访问病历的请求的紧急类型的区块;以及
7.根据所记录的所述区块的类型调整生成新的区块的速度。
8.另外,本发明还提供一种基于可认证密钥协商和区块链的病人授权病历共享方法,使用上述的基于双区块链的医疗数据管理系统,所述基于可认证密钥协商和区块链的病人授权病历共享方法包括:
9.初始化所述医疗数据管理系统;
10.生成所述病历存储端、病历访问控制端以及病历请求端各自的长期密钥;
11.生成所述病历存储端与所述病历访问控制端各自的可认证身份对称密钥;
12.生成所述病历的哈希值并使用分等级工作量证明共识将所述病历的哈希值上传至所述医疗区块链;
13.生成包含病历关键词和病历在区块链中存储地址符的健康记录;
14.所述病历请求端在病人清醒时根据所述病历访问控制端的授权向所述病历存储端发送非紧急病历请求;
15.所述病历请求端在病人处于昏迷状态时使用智能合约搜索与病人指纹匹配的健康记录,上传紧急病历请求到所述医疗区块链并向所述病历存储端发送紧急病历请求;
16.在接收到所述非紧急病历请求时,所述病历存储端检查所述非紧急病历请求以验证所述病历请求端的授权的合法性,并生成非紧急对称密钥加密病历;
17.在检查到所述紧急病历请求时,所述病历存储端检查所述紧急病历请求是否存储在所述医疗区块链,并生成紧急对称密钥加密病历;
18.所述病历请求端收到所述非紧急对称密钥加密病历后,根据所述病历访问控制端的授权生成对应的非紧急对称密钥解密病历,并与所述医疗区块链中的哈希值比对确定病历的完整性,完成数据共享;
19.所述病历请求端收到紧急的加密病历后,根据所述病历存储端身份信息生成对应的紧急对称密钥解密病历,并与医疗区块链中的哈希值比对确定所述病历的完整性,完成数据共享;以及
20.所述病历存储端每隔预设定的时间间隔将该时间间隔新产生的所述医疗区块链的区块哈希值存入所述监管区块链,完成对所述医疗区块链的监管。
21.优选地,所述初始化所述医疗数据管理系统包括:
22.私钥生成中心选择一个大素数q和一个双线性对e:g1×
g1→
g2,其中,g1是阶数为q的加法循环群,g2是阶数为q的乘法循环群;p是循环群g的一个生成元,计算g=e(p,p);所述私钥生成中心选择一个秘密值作为所述私钥生成中心的主私钥,并计算p
pub
=sp作为主公钥;选择以下五个hash函数:
[0023][0024]
h1:{0,1}
*

g1[0025][0026]
h3:g2→
g1×
{0,1}
*

[0027]
h:{0,1}
*

{0,1}
l
,其中l表示字串长度;
[0028]
初始化所述医疗数据管理系统的公共参数为:
[0029]
param=(g1,g2,e,q,g,p,p
pub
,h0,h1,h2,h3,h);
[0030]
并且,所述生成所述病历存储端、病历访问控制端以及病历请求端各自的长期密钥包括:
[0031]
将所述病历存储端hn、所述病历访问控制端pn、以及所述病历请求端dn统一记为端u;
[0032]
所述端u将自身的身份标识符id
u
通过安全信道提交给所述私钥生成中心请求生成对应的私钥;
[0033]
所述私钥生成中心根据所述身份标识符id
u
计算q
u
=h0(id
u
),
[0034]
所述私钥生成中心将s
u
和通过安全信道发给所述端u;
[0035]
所述端u使用(q
u
,s
u
)来生成和验证基于身份的短签名,使用来生成基于身份的可认证会话密钥;
[0036]
并且,所述生成所述病历存储端与所述病历访问控制端各自的可认证身份对称密钥包括:
[0037]
病历访问控制端c使用病历存储端a的身份标识符id
a
计算选择随机数并计算t
c
=cp,将t
c
传送给所述病历存储端a;其中,所述病历存储端a的身份标识符id
a
、病历访问控制端c的身份标识符id
c
被配置均为公开信息;
[0038]
所述病历存储端a收到来自所述病历访问控制端c的t
c
后,使用所述病历访问控制端c的身份标识符id
c
计算选择随机数并计算t
a
=ap,将t
a
传送给所述病历访问控制端c,所述病历存储端a计算出与所述病历访问控制端c本次会话的可认证对称密钥sk
ac
=h(id
c
||id
a
||at
c
||k
ac
||t
c
||t
a
),并将所述病历加密发送给所述病历访问控制端c;
[0039]
所述病历访问控制端c收到来自所述病历存储端a的t
a
后计算出与病历储端a本次会话的可认证对称密钥sk
ca
=h(id
c
||id
a
||ct
a
||k
ca
||t
c
||t
a
),并用sk
ca
解密出所述病历。
[0040]
优选地,所述生成所述病历的哈希值并使用分等级工作量证明共识将所述病历的
哈希值上传至所述医疗区块链包括:
[0041]
所述病历存储端a拥有病历访问控制端c的原始病历mr
raw
,计算所述原始的病历哈希值digest
mr
=h(mr
raw
),生成含有该病历的哈希值的非紧急交易:
[0042]
tx={id
a
,id
c
,digest
mr
,λ0,ts1,σ
a
},
[0043]
其中,λ0是非紧急交易标识符,ts1是生成该交易时的时间戳;
[0044]
是所述病历存储端a对该交易的签名;
[0045]
所述病历存储端a根据交易的类型调整挖矿难度值,其中,非紧急交易的难度值为λ0=0,目标难度值为target=curdifficult
×
(1 λ0),其中curdifficult是实际挖矿难度值;以及
[0046]
所述病历存储端a执行分等级工作量证明共识机制将所述非紧急交易tx上传到所述医疗区块链作为存证。
[0047]
优选地,所述生成包含病历关键词和病历在区块链中存储地址符的健康记录包括:
[0048]
所述病历访问控制端c根据病历的内容提取关键词集合{keywords},生成健康记录:hr={id
blk
,h(tx),{keywords},ts2,σ
c
},
[0049]
其中,id
blk
是包含所述病历哈希值的交易在医疗区块链的区块编号,h(tx)是交易在区块中的搜索标识符,ts2是生成该健康记录的时间,σ
c
=sign
c
(h(id
blk
,h(tx),{keywords},ts2))是所述病历访问控制端对所述健康记录的签名;
[0050]
所述病历访问控制端c使用自身的指纹信息h(f)对所述健康记录进行加密得到健康记录的密文并调用智能合约将hr'存储到区块链中以及所述病历访问控制端c的医疗区块链的账户中;
[0051]
所述病历访问控制端c在生成所述健康记录后能够删除所述原始的病历数据;
[0052]
优选地,所述病历请求端在病人清醒时根据所述病历访问控制端的授权向所述病历存储端发送非紧急病历请求包括:
[0053]
所述病历访问控制端c根据所述病历请求端b和病历存储端a的身份标识符生成q
a
=h0(id
a
)和q
b
=h0(id
b
),并计算和cp作为授权因子传送给所述病历请求端b;
[0054]
所述病历请求端b收到授权因子后选择随机数并计算t
b
∈bp,g
b
=g
b
,r
b
=b(p
pub
q
b
p),将对病历的请求request放入m=(t
b
||requst)并计算h=h2(m||r
b
),将(α
cb
,σ,r
b
,n)作为非紧急病历请求发给所述病历存储端;
[0055]
并且,所述病历请求端在病人处于昏迷状态时使用智能合约搜索与病人指纹匹配的健康记录,上传紧急病历请求到所述医疗区块链并向所述病历存储端发送紧急病历请求包括:
[0056]
所述病历请求端b提取病人指纹信息f,并计算h(f),调用智能合约搜索与h(f)匹配的健康记录hr;
[0057]
所述智能合约将搜索到的健康记录hr反馈给所述病历请求端b,所述病历请求端b根据hr中的关键词集合{keywords}判断是否要请求该病历原始数据;
[0058]
所述病历请求端b生成包含病历请求request的紧急交易:
[0059]
tx'={id
b
,id
a
,request,λ1,ts3,σ
b
},
[0060]
其中λ1是紧急交易标识符,ts3是生成该交易时的时间戳,σ
b
=sign
b
(h(id
b
,id
a
,request,λ1,ts3))是所述病历请求端b对该交易的签名;
[0061]
所述病历请求端b根据交易的类型调整挖矿难度值;其中,非紧急交易的难度值为λ1=1,目标难度值为target=curdifficult
×
(1 λ1),其中target是目标难度值,curdifficult是实际挖矿难度值;
[0062]
所述病历请求端b将对病历的请求request放入m=(t
b
||requst),将m传送给所述病历存储端a。
[0063]
优选地,所述病历存储端检查所述非紧急病历请求以验证所述病历请求端的授权的合法性,并生成非紧急对称密钥加密病历包括:
[0064]
所述病历存储端a根据(α
cb
,σ,r
b
,n)和所述病历请求端b的身份标识符id
b
计算q
b
=h0(id
b
),g
b
'=e(t
c
q
a
p q
b
p,α
cb
),m'=h3(g
b
')

n,h'=h2(m'||r
b
),检查e(σ,r
b
h'(p
pub
q
b
p))是否等于g,其中g=e(p,p);当检查结果为等于时,证明所述病历请求端拥有来自所述病历访问控制端的合法授权;
[0065]
所述病历存储端a计算k
ab

c
=e(t
b
,cp)
a
,生成本次病历共享的会话密钥sk
ab
=h(id
b
||id
a
||at
b
||k
ab

c
||k
ab
||t
b
||t
a
)并对所述病历加密,将t
a
和病历密文发送给所述病历请求端b;
[0066]
并且,所述病历存储端检查所述紧急病历请求是否存储在所述医疗区块链,并生成紧急对称密钥加密病历包括:
[0067]
所述病历存储端a收到来自所述病历请求端b的m后,使用所述病历请求端b的身份标识符id
b
计算将t
a
传送给所述病历请求端b,所述病历存储端a计算出与病历请求端b本次会话的可认证对称密钥sk
ab
=h(id
b
||id
a
||at
b
||k
ab
||t
b
||t
a
),并将病历加密发送给病历请求端b。
[0068]
优选地,所述病历请求端收到所述非紧急对称密钥加密病历后,根据所述病历访问控制端的授权生成对应的非紧急对称密钥解密病历,并与所述医疗区块链中的哈希值比对确定病历的完整性,完成数据共享包括:
[0069]
所述病历请求端b使用病历访问控制端c的授权因子cp以及病历存储端的身份标识符id
a
计算k
ba

c
=e(t
a
,cp)
b
,生成本次病历共享的会话密钥sk
ba
=h(id
b
||id
a
||bt
a
||k
ba

c
||k
ba
||t
b
||t
a
)并对病历密文进行解密,得到病历原始数据,完成数据共享;
[0070]
并且,所述病历请求端收到紧急的加密病历后,根据所述病历存储端身份信息生成对应的紧急对称密钥解密病历,并与医疗区块链中的哈希值比对确定所述病历的完整性,完成数据共享包括:
[0071]
所述病历访问请求端b使用所述病历存储端a的身份标识符id
a
计算收到来自所述病历存储端a的t
a
后计算出与病历储端a本次会话的可认证对称密钥sk
ba
=h(id
b
||id
a
||bt
a
||k
ba
||t
b
||t
a
),并用sk
ba
解密出病历,得到病历原始数据,
完成数据共享。
[0072]
优选地,所述病历存储端每隔预设定的时间间隔将该时间间隔新产生的所述医疗区块链的区块哈希值存入所述监管区块链,完成对所述医疗区块链的监管包括:
[0073]
所述病历存储端a和其他病历存储端一起构成联盟并执行实用拜占庭容错共识机制维护监管区块链;
[0074]
每隔一个每隔预设定的时间间隔将该时段新生成的医疗区块链的区块进行哈希运算得到h(blk1),h(blk2),...,h(blk
i
),并按照梅克尔树的结构组合并写入监管区块链。
[0075]
根据上述技术方案,本发明通过结合基于身份的签名算法(ibs)和基于身份的可认证密钥协商算法(ibaka)实现了病历的安全共享,采用分等级的工作量证明共识机制,实现了根据交易的紧急程度来改变生成新区块的速度,并使用双链结构来形成对链上数据的监管,有效抵御自私挖矿攻击。本发明不仅实现了病历存储端和病历请求端之间病历数据的安全存储和共享功能,还实现了病历访问控制端对共享过程的权限控制,并利用区块链存证病历,使得医院之间可以严格追溯病历数据来源,避免因数据源头不明带来的医疗纠纷风险,符合当下智慧医疗,5g网络背景下医院之间医疗数据共享的发展趋势。
[0076]
本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0077]
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0078]
图1是说明本发明的一种基于双区块链的医疗数据管理系统的交互框图;
[0079]
图2是说明本发明的一种基于双区块链的医疗数据管理系统的模块框图;以及
[0080]
图3是说明本发明的一种基于可认证密钥协商和区块链的病人授权病历共享方法的流程图。
具体实施方式
[0081]
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0082]
实施例1
[0083]
图1是本发明实施例1所提供的一种基于双区块链的医疗数据管理系统的模块交互框图,如图1、2所示,所述基于区块链的智能医疗网络系统包括:
[0084]
医疗区块链,用于:
[0085]
运行分等级工作量证明共识来生成新的区块;
[0086]
记录包含病历哈希值的交易;
[0087]
监管区块链,用于:
[0088]
运行实用拜占庭容错共识以对新区块进行排序;
[0089]
记录医疗区块链的区块哈希值以防止数据遭受自私挖矿攻击;
[0090]
病历存储端,用于:
[0091]
为病历访问控制端生成病历数据并存储;
[0092]
将原始病历数据散列计算得到数据摘要;
[0093]
将数据摘要写入交易并上传至区块链以进行存证;
[0094]
与病历访问控制端协商用于共享病历数据的可认证身份对称密钥;
[0095]
根据病历请求端提供的授权来共享本地存储的原始病历数据;
[0096]
验证待上链的交易并执行分等级工作量证明共识以生成新的医疗区块并且每隔一个固定时间间隔将新生成的医疗区块的哈希值存入监管区块链;
[0097]
病历访问控制端,用于:
[0098]
可以主动授权的情况下,向病历请求端发送访问病历的授权;
[0099]
无法主动授权的情况下,被动向病历请求端提供指纹信息以便查询相关医疗信息;
[0100]
调用智能合约存储包含病历关键词的健康记录;
[0101]
病历请求端,用于:
[0102]
在病人清醒时获取主动授权并向病历存储端请求数据;
[0103]
在病人昏迷时调用智能合约搜索与病人指纹匹配的健康记录从而获知病历关键词;
[0104]
向医疗区块链发送紧急访问病历的请求并向病历存储端请求病历数据。
[0105]
优选地,所述病历存储端使用分等级工作量证明共识的医疗区块链对普通类型区块和紧急类型区块采用不同的速度进行共识并上链包括:
[0106]
所述医疗区块链记录包含病历哈希值的交易为普通类型区块;
[0107]
所述医疗区块链记录所述紧急访问病历请求为紧急类型区块;
[0108]
所述分等级工作量证明共识机制用于根据区块的紧急程度来调整生成新区块的速度;
[0109]
所述使用拜占庭容错共识的监管区块链用于监管医疗区块链。
[0110]
总结来看,病历存储端保留病例原始数据,病历访问控制端与病历存储端协商一个授权因子以方便对病历请求端授权,得到授权的病历请求端可以向病历存储端发送非紧急病历请求;为了防止病历访问控制端的所有人昏迷无法向病历请求端提供授权因子,病历访问控制端还利用智能合约生成包含病历关键词的健康记录并存储在区块链中以方便昏迷时,病历请求端可以根据病历访问控制端所有人的指纹信息来获取病历信息,从而向病历存储端发送紧急的病历请求。紧急病历请求会被记录在医疗区块链中,可以被溯源,从而避免了紧急请求的滥用和潜在的医疗纠纷。此外双区块链结构中的医疗区块链采用分等级工作量证明共识机制用于根据区块的紧急程度来调整生成新区块的速度,确保紧急交易可以快速上链;双区块链结构中的监管区块链采用实用拜占庭容错共识机制,定期记录医疗区块链的区块哈希值以抵御自私挖矿攻击。本发明实现了病人跨院治疗时对自己病历在医院之间共享的访问控制,实现了根据交易紧急程度改变区块链生成新区块速度,实现了双区块链结构以保证医疗区块链可以抵御自私挖矿攻击。
[0111]
实施例2
[0112]
在实施例1中,公开了一种基于双区块链的医疗数据管理系统,对于该系统的建立以及使用该系统来实现基于可认证密钥协商和区块链的病人授权病历共享方法,需要通过下述的方法来实现,如图3所示,建立并使用权利要求1或2所述的基于可认证密钥协商和区块链的病人授权病历共享方法包括:
[0113]
s301,初始化所述医疗数据管理系统;
[0114]
s302,生成所述病历存储端、病历访问控制端以及病历请求端的长期密钥;
[0115]
s303,生成所述病历存储端与所述病历访问控制端的可认证身份对称密钥;
[0116]
s304,生成所述病历的哈希值并使用分等级工作量证明共识将所述病历哈希值上传医疗区块链;
[0117]
s305,生成包含病历关键词和病历在区块链中存储地址符的健康记录;
[0118]
s306,所述病历请求端在病人清醒时根据所述病历访问控制端的授权向病历存储端发送非紧急病历请求;
[0119]
s307,所述病历请求端在病人昏迷时使用智能合约搜索与病人指纹匹配的健康记录,上传紧急病历请求到医疗区块链并向病历存储端发送紧急病历请求;
[0120]
s308,所述病历存储端检查非紧急病历请求验证病历请求端的授权的合法性,并生成非紧急对称密钥加密病历;
[0121]
s309,所述病历存储端检查紧急病历请求是否存储在医疗区块链,并生成紧急对称密钥加密病历;
[0122]
s310,所述病历请求端收到非紧急的加密病历后,根据病历访问控制端的授权生成对应的非紧急对称密钥解密病历,并与医疗区块链中的哈希值比对确定病历的完整性,完成数据共享;
[0123]
s311,所述病历请求端收到紧急的加密病历后,根据病历存储端身份信息生成对应的紧急对称密钥解密病历,并与医疗区块链中的哈希值比对确定病历的完整性,完成数据共享;以及
[0124]
s312,所述病历存储端根据固定时间间隔将该时段新产生的医疗区块哈希值存入监管区块链,完成对医疗区块链的监管。
[0125]
优选地,s301,所述初始化所述医疗数据管理系统包括:
[0126]
s3011,私钥生成中心(pkg)选择一个大素数q和一个双线性对e:g1×
g1→
g2,其中,g1是阶数为q的加法循环群,g2是阶数为q的乘法循环群;p是循环群g的一个生成元,计算g=e(p,p);
[0127]
s3012,pkg选择一个秘密值作为pkg的主私钥,并计算p
pub
=sp作为主公钥。选择以下五个hash函数:
[0128][0129]
h1:{0,1}
*

g1[0130][0131]
h3:g2→
g1×
{0,1}
*

[0132]
h:{0,1}
*

{0,1}
l
,其中l表示字串长度;
[0133]
s3013,初始化所述医疗数据管理系统的公共参数为:
[0134]
param=(g1,g2,e,q,g,p,p
pub
,h0,h1,h2,h3,h)。
[0135]
优选地,s302,所述生成所述病历存储端、病历访问控制端以及病历请求端的长期密钥包括:
[0136]
s3021,不失一般性地将所述病历存储端hn,所述病历访问控制端pn,所述病历请
求端dn统一记为端u;
[0137]
s3022,端u将自己的身份标识符id
u
通过安全信道提交给pkg请求生成对应的私钥。pkg根据id
u
计算q
u
=h0(id
u
),),pkg将s
u
和通过安全信道发给u;
[0138]
s3023,所述端u使用(q
u
,s
u
)来生成和验证基于身份的短签名,使用来和其他端协商基于身份的可认证会话密钥。
[0139]
优选地,s303,生成所述病历存储端与所述病历访问控制端的可认证身份对称密钥包括:
[0140]
s3031,每个端的身份标识符是公开信息;所述病历访问控制端c使用所述病历存储端a的身份标识符id
a
计算选择随机数并计算t
c
=cp,将t
c
传送给所述病历存储端a;
[0141]
s3032,所述病历存储端a收到来自所述病历访问控制端c的t
c
后,使用所述病历访问控制端c的身份标识符id
c
计算选择随机数并计算t
a
=ap,将t
a
传送给所述病历访问控制端c,病历存储端a计算出与病历访问控制端c本次会话的可认证对称密钥sk
ac
=h(id
c
||id
a
||at
c
||k
ac
||t
c
||t
a
),并将病历加密发送给病历访问控制端;
[0142]
s3033,所述病历访问控制端c收到来自所述病历存储端a的t
a
后计算出与病历储端a本次会话的可认证对称密钥sk
ca
=h(id
c
||id
a
||ct
a
||k
ca
||t
c
||t
a
),并用sk
ca
解密出病历。
[0143]
优选地,s304,生成所述病历的哈希值并使用分等级工作量证明共识将所述病历哈希值上传医疗区块链包括:
[0144]
s3041,所述病历存储端a拥有病历访问控制端c的原始病历mr
raw
,计算所述原始病历哈希值digest
mr
=h(mr
raw
),生成含有该病历哈希值的非紧急交易:
[0145]
tx={id
a
,id
c
,digest
mr
,λ0,ts1,σ
a
},
[0146]
其中λ0是非紧急交易标识符,
[0147]
ts1是生成该交易时的时间戳,
[0148]
是所述病历存储端a对该交易的签名。
[0149]
s3042,所述病历存储端a根据交易的类型调整挖矿难度值,非紧急交易的难度值为λ0=0,目标难度值为target=curdifficult
×
(1 λ0),其中target是目标难度值,curdifficult是实际挖矿难度值。
[0150]
s3043,所述病历存储端a执行分等级工作量证明共识机制将非紧急交易tx上传到医疗区块链作为存证。
[0151]
优选地,s305,生成包含病历关键词和病历在区块链中存储地址符的健康记录包括:
[0152]
s3051,所述病历访问控制端c根据病历的内容提取关键词集合{keywords},生成健康记录:
[0153]
hr={id
blk
,h(tx),{keywords},ts2,σ
c
},
[0154]
其中id
blk
是包含所述病历哈希值的交易在医疗区块链的区块编号,
[0155]
h(tx)是交易在区块中的搜索标识符,
[0156]
ts2是生成该健康记录的当前时间,
[0157]
σ
c
=sign
c
(h(id
blk
,h(tx),{keywords},ts2))是所述病历访问控制端对所述健康记录的签名。
[0158]
s3052,所述病历访问控制端c使用自己指纹信息h(f)对所述健康记录进行加密得到健康记录的密文hr'=h(f)

hr,并调用智能合约将hr'存储到区块链中以及所述病历访问控制端c的医疗区块链账户中;
[0159]
s3053,所述病历访问控制端通常是智能手机等资源有限的移动设备,在生成医疗记录后,所述病历访问控制端可以删除原始病历数据节约存储空间以及减少能耗。
[0160]
优选地,s306,所述病历请求端在病人清醒时根据所述病历访问控制端的授权向病历存储端发送非紧急病历请求包括:
[0161]
s3061,所述病历访问控制端c根据所述病历请求端b和病历存储端a的身份标识符生成q
a
=h0(id
a
)和q
b
=h0(id
b
),并计算和cp作为授权因子传送给病历请求端b;
[0162]
s3062,所述病历请求端b收到授权因子后选择随机数并计算t
b
∈bp,g
b
=g
b
,r
b
=b(p
pub
q
b
p),将对病历的请求request放入m=(t
b
||requst)并计算h=h2(m||r
b
),将(α
cb
,σ,r
b
,n)作为非紧急病历请求发给所述病历存储端。
[0163]
优选地,s307,所述病历请求端在病人昏迷时使用智能合约搜索与病人指纹匹配的健康记录,上传紧急病历请求到医疗区块链并向病历存储端发送紧急病历请求包括:
[0164]
s3071,所述病历请求端b提取病人指纹信息f,并计算h(f),调用智能合约搜索与h(f)匹配的健康记录hr;
[0165]
s3072,所述智能合约将搜索到的健康记录hr反馈给所述病历请求端b,所述病历请求端b根据hr中的关键词集合{keywords}判断是否要请求该病历原始数据;
[0166]
s3073,所述病历请求端b使用生成包含病历请求request的紧急交易:
[0167]
tx'={id
b
,id
a
,request,λ1,ts3,σ
b
},
[0168]
其中λ1是紧急交易标识符,
[0169]
ts3是生成该交易时的时间戳,
[0170]
σ
b
=sign
b
(h(id
b
,id
a
,request,λ1,ts3))是所述病历请求端b对该交易的签名。
[0171]
s3074,所述病历请求端b根据交易的类型调整挖矿难度值,非紧急交易的难度值为λ1=1,目标难度值为target=curdifficult
×
(1 λ1),其中target是目标难度值,curdifficult是实际挖矿难度值;
[0172]
s3075,所述病历请求端b将对病历的请求request放入m=(t
b
||requst),将m传送给所述病历存储端a。
[0173]
优选地,s308,所述病历存储端检查非紧急病历请求验证病历请求端的授权的合法性,并生成非紧急对称密钥加密病历包括:
[0174]
s3081,所述病历存储端a根据(α
cb
,σ,r
b
,n)以及所述病历请求端b的身份标识符
id
b
计算q
b
=h0(id
b
),g
b
'=e(t
c
q
a
p q
b
p,α
cb
),h'=h2(m'||r
b
),检查e(σ,r
b
h'(p
pub
q
b
p))是否等于g,其中g=e(p,p);当等式成立时,证明所述病历请求端拥有来自所述病历访问控制端的合法授权;
[0175]
s3082,所述病历存储端a计算k
ab

c
=e(t
b
,cp)
a
,生成本次病历共享的会话密钥sk
ab
=h(id
b
||id
a
||at
b
||k
ab

c
||k
ab
||t
b
||t
a
)并对所述病历加密,将t
a
和病历密文发送给所述病历请求端b。
[0176]
优选地,s309,所述病历存储端检查紧急病历请求是否存储在医疗区块链,并生成紧急对称密钥加密病历包括:
[0177]
s3091,所述病历存储端a收到来自所述病历请求端b的m后,使用所述病历请求端b的身份标识符id
b
计算将t
a
传送给所述病历请求端b,病历存储端a计算出与病历请求端b本次会话的可认证对称密钥sk
ab
=h(id
b
||id
a
||at
b
||k
ab
||t
b
||t
a
),并将病历加密发送给病历请求端b;
[0178]
优选地,s310,所述病历请求端收到非紧急的加密病历后,根据病历访问控制端的授权生成对应的非紧急对称密钥解密病历,并与医疗区块链中的哈希值比对确定病历的完整性,完成数据共享包括:
[0179]
s3101,所述病历请求端b使用病历访问控制端c的授权因子cp以及病历存储端的身份标识符id
a
计算k
ba

c
=e(t
a
,cp)
b
,生成本次病历共享的会话密钥sk
ba
=h(id
b
||id
a
||bt
a
||k
ba

c
||k
ba
||t
b
||t
a
)并对病历密文进行解密,得到病历原始数据,完成数据共享。
[0180]
优选地,s311,所述病历请求端收到紧急的加密病历后,根据病历存储端身份信息生成对应的紧急对称密钥解密病历,并与医疗区块链中的哈希值比对确定病历的完整性,完成数据共享包括:
[0181]
s3111,所述病历访问请求端b使用所述病历存储端a的身份标识符id
a
计算收到来自所述病历存储端a的t
a
后计算出与病历储端a本次会话的可认证对称密钥sk
ba
=h(id
b
||id
a
||bt
a
||k
ba
||t
b
||t
a
),并用sk
ba
解密出病历,得到病历原始数据,完成数据共享。
[0182]
优选地,s312,所述病历存储端根据固定时间间隔将该时段新产生的医疗区块哈希值存入监管区块链,完成对医疗区块链的监管包括:
[0183]
s3121,所述病历存储端a和其他病历存储端一起构成联盟并执行实用拜占庭容错共识机制维护监管区块链;
[0184]
s3122,每隔一个固定的时间间隔将该时段新生成的医疗区块链的区块进行哈希运算得到h(blk1),h(blk2),...,h(blk
i
),并按照梅克尔树的结构组合并写入监管区块链。
[0185]
其中,实施例2包含了对于所述实施例1中基于双区块链的医疗数据管理系统的生成方法以及整个基于可认证密钥协商和区块链的病人授权病历共享方法,其生成建立过程与共享是同步执行的,也可先建立后实现共享。
[0186]
举例而言,病历访问控制端可以是一个病人c,病历存储端可以是一家医院a,病历请求端是另一家医院b。病人c先到医院a看病,医院a生成了病人c的相关病历并存储,同时
医院a和病人c协商可认证会话密钥来传输病历并将协商中用到的中间量作为下一次访问控制的授权因子。病人还需要调用智能合约生成含有病历关键词以及病历在医疗区块链上存储标识符的健康记录以便在自己昏迷时,医院可以通过智能合约搜索到自己的健康记录。当病人c到医院b看病时,医院b可能需要根据病人c的过往病历来辅助诊断。此时病人c若清醒则向医院b授权;病人c若昏迷,医院采集病人c的指纹并调用智能合约搜索匹配的健康记录从而判断哪些病历有助于本次治疗,随后向区块链以及病历存储端a分别发出紧急病历访问请求。在收到病历访问请求后,病历存储端a判断请求类别。如果是非紧急请求,则验证病历请求端的权限然后共享病历,如果是紧急请求,则查询区块链是否记录该紧急请求然后共享病历。收到加密的病历后,病历请求端生成对应的解密密钥,解出病历明文,完成病历共享。
[0187]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0188]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0189]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0190]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0191]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0192]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0193]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、
数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0194]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0195]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0196]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献