智慧医疗环境下支持属性更新的加解密外包方案*
2022-09-21马佳佳曹素珍窦凤鸽丁晓晖丁宾宾王彩芬
马佳佳,曹素珍,窦凤鸽,丁晓晖,丁宾宾,王彩芬,2
(1.西北师范大学计算机科学与工程学院,甘肃 兰州 730070;2.深圳技术大学大数据与互联网学院,广东 深圳 518118)
1 引言
在大数据时代,为了有效地节省本地存储成本,用户通常选择将海量的数据存储在云服务器上。使用强大的云服务器资源不仅可以解决海量数据存储问题,而且还可以提供高效的计算服务[1]。然而,由于它主要提供分布在远离用户的核心网络中的资源,具有高带宽耗费和高传输时延等缺点,研究人员提出了雾计算。雾计算(也称为边缘计算)是云计算的扩展,它使计算和存储能够在网络边缘实现。因为存储和处理任务可以由大规模、无处不在和分散的设备执行,无需第三方干预即可相互通信并可能相互合作。雾计算为各种用户提供了新的应用程序和服务,具有更强大CPU、更大内存和更大存储空间的特定高端服务器[2,3]。
相比传统病历,电子病历具有使用方便、及时性强和成本低的优点,再加上计算机和通信技术的快速发展,使得电子病历成为医疗服务必不可少的工具,人们也越来越关注医疗系统的安全性和隐私保护问题[4]。文献[5]提出了区块链与可搜索加密结合的电子病历共享方案,利用可搜索加密技术将关键字索引保存在私有链上,实现医疗数据的隐私保护。文献[6]提出了基于区块链的电子病历数据共享方案,使用可搜索加密技术实现安全索引。但是,文献[5,6]都未能实现医疗数据的细粒度访问控制且未考虑数据使用者密钥可能泄露的问题。
基于属性的加密方案ABE(Attribute-Based Encryption)[7]中,每个用户由一组属性来标识,并且这些属性的一些功能被用来确定每个密文的解密能力[8]。其中,密文策略属性基加密方案[9]将访问策略嵌入密文中,患者指定具有哪些属性的医生解密患者病历信息,不仅保护了患者病历信息,而且还实现了一对多的细粒度访问控制。文献[10]提出了一种支持快速加密的基于属性的加密方案,采用密文策略的属性外包加密方案保证了用户的机密性,同时采用外包方案降低了系统的计算开销,提高了传输效率。多机构授权下可追踪可隐藏的属性基加密方案[11]和智慧城市关键词搜索技术中隐藏敏感策略的基于密文策略属性的加密方案[12]都采用了密文策略的属性基加密方案,但未将加解密方案外包给代理服务器,大大增加了系统的计算开销。基于属性的加密方案在策略构造上有访问树和访问矩阵2种方式。文献[13]提出了雾环境下的电子健康外包和属性撤销的高效访问控制方案,其访问策略的构造采用了访问矩阵方式。相比访问矩阵,访问树具有易构造,可读性强和加密效率高的优势。
为了实现用户的属性更新,文献[14]提出了一种基于云的用户属性更新的访问控制方案,但不适用于外包计算框架。文献[15]提出了支持属性撤销和用户属性更新的方案,但没有将加解密运算外包给代理服务器,使得数据拥有者和数据用户的计算负担增大,同时降低了效率。文献[16]基于雾计算提出了一种具有外包和属性更新能力的高效访问控制方案,但并未实现加密外包计算,降低了数据拥有者的计算效率。
基于上述问题,本文提出了智慧医疗环境下支持属性更新的加解密外包方案,主要贡献有:
(1)将部分加解密运算外包给雾节点,有效减少了数据拥有者和数据用户的计算负担,降低了传输时延,提高了通信效率;
(2)将云服务器视为半可信实体,在密文更新时,向云服务器传输属性相关的哈希值,有效保护了用户的隐私;
(3)实现数据拥有者属性的更新,更加符合实际的医疗应用环境。
最后,基于DBDH困难问题证明了本文方案是安全的,通过与现有其它方案的数值分析比较,表明本文方案具有更高的效率。
2 预备知识
2.1 符号说明
智慧医疗环境下支持属性更新的加解密外包方案中使用的部分符号说明如表1所示。
Table 1 Symbol description表1 符号说明
2.2 双线性映射
设p是一个大素数,G和GT是2个阶为p的乘法循环群,G到GT的双线性映射e:G×G→GT满足以下性质[17]:
(2)非退化性。存在g∈G,有e(g,g)≠1。
(3)可计算性。对任意的g1,g2,存在一个有效算法计算e(g1,g2)。
2.3 访问树
定义T为访问树,它的每个叶节点代表一个属性,每个非叶节点代表一个门限节点。numx表示节点x的所有子节点的个数,d表示数据拥有者设置的阈值数,且0 如图1所示,假设访问树的阈值为2,访问子树的叶节点属性为{甘肃省人民医院,普外科系统,甲亢患者}。当用户的属性为{兰州大学第二医院,内科系统,疝气患者}时,不满足访问树的任何2个属性,秘密值不能通过线性秘密共享来恢复;当用户的属性为{甘肃省人民医院,普外科系统,甲亢患者}时,满足访问树的最低阈值,可以访问根节点的秘密值,因此最终的明文可以通过用户的私钥解密密文来获得。 Figure 1 Access tree图1 访问树 设G1和G2是p阶的双线性群,e:G1×G1→G2,设g是群G1的生成元,给定元组y={g,ga,gb,gc,e(g,g)abc},其中a,b,c∈RZp,对于多项式时间算法Y来说,区分有效的元组e(g,g)abc与群中G2的随机元素r是困难的[18]。令算法Y输出一个比特h∈{0,1},如果等式pr[Y(y,T=e(g,g)abc)=0]-pr[Y(y,T=r)=0]≥δ成立,则称Y在解决DBDH问题上的优势为δ。 智慧医疗环境下支持属性更新的加解密外包方案模型如图2所示。方案共有6个实体,分别为可信中心CA(Center Authority)、授权机构AAs(Attribute Authorities)、雾节点FN(Fog Node)、医疗云服务商CSP(Cloud Service Provide)、数据拥有者DO(Date Owner)和数据使用者DU(Date User)。 Figure 2 Model of encryption and decryption outsourcing solution supporting attribute update图2 支持属性更新的加解密外包方案模型 (1)CA是完全可信的一方,其主要作用是负责管理全局参数的设置,并且为每一个DU和AA生成唯一的身份标识uid和aid。 (2)AAs:授权机构之间相互信任,可将医院视为授权机构,主要为每个DO和FN根据其管理的属性生成密钥。在属性更新阶段,AAs为CSP生成用于更新密文的代理密钥的更新密钥 。 (3)FN的主要作用是承担DO和DU的部分加解密工作。加密阶段,患者将部分加密运算传输给FN,FN执行加密操作;解密阶段,医生将部分解密计算外包给FN,然后医生进行最后的解密,这样可有效减少DO和DU的计算开销。 (4)CSP的主要作用是提供存储功能,从FN接收密文,然后存储并发送给FN。此外,还在更新相关属性时执行密文更新。 (5)患者作为DO,对自己的病历根据其设置的加密算法对关键信息进行加密,然后将加密后的病历上传到FN。 (6)医生作为DU,从FN获得部分解密的密文之后,执行剩余的解密操作,最终获得患者病历。 令G和G1是阶为p的双线性群,其生成元为g,e:G×G→G1。定义一个哈希函数H:{0,1}*→G。 (1)系统初始化。 ①GlobalSetup(1λ)→PP。 该阶段由可信中心执行。输入安全参数λ,输出公共参数PP={G,p,g,e,H}。CA为每一个授权机构AA和数据使用者DU生成唯一的身份标识aid和uid。定义全局属性U={u1,u2,…,un}。 ②AuthSetup(PP,aid)→{MSKaid,PKaid}。 该阶段由授权机构执行。令AAaid管理的属性集为Aaid,且A1∩A2∩…∩Aaid…∩AAID≠∅,其中AID为授权机构数量。授权机构AAaid随机选取αaid∈Zp,对于每一个j∈Aaid,选取βj,aj,vj∈RZp,计算属性密钥PKj=gvj。系统主密钥为MSKaid={aj,gαaid,βj},公钥为PKaid={H(j)aj,e(g,g)αaid,PKj}。 (2)密钥生成。 KeyGen(PP,uid,MSKaid,S)→{SKaid,FSKaid,uid}。 该阶段由授权机构执行。数据使用者要想访问加密数据,其密钥必须满足访问策略才能解密数据文件。 Aaid,uid表示由授权机构AAaid管理的用户uid的属性集,且Aaid,uid⊆S,其中S为所有用户属性集。对于任意的j∈Aaid,uid: ①选取随机数raid,taid∈Zp,计算部分密钥构件Kaid,uid=(graidvj·H(j)aj)taid,Laid=gajtaid,Faid=gαaid+raid/βj; ②生成雾节点的转换密钥FSKaid,uid={Faid,Kaid,uid,Laid}和DU的私钥SKuid={Faid,taid}。 (3)数据加密。 ①DOEncrypt(PP,M,T,PKaid)→CTpart。 该阶段由数据拥有者执行。数据拥有者通过构造访问树T加密消息M。 a 构造访问策略。定义R为访问树的根节点。对于根节点R,数据拥有者加密算法随机选取一个秘密值s∈Zp,选择一个d-1次多项式Y(·),令YR(0)=s。令Q是访问树T中与叶节点相关联的属性集。 最终得到部分加密密文: CTpart={C,C0,∀att(n)=j∈Q:C1,C2} ②FNEncrypt(T,PP,CTpart)→CT。 该阶段由雾节点执行。数据拥有者将加密的部分密文发送给雾节点,雾节点执行进一步加密操作。 a 对于每一个节点n∈T1,雾节点加密算法从根节点R开始,根据其阈值d开始自上向下为每一个节点n选择一元d-1次多项式Y(·)。 b 对于父节点p(c)的子节点c,Yc(0)=Yp(c)(index(n))。 最终,密文CT={T,C,C0,∀att(n)=j∈Q:C1,C2}。 (4)数据解密。 ①FNDecryct(PP,CT,uid,FSKaid,uid)→CT′part。 该阶段由雾节点执行,当数据使用者的属性集能满足访问树T时,才能够解密得到消息M。 a 当n为叶节点时,令j=att(n)。如果j∉Auid,则Fn=⊥。 否则,计算: e(g,g)Yn(0)taidraid b 当n为非叶节点时,如果n 令IC={∀c∈Cn:Ic},计算: e(g,g)raidtaidYn(0) 最终,CT′part=(T,C,C0,Fn)。 ②EUDecryct(CT′part,SKaid)→M。 该阶段由数据使用者执行。数据使用者对雾节点解密的密文进行进一步解密,得到最终的消息消息M: (5)属性更新。 ①更新密钥KeyUpdate(SKuid,i)→USKuid。 当数据拥有者的信息需要更新时,如更新用户uid的某一属性i时,需要执行该阶段。假设患者的病历信息增加了病症,需要不同科室的医生症治时,执行该阶段。该阶段由授权机构执行。 a 随机选取v′j∈Zp,授权机构AAaid为用户uid产生一个升级密钥UKuid=g(v′j-vj)taid,更新私钥相关联的密钥构件Kaid,uid,有K′aid,uid=Kaid,uid×UKuid; b 对于∀j∈S,当j≠i时,有Kaid,uid=(graidvj·H(j)aj)taid;当j=i时,有K′aid,uid=Kaid,uid×UKuid=(graidv′j·H(j)aj)taid。 c 生成代理密钥Km=vj/v′j。 ②更新密文CTUpdate(CT,Km)→CTU。 密文更新利用代理重加密技术,有利于减少数据拥有者的计算负担。密文更新时,向医疗云服务商提供包含更新属性j的哈希值H(j)后,医疗云服务商通过判断用户提交的哈希值H(j)′与哈希值H(j)是否相等来更新密文,这样能确保更新属性不被泄露,有效保护了数据拥有者的属性信息。 CTU={T,C,C0,∀j=att(n)∈Y,C′1,C′2}。 定理1假设存在多项式时间的敌手以不可忽略的优势φ(φ>0)攻破本文方案。那么,存在一个多项式时间算法QA,以φ/2的优势解决DBDH问题。 证明设G1是素数阶p的双线性群,其生成元为g,设双线性映射e:G1×G1→G2。首先挑战者C随机选择x,y,z∈RZp,随机元素F∈G2且b∈{0,1},如果b=0,挑战者C设置(g,X,Y,Z,L)=(g,gx,gy,gz,e(g,g)xyz),其中L=e(g,g)xyz;否则设置(g,X,Y,Z,L)=(g,gx,gy,gz,F),其中L=F。 系统建立首先,敌手A选择一个访问树T*并将访问树T*发送给挑战者C。 阶段2和阶段1相同。 挑战敌手A提交b的一个猜测b′。若b=b′,那么挑战者C输出0,即T=e(g,g)xyz;否则,挑战者C输出1,即T=F。如果T=e(g,g)xyz,那么密文CT为有效密文,则敌手A的优势为φ,则有Pr[QA(g,gx,gy,gz,L=e(g,g)xyz)=0]=1/2+φ;如果T=f,则密文CT是随机选取的,则有Pr[QA(g,gx,gy,gz,L=F)=0]=1/2。因此,挑战者C的优势δ表示为: 表2是本文方案与文献[15,16]方案的功能比较,从表2可以看出,本文方案最大的优势在于将加解密运算部分外包给雾节点,同时满足属性的更新。 本文方案与文献[15,16]方案在性能比较中,用NE1表示群G上的指数运算次数,NE2表示群G1上的指数运算次数,NP表示双线性运算次数,Nct表示与密文相关的属性个数,Nsk表示与用户私钥相关的属性个数,NM表示满足访问结构的最小内部节点数。 Table 2 Comparison of characteristics of relevant schemes 表3是本文方案与文献[15,16]方案的计算开销比较。数据拥有者的计算开销主要取决于加密数据的不同授权机构生成的公钥。本文方案支持外包加密,因此数据拥有者的计算开销比文献[15,16]方案的计算开销低些。另外,数据使用者的属性密钥存储在雾节点中进行外包解密,因此数据使用者的计算开销低于文献[15]方案的计算成本。 为了对比方案效率,本文还通过实验对现有其它方案和本文方案进行了更直观的比较。实验环境为Intel(R)Core(TM)i5-8250U CPU@1.60 GHz 1.80 GHz处理器8.00 GB RAM,使用语言为JAVA,方案实现基于JPBC(Java Pairing-Based Cryptography library)库。 图3是密钥生成阶段随着属性个数的递增,授权机构为用户生成密钥所消耗的时间,在密钥生成阶段,因为双线性配对的运算时间远大于指数运算的时间,所以文献[16]方案消耗的时间明显多于文献[15]方案和本文方案的时间。图4是本文方案和对比方案的整个加密阶段所消耗的时间,包括雾节点的加密时间和数据拥有者的加密时间。图5是本文方案和对比方案整个解密阶段所消耗的时间,包括雾节点解密和数据用户的解密时间。从图4和图5可以看出,本文方案与文献[16]方案加解密时间远优于文献[15]方案的,本文方案与文献[16]方案将大部分运算外包给雾节点,数据使用者仅有少量的运算,这样大大提高了整个系统的效率。 Table 3 Calculation cost comparison of relevant schemes Figure 3 Computational overhead during key generation图3 密钥生成阶段计算开销 Figure 4 Computational overhead during encryption图4 加密阶段计算开销 Figure 5 Time during decryption图5 解密阶段所消耗时间 图6是雾节点外包解密所消耗的时间,从图6中可以看出,本文方案略优于文献[16]方案。在文献[15,16]方案中,由于数据拥有者执行所有的加密操作,因此增加了数据拥有者的计算开销,降低了方案整体效率;而在本文方案中,部分加密运算由雾节点执行,有效降低了计算开销,提高了效率。图7是3个方案加解密阶段的总体时间对比。 Figure 6 Time during outsourcing decryption图6 外包解密所消耗时间 Figure 7 Running time during encryption and decryption图7 加解密运行时间 上述实验结果表明,本文方案在数据所有者加密、数据用户解密和密文更新过程中的计算开销较小。 本文提出的在智慧医疗环境下支持属性更新的加解密外包方案将部分加解密运算外包给雾节点,有效地减少了数据拥有者和数据用户的计算负担,同时提高了通信效率;且在密文更新时,向云服务器传输属性相关的哈希值而非属性值,有效保护了用户的隐私。最后,基于DBDH问题证明了本文方案是安全的,数值分析结果表明,本文方案在计算效率上具有一定的优势。2.4 困难问题假设
3 方案描述
3.1 方案模型
3.2 方案构造
4 安全性证明
5 性能分析
6 结束语