医疗云环境下基于多级角色的实时审计方法

allin2023-03-20  62



1.本发明涉及一种云数据审计方法,具体地说是一种医疗云环境下基于多级角色的实时审计方法。


背景技术:

2.随着医疗云的发展,医疗机构使用云服务器来存储电子健康记录(electronic health records,ehrs),可有效减少本地存储开销,简化存储管理过程。然而,现有的大多数访问控制中,大多依赖于云服务器受信任的假设。实际上,一旦医疗记录上传到云中,所有者将失去对数据的控制,敏感内容可能会被未经授权的实体访问甚至被恶意修改。因此,保护ehrs的完整性至关重要。
3.现有数据完整性审计方案基本上都是采用第三方审计的方式,需要向第三方审计机构购买审计服务,第三方审计机构获取云服务器中的数据后进行审计,这种审计模式的成本高。第三方审计者进行审计时一般采用集中审计的方式,容易遭受单点故障瓶颈问题,导致无法正常审计并影响云服务器的正常使用。现有审计方式中,一般采用概率审计,即抽取一定比例的数据进行审计,但由于ehrs本身具有单条数据较小,并且其中部分数据被频繁检索而另一部分数据可能很少被检索的特点,这就导致在概率审计中,部分被频繁检索的数据在完整性审计中被遗漏以及部分很少被检索的数据被重复进行完整性审计,审计效率低且安全性较差。同时,现有这种审计模式中默认第三方审计者是可信的,但实际上第三方设计者的可信度是不确定的,对于医疗等高安全领域,涉及大量隐私或机密数据,许多数据对象只能由一小部分相应的人员访问,而不易将所有的数据都向第三方审计者公开,如果造成数据的泄漏将会侵犯患者的隐私。因此,现有数据完整性审计方案不适用于对访问和审计有较多权限要求的ehrs。


技术实现要素:

4.本发明的目的就是提供一种医疗云环境下基于多级角色的实时审计方法,以解决现有数据完整性审计方案存在审计成本高、效率低且安全性差,不适用于医疗领域的问题。
5.本发明是这样实现的:一种医疗云环境下多级角色实时审计方法,包括产生数据s1和审计并使用数据s2两部分。
6.其中,产生数据s1包括以下步骤。
7.s11.多级角色用户中某一用户组节点需要对数据对象组进行加密时,判断对要加密的数据对象组有访问权限的用户组节点是否属于自己的后代用户组节点,若是,则推导出相应后代用户组节点的密钥,并产生一条包含该数据对象组的新的电子健康记录。
8.s12.由用户组根节点使用推导出的密钥对电子健康记录进行加密得到加密电子健康记录,对加密电子健康记录按数据对象组分别计算mac并将mac存储在网关。
9.s13.网关收到加密电子健康记录后生成签名密钥对并对数据签名。
10.s14.网关缓存的加密电子健康记录达到设定数量后上传至云服务器,云服务器验
证签名,验证通过后云服务器生成收据并将收据返回给网关。
11.s15.网关对云服务器返回的收据进行验证,验证通过后删除网关中存储的加密电子健康记录并存储签名和收据。
12.审计并使用数据s2包括以下步骤。
13.s21.多级角色用户中某一用户组节点在想要使用某一属于加密电子健康记录的数据对象组时,查看对该加密数据有访问权限的用户组节点,并判断是否是自己或属于自己的后代用户组节点,若是,则推导相应用户组节点的密钥。
14.s22.检查该加密电子健康记录是否存储在网关中,若否,则将该加密电子健康记录从云服务器下载到网关,并返回给多级角色用户。
15.s23.验证加密电子健康记录的签名和收据,验证通过后进行下一步。
16.s24.使用s21中得到的密钥计算加密电子健康记录的mac值并进行审计,若计算得到的mac值与网关存储的mac值相等,则表示数据完整,用户组节点对具有权限的数据对象组进行解密,若不相等,则向网关发送失败报告。
17.所述多级角色用户的结构由有向无环图g=(v,e,o)表示,v为一组用户组节点集v={v1,v2,
……
,vn},e是边的集合,o是数据对象的集合,用户组节点vi能够导出其后代vj的私有密钥;z为将用户组节点映射到它被授予访问权限相应对象组的函数;用户组节点vi中存储有si和li,si为每个用户组存储的秘密信息,li∈{0,1}r为用户组节点vi的公共标签,每个用户组节点vi具有三个私有密钥ki、ti以及ei;ki=f(si||00||li),其中ki∈{0,1}r,用于数据加解密;ti=f(si||01||li),其中ti∈{0,1}r,用于推导其后代用户组节点的私有密钥;ei=f(si||10||li),其中ei∈{0,1}r,用于计算mac值;在从vi到其后代用户组节点vj的有向边(vi,vj)上公开有边标签y
ij

