李 玲,王 峥,李 娜
1.太原理工大学 信息与计算机学院,山西 晋中 030600
2.国网山西省电力公司,太原 030024
云计算被广泛用于向用户提供各种计算和存储资源[1],然而随着物联网的发展,数据爆发式地增长,云计算越来越不适应物联网,数据传输和云服务器处理数据造成的网络延迟不满足一些物联网应用的实时需要。因此,在2012 年思科正式提出雾计算[2]的概念,雾计算作为云计算的延伸,将计算和存储能力扩展到网络边缘,减少了网络延迟,适用于物联网,然而对可靠性和安全性要求较高的应用,把数据存储到云服务器或雾节点中,用户失去对数据的绝对控制权[3],如何保证对数据的安全访问是云雾环境中的一大难题。
基于密文策略属性加密的访问控制技术[4]适合于云雾存储数据共享系统,但其计算开销对于资源有限的物联网设备来说负担较大,将设备处的计算外包是解决此问题的有效手段。在传统的云存储中,Ma等人[5]将大量的计算外包给加密服务提供商或解密服务提供商,用户端只需进行少量的加解密计算。Lounis 等人[6]提出了应用在医疗领域的无线传感器网络的安全云架构,将加密操作外包给信任网关,然而该方案要求网关可信。Belguith 等人[7]将解密计算外包给半可信云服务器,并使用隐藏访问策略保护用户的隐私。Ning等人在单授权机构模型下将解密计算外包给云服务器[8],而Debnath[9]和Dhal[10]的方案都是在多授权机构模型下将解密计算外包给云服务器,更符合实际应用场景。随着雾计算的广泛应用,基于云存储的物联网系统加入了雾节点层,形成了云雾架构,Zhang等人[11]提出一种雾计算中支持数据外包的访问控制方案,将有关访问策略的加密计算和部分解密外包给雾节点,该方案适用于单授权机构模型中。Miao 等人[12]也在单授权机构中将部分加解密计算的外包给雾节点且实现了数据的搜索。而Vohra等人[13]设计出了基于多授权机构下的数据访问控制方案,但需引入代理服务器辅助雾节点解密数据。之后Guo[14]和Fan[15]等都利用雾节点在实现部分解密外包的同时加入了其他功能,但在加密阶段仍然对用户造成负担。
基于上述考虑,本文构建一个适用于雾计算环境的具备计算外包能力的多授权访问控制方案。在该方案中,将数据的部分加密和解密卸载到雾节点中,有效地降低了用户端的计算负担,适用于资源有限的物联网设备。
定义1(雾计算)雾计算由云计算引申而来,是一个虚拟化的平台,通常在终端设备和云服务器之间部署众多分布广泛、性能较弱的设备来提供计算,存储和网络服务,具有低延时、位置感知和移动性支持等特点[2]。相较于云计算,雾计算的计算能力较弱,但雾计算的架构呈分布式,更符合互联网去中心化的要求。
定义2(双线性映射)设G1,G2都是阶为p的循环群,p是素数,若映射e:G1×G1→G2满足以下性质:
(1)双线性:对于任意a,b∈Zp和R,S∈G1,有e(Ra,Sb)=e(R,S)ab。
(2)非退化性:存在R,S∈G1,使得e(R,S)≠1G2。这里1G2代表群G2的单位元。
(3)可计算性:存在有效的算法对任意的R,S∈G1,计算e(R,S)的值。那么称e是一个双线性映射。
定义3(访问树)[11]设ψ是一棵根节点为R的访问树,n为ψ的节点。每个叶子节点n代表属性,非叶子节点n代表门限,门限值用nt表示,孩子数目用nc表示。当nt=nc时表示该节点是与门,当nt=1 时表示该节点是或门。
对于判断一个属性集合S是否满足ψ,首先设以n为根节点的子树为ψn,n的孩子节点为n′,然后计算ψn′(S)。若有nt个孩子节点满足ψn′(S)=1 ,则ψn(S)=1 ,表示S满足访问树ψn。若ψR(S)=1,则表示属性集合S满足ψ。
定义4(判定双线性Diffie-Hellman 假设)设G是阶为素数p的双线性群,g是群G的生成元,双线性映射为e:G×G→GT。从Zp中随机选择三个数a,b,c∈Zp,对于多项式时间算法Y来说,给定参数Q=(g,ga,gb,gc),区分e(g,g)abc与群GT中的随机元素r是困难的。令Y的输出为0或1,若下式成立:
则称Y解决判定双线性Diffie-Hellman问题的优势为ξ。
若无多项式时间算法以不可忽略的优势解决判定双线性Diffie-Hellman 问题,则称判定双线性Diffie-Hellman(Decisional Bilinear Diffie-Hellman,DBDH)假设在群G上是成立的。
本文所提方案的系统图如图1所示,主要包括中央授权机构、属性授权机构、云服务器、雾节点、数据拥有者和数据访问者6个实体。
(1)中央授权机构CA:中央授权机构完全可信,它主要负责整个访问系统公共参数和主密钥的发布。
(2)属性授权机构AA:属性授权机构完全可信,它主要负责用户属性私钥的分发。
(3)云服务器CS:云服务器是半可信的,主要负责存储数据。由于是半可信的,云服务器存在泄漏隐私数据的安全风险,即它们会诚实比执行任务,但是由于好奇心会窥探数据中的隐私。
(4)雾节点FN:雾节点是半可信的,主要负责存储数据和部分加解密计算,与云服务器和用户进行通信。
(5)数据拥有者DO:数据拥有者主要指资源有限的物联网设备,其加密的数据需上传到云服务器中进行存储。
(6)数据访问者DU:数据访问者也是一系列资源有限的物联网设备,向云服务器或雾节点请求访问,只有满足访问结构的数据访问者才能正确访问数据。
图1 改进的雾计算下基于多授权机构的系统图
本文所提方案构造总体框架如图2 所示,共有4 个阶段,分别为系统建立阶段、密钥生成阶段、数据加密阶段和数据解密阶段,每个阶段都由多项式时间算法来实现,下面分别对每个阶段的构造过程和算法实现进行阐述。
图2 方案构造总体框架图
(1)系统建立阶段
该阶段包含Setup 和AASetup 两个多项式时间算法,首先由中央授权机构对全局进行初始化,发布公共参数和主密钥给其他实体,然后由属性授权机构进行初始化,生成公私钥对。
Setup(1τ)→{PP,MK}:中央授权机构执行该算法,以安全参数τ作为输入,选择阶为素数p的双线性群G,g是群G的生成元,并且选择双线性映射e:G×G→GT。假设系统中属性个数为z个,属性授权机构个数为m个,定义属性集合A={a1,a2,…,az}和属性授权机构集合U={u1,u2,…,um}。随机选择α,β∈ZP,g1∈G,输出系统的公共参数PP为:
PP={G,g,gα,g1,e(g,g)β,A,U}主密钥MK为:
MK={α,gβ}
AASetup(PP,Aui,ui)→{APKui,ASKui} :属性授权机构ui运行该算法进行初始化,将公共参数PP、属性授权机构的索引ui∈U{ }0 和ui中所授权的属性集Aui⊆A作为输入。每个属性授权机构ui授权的属性集Aui是互不相同的,即Au1⋂Au2⋂…⋂Aum=∅ ,各个属性授权机构包含的属性集的合集为A,即Au1⋃Au2⋃…⋃Aum=A。随机选取tui∈Zp,为属性集Aui中的每一个属性aui,j随机选取bui,j∈Zp,输出属性授权机构ui的密钥APKui和ASKui:
(2)密钥生成阶段
该阶段包含AAKeyGen 和CAKeyGen 两个多项式时间算法,数据访问者将属性集发送给属性授权机构请求生成密钥,然后属性授权机构利用属性集生成属性密钥发送给中央授权机构,最后中央授权机构生成用户私钥发送给数据访问者。
AAKeyGen(PP,ASKui,Aid)→{SKui,id} :该算法由属性授权机构ui执行,以公共参数PP,属性授权机构ui的私钥ASKui,数据访问者id的属性集Aid作为输入,为每一个属性aui,j∈(Aui⋂Aid)计算令数据访问者id的属性私钥SKui,id为:
属性授权机构ui将SKui,id发送给中央授权机构以进一步生成用户私钥。
CAKeyGen(MK,{SKui,id}ui∈U)→SKid:该算法由中央授权机构执行,以主密钥MK和数据访问者id的属性私钥SKui,id作为输入,为数据访问者id随机选取λ,θ∈ZP,计算,则数据访问者的私钥SKid为:
SKid={D,D1,D2,{∀aui,j∈Aid:Dui,j}}CA将SKid发送给数据访问者id。
(3)数据加密阶段
该阶段包含FogEncrypt和DoEncrypt两个多项式时间算法,分别由雾节点和数据拥有者执行。数据拥有者将数据M上传到云存储前,需要对数据进行加密,而为了降低加密负担,数据拥有者先将访问树发送给雾节点,由雾节点对访问树进行加密得到部分密文,然后雾节点将部分密文发送给数据拥有者以进行进一步加密,最后数据拥有者将密文经由雾节点发送给云进行存储。
FogEncrypt(PP,ψ,{APKui}ui∈U}→{CT1}:由雾节点执行该算法,数据拥有者定义一个访问树ψ发送给雾节点,对于访问树ψ中的每个节点n,雾节点选择一个多项式qn,从根节点R开始,从上到下定义多项式,对于ψ中的每个节点n,它的门限值nt和多项式qn的次数fn的关系为nt=fn+1。
对于根节点R,雾节点随机选择s′∈Zp,令qR(0)=s′,然后随机选择fR个其他的值完整定义qR。对于其他的每个节点n,唯一且任意的分配一个索引值In,设n的父节点为n′,令qn(0)=qn′(In),并且随机选择fn个其他的值完整定义qn。
令Aψ为ψ中叶子节点代表的属性集合,no(aui,j)为属性aui,j对应的叶子节点,雾节点计算得到密文CT1=将CT1发送给数据拥有者。
DoEncrypt(CT1,k,PP,M)→{CT}:由数据拥有者执行该算法,首先使用对称密钥k加密数据M得到Ek(M),然后随机选择s∈Zp,计算,输出密文
(4)数据解密阶段
该阶段包含FogDecrypt 和DuDecrypt 两个多项式时间算法,分别由雾节点和数据访问者执行。为了降低数据访问者的解密负担,由雾节点先对密文进行部分解密,然后将部分解密后的密文发送给数据访问者以进行最终解密,若数据访问者的属性集合满足访问树ψ,则他可以成功解密得到对称密钥k,然后利用k解密密文Ek(M)进而得到数据M。
FogDecrypt()→CT′:由雾节点执行此算法,从云服务器中获取密文,从数据访问者中获得部分私钥SKid′={D1,D2,{∀aui,j∈Aid:Dui,j}},该算法是一个递归算法,需要对访问树ψ中的节点n进行递归计算
①若n是叶子节点:如果n代表的属性不属于数据访问者的属性集合,则Fn=null;否则Fn=e(Dui,j,Cui,j)=其中no(aui,j)=n。
② 若n不是叶子节点:如果nc <nt,则Fn=null;否则,设Sn为节点n的任意nt个孩子节点n′的集合,计算Fn′=FogDecryptNode(CT,n′,SKid′),设SI,n={∀n′∈Sn:计算如下:
若数据访问者的集合满足访问树ψ,则雾节点可以递归得到关于ψ的根节点R的FR:
之后计算:
最后,雾节点发送CT′={Ek(M),C,C′,Y}给数据访问者。
DuDecrypt(CT′,SK)→M:数据访问者接收到从雾节点发来的部分解密密文CT′,使用自己的私钥进行如下解密计算得到对称密钥k:
之后数据访问者将利用对称密钥k来解密Ek(M)得到明文M。
定理1假设DBDH 问题是困难的,攻击者的挑战访问树为ψ,则不存在多项式时间的攻击者能选择访问结构明文攻破本方案。
证明假设攻击者A 能以不可忽略的优势ξ选择性地攻破本文方案,其挑战访问树为ψ,构造挑战者B以不可忽略的优势攻破DBDH假设。
系统建立:挑战者B 以DBDH 挑战参数Q=(g,ga,gb,gc)和T作为输入,攻击者A 选择挑战访问树ψ发送给挑战者B。
初始化:挑战者B 模拟Setup 和AASetup 算法来初始化参数。B 随机选择β′∈Zp,令β=β′+ab,得到公共参数PP={g,ga,g1,e(g,g)β,A,U}。对于所有的aui,j∈A,随机选择,如果,计算设置APK为:
B 发送PP和APK给 A 。
阶段1攻击者A 提交一系列属性集合Ac⊆A给B 来请求对应的私钥,Ac的限制为不满足ψ。本文采用中央授权和属性授权机构两方计算生成用户私钥,挑战者B 以整体形式回复A 的私钥请求,B 随机选择λ′∈ZP,计算λ=λ′-b,设置。对于Ac中的属性aui,j,如果aui,j∈Aψ,B 计算;否则,。最后,B 发送私钥SK={D,D1,D2,{∀aui,j∈Ac:Dui,j}}给攻击者 A 。
挑战:攻击者A 给挑战者B 提交了两个等长的消息m0和m1,在收到消息后,B 发送ψ给雾节点,雾节点随机选择s′∈Zp,根据ψ为aui,j∈Aψ分配秘密值sui,j,然后雾节点发送部分密文CT1给B,CT1设置如下:
B 随机选择ω∈{0,1},加密mω得到Ek(mω),计算C=mω⋅e(g,g)βc=mω⋅e(g,g)(β′+ab)c=mω⋅e(g,g)abc⋅e(g,g)β′c,发送挑战密文CTω=给 A 。
阶段2同阶段1
猜测:攻击者 A 输出关于ω的猜测ω′∈{0,1},如果ω′=ω,挑战者 B 输出0 表示T=e(g,g)abc;否则输出1,表示T为群GT中的随机元素r。
如果T=e(g,g)abc,在这种情况下 A 的优势是ξ。因此pr[B(g,ga,gb,gc,T=e(g,g)abc)=0]=1/2+ξ。
如果T=r,对于 A 来说CTω是完全随机的,因此pr[B(g,ga,gb,gc,T=r)=0]=1/2。
所以有:
即挑战者B 能够以一个不可忽略的优势解决DBDH问题,但这一问题已被证明是困难的,所以假设不成立,所以证明方案达到了选择明文安全性,证毕。
本文方案的性能评估从理论分析和实验分析两方面进行。理论分析方面,将本文方案与已有几种外包方案进行对比,分析各方案的功能、存储成本和通信成本,得到结果列表;实验分析方面,在相同环境中进行实验仿真,分析各方案数据拥有者端加密和数据访问者端解密随着属性个数增长所需要的时间、中央授权机构生成密钥随属性个数增长所需要的时间,分别得到结果图。分析过程中所用到的符号定义如表1所示。
表1 符号定义表
(1)功能比较
表2 将本文方案与其他方案的功能进行比较。文献[4]的方案是没有任何外包能力的,文献[10]实现了多授权机构环境下的解密外包,但文献[10]不适用于雾环境且没有实现加密计算的外包,文献[11]实现了雾环境下的加解密外包计算,但不适用于多授权机构环境,文献[15]实现了多授权机构雾环境下的解密外包,但加密阶段仍然造成较大的负担。本文方案实现了多授权机构雾环境下的加解密外包,将加解密部分操作外包给雾节点,减少了数据访问者端和数据拥有者端的负担,更适用于资源有限的物联网设备。
表2 相关方案功能比较表
(2)存储成本比较
表3 将本文方案与其他方案进行了存储成本的比较。中央授权机构CA和属性授权机构AA的存储成本主要来自于主密钥,本文方案的授权机构存储成本相较于文献[10]和文献[15]减少了AA的存储成本,相较于文献[11]减少了CA 的存储成本。云服务器CS 的存储成本主要来自于密文长度,表中各方案的密文长度都与密文相关属性个数|ACT|线性正相关,随着|ACT|的增加,本文方案与文献[11]方案密文存储成本是少于其他两种方案的。雾节点FN的存储成本和数据拥有者DO的存储成本主要来自于公钥,文献[10]和文献[15]都没有使用雾节点进行加密外包,不考虑雾节点的存储成本;文献[11]和本文方案都利用了雾节点进行加密外包,雾节点存储公钥以加密数据,这样数据拥有者端的存储成本大大降低,明显少于文献[10]和文献[15]。数据访问者DU 的存储成本主要来自于私钥,文献[15]由于将部分密钥存储在CS中,所以DU存储成本较低,而其他方案DU存储成本与其本身拥有的属性个数|Aid|线性正相关。
表3 相关方案存储成本比较表
表4 相关方案加解密阶段通信成本比较表
(3)通信成本比较
表4 将本文方案与其他方案在加解密阶段的通信成本进行了比较。在加密阶段,通信成本主要由授权机构的公钥和密文产生,本文方案密文长度少于文献[10]和文献[15],但由于加密计算外包,增加了外包过程中访问树和部分加密密文的通信成本,总体来看本文方案通信成本少于文献[10]和文献[15];另外本文方案是适用于多授权机构的,需要由 |U|个AA 发送公钥给FN,所以通信成本相较于文献[11]多了 |U||G|。在解密阶段,通信成本主要由解密外包时传递的密钥和密文产生(认为数据访问者已经得到私钥,不考虑数据访问者密钥请求过程中的通信成本),文献[10]直接在CS中进行部分解密然后发送给数据访问者,而本文方案、文献[11]和文献[15]需要将密文从CS发送到雾节点中进行部分解密,所以这三种方案的通信成本要多于文献[10]。另外文献[15]用于部分解密的密钥和密文长度均大于本文方案和文献[11],所以本文方案和文献[11]的通信成本少于文献[15]。
由于文献[11]方案对加密和解密计算都进行了外包,外包能力相对于文献[10]和文献[15]更加有效,所以本文实验比较了本文方案和文献[11]方案相对于没有外包能力的文献[4]方案在数据拥有者端的加密时间和数据访问者端的解密时间,之后比较了本文方案和文献[11]方案在密钥生成时CA 所消耗的时间。实验环境为AMD A8-7410 CPU @2.20 GHz,64 bit Window10 操作系统。采用Java 语言,基于JPBC 库,使用基于512b有限域上的超奇异曲线y2=x3+x中的160b 椭圆曲线群。实验数据选取属性个数分别为10、20、30、40、50五种情况下各方案运行10次所得数据的平均值。
图3 所示的是随着访问树中属性个数的变化数据拥有者端加密时间的比较。文献[4]方案数据拥有者端加密时间随访问树中属性个数线性增长。文献[11]和本文方案都进行了加密外包,相较于文献[11],本文方案在加密过程中增加了属性授权机构的公钥,该操作由雾节点执行;而在数据拥有者端,两方案加密操作基本相同,所以加密时间大致相等且基本为定值,远低于文献[4]的加密时间。
图3 数据拥有者端加密时间比较
图4 所示的是随着解密所需属性个数的变化数据访问者端解密时间的比较。文献[4]方案解密时间基本随解密所需属性的个数线性增长;本文方案和文献[11]方案进行了解密外包,在数据访问者端两方案都只需执行两次乘法计算和一次配对计算,所以两方案在数据访问者端的解密时间大致相同且远少于文献[4]方案。
图4 数据访问者端解密时间比较
图5所示的是随着数据访问者属性的变化CA为其产生密钥时所消耗的时间的比较。文献[11]和本文方案中CA产生密钥的时间都大致随数据访问者属性个数线性增长,文献[11]方案是基于单授权机构的,所有密钥由CA 产生,所以消耗的时间较多。而本文方案是基于多授权机构模型的,利用AA 分担关于属性密钥的工作,减轻了CA的负担,消耗相对于文献[11]较少。
图5 CA密钥生成时间比较
本文提出了一种雾计算中支持计算外包的访问控制方案,该方案建立在多授权机构模型下,通过将部分加解密计算外包给邻近的雾节点减少了数据拥有者端和数据访问者端的计算负担,使原有的CP-ABE方案更适用于资源有限的物联网设备,符合物联网应用场景。另外本文基于DBDH 假设对方案进行了选择访问结构明文攻击下的安全性证明。最后对方案进行了理论分析与实验分析,分析结果表明所提方案有效减轻了数据拥有者端和数据访问者端的计算负担,具有较高的系统效率和实用价值。