一种面向云辅助电子医疗系统的流行病预警方法

文档序号:33116439发布日期:2023-02-01 02:56阅读:25来源:国知局
一种面向云辅助电子医疗系统的流行病预警方法

1.本发明属于信息安全技术领域,特别是涉及一种面向云辅助电子医疗系统的流行病预警方法。


背景技术:

2.云辅助电子医疗系统将电子医疗系统中针对医疗数据的存储、计算等操作外包至云服务器端执行的电子信息系统。与传统的基于纸质记录的医疗系统相比,云辅助电子医疗系统效率更高、出错率更低、可靠性更强。近年来,在新冠疫情的大背景下,云辅助电子医疗系统的重要性愈加凸显。典型地,在云辅助电子医疗系统中,不同的医疗机构将患者的医疗数据存在同一个云服务器,这使得云服务器可以监测一个时期内流行病症状出现的频次,并实现高效的流行病预警。
3.然而,上述预警机制缺乏对患者医疗数据的隐私保护。具体来说,上述机制中对流行病症状出现频次的统计依赖于云服务器可获取患者诊疗信息,这在实际中会导致患者诊疗信息的泄漏与滥用。近年来,隐私数据泄漏事件频频发生,而医疗数据作为人们最敏感的数据之一,一旦被恶意泄漏,会造成极其恶劣的后果。
4.综上,需要设计一种面向云辅助电子医疗系统的针对加密医疗数据的流行病预警方法,在保护患者医疗信息隐私的前提下实现高效的流行病预警。


技术实现要素:

5.本发明的目的在于克服现有技术的不足,提供一种面向云辅助电子医疗系统的流行病预警方法。
6.本发明的目的是通过以下技术方案来实现的:一种面向云辅助电子医疗系统的流行病预警方法,包括:
7.根据安全参数生成系统公共参数;
8.病人和医生在云存储服务器处注册;
9.多个密钥服务器部署分布式秘密共享协议;
10.病人在医院处进行预约,医院为病人指定医生;
11.病人在与医生认证成功后就诊,医生为病人生成一个电子病历,并采用分字段加密的方式加密该电子病历,其中,对个人信息字段采用对称加密,对病症字段采用分布式门限密钥加密;
12.医生将加密后的电子病历发送给云存储服务器,云存储服务器对电子病历中的各病症进行计数,并在有病症的计数达到预警阈值时触发预警机制。
13.进一步地,根据安全参数生成系统公共参数,包括:
14.根据安全参数l生成系统公共参数pp={p,p,g,g
t
,e,h,h,ρ,l,enc(),dec(),e(),d(),sig(),ver()};其中,g代表椭圆曲线上的点构成的p阶加法循环群,p是g的生成元;e是双线性映射g
×g→gt
;h和h是两个哈希函数,h():{0,1}
*

g,h():g
→zp
,z
p
表示阶
为素数p的整数环;ρ是每个医生在单位时间段内接诊病人数量的上限;l是单位时间段内的相同病症出现次数的预警阈值;enc()和dec()是一对公钥密码算法;e()和d()是一对对称密码算法;sig()和ver()是一对签名算法。
15.进一步地,病人和医生在云存储服务器处注册,包括:
16.每个病人自行设置用于加解密的第一密钥对(epk,esk)和用于签名验签的第二密钥对(spk,ssk);
17.病人在云存储服务器处注册获得病人身份id,医生在云存储服务器处注册获得医生身份
18.进一步地,多个密钥服务器部署分布式秘密共享协议,包括:
19.每个密钥服务器选择随机数和z
p
上的多项式fi(x)=a
i,0
+a
i,1
x+