18.推导后代用户组节点密钥包括:
19.使用自身节点vi存储的si计算自身用户组的三个私有密钥ki、ti以及ei,从vi到其后代节点vj的有向边(vi,vj)的私有密钥为r
ij
=f(ti||li),边标签使用r
ij
对y
ij
解密,推出后代节点vj的私有密钥kj、tj以及ej。
20.数据加密包括由多级角色用户根节点执行数据加密算法data encryption(g,ehrs,z)

c,ehrs为电子健康记录,输出c为加密电子健康记录。
21.在步骤s13中,由多级角色用户根节点执行mac生成算法macgen(ej,c,z,g)
→hs
,对加密电子健康记录c按数据对象组分别计算散列值,各散列值存储在网关,将散列值之和hs作为消息认证码发送至网关。
22.在步骤s13中,网关收到多级角色用户发来的加密电子健康记录c后,使用密钥对生成算法keygen(1
θ
)

(pk,sk)生成密钥对(pd,s
kd
),由网关执行数据标签生成算法:
23.taggen(hs,s
kd
)

ts24.对hs生成标签
25.云服务器收到上传的加密电子健康记录c后,首先验证签名的
正确性,检查以下等式是否成立:
[0026][0027]
若成立,则云服务器调用密钥对生成算法keygen(1
θ
)

(pk,sk)生成密钥对(pc,s
kc
),然后用收据生成算法:receiptgen(s
kc
,pd,ts)

