田秋亭,韩德志
(上海海事大学 信息工程学院,上海 201306)
如今随着信息技术的发展,云计算已经广泛应用到工业领域和商业领域,由于云计算强大的存储能力和计算资源,促使越来越多的私人和企业将一些数据和服务外包给云服务商.同时,随着移动网络的发展,在云计算环境中,通过移动终端来进行数据的分享和查询也变得越来越普遍.虽然将数据存储在云端,方便用户管理和操作,但是同时也带来一些安全上的隐患,比如数据的隐私安全和访问控制.因为云并不是完全可信的,不可信的服务器可能出于好奇或者商业利益而访问自己感兴趣的数据,因此,用户将数据存储在云端之前,需要对数据进行加密处理.在2005年,Sahai和Waters提出了属性基加密[1](attribute based encryption,ABE)方案,迅速成为学者们研究的热点.ABE将每个用户的身份和一系列描述属性的集合相关联,当用户私钥的属性集合和密文的属性集合相匹配时,用户才可以成功解密出明文.随后,Goyal等人和Bethencourt等人基于ABE提出两种变体机制,即密钥策略的ABE方案(Key-Policy ABE,KP-ABE)[2]和密文策略的ABE方案(Ciphertext-Policy ABE,CP-ABE)[3],并对两种方式进行了比较和分析.其中KP-ABE方案的访问策略和私钥相关,而密文与属性集合相关联,其本质是一种一对多的公钥加密技术,通过引入访问树结构,用一棵访问树来表示访问策略,并且在标准模型下证明了方案的安全性.而CP-ABE方案是密钥与属性集合相关联,将访问结构部署在密文中,发送者可以根据密文自己决定如何定义访问结构,因此灵活性比较强[4].
属性撤销是ABE在实际应用中必须解决的重要问题,目前可撤销的ABE技术的研究中仍然存在撤销延时、需要更新密钥和密文、撤销粒度过粗等问题.本文对现有的撤销ABE方案进行了总结,并详细介绍三种最新的属性撤销方案,然后进行对比分析,为以后的研究工作提供了理论参考.
在一个属性加密方案中,随着时间的推移,由于用户权限的变化以及密钥泄露等因素的存在,不可避免地要考虑属性的撤销问题.ABE系统中关于属性撤销机制的研究最早由Pirretti等人[5]提出.根据属性基加密系统的实用化需求,属性撤销按照撤销粒度的不同可以划分为系统属性撤销、用户撤销和用户属性撤销.系统属性撤销是指系统的某属性撤销,所有拥有该属性的用户都将会受到影响;用户撤销是指某个用户将失去所有的访问权限;用户属性撤销是指用户失去某属性的访问权限,但是用户的其他属性访问权限不受影响,并且拥有该属性的其他用户也不会受到影响.根据撤销执行者的不同,ABE撤销方案主要分为直接撤销和间接撤销两类.从不同的方面对可撤销ABE方案的分类如图1所示.
图1 可撤销ABE分类Fig.1 Revocable ABE classification
直接撤销是由加密者来执行,加密者在加密数据时,直接加入要撤销用户的属性列表,从而实现属性密钥的撤销.Ostrovsky R等人[6]提出一种支持非单调访问结构的ABE方案,本方案首次提出基于CP-ABE的直接撤销思想,其通过将用户标识作为一种属性,来实现用户或系统属性的撤销,但是该方案的用户密钥和密文长度均有所增加.Attrapadung N等人[7]结合广播加密思想,通过发送者指明加密中的撤销列表,实现基于KP-ABE和CP-ABE的属性直接撤销,该方案减少了撤销的开销.LI Q等人[8]提出了一种在直接撤销模式下具有细粒度属性的KP-ABE方案,撤销过程不再是撤销用户的所有属性,而是撤销单个属性下某些用户[9],并且不影响用户的其他属性.Zhang等人[10]阐述了CP-ABE的概念,并提出了一个应用性较强的方案——FDR-CP-ABE,可以执行直接撤销.Wu[11]将属性列表嵌入到密文中,实现基于属性直接撤销的CP-ABE方案的一般构造.Shi等人[12]阐述了一个新颖的ABE变体,其结合直接撤销和KP-ABE,另外还支持可验证的密文委托.王等人[13]提出了一种具有两个可撤销属性列表的KP-ABE方案,该方案是对含有单个属性撤销列表方案的推广,同时利用追踪算法,判定用户与私钥的关联性.Aqeel等人[14]考虑到撤销机制,为了使得访问结构更具有表现力,基于线性秘密共享机制提出了一个对于CP-ABE来说新的密码方案,该方案使用表示非撤销用户的子集覆盖技术[15]来决定用户的身份是否在撤销列表中.
目前大部分可撤销的属性基加密方案都是采用间接撤销,间接撤销由授权机构来执行,但是不能实现即时撤销,并且授权机构需要定期的更新密钥,其更新工作量比较大.因此,为了实现属性的即时撤销,Ibraimi等人[16]提出引入在线第三方协助完成属性撤销,该方案将用户密钥分成两部分,分别由用户和第三方持有,更好的实现CP-ABE撤销方案.Yu等人[17]引入半可信的代理服务器完成密钥的重新发布和旧密文的重新加密,基于代理重加密技术来实现CP-ABE的属性撤销.Hur等人[18]基于二叉树,通过向合法用户分发一个对称密钥,提出一个支持完全细粒度属性撤销的CP-ABE方案,该方案可以实现属性的即时撤销,但是密钥维护代价比较大.鉴于Hur方案所存在的问题,Xie等人[19]对其方案进行了优化,缩小了密钥和密文的尺寸,并减小了密钥更新阶段的计算量.Naruse等人[20]设计的方案是由云服务商来执行撤销工作,通过代理重加密技术减轻了授权机构和数据所有者的工作量,同时实现细粒度的访问控制策略和更新.XIA等人[21]提出一种支持高效撤销的属性基访问控制方案,该方案为了解决密钥托管的问题,将密钥分别交给属性机构和访问策略制定者共同生成,通过引入版本密钥进行用户的撤销.Vaanchig等人[22]通过过度加密机制,CP-ABE机制以及半可信的云服务提供商提出一种属性可撤销的CP-ABE方案,该方案灵活,安全和高效.
综合以上的文献对比分析:直接撤销虽然可以实现属性的即时撤销,但是需要数据所有者在加密阶段将撤销列表嵌入到密文中,无法实现属性的动态撤销;而间接撤销虽然可以实现属性的动态撤销,但是需要借助可信的第三方.
3.1.1 云存储中支持外包解密和属性撤销的ABE方案
为了减小用户的计算开销和解决属性撤销的问题,LIU等人[23]提出了云存储中支持外包解密和属性撤销的ABE方案,该方案将部分解密计算任务外包给云服务器,使得用户的计算开销简单而恒定.另外用属性撤销的方法来实现与相应撤销属性相关的密文和用户密钥的更新.该方案的算法流程如图2所示.
图2 算法流程图Fig.2 Algorithm flowchart
A系统初始化:输入系统属性集L的最大值,输出系统公钥PK和系统主密钥MSK;B密钥生成:输入系统主密钥MSK和用户的属性集S,输出转换密钥TK和用户密钥SK;C文件加密:数据所有者先用内容密钥ck加密文件M,然后运行加密算法,输入系统公钥PK,内容密钥ck以及访问结构Γ,输出密文CT;D文件解密:由于部分解密任务外包给云服务器,所以该部分包括两个算法,云服务器执行的子算法Transform,用户执行的子算法UserDecrypt;a:Transform,输入密文CT和用户的部分密钥TK′,输出T;b:UserDecrypt,用户从云服务器得到T之后,输入T和密钥SK,运行User Decrypt算法,得到ck,然后用户再用ck解密,得到最终的文件M.E属性撤销部分包括三阶段:密钥机构更新密钥,非撤销用户更新密钥以及云服务器更新密钥;a:密钥机构更新密钥:输入主密钥MSK,目前的版本密钥VKx′以及撤销属性x′,输出更新密钥UKx′;b:非撤销用户更新密钥:用户从密钥机构获得更新密钥UKx′之后,运行SKUpdate算法来更新和撤销属性x′相关的密钥组件,获得自己的更新密钥SK*;c:云服务器更新密文:云服务器获得更新密钥UKx′之后,运行CTUpdate算法来更新和撤销属性x′相关的密文,得到更新密文CT*.这个方法仅仅需要更新在密文中与撤销属性相关的那些组件,其他的组件不需要更新.
3.1.2 支持高效撤销的多机构属性加密方案
多机构属性加密方案虽然非常适用于云存储环境下的数据访问控制,但是高效的用户撤销仍然是一个具有挑战的问题,并且妨碍了多机构属性加密的实际应用,因此,张等人[24]提出了一种支持高效撤销的多机构属性加密方案.该方案借助第三方服务器来辅助撤销,用户为自己生成私钥,而权威机构为云服务器生成私钥.当有用户撤销时,云服务器只要将该用户对应的私钥删除即可.该方案的算法流程如图3所示.
图3 算法流程图Fig.3 Algorithm flowchart
A系统初始化:输入安全参数λ,输出系统公开参数GP;B权威机构初始化:输入公开参数GP,权威机构θ为自己生成公/私钥对{PKθ,SKθ};C用户密钥生成:输入公开参数GP,每个用户id为自己生成公/私钥对{UPKid,USKid};D云服务器密钥生成:输入GP,{SKθ},{UPKid},id以及用户的属性S,输出对应用户id的云服务器私钥CSKid,S,然后发送给云服务器,最后再将数组{id,CSKid,S}加入到云服务器密钥列表KT中;E加密:输入GP,{PKθ},消息M和访问策略(A,ρ),输出密文CT;F云服务器部分解密:输入GP,CSKid,S,UPKid,CT,若属性集S满足访问策略(A,ρ),输出部分解密密文CTid,否则解密失败.G用户解密:输入USKid,CTid,输出消息M;H撤销:输入id,KT,输出更新之后的密钥列表KT=KT{id,CSKid,S}.
3.1.3 支持前向保密的属性撤销ABE用于共享数据的细粒度访问控制[25]
在云存储系统中,CP-ABE很适合用于数据访问控制,本节所提出的方案支持策略的“AND”,“OR”操作,属性机构仅仅撤销指定的用户属性,此外,该方案满足前向保密,数据的机密性以及共谋攻击.
该方案的撤销过程:a属性机构发送用户的撤销属性给云服务器;b云服务器根据撤销消息更新用户的属性集;c当用户访问云服务器中的数据时,云服务器依据用户的更新属性集,运行重加密算法,然后将重加密的密文发送给用户.方案的流程如图4所示.
A初始化:输入系统属性集U,输出系统公钥PK,主密钥MK以及重加密密钥RK;B密钥提取:输入主密钥MK,属性集S,输出密钥SK;C加密:输入公钥PK,LSSS访问结构(M,ρ)和消息M,输出密文CT′;D重加密:输入密文CT′,属性集S和重加密密钥RK,输出重加密密文CT;E解密:输入对应属性集S的密钥SK,重加密密文CT和访问结构(M,ρ),输出消息M.
3.1节介绍了关于属性撤销机制的三个方案,本节从不同的方面对三个方案进行对比分析.在表1中,U表示系统属性集,t表示加密属性集,k表示用户属性集,n表示权威机构的个数,s表示满足访问结构的用户属性集;|G0|和|G1|分别表示群G0和G1中每个元素的长度,e′表示双线性对;PK表示系统公钥的长度,SK表示用户私钥的长度,CT表示密文的长度,加密是指加密的计算开销,解密是指解密的计算开销.
图4 方案的流程Fig.4 Program flow
从表1可以看出,在系统公钥方面,文献[23]和文献[25]均和系统的属性集线性相关,系统中的属性个数最多只有多项式大小,即只能支持小属性域,而文献[24]在加入新的属性时,系统的公钥长度不会增加,系统的扩展性比较好;在用户私钥方面,文献[24]的比较小,而文献[23]和文献[25]两者相同;在密文方面,文献[24]比较优,而文献[23]的密文长度小于文献[25]的,存储开销比较小;在加密计算开销方面,三个方案均和加密属性集相关;在解密计算开销方面,文献[24]中云服务器帮助合法的用户对密文进行部分解密,用户再进行最终的解密工作,解密计算开销比较小;文献[23]将部分解密工作外包给云服务器,而文献[25]是用户直接对云服务器中的所有更新密文进行解密,解密计算开销不仅与满足访问结构的用户属性集有关,还有双线性对和指数运算的个数,所以文献[23]优于文献[25].综合来看,文献[24]更优,实现了高效的撤销.
表1 三个方案的性能对比
Table 1 Performance comparison of the three schemes
文献[23]文献[24]文献[25]PK(U+1)|G0|+|G1|2n(U+2)|G0|+|G1|SK(k+2)|G0|1(k+2)|G0|CT(t+2)|G0|+|G1|4t+1(2t+1)|G0|+|G1|加密(t+2)G0+2G1(6t+1)G0(2t+2)G0解密2G1G0(2s+1)e'+(2s+2)G0
本文主要是介绍关于属性撤销机制的研究进展,并详细介绍了三个基于ABE的属性撤销方案,然后从不同的方面进行对比分析,本文的研究内容能为云存储中属性的撤销机制提供理论参考,有一定的理论和应用价值.