+a
i,t-1
x
t-1
,使得fi(0)=a
i,0
,其中表示整数模p的乘法循环群,密钥服务器集合为
20.每个密钥服务器向其他所有密钥服务器发送验证参数a
i,0
p、a
i,∈
p(∈=1,2,

,t-1)和对应的多项式函数值fi(j);
21.每个密钥服务器接收到其他密钥服务器发送的fj(i)后,通过等式验证fj(i)的正确性,若验证通过,则接受fj(i),否则拒绝fj(i);
22.每个密钥服务器计算子秘密其对应的子公钥qi=sip以及服务器群组共享的私钥对应的公钥服务器群组共享的私钥
23.每个密钥服务器创建一份列表,该列表用于记录单位时间段内医生已接诊的病人数该列表的初始值为0。
24.进一步地,病人在医院处进行预约,医院为病人指定医生,包括:
25.病人将病人身份id发送给医院
26.医院随机选择治疗密钥tk∈z
p
,并用病人的公钥epk对治疗密钥tk进行加密得到密文c1=enc(epk,tk),然后将密文c1发送给病人
27.病人用自己的私钥esk对收到的密文c1执行解密操作dec(esk,c1),得到治疗密钥tk;
28.医院生成预约信息并用治疗密钥tk对预约信息进行加密得到预约信息密文然后将密文c2发送给病人其中,为有效期,为辅助信息;
29.医院将治疗密钥tk发送给医生
30.进一步地,病人在与医生认证成功后就诊,医生为病人生成一个电子病历,并采用分字段加密的方式加密该电子病历,包括:
31.病人用治疗密钥tk解密预约信息密文c2获得预约信息然后生
成预约凭证并对预约凭证w进行签名得到凭证签名σw=sig(ssk,w),然后将授权密文c3=e(tk,w||σw)发送给医生
32.医生计算d(tk,c3)得到预约凭证w和凭证签名σw,然后用ver(spk,σw)验证凭证签名σw,并在验签通过后查看预约凭证w;
33.医生为病人生成电子病历m={m0,m1,

,mv,m
v+1
,

,mn},其中m0是病人的个人信息,m1,

,mv是病人的病症信息,m
v+1
,

,mn是医生开具的处方信息;
34.医生随机选择对称加密密钥k∈z
p
,将个人信息m0加密为个人信息密文c0=e(k,m0),将处方信息m
β
,β∈[v+1,n]加密为处方密文c
β
=e(k,m
β
);
[0035]
医生选择随机数对病症信息m
α
,α∈[1,v]逐条盲化,计算并将发送给所有密钥服务器
[0036]
密钥服务器检查是否成立,若成立,则用子秘密si对签名得到子签名并设置然后将子签名σ
i,α
发送给医生
[0037]
医生通过验证等式是否成立对收到的每个子签名σ
i,α
进行验证,验证通过后从中选出t个子签名计算门限签名其中t是秘密共享方案的门限值;
[0038]
对每个α∈[1,v],医生计算h(σ
α
),然后加密m
α
得到病症密文c
α
=e(h(σ
α
),m
α
),其中m
α
为电子病历m中第α个病症信息。
[0039]
进一步地,医生将加密后的电子病历发送给云存储服务器,云存储服务器对电子病历中的各病症进行计数,并在有病症的计数达到预警阈值时触发预警机制,包括:
[0040]
对所有α∈[1,v]和β∈[v+1,n],医生将外包数据data={w||σw,e(tk,k||h(σ
α
)),c=c0||c
α
||c
β
}发送给云存储服务器
[0041]
云存储服务器调用ver(spk,σw)验证凭证签名σw,验签通过后接受外包数据data;
[0042]
在一个epoch内,所有的病症计数初始值为0,云存储服务器查看data,从c中取出病症密文c
α
,并根据所述病症密文c
α
对相应的病症进行计数,当至少一个病症的计数达到预警阈值l时触发预警机制,其中,epoch为单位时间段。
[0043]
进一步地,所述方法还包括:
[0044]
病人从云存储服务器下载外包数据data={w||σw,e(tk,k||h(σ
α
)),c=c0||c
α
||c
β
},α∈[1,v],β∈[v+1,n],并用治疗密钥tk解密得到封装好的对称加密密钥k和门限密钥h(σ
α
),然后分别对个人信息密文c0、处方密文c
β
和病症密文c
α
解密,即可得到电子病历m。
[0045]
本发明的有益效果是:
[0046]
(1)本发明提出了一种对各字段分别采用不同方式加密的电子病历加密方案,可以在密文状态下统计某一病症出现的频率,可在确保病人医疗数据机密性的同时实现流行病的预警;
[0047]
(2)本发明中电子病历个人信息采用对称加密,为个人信息提供了强于病症字段信息的安全性;
[0048]
(3)本发明采用分布式门限密钥对病人的症状信息等进行加密,门限密钥由多个密钥服务器协同生成,可以抵抗暴力破解和单点攻击,可以有效保护病人的医疗数据,防止隐私信息的泄露;
[0049]
(4)现有的部分方案中,虽然电子病历以密文形式存储在云上,但需要一个完全可信的密钥生成器。本发明使用分布式协议,随机选择达到门限值数量的密钥服务器分别持有密钥分片,生成门限密钥,信任模型可降低为半可信。
[0050]
(5)本发明构建的基于云的电子医疗系统中,密钥服务器、医院等各个角色所需的计算和通信开销都具有一定优势。
附图说明
[0051]
图1为本发明中流行病预警方法的一个实施例的流程图。
具体实施方式
[0052]
下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053]
参阅图1,本发明提供一种面向云辅助电子医疗系统的流行病预警方法,包括步骤s100~步骤s600,以下详细说明。
[0054]
s100.根据安全参数生成系统公共参数。
[0055]
在一些实施例中,根据安全参数生成系统公共参数,包括:根据安全参数l生成系统公共参数pp={p,p,g,g
t
,e,h,h,ρ,l,enc(),dec(),e(),d(),sig(),ver()};其中,g代表椭圆曲线上的点构成的p阶加法循环群,p是g的生成元;e是双线性映射g
×g→gt
;h和h是两个哈希函数,h():{0,1}
*