tc得到收据tc;
[0028][0029]
云服务器存储收据tc的副本,并将tc返回给网关。
[0030]
s15中,网关收到云服务器返回的收据tc后,通过收据验证算法使用公钥pc验证tc,若
[0031][0032]
则从网关中删除加密电子健康记录并存储ts和tc。
[0033]
本发明的多级角色用户生产数据以及使用数据的过程中进行实时审计和确定性审计,多级角色用户既使用数据又对数据的完整性进行审计,不需要第三方审计机构,即使用一条数据之前便审计一条数据,实现了数据的确定性审计与实时性审计,确定性审计能够避免概率审计中因为概率问题对经常使用的数据遗漏没有进行审计的问题,实时性审计避免了传统集中式审计方式中遭受单点故障瓶颈的问题。同时,由于没有第三方审计机构,避免了隐私数据从并不完全可信的第三方泄露的问题,具有较高的安全性,且不需要购买第三方的审计服务,能够节约大量使用成本。
[0034]
本发明依据共享电子健康记录数据结构的特殊性与敏感性,采用实时性审计和确定性审计,审计准确率高,计算和通信开销小。采用多级密钥管理技术,通过使用不同密钥使多级角色依据不同权限对数据进行完整性审计,实现隐私保护下细粒度的访问控制。对数据进行分级审计,避免了集中式审计中遭受单点故障瓶颈问题。云服务器向用户提供由双方签署的带有时间戳的收据,实现责任追溯以及审计结果的不可否认性,防止恶意用户发动攻击。
附图说明
[0035]
图1是本发明医疗云环境下多级角色实时审计系统的框架图。
[0036]
图2是本发明多级角色用户的结构图。
[0037]
图3是本发明产生数据的uml图。
[0038]
图4是本发明使用数据的uml图。
[0039]
图5是本发明推导后代密钥的算法。
[0040]
图6是本发明与现有方案审计开销的对比图。
[0041]
图7是本发明与现有方案签名生成时间开销对比图。
[0042]
图8是本发明加解密时间开销图。
[0043]
图9是本发明计算mac开销图。
[0044]
图10是本发明存储开销图。
具体实施方式
[0045]
本发明的医疗云环境下多级角色实时审计方法基于医疗云环境下多级角色实时审计系统实现,如图1所示,审计系统包括多级角色用户、网关以及云服务器。
[0046]
多级角色用户:假定多级角色用户受医疗机构的信任,用户包含医生、护士和药师等角色,他们具备不同的访问权限。多级角色用户包括一组用户组节点,采用多级密钥管理方式,父代节点能够导出后代节点的私钥,但是后代节点无法导出父代节点的私钥。多级角色用户首先向医疗机构注册,从而通过安全通道收到医疗机构的访问凭据,进而使用访问凭据直接从医疗云中读取或写入授权数据文件。
[0047]
网关:网关确切地说是指医疗机构的网关,医疗机构将为注册用户定义数据访问策略,并在需要时撤销用户访问。它拥有一定的缓存大小,即当电子健康记录(ehrs)达到本地缓存数量时,将向医疗云存储一次数据。本发明假设网关是半可信的,即会正确地执行操作,但是会对数据保持好奇。
[0048]
医疗云:医疗云是一个云服务器,其是向医疗机构提供数据存储即服务的第三方组织,多级角色用户可能不完全信任它。在本发明中医疗云是恶意但谨慎的,可能涉及主动攻击。医疗云必须遵循由医疗机构创建的服务级别协议。在接收到访问的请求时,它对请求进行身份验证,如果由授权用户发起,则执行请求。
[0049]
电子健康记录ehrs共有r条,每条电子健康记录ehrs包含c个数据对象o,c个数据对象o又分为共q组[qj]。多级角色用户中每个用户组节点对应一组数据对象组q。
[0050]
如图3、图4所示,医疗云环境下多级角色实时审计方法包括产生数据s1和审计并使用数据s2两部分。
[0051]
其中,产生数据s1包括以下步骤。
[0052]
s11.多级角色用户中某一用户组节点需要对数据对象组进行加密时,判断对要加密的数据对象组有访问权限的用户组节点是否属于自己的后代用户组节点,若是,则推导出相应后代用户组节点的密钥,并产生一条包含该数据对象组的新的电子健康记录。
[0053]
s12.由用户组根节点使用推导出的密钥对电子健康记录进行加密得到加密电子健康记录,对加密电子健康记录按数据对象组分别计算mac并将mac存储在网关。
[0054]
s13.网关收到加密电子健康记录后生成签名密钥对并对数据签名。
[0055]
s14.网关缓存的加密电子健康记录达到设定数量后上传至云服务器,云服务器验证签名,验证通过后云服务器生成收据并将收据返回给网关。
[0056]
s15.网关对云服务器返回的收据进行验证,验证通过后删除网关中存储的加密电子健康记录并存储签名和收据。
[0057]
审计并使用数据s2包括以下步骤。
[0058]
s21.多级角色用户中某一用户组节点在想要使用某一属于加密电子健康记录的数据对象组时,查看对该加密数据有访问权限的用户组节点,并判断是否是自己或属于自己的后代用户组节点,若是,则推导相应用户组节点的密钥。
[0059]
s22.检查该加密电子健康记录是否存储在网关中,若否,则将该加密电子健康记录从云服务器下载到网关,并返回给数据使用者——多级角色用户。
[0060]
s23.验证加密电子健康记录的收据和签名,若验证通过,则进行下一步。
[0061]
s24.使用s21中得到的密钥计算加密电子健康记录的mac值并进行审计,若计算得
到的mac值与网关存储的mac值相等,则表示数据完整,用户组节点对具有权限的数据对象组进行解密,若不相等,则向网关发送失败报告。
[0062]
如图2所示,本发明使用多级用户进行密钥管理,当用户群体可以被表示为一个偏序集合和有向无环图(dag)时,就会出现访问控制中的层次结构。具有某些数据对象访问权限的用户可以访问此数据对象以及层次结构中所有后代用户的数据对象。
[0063]
多级角色用户的结构具体可以由有向无环图g=(v,e,o)表示,v为一组用户组节点集v={v1,v2,
……
,vn},|v|=n,e是边的集合,|e|=m,o是数据对象的集合,|o|=p。用户组节点vi能够导出其后代vj的私有密钥。z为将用户组节点映射到它被授予访问权限相应对象组的函数;用户组节点vi中存储有si和li,si为每个用户组存储的秘密信息,li∈{0,1}r为用户组节点vi的公共标签,每个用户组节点vi具有三个私有密钥ki、ti以及ei;ki=f(si||00||li),其中ki∈{0,1}r,用于数据加解密;ti=f(si||01||li),其中ti∈{0,1}r,用于推导其后代用户组节点的私有密钥;ei=f(si||10||li),其中ei∈{0,1}r,用于计算mac值;在从vi到其后代用户组节点vj的有向边(vi,vj)上公开有边标签y
ij

