支持条件身份匿名的云存储医疗数据轻量级完整性验证方案
2022-12-28张晓均廖文才付兴兵
张晓均 王 鑫 廖文才 赵 芥 付兴兵
①(西南石油大学计算机科学学院网络空间安全研究中心 成都 610500)
②(宜宾学院理学部 宜宾 644000)
③(杭州电子科技大学网络空间安全学院 杭州 310018)
1 引言
医疗大数据由于其在现代医疗系统中的潜在价值,受到了人们的广泛关注。医疗大数据的蓬勃发展不可避免地产生新的数据安全和隐私保护问题。如果医疗大数据不完整和不真实,新挖掘的知识将无法令人信服。随着信息技术的高速发展,远程医疗信息系统将与云计算技术相结合,提供一种便捷的新型服务模式[1]。云计算技术拥有强大的计算能力和存储能力,它为用户提供高效灵活的存储服务来维护数据[2,3]。在基于云辅助的无线医疗传感器网络中,医疗用户通过无线医疗传感器设备收集重要的生理特征参数(如血压、血糖等),实时地将这些医疗数据上传到云服务器进行存储、分析与处理[4]。
虽然云计算提供的服务有着非常多的优势,但数据存储于云服务器,用户对数据失去绝对控制权,容易遭受外部敌手恶意删除或篡改等方面的攻击。除此之外,某些硬件和软件故障因素的存在将不可避免地导致数据损坏,而云服务提供商可能会只考虑自身利益不受损坏,从而隐瞒数据不完整的事实[5]。近年来频繁发生云安全和云犯罪事件,严重影响了用户和云服务提供商的信任关系。医疗用户关注的焦点在于存储在云端的医疗健康数据的完整性,它是所有临床诊断的基础,任何数据篡改或者丢失都会导致错误诊断,甚至会导致死亡等严重后果[6],因此对云服务器上的医疗数据进行完整性验证变得尤为关键。
为了检查云存储外包数据的完整性,Ateniese等人[7]首次提出数据可持有性验证(Provable Data Possession, PDP)审计机制。 Juels 等人[8]提出了数据可恢复证明(Proofs of Retrievability, PoR)审计模型。Wang等人[9]提出了一种具有隐私保护的公共云审计方案,引入第三方审计者为用户完成外包数据的完整性审计任务。最近,许多具有新型安全功能的公共云存储审计方案已陆续被提出[10–13]。特别地,文献[10]利用高效去重技术来支持去重搜索,同时实现了过期用户撤销和云存储数据审计。文献[11]设计出了既能支持数据的动态操作(对云端数据文件进行更新、删除和插入等操作),又能实现用户任意次数撤销的审计机制。Hahn等人[12]基于同态哈希函数技术实现数据快速动态更新的完整性审计方案。文献[13]将Shamir秘密共享方法和代数签名应用到外包云存储审计之中,并提出了高效撤销群组成员的共享数据审计方案。
然而,以上提出的云存储审计方案主要依赖公钥基础设施(Public Key Infrastructure, PKI)设计的,这将造成对公钥证书复杂的管理,包括公钥证书的创建、分发、存储和撤销,并不适用于移动终端的实际部署环境。而在基于身份密码(Identity-Based Cryptography, IBC)体制之中[14],用户私钥是由一个可信的权威机构-密钥生成中心(Private Key Generator, PKG)生成,它利用自己的主私钥与用户唯一可识别的身份信息(如身份证号、护照证号、邮件地址、电话号码)来为用户生成私钥,避免了基于证书的公钥密码机制中复杂证书管理问题。在近几年内,许多基于身份的公共云存储审计方案已经提出[15–18]。特别地,Ni等人[15]基于RSA假设,提出了一个基于身份的远程数据完整性验证方案,该方案实现了不同云用户拥有的外包数据完整性的聚合验证,其将身份作为哈希函数的输入生成一长串参数,导致用户的身份隐私不能得到很好的保护,另外其方案在完整性验证阶段的通信开销也很大,随着扇区数的增长而增长。Zhang等人[16]引入了区块链技术,第三方审计者将审计结果记录到以太坊中,从而用户可以检测第三方审计者的恶意行为,但是存储的医疗数据的隐私容易泄露给云服务器。有些用户可能只关注他感兴趣的部分加密云文件的完整性,Gao等人[17]应用了一种关系认证标签技术,它可以用来查询哪些文件包含感兴趣的关键字和生成审计证明信息,但是在交互过程中,TPA容易通过对响应信息进行线性运算获取外包文件的内容,导致隐私泄露。Xue等人[18]基于比特币的公共区块链随机数来生成挑战信息,可以有效抵御恶意审计者,但是用户的身份隐私依然没有得到有效的保护。且以上这些方案在TPA端的计算开销比较大,且用于验证数据文件完整性的时间与挑战数据块的数量线性相关。5G时代到来,个人数据量爆炸,实际上TPA需要快速地完成用户的审计任务,由于审计请求可能集中在特定的时间段内,因此过长的延迟是不可接受的,这对于TPA的计算能力要求很高。
在保证基于身份的公共云存储审计机制安全性的前提下,扩展系统功能是一项非常有意义的工作。溯源技术就被应用到云存储环境中来实现数字取证和实体追踪功能。一旦系统发生数据不一致导致的纠纷或用户在系统中恶意操作的情况都将是后续追踪调查、划分责任和解决诉讼的第一手证明材料。文献[19]最先将实体溯源的想法应用到基于无线体域网的环境中,利用人体指纹的不可伪造性来安全快速地溯源并识别原始用户。Zhang等人[20]的方案中,单个用户(包括组管理者)无法知道签名者的身份,同时基于秘密共享技术实现了用户的可追溯性。然而,这些方案的计算成本相对较高,而且没有解决复杂的证书管理问题。
针对上述问题,本文设计了一种支持条件身份匿名的外包云存储医疗数据完整性验证方案。该方案基于同态哈希函数技术设计了数字聚合签名算法,进一步构造轻量级完整性验证方案。方案是基于身份的密码系统设计的,有效避免了PKI关于公钥证书的复杂管理。方案使得第三方审计者定期代替医疗用户验证存储在云辅助医疗系统的外包数据的完整性,且能检测出云医疗数据是否被篡改,从而防止医生的临床误诊。性能分析与比较表明方案在计算开销与通信开销方面具有较大优势。特别是在第三方审计者方面,其完整性验证计算开销是轻量级的,非常有利于部署在移动终端计算资源受限的设备环境。
2 预备知识
2.1 双线性对映射
(2) 非退化性。e(g,g)̸=1, 其中1是G2的单位元。
(3) 可计算性。对于群G1的 任意两个元素h1,h2,存在一个高效的算法计算e(h1,h2)。
2.2 同态哈希函数
H是一个同态哈希函数,它满足如下性质。
(1) 同态性。对于两个消息m1,m2和 标量k1,k2,有H(k1m1+k2m2)=H(m1)k1·H(m2)k2。
(2) 抗碰撞性。不存在多项式时间敌手能够伪造元组 (m1,m2,m3,k1,k2) ,使之能同时满足m3=k1m1+k2m2和H(m3)=H(m1)k1·H(m2)k2。
2.3 密码学困难问题
定义1 DL(Discrete Logarithm)问题:给定g,ga ∈G1, 其中a∈Zp∗是未知的,DL问题求解目标是计算a。
定义2 C D H(C o m p u t a t i o n a l D i f f i e-Hellman)问题:给定g,ga,gb ∈G1, 其中a,b ∈Zp∗是未知的,CDH问题求解目标是计算gab。
事实上,敌手在多项式时间内能够求解DL困难问题和CDH困难问题的概率是可以忽略的。
2.4 系统模型
支持条件身份匿名的云存储医疗数据完整性验证模型如图1所示,包含密钥生成中心(Private Key Generator, PKG)、用户、医院、云服务器和第三方审计者(Third Party Auditor, TPA)。各通信实体的功能介绍如下:
图1 条件身份匿名的云存储医疗数据完整性验证模型
(1) PKG。PKG是一个权威且完全可信的实体,主要负责系统初始化阶段公开参数设置,以及根据用户真实身份生成相应的匿名身份和公私钥对。
(2) 医院。为用户提供医疗服务,利用无线医疗传感器网络收集用户的健康数据,生成用户的医疗数据文件。
(3) 用户。根据医疗数据文件生成相应的数字签名和审计辅助信息(Auditing Auxiliary Information, AAI),将医疗数据文件和数字签名上传给云服务器,将AAI上传给TPA。最后,用户删除本地存储。
(4) 云服务器。拥有巨大存储容量和计算能力,根据用户需求存储用户的医疗数据以及相应的数字签名,接受来自TPA的完整性验证挑战,并返回完整性验证证明响应信息给TPA。
(5) TPA。TPA得到用户的授权并且能够代表医疗用户周期性验证存储在云服务器的健康医疗数据的完整性,定期与云服务器交互以执行完整性审计任务,并将完整性验证结果返回给用户。
支持条件身份匿名的云存储医疗数据完整性验证模型包含以下多项式算法:
(1)系统初始化。由PKG执行。系统初始化,输入安全参数,生成系统公共参数并公开。
(2)用户匿名身份和签名私钥生成。由PKG执行。输入用户真实身份,PKG生成用户的匿名身份以及签名私钥,并将其通过安全信道发送给用户。
(3)数字签名生成。由用户执行。用户对数据分块后使用签名算法对数据进行签名,将数据和签名发送给云服务器,将审计辅助信息发送给TPA,最后删除本地存储。
(4)挑战信息生成。由TPA执行。TPA生成挑战信息并发送给云服务器,在等待云服务器响应证明信的时间内,执行预计算操作。
(5)完整性验证证明响应信息生成。由云服务器执行。云服务器根据挑战信息定位相关的数据块和签名,生成完整性验证证明响应信息,并将其发送给TPA。
(6)完整性验证。由TPA执行。输入挑战信息、系统参数、预计算值、用户匿名身份和完整验证证明信息,生成计算结果并通知用户。
3 支持条件身份匿名的外包云存储医疗数据完整性验证方案
3.1 具体方案
本文提出一个支持条件身份匿名的外包云存储医疗数据完整性验证方案,方案包括系统初始化、用户匿名身份和签名私钥生成、数字签名生成、挑战信息生成、完整性验证证明响应信息生成、完整性验证6个阶段。具体工作流程如图2所示。
图2 条件身份匿名的云存储医疗数据完整性验证工作流程
(1)系统初始化。输入安全参数ζ,PKG执行如下步骤:
(a)PKG设置一个双线性对映射e:G1×G1→G2,其中G1和G2是具有相同阶为素数p的乘法循环群,g是G1的生成元。
(b)PKG随机选取s ←Zp∗作为主私钥,计算ppub=gs作为PKG的主公钥。PKG随机均匀地选取元素w←G1。
最后,PKG公布系统公开参数Para=(e,G1,G2,g,p,ppub,w,H1,H2,H3),PKG秘密安全地保存主私钥s。
(2)用户匿名身份和签名私钥生成。根据医疗用户真实身份R ID∈{0,1}ρ和 登录口令P WD,PKG为用户产生匿名身份,以及相对应的签名私钥:
(a)PKG随机均匀地选取r←Zp∗,并使用主私钥s为用户产生匿名身份信息A ID=(AID1,AID2),其中A ID1=gr,A ID2=RID⊕H1(AID1s||ppub||T),T为一个用户匿名的有效使用周期。
(b)PKG使用主私钥s计算匿名身份A ID对应的签名私钥S KAID=(r+s)H2(AID)。
最后,PKG 通过安全信道返回{AID,SKAID,T}给相应的医疗用户。
(3)数字签名生成。医疗用户根据医疗健康数据文件生成如下数字签名,并产生完整性验证辅助信息:
(a)将医疗健康数据文件F(文件名为n ame∈Zp∗)分块预处理成F={m1,m2,...,mn},mi ∈Zp∗(i=1,2,...,n)。
(b)随机均匀地选取η,κ,τ ←Zp,计算种子信息ψ1=η.κ.τ,ψ2=η2.κ2.τ,...,ψn=ηn.κn.τ,以及完整性验证辅助信息A AI={η,κ,τ,H3(ψ1),...,H3(ψn)}。
(c)利用签名私钥 SKAID计算每个医疗数据块mi(i=1,2,...,n)的 数字签名信息Sigi=(wmiH3(name+ψi))SKAID。
最后,医疗用户通过无线医疗传感器网络将({mi}1≤i≤n,{Sigi}1≤i≤n)上传到云服务器,通过安全信道将AAI发送给TPA保存,并在本地端删除副本。
(4)挑战信息生成。当收到医疗用户授权TPA验证存储在云服务器的外包医疗数据完整性的请求时,TPA生成挑战信息并发送给云服务器:
(a)TPA首先从集合{1,2,...,n}中随机性地选取一个包含c个元素的子集J={j1,j2,...,jc},并为每一个j ∈J匹配随机系数vj ←Zp,发送挑战信息chal={(j,vj)j∈J}给云服务器。
(b)在等待云服务器响应期间,TPA基于完整性验证辅助信息AAI={η,κ,τ,H3(ψ1),...,H3(ψn)}执行预计算:
(6)完整性验证。当收到来自云服务器返回的完整性验证证明响应信息{µ,β,Sig}, TPA利用预计算值λ判断完整性验证方程e(g,Sig)=e((AID1·ppub)H2(AID),λβµ−β)是否成立。若成立,则说明医疗用户存储在云服务器上的医疗数据是完整的。反之,则医疗数据是不完整的。
3.2 方案正确性证明
现在对医疗健康数据完整性验证方程的正确性进行详细推导为
证毕
3.3 多文件批量完整性验证
支持条件身份匿名的外包云存储医疗数据完整性验证方案可以使得TPA对医疗用户的多个医疗数据文件同时进行批量验证,具体拓展细节描述如下:
医疗用户另外选定3个随机系数γ,υ,θ ←Zp,这里假设用户有d份医疗文件需要外包存储在云服务器,它们的文件名分别是{name1,name2,...,named}。对于每一个ℓ∈{ 1,2,...,d} ,n ameℓ=γℓυℓθ,每一份文件由n个数据块组成,如:Fℓ= {mℓ1,mℓ2,...,mℓn}。数据文件Fℓ对应的种子信息集合为{ψℓi}1≤i≤n,对于i=1,2,...,n,ψℓi=ηℓ·iκℓ·iτℓ·i。Fℓ对应的签名集合是{Sigℓ1,Sigℓ2,...,Sigℓn}, 对于i=1,2,...,n, Sigℓi=(wmℓiH3(nameℓ+ψℓi))SKAID。
多文件批量完整性验证过程的正确性证明为
证毕
通过以上多文件批量完整性验证过程得知,TPA所需的验证计算开销与单个数据文件的计算开销几乎相同,与数据文件的个数没有关系,这是源于方案设计中用到同态哈希函数技术,使得TPA在生成挑战信息时,做了相关的预计算。因此本方案在TPA端的开销是轻量级的。
4 安全性分析
现在,本文给出支持条件身份匿名的外包云存储医疗数据完整性验证方案的安全性分析,包括存储正确性,用户的条件身份隐私保护,以及防止TPA的数据恢复攻击。
定理1 在概率多项式时间内,方案中的云服务器试图产生伪造的完整性验证证明响应信息,通过TPA的验证在计算上是不可行的。
证明 TPA随机地生成一个完整性验证挑战信息{(j,vj)j∈J},并通过无线医疗传感器网络发送给云服务器。云服务器返回给TPA一个有效的完整性验证证明响应信息{µ,β,Sig},其应该通过验证方程:e(g,Sig)=e((AID1·ppub)H2(AID),λβµ−β)。
在真实情况下,云服务器可能通过篡改或者替换部分数据,伪造数字签名等方式产生伪造的完整性验证证明响应信息通过TPA的验证。首先,如果云服务器伪造某一个数字签名 S igi为 S igi′,导致聚合签名Sig̸=Sig′ ,这样e(g,Sig′)=e((AID1·ppub)H2(AID),λβµ−β)是不满足的。
因此,本方案中的云服务器试图产生伪造的完整性验证证明响应信息,通过TPA的验证在计算上是不可行的。 证毕
定理2 支持条件身份匿名的外包云存储医疗数据完整性验证方案可确保用户的条件身份隐私性。
证明 首先说明用户身份对外的隐私性。在本方案中,每个医疗用户用以唯一标识真实身份信息的是 RID∈{0,1}ρ,PKG生成对应的匿名身份:AID=(AID1,AID2) ,其 中A ID1=gr,A ID1与g是乘法循环群中的元素,在多项式时间内,由于离散对数困难问题,敌手获得了 A ID1与g而设法计算出r是可以忽略的。此外,PKG利用主私钥s计算AID2=RID⊕H1(AID1s||ppub||T),由于PKG是基于身份密码体制中的权威可信实体,主私钥s是PKG秘密保存的,不能被敌手获取。因此,即使敌手获取到了 AID1=gr和ppub=gs,基于CDH困难问题假设,敌手也无法计算出 A ID1s=grs,进而不能完全恢复用户的真实身份R ID。
5 性能分析
将本设计方案与相关方案在完整性验证方面进行性能分析与比较,这些方案分别是:RDIC方案[21],IBPA方案[18],以及CIPPPA方案[16]。为便于表述:用符号P air 表 示双线性对算法运算时间,E xp表示普通模指数运算时间,M ult表示椭圆曲线中的倍点运算运行时间,A dd表示椭圆曲线上的加法运算时间,h a 表示普通哈希函数运算时间,m ult表示普通模乘运行时间, Ha表示哈希函数映射到基于椭圆曲线加法群上的点的运行时间。关于通信开销,本文用 |n| 表示集合{ 1,2,...,n}中元素的大小,定义Zp中 元素比特长度为|p|; 此外,|G|是 循环群G元素的比特长度,定义零知识证明通信开销的比特长度为| pf|。
本文将4个方案进行实验仿真分析与比较,实验仿真以操作系统为Windows 10,处理器为Intel(R)Core(TM)I5-4210 2.40 GHz,内存为4 GB的主机以及jpbc-2.0.0密码库为实验环境,所有算法的计算开销时间都使用C语言及其版本号为5.6.2密码算法基础函数库MIRACL得出。
在本方案中,由于用户存储了审计辅助信息在TPA端,TPA在发送挑战信息给云服务器之后,在等待云服务器响应的时间内,TPA可以预计算λ,在方案设计中,我们采用了同态哈希函数设计签名,进而将λ的计算复杂性优化为常量,故而λ的计算可以忽略。在进行完整性验证时TPA仅需要 2次模指数运算、 2次双线性对运算、2次普通模乘运算和1 次普通哈希运算,其计算开销为2Exp+2Pair+2·mult+ha,同理经过理论分析可以得到RDIC方案,IBPA方案,以及CIPPPA方案相应的TPA端的计算开销分别为(2c+6)·Exp+(c+1)·Pair +c·mu,lt(2c+4)·Mult+3Pair+(2c−1)·Add+(c+ 2)·Ha+(c+1)·ha , 以 及(c+2)·Mult+3Pair+(c −1)·Add+c·Ha+ha。这4 个方案在完整性验证阶段,TPA端的计算开销的理论比较结果如表1所示。另外,在云服务器响应完整性证明信息给TPA时,完整性证明响应信息通信开销为 2 |G|+|p|,我们也可以分析得到RDIC方案,IBPA方案,以及CIPPPA方案相应的完整性验证证明的通信开销分别为3 |G|, 3 |G|+|p|,以及3|G|+|p|。这4个方案在TPA端产生的挑战信息通信开销、完整性证明响应信息通信开销的理论比较结果如表2所示。在这里图3的实验仿真结果表明了本设计方案比现有的数据完整性验证方案更加轻量级,例如,当挑战数据块的数量为 500时,TPA实际上大约只需要0.013 s就可以完成验证任务,而在RDIC方案,IBPA方案,以及CIPPPA方案中,TPA分别大约需要3.8963 s, 4.9647 s和1.1098 s。在完整性验证阶段,TPA的验证计算开销几乎常量,不会随着挑战数据块数量的增加而增加。而在其他方案中,TPA的用于验证完整性的时间都随着挑战数据块的数量增加而增加,在挑战数据块的数量很大时,这将非常消耗TPA的计算资源。图4的实验仿真结果表明本设计方案在完整性验证证明信息通信开销方面低于IBPA方案和CIPPPA方案。本设计方案在完整性验证证明信息通信开销方面与RDIC方案一致,但在挑战信息阶段RDIC方案的通信开销显然远远高于其他方案,而且RDIC方案不具备本设计方案的条件匿名安全特性。因此,本设计方案在TPA端具有合理的通信开销,而且根据前面可知,本方案计算开销在随着数据块数量增加时,不会随着数据块数量呈线性增长趋势,拥有更为明显的计算效率优势。因此,从以上性能分析与实验仿真结果可知,本设计方案在TPA的完整性验证过程中,整体上在计算开销与通信开销方面也有较大优势。而且本设计方案同时确保了存储正确性,用户的条件身份隐私保护,以及防止TPA的数据恢复攻击的安全特性,非常有利于本方案在云辅助无线医疗传感器网络环境的安全高效部署。
图3 完整性验证计算开销实验仿真
图4 完整性验证证明通信开销实验仿真
表1 完整性验证计算开销比较
表2 完整性验证通信开销比较
6 结束语
针对用户身份隐私保护,云存储医疗数据完整性,以及现有完整性验证方案在TPA端计算开销较大等问题,该文提出一种条件身份匿名的外包云存储医疗轻量级数据完整性验证方案。该方案结合同态哈希函数设计了一种基于身份的聚合签名算法,来进行高效安全的完整性验证。方案是基于身份密码系统设计的,有效避免了对公钥证书的复杂管理,同时保证了用户的身份隐私,也结合实体身份溯源技术来对系统中存在的恶意用户进行跟踪、揭示和问责。安全性分析与性能评估结果表明本方案可以安全高效地部署在云辅助无线医疗传感器网络。