g,h():g
→zp
,z
p
表示阶为素数p的整数环;ρ是每个医生在单位时间段内接诊病人数量的上限;l是单位时间段内的相同病症出现次数的预警阈值;enc()和dec()是一对安全的公钥密码算法;e()和d()是一对安全的对称密码算法;sig()和ver()是一对安全的签名算法。
[0056]
s200.病人和医生在云存储服务器处注册。
[0057]
在一些实施例中,病人和医生在云存储服务器处注册,包括:
[0058]
s210.每个病人自行设置用于加解密的第一密钥对(epk,esk)和用于签名验签的第二密钥对(spk,ssk)。
[0059]
s220.病人在云存储服务器处注册获得病人身份idk,医生在云存储服务器处注册获得医生身份
[0060]
s300.多个密钥服务器部署分布式秘密共享协议。
[0061]
在一些实施例中,多个密钥服务器部署分布式秘密共享协议,包括:
[0062]
s310.每个密钥服务器选择随机数和z
p
上的多项式fi(x)=a
i,0
+a
i,1
x+

+a
i,t-1
x
t-1
,使得fi(0)=a
i,0
,其中表示整数模p的乘法循环群,密钥服务器集合为
[0063]
s320.每个密钥服务器向其他所有密钥服务器发送验证参数a
i,0
p、a
i,∈
p(∈=1,2,

,t-1)和对应的多项式函数值fi(j)。
[0064]
s330.每个密钥服务器接收到其他密钥服务器发送的fj(i)后,通过等式验证fj(i)的正确性,若验证通过,则接受fj(i),否则拒绝fj(i)。
[0065]
s340.每个密钥服务器计算子秘密其对应的子公钥qi=sip以及服务器群组共享的私钥对应的公钥
[0066]
s350.执行完上述秘密共享步骤,服务器群组共享的私钥
[0067]
s360.每个密钥服务器创建一份列表,该列表用于单位时间段内记录医生已接诊的病人数该列表的初始值为0。
[0068]
s400.病人在医院处进行预约,医院为病人指定医生。
[0069]
在一些实施例中,病人在医院处进行预约,医院为病人指定医生,包括:
[0070]
s410.病人将病人身份id发送给医院
[0071]
s420.医院随机选择治疗密钥tk∈z
p
,并用病人的公钥epk对治疗密钥tk进行加密得到密文c1=enc(epk,tk),然后将第一密文c1发送给病人
[0072]
s430.病人用自己的私钥esk对收到的密文c1执行解密操作dec(esk,c1),得到治疗密钥tk。
[0073]
s440.医院生成预约信息并用治疗密钥tk对预约信息进行加密得到预约信息密文然后将密文c2发送给病人其中,为有效期,为辅助信息。
[0074]
s450.医院将治疗密钥tk通过安全信道发送给医生医生保存治疗密钥tk,用于后续就诊和认证。
[0075]
s500.病人在与医生认证成功后就诊,医生为病人生成一个电子病历,并采用分字段加密的方式加密该电子病历,其中,对个人信息字段采用对称加密,对病症字段采用分布式门限密钥加密。
[0076]
在一些实施例中,病人在与医生认证成功后就诊,医生为病人生成一个电子病历,并采用分字段加密的方式加密该电子病历,包括:
[0077]
s510.病人用治疗密钥tk解密预约信息密文c2获得预约信息然后生成预约凭证并对预约凭证w进行签名得到凭证签名σw=sig(ssk,w),然后将授权密文c3=e(tk,w||σw)发送给医生
[0078]
s520.医生计算d(tk,c3)得到预约凭证w和凭证签名σw,然后用ver(spk,σw)验证凭证签名σw,并在验签通过后查看预约凭证w。
[0079]
s530.医生为病人生成电子病历m={m0,m1,

,mv,m
v+1
,

,mn},其中m0是病人的个人信息,m1,