[0064]
由根节点的用户组执行层次结构的创建和维护,它还利用了公共散列函数和对称加密方案ε。ε是多项式时间加密函数enc
sk
:m

c,解密函数其中sk是输入加/解密密钥,m是明文消息,c是密文。在有向图g中,对于每个顶点,方案定义了vi的所有后代是desc(vi,g)。vi的所有祖先是anc(vi,g)。这意味着vi将能导出所有私钥kj和ej,其中vj∈desc(vi,g)。
[0065]
所以,推导后代用户组节点密钥时,首先使用自身节点vi存储的si计算自身用户组的三个私有密钥ki、ti以及ei,从vi到其后代节点vj的有向边(vi,vj)的私有密钥为r
ij
=f(ti||li),边标签然后使用r
ij
对y
ij
解密,推出后代节点vj的私有密钥kj、tj以及ej。
[0066]
如图5所示,本发明定义了推导密钥算法:derive(v
source
,v
target
,g)

(kj,ej),使用这个算法,任何在用户组节点vi的用户都可以导出他的后代节点的3个私钥。在多级角色的结构中,用户组节点vi到vj的路径意味着节点vi拥有对vj数据对象的访问权限,o∈oj,每个有向边(vi,vj)∈e表示用户组之间的层次关系。从vi到vj的任何有向边(vi,vj),需要两个值。第一个值r
ij
=f(ti||lj)为私有密钥,第二个值为边标签,被公开在有向边(vi,vj)上。由算法derive(v
source
,v
target
,g)

(kj,ej)可知,如果在某个用户组节点vi到后代节点vj之间存在路径,则vi将能够使用lj和边标签y
ij
以及ti来导出vj的加解密密钥kj、计算mac值的密钥ej以及推导后代私钥的密钥tj。
[0067]
数据加密包括由多级角色用户根节点执行数据加密算法data encryption(g,ehrs,z)

c,ehrs为电子健康记录,输出c为加密电子健康记录。
[0068]
因为用户组节点到数据对象组的映射函数z是公共的,因此,给一组他们想要加密的数据对象o
target
。用户组节点vi的成员能够使用函数z来查看任何可以访问o
target
的用户组节点,判断是否是自己的后代节点,若是,使用推导密钥算法(v
source
,v
target
,g)推导出相应用户组节点的密钥,然后用其密钥,利用aes-cbc模式对称加密算法和sha-256单向散列函数,对数据对象组进行加密。
[0069]
在本实施例中,设ehrs包含三组数据对象组q1、q2、q3,则通过数据加密算法输出的为加密电子健康记录c=(c1,c2,c3)。
[0070]
由多级角色用户根节点执行mac生成算法macgen(ej,c,z,g)
→hs
,对加密电子健康记录c按数据对象组分别计算散列值,各散列值存储在网关,将散列值之和hs作为消息认证码发送至网关。
[0071]
具体为,根节点使用推导密钥算法derive(v
source
,v
target
,g)推导出后代节点用于计算mac的对称密钥ej后,对加密后的电子病历c=(c1,c2,c3)按数据对象组分别计算mac,这里使用hmac的消息认证码计算,使用对称密钥,单向散列函数用sha-256,设计算后的结果分别为h1,h2,h3,令hs=h1+h2+h3,将hs作为消息认证码发送给网关,而将h1,h2,h3存储在网关。根节点v1将{c=(c1,c2,c3),hs}发送到网关并在本地删除密文。
[0072]
密钥对生成算法keygen(1
θ
)

