基于区块链的电子病例隐私保护方法
未命名
09-22
阅读:73
评论:0

1.本发明涉及医疗区块链技术领域,尤其涉及一种基于区块链的电子病例隐私保护方法。
背景技术:
2.近年来,信息技术的不断发展和优化带来了很多便利,但同时也带来了个人隐私面临泄露的危险。在医疗领域中,这个问题尤为突出。因为医疗机构常常需要使用患者的病历数据进行科研和诊断,这就导致医疗机构必须采集和发布部分患者的医疗数据。这个过程中患者的隐私信息很容易被泄露,医疗信息涉及到患者的健康状况、疾病信息等敏感信息,一旦泄露就会对患者的个人隐私安全造成威胁。所以,保障医疗信息的安全,保护患者的隐私安全,是医疗领域中需要解决的重要问题。仅仅依靠法律法规并不能有效保护患者的隐私信息,因此,医疗领域中的数据隐私保护技术变得尤为关键。
3.隐私保护技术是最直接保护个人医疗隐私不被泄露的方法,因此很多学者关注该领域的技术研究。已有的文献中,主要涉及了三类隐私保护技术:匿名化技术、数据加密技术和访问控制技术。匿名化技术是指将个人识别信息删除或替换成虚拟的标识,保护患者隐私信息;数据加密技术是将数据进行加密处理,只有特定的人能够解密数据,从而保护隐私信息;访问控制技术是指限制数据的访问权限,只有授权的人才能够查看和使用数据,从而保护隐私信息不被非法获取。这三类技术可以帮助医疗机构在采集和发布患者医疗数据时保护患者隐私信息的安全。
4.尽管数据匿名化处理和加密技术可以对医疗隐私信息进行某种程度的保护,但是二者都存在着各自的缺陷,在对医疗隐私信息进行保护的同时,也会使数据的正确性受到影响,进而影响到医生、研究人员等对患者电子病历的阅读,进一步对治疗和科研产生不利的影响。为此,研究人员将目光投向了基于访问控制的个人信息隐私保护技术。访问控制技术可以对用户访问数据的权限和资源进行限制,防止用户越权使用数据,从而避免了对患者隐私的侵犯。这种技术可以在保护隐私的同时保持数据的准确性,更加符合医疗数据的特点和需求。相比于数据匿名化和加密技术,基于访问控制的隐私保护技术更注重控制数据的访问权限和使用规则,可以更有效地保护医疗隐私信息的安全。
技术实现要素:
5.本发明所要解决的技术问题是如何提供一种解密效率高、计算速度快的基于区块链的电子病例隐私保护方法。
6.为解决上述技术问题,本发明所采取的技术申请是:一种基于区块链的电子病例隐私保护方法,包括如下步骤:
7.系统初始化、属性机构初始化以及数据所有者注册;
8.数据加密;
9.生成秘钥;
10.使用秘钥对加密数据进行解密,得出电子病例数据。
11.进一步的技术申请在于,所述数据加密包括如下步骤:
12.(1)制定访问策略
13.访问策略由数据所有者制定,并由医疗机构中数据管理工作的多名人员审核通过后,将访问策略上线系统;患者进行访问策略的选择后,数据所有者对电子病历信息进行加密;
14.使用线性秘密共享方案(lsss)的访问结构,患者产生的电子病历中一级信息与二级信息分别对应不同的访问控制策略,不同的数据用户拥有不同的属性,不同的属性对应访问权限也不同;
15.一个访问策略用二元组(a,ρ)表示,其中a表示一个l行n列的矩阵,ρ是一个作用于矩阵a的函数,可以将访问矩阵的行号x映射到属性ρ(x);另外,定义一个函数t:u
→uθ
,它将属性映射到管理该属性的属性机构上,其中属性j∈u,属性机构θ∈u
θ
;所以函数δ(
·
)=t(ρ(
·
))被用来将访问策略中矩阵a的行号映射到管理该行的属性机构;
16.(2)关键词加密
17.在二级信息加密之前,数据所有者需要提取信息的关键词;设数据所有者要加密的关键词有若干个,关键词集合w={w1,w2,...,wm},m为关键词w中的个数;然后随机选择元素并计算其公钥其私钥为为关键词加密后得到其密文c
kw
;
18.(3)电子病历一级信息加密
19.加密算法为encrypt(gp,apk
θ
,m1,(a1,ρ))
→
ct120.算法输入参数为:全局变量gp,属性机构公钥apk
θ
,一级明文消息m1,访问策略(a1,ρ),经过系列运算后,输出最终的一级链上密文ct1;
[0021][0022]
随机选择以下的参数:秘密s,参数y2,y3,...,yn,则利用选择的参数生成向量为对于所有的行号x都在矩阵a1的行数量范围内,计算其中表示矩阵a1的第x行;选取随机参数o
x
,q
x
∈z
p
计算:
[0023]
c0=o
x
*m1*e(g,g)s,
[0024][0025][0026][0027][0028]
最后得到密文ct1,并上传到区块链中;
[0029]
ct1=(c0,{c
1,x
,c
2,x
,c
3,x
,c
4,x
}
x∈[l]
ꢀꢀꢀꢀꢀ
(7)
[0030]
(4)电子病历二级信息加密
[0031]
加密算法为encrypt(gp,apk
θ
,k
se2
,index
mse2
,(a2,ρ))
→
ct2;
[0032]
首先数据所有者根据选用的sk={sk.encrypt(
·
),sk.decrypt(
·
)}对称加解密算法,随机选取一个对称加密密钥k
se2
,并使用密钥对二级信息的明文m2进行加密,得到二级信息密文m
se2
;将m
se2
存储到dht分布式哈希表中,获得路径的索引index
mse2
;
[0033]
接着数据所有者利用全局公共参数gp,属性机构公钥apk
θ
,对称加密密钥k
se2
,路径的索引index
mse2
以及对应于该条数据的访问策略,输出最终的二级链上密文ct1;
[0034]
随机选择以下的参数:秘密o,参数r2,r3,...,rn,t2,t3,...,tn,则利用选择的参数生成向量为生成向量为生成向量为对于所有的行号x都在矩阵a2的行数量范围内,计算其中表示矩阵a2的第x行;随机选取p
x
,r
x
∈z
p
计算:
[0035]
e0=r
x
*k
se
*e(g,g)s,
[0036][0037][0038][0039][0040]
最后得到二级链上密文ct2并上传到区块链中。同时将病历编号、时间戳、签名、加密信息等上传到交易记录中:
[0041]
ct2=((a2,ρ),e0,{e
1,x
,e
2,x
,e
3,x
,e
4,x
}
x∈[l]
,index
mse2
)
ꢀꢀ
(8)。
[0042]
进一步的技术申请在于,所述秘钥生成包括如下步骤:
[0043]
(1)属性验证
[0044]
当数据用户需要访问电子病历信息时,首先执行合约requestkey,属性机构向用户申请其私钥;在这个过程中,requestkey中的函数check-attribute()检查数据用户的u
uid
,判断是否符合访问策略(a,ρ);在数据用户的属性集合满足访问策略的前提下,属性机构会调用accesskey中的send-key()函数,将私钥发送给数据用户;
[0045]
(2)数据用户密钥生成
[0046]
数据用户向属性机构提出注册申请,属性机构为合法的数据用户生成公钥与私钥;设数据用户身份标识uid,属性机构为数据用户生成的属性集合为u
uid
;该算法输入全局公共参数gp、数据用户身份标识uid和属性集合u
uid
;属性机构θ随机选择参数i,计算d=gα*g
βi
,d1=gi,d2=g
α
;
[0047]
在属性集合u
uid
中任选一个元素y,计算dy=h1(y)
uid
,得出数据用户公钥与私钥为:
[0048][0049]
usk
uid
=(d,d1,d2,dy)
ꢀꢀꢀꢀ
(10)
[0050]
本次运算产生一条数据用户的公私钥对生成记录,记录包括属性机构θ,数据用户身份标识uid,密钥版本编号v
id
及其生成时间;
[0051]
其中,为了保护数据用户的属性隐私,私钥组件编号v
id
是用于唯一标识数据用户的一种标识符,与数据用户的某个属性相关联;
[0052]
(3)代理密钥生成
[0053]
代理密钥的生成由属性机构执行,利用输入的全局公共参数gp、数据用户身份标识uid、数据用户属性集合u
uid
、相关属性机构的私钥ask
θ
和数据用户的公钥upk
uid
作为输入进行计算;
[0054]
对于数据用户的任意属性j∈u
uid
,且t(j)=θ,即属性j映射到属性机构θ中,然后属性机构随机选择元素计算:
[0055][0056]
psk
uid,j
″
=g
t(j)
ꢀꢀꢀꢀ
(12)
[0057]
输出该数据用户uid的代理密钥
[0058]
属性机构为数据用户生成代理密钥后,将该密钥经安全信道发送给区块链代理节点,同时生成一条代理密钥产生记录并上传到交易区块中,详细记录数据用户编号uid,属性机构编号θ,代理密钥编号v
id
,生成时间等;代理密钥节点将《uid,psk
uid,j
》存储到代理密钥列表proxykeylist中。
[0059]
进一步的技术申请在于,使用秘钥对加密数据进行解密的方法包括如下步骤:
[0060]
(1)代理解密
[0061]
代理解密算法由代理节点提供解密服务;数据用户想解密电子病历信息时,首先通过属性机构进行属性验证,当数据用户的属性集合u
uid
满足制定的访问策略(a,ρ)后,属性机构将为数据用户生成的代理密钥发送给代理节点,数据用户则将密文发给代理节点,其解密后得到部分解密密文,并将该密文发送给数据用户;代理节点的解密步骤如下:输入全局参数gp、密文ct、数据用户公钥upk
uid
、代理解密密钥psk
uid,j
,同时令接着计算接着计算计算部分解密密文:
[0062][0063][0064]
最后将部分解密的密文ct
′
=(c0,c
1,uid
,c
2,uid
,index
mse1
)发送给对应的数据用户uid;
[0065]
(2)全部解密
[0066]
区块链代理节点进行部分解密后,数据用户将解密部分密文得到明文;
[0067]
数据用户得到部分密文ct
′
后,首先计算得到e(g,g)s后,接着计算对称密钥接着数据用户得到路径的索引index
mse2
,查找到数据文件,解密ct
′
得到明文m=se.dec(ct,k
se
);在解密过程中产生的记
录上传到区块链中,用来后期的追溯;
[0068]
(3)数据用户撤销
[0069]
数据用户撤销算法由属性机构与智能合约执行,执行两种情况的属性撤销;一种是时间自动触发,一种是恶意访问被动触发;区块链代理节点进行部分解密成功后,将触发vtime合约,调用count()函数对访问时间进行计时,到达系统设定时间后,执行数据用户撤销命令;若数据用户有恶意访问现象,被系统检测到后执行被动触发,属性机构将给区块链代理节点发送包撤销请求,该请求将发送含参数uid的智能合约,代理节点则更新代理解密密钥列表,删除uid的代理密钥。
[0070]
采用上述技术申请所产生的有益效果在于:所述方法引入区块链技术,利用区块链的优势,实现病历明文信息防篡改、属性机构授权过程透明及可追溯。将解密密钥分为两步生成,降低数据用户解密开销压力;利用密钥多步生成过程,实现对数据用户访问权限的撤销。通过模拟试验和性能分析,将该申请与已有的其它申请作比较,从计算量和存储量两个角度进行对比分析,验证该申请的优越性。
附图说明
[0071]
下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0072]
图1是本发明实施例所述方法的流程图;
[0073]
图2是本发明实施例中联盟区块链的结构图;
[0074]
图3是本发明实施例中数据用户数量固定时加密开销比;
[0075]
图4是本发明实施例中访问策略属性数量固定时加密开销比;
[0076]
图5是本发明实施例中各申请总计算开销比;
[0077]
图6是本发明实施例中各申请总存储开销比。
具体实施方式
[0078]
下面结合本发明实施例中的附图,对本发明实施例中的技术申请进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0079]
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
[0080]
总体的,如图1所示,本发明实施例公开了一种基于区块链的电子病例隐私保护方法,包括如下步骤:
[0081]
系统初始化、属性机构初始化以及数据所有者注册;
[0082]
数据加密;
[0083]
生成秘钥;
[0084]
使用秘钥对加密数据进行解密,得出电子病例数据。
[0085]
所述方法将电子病历分为一级信息与二级信息;针对电子病历中篡改、医患问题,利用区块链技术透明性、不可篡改的特性解决;结合属性集合,由数据所有者制定访问策
略,实现细粒度访问控制;为每条访问策略设置一个有效时间段和用户访问的空间,同时及时撤销过时用户的权限,实现电子病历信息的安全访问。
[0086]
符号说明
[0087]
在表1中,给出了在本技术中使用的符号与解释。
[0088]
表1申请中的符号与含义
[0089][0090][0091]
申请构造
[0092]
定义一个映射函数t:u
→uθ
,其中u代表申请的属性集合,其中u={i1,i2,...,in},u
θ
代表属性机构管理的属性集合,且属性机构的身份标识为θ。另外设对称加解密算法sk={sk.encrypt(
·
),sk.decrypt(
·
)},分别对应加密运算与解密运算。
[0093]
初始化阶段
[0094]
(1)系统初始化globalsetup(λ)
→
{gp}
[0095]
确定参数λ,系统首先输出全局公共参数gp={p,g,g,h1,h2,f,u,u
θ
}。其中g和gf是素数阶p的两个乘法循环群,随机生成元g对应的双线性群为g,且双线性映射e:g*g
→
gf。再选择三个哈希函数和f:u
→
g。ca随机选择元素α,并计算系统公钥pk与主密钥mk:
[0096]
pk={gp,g
α
,g
β
,e(g,g)
β
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0097]
mk={α,β,g
β
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0098]
(2)属性机构初始化authoritysetup(gp,θ)
→
{apk
θ
,ask
θ
}
[0099]
模型实体中的属性机构执行此算法。输入参数为全局公共参数gp和身份标识为θ的属性机构。该算法的输出为属性机构的公钥apk
θ
和私钥ask
θ
。属性机构选取两个随机参数并计算其对应的公钥和私钥
[0100]
[0101]
ask
θ
={α
θ
,β
θ
}
ꢀꢀꢀꢀꢀꢀꢀ
(4)
[0102]
采用多个属性机构进行访问策略的验证工作,可以解决属性机构集中的问题,属性机构的初始化操作由各个属性机构独立执行。每个属性机构可以管理一种或多种属性,不同的属性机构可以管理相同的属性,这样可以避免属性机构发生故障,造成属性验证缺失的问题。
[0103]
(3)数据所有者注册
[0104]
数据所有者向ca注册,随机选择元素计算出公钥为与私钥:
[0105]
opk={g
γ
},osk={γ}
ꢀꢀꢀꢀ
(5)
[0106]
加密阶段
[0107]
(1)制定访问策略
[0108]
访问策略由数据所有者制定,并由医疗机构中数据管理工作的多名人员审核通过后,将访问策略上线系统。患者进行访问策略的选择后,数据所有者对电子病历信息进行加密。
[0109]
本技术使用线性秘密共享方案(lsss)的访问结构,患者产生的电子病历中一级信息与二级信息分别对应不同的访问控制策略,不同的数据用户拥有不同的属性,不同的属性对应访问权限也不同。
[0110]
本技术中一个访问策略可以用二元组(a,ρ)表示,其中a表示一个l行n列的矩阵,ρ是一个作用于矩阵a的函数,可以将访问矩阵的行号x映射到属性ρ(x)。另外,定义一个函数t:u
→uθ
,它将属性映射到管理该属性的属性机构上,其中属性j∈u,属性机构θ∈u
θ
。所以函数δ(
·
)=t(ρ(
·
))可以被用来将访问策略中矩阵a的行号映射到管理该行的属性机构。
[0111]
(2)关键词加密
[0112]
在二级信息加密之前,数据所有者需要提取信息的关键词。假设数据所有者要加密的关键词有若干个,关键词集合w={w1,w2,...,wm},m为关键词w中的个数。然后随机选择元素并计算其公钥其私钥为为关键词加密后得到其密文c
kw
。
[0113]
(3)电子病历一级信息加密
[0114]
加密算法为encrypt(gp,apk
θ
,m1,(a1,ρ))
→
ct1[0115]
算法输入参数为:全局变量gp,属性机构公钥apk
θ
,一级明文消息m1,访问策略(a1,ρ),经过系列运算后,输出最终的一级链上密文ct1。
[0116][0117]
随机选择以下的参数:秘密s,参数y2,y3,...,yn,则利用选择的参数生成向量为对于所有的行号x都在矩阵a1的行数量范围内,计算其中表示矩阵a1的第x行。选取随机参数o
x
,q
x
∈z
p
计算
[0118]
c0=o
x
*m1*e(g,g)s,
[0119][0120][0121][0122][0123]
最后得到密文ct1,并上传到区块链中。
[0124]
ct1=(c0,{c
1,x
,c
2,x
,c
3,x
,c
4,x
}
x∈[l]
)
ꢀꢀꢀꢀ
(7)
[0125]
(4)电子病历二级信息加密
[0126]
加密算法为encrypt(gp,apk
θ
,k
se2
,index
mse2
,(a2,ρ))
→
ct2[0127]
首先数据所有者根据前述选用的sk={sk.encrypt(
·
),sk.decrypt(
·
)}对称加解密算法,随机选取一个对称加密密钥k
se2
,并使用密钥对二级信息的明文m2进行加密,得到二级信息密文m
se2
。将m
se2
存储到dht分布式哈希表中,获得路径的索引index
mse2
。
[0128]
接着数据所有者利用全局公共参数gp,属性机构公钥apk
θ
,对称加密密钥k
se2
,路径的索引index
mse2
以及对应于该条数据的访问策略,输出最终的二级链上密文ct1。
[0129]
随机选择以下的参数:秘密o,参数r2,r3,...,rn,t2,t3,...,tn,则利用选择的参数生成向量为生成向量为对于所有的行号x都在矩阵a2的行数量范围内,计算其中表示矩阵a2的第x行。随机选取p
x
,r
x
∈z
p
计算:
[0130]
e0=r
x
*k
se
*e(g,g)s,
[0131][0132][0133][0134][0135]
最后得到二级链上密文ct2并上传到区块链中。同时将病历编号、时间戳、签名、加密信息等上传到交易记录中。
[0136]
ct2=((a2,ρ),e0,{e
1,x
,e
2,x
,e
3,x
,e
4,x
}
x∈[l]
,index
mse2
ꢀꢀ
(8)
[0137]
密钥生成阶段
[0138]
(1)属性验证
[0139]
数据用户属性集合验证的实现是利用了智能合约技术,包括合约requestkey和合约accesskey。当数据用户需要访问电子病历信息时,首先执行合约requestkey,属性机构向用户申请其私钥。在这个过程中,requestkey中的函数check-attribute()检查数据用户的u
uid
,判断是否符合访问策略(a,ρ)。在数据用户的属性集合满足访问策略的前提下,属性机构会调用accesskey中的send-key()函数,将私钥发送给数据用户。
[0140]
(2)数据用户密钥生成
[0141]
userkeygen(gp,uid,u
uid
)
→
{upk
uid
,usk
uid
}
[0142]
数据用户向属性机构提出注册申请,属性机构为合法的数据用户生成公钥与私
钥。设数据用户身份标识uid,属性机构为数据用户生成的属性集合为u
uid
。该算法输入全局公共参数gp、数据用户身份标识uid和属性集合u
uid
。属性机构θ随机选择参数i,计算d=g
α
*g
βi
,d1=gi,d2=g
α
[0143]
在属性集合u
uid
中任选一个元素y,计算dy=h1(y)
uid
,得出数据用户公钥与私钥为:
[0144][0145]
usk
uid
=(d,d1,d2,dy)
ꢀꢀꢀꢀ
(10)
[0146]
本次运算产生一条数据用户的公私钥对生成记录,记录包括了属性机构θ,数据用户身份标识uid,密钥版本编号v
id
及其生成时间。
[0147]
其中,为了保护数据用户的属性隐私,私钥组件编号v
id
是用于唯一标识数据用户的一种标识符,与数据用户的某个属性相关联。用来表示某个属性机构为某数据用户生成了某些权限的私钥,方便后期溯源责任。
[0148]
(3)代理密钥生成proxykeygen(gp,uid,u
uid
,ask
θ
,upk
uid
)
→
psk
uid,j
[0149]
代理密钥的生成由属性机构执行,利用输入的全局公共参数gp、数据用户身份标识uid、数据用户属性集合u
uid
、相关属性机构的私钥ask
θ
和数据用户的公钥upk
uid
作为输入进行计算。
[0150]
对于数据用户的任意属性j∈u
uid
,且t(j)=θ,即属性j映射到属性机构θ中,然后属性机构随机选择元素计算
[0151][0152]
psk
uid,j
″
=g
t(j)
ꢀꢀꢀꢀ
(12)
[0153]
输出该数据用户uid的代理密钥
[0154]
属性机构为数据用户生成代理密钥后,将该密钥经安全信道发送给区块链代理节点,同时生成一条代理密钥产生记录并上传到交易区块中,详细记录数据用户编号uid,属性机构编号θ,代理密钥编号v
id
,生成时间等。代理密钥节点将《uid,psk
uid,j
》存储到代理密钥列表proxykeylist中。
[0155]
解密阶段
[0156]
(1)代理解密partdecrypt(gp,ct,upk
uid
,psk
uid,j
)
→
ct
′
[0157]
代理解密算法由代理节点提供解密服务。数据用户想解密电子病历信息时,首先通过属性机构进行属性验证,当数据用户的属性集合u
uid
满足制定的访问策略(a,ρ)后,属性机构将为数据用户生成的代理密钥发送给代理节点,数据用户则将密文发给代理节点,其解密后得到部分解密密文,并将该密文发送给数据用户。代理节点的解密步骤如下:输入全局参数gp、密文ct、数据用户公钥upk
uid
、代理解密密钥psk
uid,j
,同时令接着计算接着计算计算部分解密密文:
[0158]
[0159][0160]
最后将部分解密的密文ct
′
=(c0,c
1,uid
,c
2,uid
,index
mse1
)发送给对应的数据用户uid。
[0161]
(2)全部解密wholedecrypt(ct
′
,usk
uid
)
→m[0162]
区块链代理节点进行部分解密后,数据用户将解密部分密文得到明文。
[0163]
数据用户得到部分密文ct
′
后,首先计算得到e(g,g)s后,接着计算对称密钥接着数据用户得到路径的索引index
mse2
,查找到数据文件,解密ct
′
得到明文m=se.dec(ct,k
se
)。在解密过程中产生的记录上传到区块链中,用来后期的追溯。
[0164]
(3)数据用户撤销cancel(uid)
→
proxykeylist
[0165]
数据用户撤销算法由属性机构与智能合约执行,执行两种情况的属性撤销。一种是时间自动触发,一种是恶意访问被动触发。区块链代理节点进行部分解密成功后,将触发vtime合约,调用count()函数对访问时间进行计时,到达系统设定时间后,执行数据用户撤销命令。若数据用户有恶意访问现象,被系统检测到后执行被动触发,属性机构将给区块链代理节点发送包撤销请求,该请求将发送含参数uid的智能合约,代理节点则更新代理解密密钥列表,删除uid的代理密钥。
[0166]
安全分析
[0167]
安全模型
[0168]
设计一个安全游戏模型,该模型分为两个角色:敌手和挑战者。敌手代表现实世界中的攻击者和破坏者,而挑战者代表医疗系统的官方人员和保护者。在游戏中,敌手会向挑战者提出合法的注册、查询等请求,并利用挑战者给出的答复来完成挑战。挑战者会先执行一系列初始化算法并执行加解密操作,然后回应敌手的合法查询。最终,敌手将向挑战者发起必须接受的挑战。如果敌手完成了挑战,则赢得安全游戏,这意味着该方案不安全;如果敌手挑战失败,则方案是安全的。
[0169]
为了验证该模型的安全性,需要模拟现实世界中的攻击者和保护者之间的互动,以确定该方法是否能够有效地保护隐私。在这个游戏中,挑战者扮演着关键的角色,因为他需要能够有效地响应敌手的合法请求,同时保护病历数据的隐私。该模型的目的是确定是否存在一种攻击策略,能够绕过挑战者的保护措施,并获得病历数据的未经授权访问。如果存在这样的攻击策略,那么该模型就不是安全的,需要进行改进和优化。
[0170]
本安全游戏适用于基于区块链的电子病历隐私保护方法的验证,主要针对非腐败用户的合谋攻击,敌手可以针对合法数据用户的密钥进行重复询问,对其他合法数据用户的中间解密密文也可以询问。所以,敌手在获取到代理解密密钥后,也可以尝试询问中间解密密文信息。在本安全游戏中,有一部分属性机构是可以与敌手合谋的,所以被合谋的属性机构的公钥是可以被敌手自己生成的。
[0171]
适用于本技术所述保护方法的安全模型描述如下:
[0172]
系统初始化阶段:在系统初始化阶段挑战者执行globalsetup(λ)
→
{gp}函数,并将产生的公共参数gp公开。
[0173]
阶段1:敌手选择部分属性机构作为合谋的对象,然后利用合谋的属性机构独自生成属性机构的公钥。接着进行如下询问:
[0174]
(1)敌手会选择一些没有与其合谋的属性机构接着向挑战者询问属性机构n
θ
的公钥。
[0175]
(2)敌手随机询问部分合法的数据用户uid,然后向挑战者询问其公钥和私钥。
[0176]
(3)敌手向挑战者询问身份标识为uid、属性集合为u
uid
的数据用户的代理解密密钥psk
uid,j
,且也就是敌手询问的所有属性都是由未合某的属性机构管理的属性。敌手询问的范围并不限于上文中数据用户的代理解密密钥,也可以询问其他合法用户的密钥。挑战者调用proxykeygen(gp,uid,u
uid
,ask
θ
,upk
uid
)
→
psk
uid,j
,生成代理解密密钥psk
uid,j
。挑战:敌手随机选取两段长度相等的明文信息m0、m1和一个访问策略(a,ρ)并发送给挑战者,挑战者随机选取一段b∈{0,1},然后生成明文消息mb,接着调用算法encrypt(gp,apk
θ
,mb,(a,ρ))
→
ct。这一过程需满足ct。这一过程需满足其中表示合谋的属性机构控制的属性集合,ui表示被敌手询问过私钥的数据用户的属性集合。随后,挑战者做出如下应答:
[0177]
(1)敌手向挑战者询问属性机构公钥apk
θ
,其中θ∈n
θ
。
[0178]
(2)敌手向挑战者询问数据用户的公钥upk
uid
及私钥usk
uid
。
[0179]
(3)敌手向挑战者询问代理解密密钥psk
uid,j
。
[0180]
猜测:敌手猜测与挑战者对应输出的消息b,并输出猜测消息b
′
,假如敌手猜测的消息b
′
与挑战者输出的b相同,那么敌手赢得游戏。
[0181]
定义敌手获胜的优势为:数据安全性分析
[0182]
区块链中存储的数据不会被轻易改变,具有防篡改性、可信任性。在有关电子病历的信息上链时,利用设置的访问策略、对称加密密钥以及数据索引信息,与hash值一起存储到通道内的数据链,只有被授权的用户才能访问电子病历数据,保证了数据的机密性。
[0183]
hyperledgerfabirc的核心组件中包含channel即通道,作用是将一个大的网络分割成多个子网络。联盟区块链的结构如图2,每个医疗机构的节点形成一个子网络,每个子网络都包含属于本网络的账本,子网内的用户属性集合满足访问结构可成功访问账本中的数据。不同医疗机构间账本的访问将需要联盟链中医疗机构特定的节点才能访问。
[0184]
当数据用户访问电子病历数据时,首先会对其属性集合进行检查,确定是否满足患者选择的访问策略,只有数据用户的属性集合满足访问策略时,用户才具有访问权限。所以,具有访问二级信息的属性集合,只能看到患者的病情情况,而不具有访问一级信息的权限。因此,该模型能很好的保护患者隐私信息。
[0185]
安全性证明
[0186]
前提:本技术的数据安全性需要满足敌手无法通过加密的信息区分明文与密文。也就是说安全性建立在不可区分性的cpa安全上(ind-cpa)。
[0187]
定理1:给定一个多项式时间t和不可忽略的优势ε,如果敌手能在时间t内凭借优
scheme based on attribute cryptosystem and blockchain technology[j].ieee access,2020,8:45468-45476)、文献[23](李谢华,刘婷,周茂仁.云存储中基于多授权机构可撤销的abe访问控制方法[j].计算机应用研究,2017,34(03):897-902)、文献[31](sun j,yao x,wang s,et al.blockchain-based secure storage and access scheme for electronic medical records in ipfs[j].ieee access,2020,8:59389-59401)的性能分析,主要从功能特性、计算开销、存储开销三个方面进行对比分析。分析中涉及到的符号及其含义如表2所示。
[0199]
表2符号及其含义
[0200][0201]
功能特性
[0202]
表3各方案功能对比图
[0203][0204]
如表3所示,给出了本技术方法与文献[30]、文献[23]、文献[31]在功能方面的一些比较。根据表可知本技术与文献[23]实现了多属性机构验证管理,避免了单点故障的发生而影响电子病历的使用。属性撤销的实现使得数据的安全性进一步提高,对于一些注册成功、但是存在恶意访问的用户,利用密钥列表的更新达到撤销其访问权限的目标。本技术与文献[30]都可以实现多级密钥产生、验证等,本技术将对称加密的密文存储到分布式哈希表中,二次加密对称加密密钥再上链,降低了区块链的存储压力。本技术与文献[31]都采使用了区块链系统与属性加密相技术结合的思路,实现属性授权过程可追溯、好溯源的方法优势。本技术将电子病历信息分级处理,将有关个人情况的信息定为一级,采用更高的访问策略,如需访问则对应数据用户更高的权限,降低了非必要的访问,提高数据安全性;将主治医生诊断结果、检查结果等归为二级信息,对应较低的访问策略,即可以方便医生、学者等研究使用,又可以患者复检、治疗等使用。
[0205]
计算开销
[0206]
在计算开销方面,主要将本技术与文献[30]、文献[23]、文献[31]进行对比分析。如表4所示。
[0207]
表4各个方案计算开销对比
[0208][0209]
为了更直观的比较以上文献方法与本技术方法在各个阶段的计算开销,本技术对算法进行了仿真实验。所使用的环境为:常用的密码学框架charm,区块链网络hyperledger fabric,核心处理器为amd ryzen 75800h,操作系统为ubuntu 16.04,其中操作系统运行在虚拟机vmware-workstation中,内存大小为4g,硬盘为64g。
[0210]
图3描述了在用户数量固定且为100的前提下,访问策略中属性个数与加密时间变化的过程。其中横纵坐标分别表示访问策略中属性的数量与加密时间,单位毫秒。总体来看,各个方案中随着访问策略中属性的数量增加,加密时间也逐渐增加。由于文献[23]加密过程中不仅与访问策略中包含的属性个数相关,还与系统中属性机构数量相关,而本技术加密时只与访问策略中包含属性个数相关,所以该文献增长速度快。根据图可体现出,在用户数量一定时,本技术加密所需要的时间较少,具有时间优势。
[0211]
图4描述了在访问策略中属性的数量固定且为30的前提下,数据用户个数与加密时间变化的过程。其中横纵坐标分别表示数据用户的数量与加密时间,单位毫秒。四个方案中加密时间都随着用户数量的增加而增加,在用户数量少的情况下,各方案的加密时间相差无几;随着用户数量的达到200时,各方案的加密时间逐渐增大。其中文献[31]需要为数据用户生成检索密钥,所以随着用户数量的增加,计算时间增长最快。而本技术检索时直接明文形式检索电子病历编号,无需产生密钥。因此本技术在属性数量恒定时加密最优。
[0212]
如图5所示,图片展示了各个方案中属性总个数与总消耗时间的变化关系。文献[31]中不但需要产生用户的访问密钥与公钥,且为用户生成检索时也重新生成检索公私钥对,所以随着属性个数的增加,消耗时间增长最快。文献[30]的方案中加密算法输入明文与访问策略等信息进行加密,明文数据量多的情况下,其消耗的时间要比本技术方法的时间长。文献[23]增长速率与本技术增长速率相比较快,因为其需要多个属性机构同时参与运算,访问控制安全性的增加将以计算量为代价。总体来说,本技术方案在总计算开销方面还是比较优秀的。
[0213]
存储开销
[0214]
本技术将与文献[30]、文献[23]、文献[31]进行在存储开销方面的比较。如表5所
示为方便描述,下面将描述一些符号。
[0215]
|ct
leng
|表示对称加密后密文的长度,|a
num
|表示参与加密过程中属性机构的数量,|u
num
|用户拥有的属性数量,|n
num
|表示访问策略中属性的数量。|lg|表示循环群g的长度,表示循环群gf的长度,|z
p
|表示整数群z
p
的长度。
[0216]
表5各方案存储开销对比
[0217][0218]
由表可知,在系统公钥存储开销方面,本技术与文献[30]在参与加密过程的属性机构的数量线性相关;在系统私钥存储方面,文献[30]文献[31]分别与属性机构数量、数据用户的属性数量线性相关,本技术只与循环群g的长度有关;在密文存储方面,由于本技术采用一级信息与访问策略等加密、二级信息明文被对称加密的过程,所以其存储开销与加密后密文长度有关。
[0219]
如图6所示,折线图清晰地展示了上述方案的开销,表示了总存储开销与属性个数变化情况,所有方案中存储开销都随属性个数的增加而增长,其中文献[31]将电子病历密文存储到云端,只将哈希、摘要等信息存储到区块链中,在网络情况良好的条件下,与本技术相比其存储开销接近。文献[23]同样将病历数据存储到云端,其访问结构采用树的形式,属性个数偏少时,存储开销较低,随着属性和规则数量的增加,其存储开销将迅速增长。文献[30]利用去中心化的星际文件系统(ipfs)存储医疗信息的主要数据,与本技术采用的dht存储开销接近。综上,本技术在存储开销方面还是最优的。
技术特征:
1.一种基于区块链的电子病例隐私保护方法,其特征在于包括如下步骤:系统初始化、属性机构初始化以及数据所有者注册;数据加密;生成秘钥;使用秘钥对加密数据进行解密,得出电子病例数据。2.如权利要求1所述的基于区块链的电子病例隐私保护方法,其特征在于:定义一个映射函数t:u
→
u
θ
,其中u代表申请的属性集合,其中u={i1,i2,...,i
n
},u
θ
代表属性机构管理的属性集合,且属性机构的身份标识为θ;另外设对称加解密算法sk={sk.encrypt(
·
),sk.decrypt(
·
)},分别对应加密运算与解密运算;初始化阶段(1)系统初始化确定参数λ,系统首先输出全局公共参数gp={p,g,g,h1,h2,f,u,u
θ
};其中g和g
f
是素数阶p的两个乘法循环群,随机生成元g对应的双线性群为g,且双线性映射e:g*g
→
g
f
;再选择三个哈希函数h1:{0,1}
*
→
g、h2:和f:u
→
g;ca随机选择元素α,并计算系统公钥pk与主密钥mk:pk={gp,g
α
,g
β
,e(g,g)
β
}
ꢀꢀꢀꢀ
(1)mk={α,β,g
β
}
ꢀꢀꢀꢀꢀꢀꢀ
(2)(2)属性机构初始化模型实体中的属性机构执行此算法;输入参数为全局公共参数gp和身份标识为θ的属性机构;该算法的输出为属性机构的公钥apk
θ
和私钥ask
θ
;属性机构选取两个随机参数α
θ
,并计算其对应属性机构的公钥和私钥:ask
θ
={α
θ
,β
θ
}
ꢀꢀꢀꢀ
(4)(3)数据所有者注册数据所有者向ca注册,随机选择元素计算出数据所有者的公钥为与私钥:opk={g
γ
},osk={γ}
ꢀꢀꢀꢀ
(5)。3.如权利要求2所述的基于区块链的电子病例隐私保护方法,其特征在于,所述数据加密包括如下步骤:(1)制定访问策略访问策略由数据所有者制定,并由医疗机构中数据管理工作的多名人员审核通过后,将访问策略上线系统;患者进行访问策略的选择后,数据所有者对电子病历信息进行加密;使用线性秘密共享方案(lsss)的访问结构,患者产生的电子病历中一级信息与二级信息分别对应不同的访问控制策略,不同的数据用户拥有不同的属性,不同的属性对应访问权限也不同;一个访问策略用二元组(a,ρ)表示,其中a表示一个l行n列的矩阵,ρ是一个作用于矩阵a的函数,用于将访问矩阵的行号x映射到属性ρ(x);另外,定义一个函数t:u
→
u
θ
,用于将属性映射到管理该属性的属性机构上,其中属性j∈u,属性机构θ∈u
θ
;所以函数δ(
·
)=t(ρ
(
·
))被用来将访问策略中矩阵a的行号映射到管理该行的属性机构;(2)关键词加密在二级信息加密之前,数据所有者需要提取信息的关键词;设数据所有者要加密的关键词有若干个,关键词集合w={w1,w2,...,w
m
},m为关键词w中的个数;然后随机选择元素并计算其公钥其私钥为为关键词加密后得到其密文c
kw
;(3)电子病历一级信息加密加密算法为encrypt(gp,apk
θ
,m1,(a1,ρ))
→
ct1算法输入参数为:全局变量gp,属性机构公钥apk
θ
,一级明文消息m1,访问策略(a1,ρ),经过系列运算后,输出最终的一级链上密文ct1;随机选择以下的参数:秘密s,参数y2,y3,...,y
n
,则利用选择的参数生成向量为对于所有的行号x都在矩阵a1的行数量范围内,计算其中表示矩阵a1的第x行;选取随机参数o
x
,q
x
∈z
p
计算:c0=o
x
*m1*e(g,g)
s
,,,,最后得到密文ct1,并上传到区块链中;ct1=(c0,{c
1,x
,c
2,x
,c
3,x
,c
4,x
}
x∈[l]
)
ꢀꢀꢀꢀꢀꢀ
(7(4)电子病历二级信息加密加密算法为encrypt(gp,apk
θ
,k
se2
,index
mse2
,(a2,ρ))
→
ct2;首先数据所有者根据选用的sk={sk.encrypt(
·
),sk.decrypt(
·
)}对称加解密算法,随机选取一个对称加密密钥k
se2
,并使用密钥对二级信息的明文m2进行加密,得到二级信息密文m
se2
;将m
se2
存储到dht分布式哈希表中,获得路径的索引index
mse2
;接着数据所有者利用全局公共参数gp,属性机构公钥apk
θ
,对称加密密钥k
se2
,路径的索引index
mse2
以及对应于该条数据的访问策略,输出最终的二级链上密文ct1;随机选择以下的参数:秘密o,参数r2,r3,...,r
n
,t2,t3,...,t
n
,则利用选择的参数生成向量为向量为对于所有的行号x都在矩阵a2的行数量范围内,计算其中表示矩阵a2的第x行;随机选取p
x
,r
x
∈z
p
计算:
e0=r
x
*k
se
*e(g,g)
s
,,,,最后得到二级链上密文ct2并上传到区块链中,同时将病历编号、时间戳、签名、加密信息等上传到交易记录中:ct2=((a2,ρ),e0,{e
1,x
,e
2,x
,e
3,x
,e
4,x
}
x∈[l]
,index
mse2
)
ꢀꢀꢀ
(8)。4.如权利要求3所述的基于区块链的电子病例隐私保护方法,其特征在于,所述秘钥生成包括如下步骤:(1)属性验证当数据用户需要访问电子病历信息时,首先执行合约requestkey,属性机构向用户申请其私钥;在这个过程中,requestkey中的函数check-attribute()检查数据用户的u
uid
,判断是否符合访问策略(a,ρ);在数据用户的属性集合满足访问策略的前提下,属性机构会调用accesskey中的send-key()函数,将私钥发送给数据用户;(2)数据用户密钥生成数据用户向属性机构提出注册申请,属性机构为合法的数据用户生成公钥与私钥;设数据用户身份标识uid,属性机构为数据用户生成的属性集合为u
uid
;该算法输入全局公共参数gp、数据用户身份标识uid和属性集合u
uid
;属性机构θ随机选择参数i,计算d=g
α
*g
βi
,d1=g
i
,d2=g
α
;在属性集合u
uia
中任选一个元素y,计算d
y
=h1(y)
uid
,得出数据用户公钥与私钥为:usk
uid
=(d,d1,d2,d
y
)
ꢀꢀꢀꢀꢀ
(10)本次运算产生一条数据用户的公私钥对生成记录,记录包括属性机构θ,数据用户身份标识uid,密钥版本编号v
id
及其生成时间;其中,为了保护数据用户的隐私性,私钥组件编号v
id
是用于唯一标识数据用户的一种标识符,与数据用户的某个属性相关联;(3)代理密钥生成代理密钥的生成由属性机构执行,利用输入的全局公共参数gp、数据用户身份标识uid、数据用户属性集合u
uid
、相关属性机构的私钥ask
θ
和数据用户的公钥upk
uid
作为输入进行计算;对于数据用户的任意属性j∈u
uid
,且t(j)=θ,即属性j映射到属性机构θ中,然后属性机构随机选择元素计算:psk
uid,j
″
=g
t(j)
ꢀꢀꢀꢀꢀꢀ
(12)
输出该数据用户uid的代理密钥属性机构为数据用户生成代理密钥后,将该密钥经安全信道发送给区块链代理节点,同时生成一条代理密钥产生记录并上传到交易区块中,详细记录数据用户编号uid,属性机构编号θ,代理密钥编号v
id
,生成时间等;代理密钥节点将<uid,psk
uid,j
>存储到代理密钥列表proxykeylist中。5.如权利要求4所述的基于区块链的电子病例隐私保护方法,其特征在于,使用秘钥对加密数据进行解密的方法包括如下步骤:(1)代理解密代理解密算法由代理节点提供解密服务;数据用户想解密电子病历信息时,首先通过属性机构进行属性验证,当数据用户的属性集合u
uid
满足制定的访问策略(a,ρ)后,属性机构将为数据用户生成的代理密钥发送给代理节点,数据用户则将密文发给代理节点,其解密后得到部分解密密文,并将该密文发送给数据用户;代理节点的解密步骤如下:输入全局参数gp、密文ct、数据用户公钥upk
uid
、代理解密密钥psk
uid,j
,同时令,同时令接着计算计算部分解密密文:分解密密文:最后将部分解密的密文ct
′
=(c0,c
1,uid
,c
2,uid
,index
mse1
)发送给对应的数据用户uid;(2)全部解密区块链代理节点进行部分解密后,数据用户将解密部分密文得到明文;数据用户得到部分密文ct
′
后,首先计算得到e(g,g)
s
后,接着计算对称密钥接着数据用户得到路径的索引index
mse2
,查找到数据文件,解密ct
′
得到明文m=se.dec(ct,k
se
);在解密过程中产生的记录上传到区块链中,用来后期的追溯;(3)数据用户撤销数据用户撤销算法由属性机构与智能合约执行,执行两种情况的属性撤销;一种是时间自动触发,一种是恶意访问被动触发;区块链代理节点进行部分解密成功后,将触发vtime合约,调用count()函数对访问时间进行计时,到达系统设定时间后,执行数据用户撤销命令;若数据用户有恶意访问现象,被系统检测到后执行被动触发,属性机构将给区块链代理节点发送包撤销请求,该请求将发送含参数uid的智能合约,代理节点则更新代理解密密钥列表,删除uid的代理密钥。
技术总结
本发明公开了一种基于区块链的电子病例隐私保护方法,涉及医疗区块链技术领域。所述方法包括如下步骤:系统初始化、属性机构初始化以及数据所有者注册;数据加密;生成秘钥;使用秘钥对加密数据进行解密,得出电子病例数据。所述方法引入区块链技术,利用区块链的优势,实现病历明文信息防篡改、属性机构授权过程透明及可追溯。将解密密钥分为两步生成,降低数据用户解密开销压力。利用密钥多步生成过程,实现对数据用户访问权限的撤销。将该申请与已有的其它方案作比较,从计算量和存储量两个角度进行对比分析,验证所述方法的优越性。验证所述方法的优越性。验证所述方法的优越性。
技术研发人员:郑丽娟 徐向东 杨云龙 赵博远 陈思敏
受保护的技术使用者:石家庄铁道大学
技术研发日:2023.05.12
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/