,mv是病人的病症信息,m
v+1
,

,mn是医生开具的处方信息。
[0080]
s540.医生随机选择对称加密密钥k∈z
p
,将个人信息m0加密为个人信息密文c0=
e(k,m0),将处方信息m
β
,β∈[v+1,n]加密为处方密文c
β
=e(k,m
β
)。
[0081]
s550.医生选择随机数对病症信息m
α
,α∈[1,v]逐条盲化,计算盲化信息并将发送给所有密钥服务器
[0082]
s560.密钥服务器检查是否成立,若成立,则用子秘密si对签名得到子签名并设置然后将子签名σ
i,α
发送给医生
[0083]
s570.医生通过验证等式i∈[1,n],α∈[1,v]是否成立对收到的每个子签名σ
i,α
进行验证,验证通过后从中选出t个子签名计算门限签名其中t是秘密共享方案的门限值。
[0084]
s580.对每个α∈[1,v],医生计算h(σ
α
),然后加密m
α
得到病症密文c
α
=e(h(σ
α
),m
α
),其中m
α
为电子病历m中第α个病症信息。本实施例中病症字段采用确定性加密,相同的病症会产生相同的密文。
[0085]
s600.医生将加密后的电子病历发送给云存储服务器,云存储服务器对电子病历中的各病症进行计数,并在有病症的计数达到预警阈值时触发预警机制。
[0086]
在一个实施例中,医生将加密后的电子病历发送给云存储服务器,云存储服务器对电子病历中的各病症进行计数,并在有病症的计数达到预警阈值时触发预警机制,包括:
[0087]
s600.对所有α∈[1,v]和β∈[v+1,n],医生将外包数据data={w||σw,e(tk,k||h(σ
α
)),c=c0||c
α
||c
β
}发送给云存储服务器
[0088]
s600.云存储服务器调用ver(spk,σw)验证凭证签名σw,验签通过后接受外包数据data;
[0089]
s600.在一个epoch内,所有的病症计数初始值为0,云存储服务器查看data,从c中取出病症密文c
α
,并根据所述病症密文c
α
对相应的病症进行计数,当至少一个病症的计数达到预警阈值l时触发预警机制,其中,epoch为单位时间段。例如,将每周作为一个单位时间段(周一到周日共7天)。
[0090]
具体的,在一个epoch内,所有的病症计数初始值为cntd=0,d=0,1,2,

。当云存储服务器收到第一份电子病历,此时d=0,云存储服务器查看病症密文c
α
,cnt0++。当云存储服务器收到第二份电子病历,同样查看病症密文c
α
,若和第一份电子病历一样,则设置cnt0++;若不一样,则设置d++,cnt1++。以此类推,每收到一份电子病历,云存储服务器查看存储空间是否已有相同的病症密文,有则增加对应的病症计数值,无则新增一个病症计数值置为1。若在某一时刻,有某个计数值达到预警阈值,即cntd=l,表示可能有流行病的高发,此时触发预警机制。
[0091]
在一些实施例中,所述流行病预警方法还包括:
[0092]
病人从云存储服务器下载外包数据data={w||σw,e(tk,k||h(σ
α
)),c=c0||c
α
||c
β
},α∈[1,v],β∈[v+1,n],并用治疗密钥tk解密得到封装好的对称加密密钥k和门限密钥h(σ
α
),然后分别对个人信息密文c0、处方密文c
β
和病症密文c
α
解密,即可得到电子病历m。
[0093]
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本
文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1