(pk,sk)由网关和云服务器执行,网关和云服务器分别调用伪随机生成函数生成各自的签名密钥对(pd,s
kd
)和(pc,s
kc
),其中网关的签名密钥对为(pd,s
kd
),且s
kd
=a,pd=ga。医疗云的签名密钥对(pc,s
kc
),其中s
kc
=b,pc=gb,用rsa签名算法来对消息认证码进行签名。
[0073]
在生成数据时,网关收到多级角色用户发来的加密电子健康记录c后,使用密钥对生成算法keygen(1
θ
)

(pk,sk)生成密钥对(pd,s
kd
),由网关执行数据标签生成算法:
[0074]
taggen(hs,s
kd
)

ts[0075]
对hs生成标签
[0076]
云服务器收到上传的加密电子健康记录c后,首先验证签名的正确性,即检查以下等式是否成立:
[0077][0078]
若等式成立,则云服务器调用密钥对生成算法keygen(1
θ
)

(pk,sk)生成密钥对(pc,s
kc
),然后用收据生成算法:receiptgen(s
kc
,pd,ts)

tc得到收据tc。
[0079][0080]
云服务器存储收据tc的副本,并将tc返回给网关。
[0081]
网关收到云服务器返回的收据tc后,通过收据验证算法使用公钥pc验证tc,若则从网关中删除加密电子健康记录并存储ts和tc。
[0082]
在使用数据并进行完整性验证时,对于不同的用户组节点,其验证对象以及方法略有不同。
[0083]
当用户组节点为根节点时,根节点要使用某一条ehrs,其需要的是一条完整的加密电子健康记录,加密电子健康记录包含多个数据对象组。根节点成员使用函数z来查看任
何可以访问各数据对象组的用户组节点,判断是否是自己的后代用户组节点,若是,则用推导密钥算法derive(v
source
,v
target
,g)

(kj,ej)分别推导出各相应后代节点的密钥ej,然后将加密电子健康记录c从云服务器下载到网关,首先依次验证签名和收据的正确性,若正确,则使用mac生成算法macgen(ej,c,z,g)
→hs
和得到的密钥ej对加密电子健康记录c按数据对象组分别计算散列值,并与网关存储的h1,h2,h3作对比,若相等,则表示数据完整,由各个相应后代用户组节点对有权限的数据对象组进行解密后使用;若不相等,则向网关发送失败报告。
[0084]
当用户组节点为根节点外的普通用户组节点时,普通用户组节点要使用ehrs,其需要的是加密电子健康记录中的某个数据对象组qk,用户组节点使用函数z来查看可以访问该数据对象组qk的用户组节点,判断是否是自己或者自己的用户组节点,若是,则推导出相应用户组节点的密钥ej,云服务器返回包含该数据对象组的加密电子健康记录,用户组节点依次验证收据和签名的正确性,验证无误后,则使用mac生成算法macgen(ej,c,z,g)
→hs
计算mac的值,计算出结果后与本地存储的散列值作对比,如果相等,则表示数据完整,由相应后代用户组节点对该数据对象组进行解密后使用;如果不相等,则表示消息可能有篡改,则将失败报告发给网关。
[0085]
验证加密电子健康记录的收据和签名,首先用pc验证收据,判断即是否相等,若成立,则用pd来判断签名是否正确,即,是否成立,若验证通过,则进行下一步。
[0086]
本文采用python语言实现多级角色结构以及确定性实时审计方案,所用版本为3.9,pbc库为0.5.14。模拟实验环境配置为intel core i5-6300hq cpu@2.30hz以及8gb ram,网关和多级角色用户采用多个虚拟机模拟(centos linux 7.5.1804);csp部署在远程阿里云服务器ecs上(16g内存,2ghz cpu)。本发明使用aes-cbc模式对称加密算法和sha-256单向散列函数加密,openssl库版本为1.0.2e。本实验把ehrs进行对称加密,将加密后的数据存储在同一txt文件中并作为实验数据集。具体实验结果如图6至图10所示。
[0087]
在多级角色审计架构下,不同角色对数据有不同的权限。本实验中,假设一共有3个角色审计,分别为医生、护士和药师,对他们的审计时间进行观察。为了验证ehrs条数对审计时间的影响,本发明对3个角色,医生、护士和药师随机挑选50条到950条的ehrs进行审计,并与shen等人提出的审计方案进行比较(enabling identity-based integrity auditing and data sharing with sensitive information hiding for secure cloud storage,wenting shen,jing qin,jia yu,rong hao,and jiankun hu,senior member,ieee)。审计开销如图6所示。
[0088]
由图6可知,shen等人提出的方案采用概率审计,审计准确度没有本发明高,在提高方案审计准确度的条件下,从审计200条ehrs开始,审计时间逐渐比本发明方案高。本实验中医生平均审计50条ehrs时间为0.043s,护士平均审计50条ehrs时间为0.034s,药师平均审计50条ehrs时间为0.023s。每个角色审计的数据内容不一样,时间仅有微小的差距。医生审计950条ehrs时,平均时间为0.193s。结果表明,审计时间随ehrs条数呈线性增长,但是
最高不超过0.2s,相比于其他审计方案所需时间更短。
[0089]
由上面描述可知,用户在审计前需验证收据和签名的正确性,正确后推导密钥;最后对比mac值来判断数据是否完整。审计开销为:
[0090][0091]
shen等人方案的构造中,在完整性审计阶段,tpa首先生成一个审计挑战,并将其发送到云;然后云输出审计证明回复tpa。tpa验证审计证明时的计算开销为:4pair+2mul+2(n-1)add+(n+1)exp+nmul+nhash。因此本发明方案审计效率高,具有高效性和可扩展性。
[0092]
签名生成阶段:在本实验中,测试了0到950条ehrs生成签名的时间开销,评估签名生成的性能,并与shen等人提出的方案进行了比较。从图7可以看出两种方案签名生成随ehrs条数增多的时间开销。由图7可知,随着ehrs条数的增加,两个方案签名生成时间开销呈线性增加。很明显,shen方案的签名生成时间的开销远大于本发明,取值范围是:0.1562s到3.28s,本发明的时间开销取值范围是:0.049s到1.5262s。本发明方案的计算开销为:n(hash)。shen等人方案的构造中,计算签名的时间开销是n(hash+2mul+2exp),在该方案中,对盲化后的数据和敏感信息进行处理,然后再对处理后的数据块进行签名。因此计算签名开销相对本发明方案较大,本发明在签名计算开销方面优于shen等人提出的方案。
[0093]
加解密阶段:在本实验中,假设具有较高权限的角色来加密数据,本实验选择医生来加密数据,整体角色层次关系如图2所示。实验加密50条到450条ehrs,并测试加密时间开销。实验中,医生对完整的ehrs进行解密并使用,实验结果如图8所示。由图8可知,x轴表示加密的ehrs数,y轴表示以秒为单位完成加密和解密算法所需的平均时间。医生加密的时间开销随着ehrs条数的增多呈线性增长的趋势,时间范围是:0.0088秒到0.1626秒,ehrs为950条时,加密时间最高不超过0.2秒。医生解密的时间开销也随着ehrs条数的增多呈线性增长的趋势,范围是:0.0081秒到0.1619秒,由于本发明采用对称加密,因此加解密时间开销小,具有高效性。
[0094]
生成收据和计算mac阶段:本发明为了实现结果的可追溯性,通过生成和验证收据来保留问责渠道,实验中测试了50条到950条生成和验证收据的时间,计算可得,生成收据的平均时间为0.669s,验证收据的平均时间为0.077s。为了找出计算mac的时间开销与ehrs条数的关系,实验中,改变ehrs条数,计算mac的时间开销如图9所示。由图9可以看出,随着ehrs数的增加,曲线变化相对平稳,说明本发明方案是稳定的,计算mac的时间开销随ehrs的条数呈缓慢增长。
[0095]
通信开销分析:分为上传和审计两个阶段。上传阶段的通信开销包括:(1)ehrs由用户上传至云服务器;(2)收据由云服务器返回给用户。审计阶段的通信开销包括:(1)用户向云请求ehrs;(2)ehrs由云返回给用户;(3)用户向本地医院网关发送审计失败报告。
[0096]
实验测试了ehrs上传和下载的平均时间,即用户将ehrs上传到云服务器以及云服务器将ehrs返回给用户。测试时固定角色不变,改变ehrs条数。上传数据:医生加密数据后,将加密数据发送至网关,网关达到本地缓存数量时,向云传输保存一次,改变ehrs条数,直至传输至950条,测得上传数据的通信开销平均为0.05s。
[0097]
下载数据:此时,某个病人来看病,医生请求idi的ehrs,首先去网关查询,如果有,则从网关返回,若无,则去云中查询。下载数据的通信开销平均为0.1759s。
[0098]
存储开销分析:实验分析了本地多级角色的内存开销,x轴表示医院内部角色节点数。y轴表示用于整个多级角色实时审计架构的所有兆字节数。
[0099]
由图10可知,系统的内存消耗随着角色节点呈线性增长。因为多级角色中每个节点都要存储一组固定的数据,即si、li等。测试中,设置每个节点的用户数量保持不变,为100个,结果表明内存消耗是线性增加的。当多级角色为100个节点,总共10000个用户时,系统内存不超过4.5mb。因此,该架构可以很好地扩展到大型医疗云环境中。
[0100]
本发明的多级角色用户生产数据以及使用数据的过程中进行实时审计和确定性审计,多级角色用户即使用数据又对数据的完整性进行审计,不需要第三方审计机构,且使用一条数据便审计一条数据,实现了数据的确定性审计与实时性审计,确定性审计能够避免概率审计中因为概率问题对经常使用的数据遗漏没有进行审计的问题,实时性审计避免了传统集中式审计方式中遭受单点故障瓶颈的问题。同时,由于没有第三方审计机构,避免了隐私数据从并不完全可信的第三方泄露的问题,具有较高的安全性,且不需要购买第三方的审计服务,能够节约大量使用成本。
[0101]
本发明依据共享电子健康记录数据结构的特殊性与敏感性,采用实时性审计和确定性审计,审计准确率高,计算和通信开销小。采用多级密钥管理技术,通过使用不同密钥使多级角色依据不同权限对数据进行完整性审计,实现隐私保护下细粒度的访问控制。对数据进行分级审计,避免了集中式审计中遭受单点故障瓶颈问题。云服务器向用户提供由双方签署的带有时间戳的收据,实现责任追溯以及审计结果的不可否认性,防止恶意用户发动攻击。

技术特征:
1.一种医疗云环境下多级角色实时审计方法,其特征在于,包括产生数据s1和审计并使用数据s2两部分;产生数据s1包括以下步骤:s11.多级角色用户中某一用户组节点需要对数据对象组进行加密时,判断对要加密的数据对象组有访问权限的用户组节点是否属于自己的后代用户组节点,若是,则推导出相应后代用户组节点的密钥,并产生一条包含该数据对象组的新的电子健康记录;s12.由用户组根节点使用推导出的密钥对电子健康记录进行加密得到加密电子健康记录,对加密电子健康记录按数据对象组分别计算mac并将mac存储在网关;s13.网关收到加密电子健康记录后生成签名密钥对并对数据签名;s14.网关缓存的加密电子健康记录达到设定数量后上传至云服务器,云服务器验证签名,验证通过后云服务器生成收据并将收据返回给网关;s15.网关对云服务器返回的收据进行验证,验证通过后删除网关中存储的加密电子健康记录并存储签名和收据;审计并使用数据s2包括以下步骤:s21.多级角色用户中某一用户组节点在想要使用某一属于加密电子健康记录的数据对象组时,查看对该加密数据有访问权限的用户组节点,并判断是否是自己或属于自己的后代用户组节点,若是,则推导相应用户组节点的密钥;s22.检查该加密电子健康记录是否存储在网关中,若否,则将该加密电子健康记录从云服务器下载到网关,并返回给多级角色用户;s23.验证加密电子健康记录的签名和收据,验证通过后进行下一步;s24.使用s21中得到的密钥计算加密电子健康记录的mac值并进行审计,若计算得到的mac值与网关存储的mac值相等,则表示数据完整,用户组节点对具有权限的数据对象组进行解密,若不相等,则向网关发送失败报告。2.根据权利要求1所述的医疗云环境下多级角色实时审计方法,其特征在于,所述多级角色用户的结构由有向无环图g=(v,e,o)表示,v为一组用户组节点集v={v1,v2,
……
,v
n
},e是边的集合,o是数据对象的集合,用户组节点v
i
能够导出其后代v
j
的私有密钥;z为将用户组节点映射到它被授予访问权限相应对象组的函数;用户组节点v
i
中存储有s
i
和l
i
,s
i
为每个用户组存储的秘密信息,l
i
∈{0,1}
r
为用户组节点v
i
的公共标签,每个用户组节点v
i
具有三个私有密钥k
i
、t
i
以及e
i
;k
i
=f(s
i
||00||l
i
),其中k
i
∈{0,1}
r
,用于数据加解密;t
i
=f(s
i
||01||l
i
),其中t
i
∈{0,1}
r
,用于推导其后代用户组节点的私有密钥;e
i
=f(s
i
||10||l
i
),其中e
i
∈{0,1}
r
,用于计算mac值;在从v
i
到其后代用户组节点v
j
的有向边(v
i
,v
j
)上公开有边标签y
ij
。3.根据权利要求2所述的医疗云环境下多级角色实时审计方法,其特征在于,推导后代用户组节点密钥包括:使用自身节点v
i
存储的s
i
计算自身用户组的三个私有密钥k
i
、t
i
以及e
i
,从v
i
到其后代节点v
j
的有向边(v
i
,v
j
)的私有密钥为r
ij
=f(t
i
||l
i
),边标签使用r
ij
对y
ij
解密,推出后代节点v
j
的私有密钥k
j
、t
j
以及e
j

4.根据权利要求2所述的医疗云环境下多级角色实时审计方法,其特征在于,数据加密包括由多级角色用户根节点执行数据加密算法data encryption(g,ehrs,z)

c,ehrs为电子健康记录,输出c为加密电子健康记录。5.根据权利要求2所述的医疗云环境下多级角色实时审计方法,其特征在于,在步骤s13中,由多级角色用户根节点执行mac生成算法macgen(e
j
,c,z,g)

h
s
,对加密电子健康记录c按数据对象组分别计算散列值,各散列值存储在网关,将散列值之和h
s
作为消息认证码发送至网关。6.根据权利要求5所述的医疗云环境下多级角色实时审计方法,其特征在于,在步骤s13中,网关收到多级角色用户发来的加密电子健康记录c后,使用密钥对生成算法keygen(1
θ
)

(p
k
,s
k
)生成密钥对(p
d
,s
kd
),由网关执行数据标签生成算法taggen(h
s
,s
kd
)

t
s
,对h
s
生成标签7.根据权利要求6所述的医疗云环境下多级角色实时审计方法,其特征在于,云服务器收到上传的加密电子健康记录c后,首先验证签名的正确性,检查以下等式是否成立:若成立,则云服务器调用密钥对生成算法keygen(1
θ
)

(p
k
,s
k
)生成密钥对(p
c
,s
kc
),然后用收据生成算法:receiptgen(s
kc
,p
d
,t
s
)

t
c
得到收据t
c
;云服务器存储收据t
c
的副本,并将t
c
返回给网关。8.根据权利要求4所述的医疗云环境下多级角色实时审计方法,其特征在于,s15中,网关收到云服务器返回的收据t
c
后,通过收据验证算法使用公钥pc验证t
c
,若则从网关中删除加密电子健康记录并存储t
s
和t
c


技术总结
本发明涉及一种医疗云环境下多级角色实时审计方法,基于多级角色用户结构,在对数据对象组进行操作时,首先需要判断数据对象组是否属于自己的后代节点,在产生数据时,对数据加密并上传至医疗云,计算加密数据的Mac并存储,同时生成签名和收据并存储,为后续实时确定审计做好准备。在使用数据时,将加密数据从医疗云下载到本地,验证签名和收据,同时计算加密数据的Mac并与本地存储的值对比,以对数据的完整性进行审计,审计通过后使用计算得到的后代节点密钥对数据解密。本发明在使用数据的同时对数据的完整性进行审计,以实现实时性、确定性审计。性、确定性审计。性、确定性审计。


技术研发人员:杜瑞忠 万源 郝明超
受保护的技术使用者:河北大学
技术研发日:2022.03.21
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-6802.html

最新回复(0)