尹龙潇,伍忠东
兰州交通大学 电子与信息工程学院,兰州 730070
随着云存储的广泛应用,数据隐私和访问权限控制[1]成为在云端储存数据时的基本要求。加密机制可以被看作是在云环境[1-2]中提供数据隐私的有效手段。然而,传统的对称密钥和公钥加密机制并不适合在云环境[2-3]中提供对加密数据的访问控制。基于密文-策略属性的加密(CP-ABE)[4]被认为是实现数据隐私和细粒度访问控制的一种合适的加密机制,因为它为数据所有者提供了对访问策略[5]的直接控制。在CP-ABE 中,利用访问策略对数据进行加密,其中访问策略由一些属性来定义,满足访问策略中足够属性的用户可以解密。因此,它提供一对多共享,其中数据所有者对数据进行加密,任何具有足够属性(或合格解密密钥)的用户都可以访问数据。通常,在CP-ABE 中,数据所有者将加密后的数据外包给云存储服务器。云存储服务器由称为云服务提供者(Cloud Service Provider,CSP)的第三方实体维护。任何具有合格解密密钥的用户都可以访问它。但是,一段时间之后,数据所有者可能希望只允许具有合格解密密钥的用户集中的一些用户访问数据,同时防止或拒绝其他用户访问数据,这就要求访问控制方案中有相应的撤销机制。而在CP-ABE中,拒绝具有合格解密密钥的用户(即非预期用户)访问数据,而只允许其中一些用户(即预期用户)访问数据是一项具有挑战性的任务。
传统的基于属性的用户撤销方案[5-9],可以通过撤销非预期用户的访问权限来防止非预期用户访问数据;它反过来只向预期用户提供对数据的访问。用户的访问权限通过从系统中完全撤销其属性或用户合法性来实现。在文献[5-6]中,用户的属性被撤销,而文献[8]则完全从系统中撤销用户。然而,文献[5-6,8]方案需要执行两个操作,即密钥重新分发和密文重新加密操作,以撤销用户或用户所具有的属性。密钥重新分发操作更新未被撤销的用户的解密密钥,而密文重新加密操作则对与被撤销属性或被撤销用户相关的所有密文重新加密。在云环境中,这两种操作既昂贵又麻烦。在文献[7]中,用户的属性仅通过执行重新加密操作来撤销,如果用户的属性被撤销,CSP将为用户更改属性组的密钥,并使用一组新的属性组密钥重新加密密文。但是,该方案需要重新加密整个密文(即密文的所有组件),这在计算上是昂贵的。在文献[9]中,使用不受信任的服务器进行用户撤销。服务器根据AA 发送的撤销列表来撤销用户。但是,它需要服务器始终在线,因为用户将他们请求的密文发送到服务器进行部分解密,它还可能导致服务器瓶颈和潜在的单点故障。
近期,Horvath[10]和Zhang 等人[11]提出了两种撤销方案,在撤销非预期用户时,不需要重新分发密钥或让所有密文重新加密。这两种方案通过在密文本身中集成已撤销(或非预期的)用户的唯一身份来撤销用户。也就是说,如果用户的标识出现在密文中,即使他/她的属性满足访问策略,用户也不能解密。然而,随着被撤销用户数量的增加,它们的性能会下降。此外,频繁的用户撤销可能会进一步降低性能。另一种拒绝非预期用户访问数据的方法是,在允许/授权预期用户的同时,为预期用户分配新的属性[12]。但是,为了达到同样的目的,可能需要在预期用户之间分发新的解密密钥,这可能会增加系统上的通信开销[13]。它还可能增加数据所有者的计算开销,因为当使用新的访问策略分配新的属性时,数据所有者需要重新加密数据(大多数基于CP-ABE的系统[14-16]都将关于访问策略的秘密共享嵌入到密文中,这就要求更新访问策略时重新加密密文),因此,数据所有者无法动态更新密文的现有访问策略以将新属性集成到其中。
综合考虑上述各种方案的优点和不足,本文对传统的CP-ABE方案进行改进,提出了一种安全有效的可灵活撤销的CP-ABE 方案。该方案可以从具有合格解密密钥(即具有足够属性)的用户集中有选择地授权部分用户访问CP-ABE中的数据,通过在密文中嵌入特定的秘密信息来授权特定的用户,以更新秘密信息的方式来执行用户权限的选择与更新,而无需像传统方案一样进行密文的重新加密或者用户的整体权限撤销,从而避免昂贵的用户撤销事件。
CP-ABE 是一种公钥加密,它允许用户根据用户属性对数据进行加密和解密。用户可以为其数据定义访问策略,该访问策略表示为属性上的访问树。用户可以在定义的访问策略下对数据执行加密。其中属性满足访问策略的用户,具有解密数据的资格。CP-ABE 由4种算法组成:设置、密钥生成、加密、解密。
本方案使用双线性对来实现文本加密。
定义1 双线性映射:设素数p是乘法循环循环群G0、G1和GT的阶,设g0、g1分别是G0和G1之中的一个生成元,若映射e:G0×G1→GT是双线性的,则双线性映射满足:
(2)非退化性,e(g0,g1)≠1;
(3)可计算性对,与所有 ∀u∈G0,v∈G1,都有有效的算法计算出e(u,v)的值。
另外,设u,v∈G0,m∈G1双线性映射还有以下性质:
当G0=G1时,称映射G0×G1→GT为对称双线性对。
本文方案使用树访问结构的CP-ABE[17]来构建。树访问结构也称访问树(AT),是访问策略的表现形式之一。访问树由叶节点和非叶节点组成。节点x可以使用与门和或门来表示。访问树的非叶节点,由两个组件组成,即若干个子节点的集合totalx和一个阈值kx。或门由kx=1 表示,与门由kx=totalx表示,其中 1 ≤kx≤totalx。此外,访问树的叶节属性表示kx=1。parent(x)和index(x)表示节点x的父节点和子节点。
设AT 是根节点为r的访问树,与密文解密相关的秘密值存在r内,不同的用户属性可以解密不同的叶节点值,当叶节点达到阈值时可以解密上层父节点,以此类推得到根节点处秘密值。
本文方案采用的安全模型如下。下面的定义旨在使用熵函数提供无条件的安全性。
定义2 设t为正整数。为一个正数|u|在系统中表示的所有用户的集合。是所有拥有合格的属性集的用户集合或访问数据的合格解密密钥,和为目标用户集。在本章用户授权方案中,CSP试图使用授权多项式对Au中的每个用户共享一个随机的秘密。
如果(u/Au)中的任何用户不能使用其个人秘密从授权多项式PAUTH(x)中恢复随机密钥,而与此同时其中的任何用户IDi都可以使用其个人秘密PSi从授权多项式PAUTH(x)来恢复随机密钥k,则说明本方案具有有效性,即:PAUTH(x),PSi)=0。
如果CSP 生成一个授权多项式PAUTH(x) ,使得(u/Au)中的用户之间的共谋攻击无法获得任意关于k的信息,则本方案是抗共谋的,即:H(k|PAUTH(x),。
本文方案的目标是提出一种能够与任何基于CPABE的系统集成的方案,以实现高效的用户可选择授权性。为了实现这一点,本章利用了Sun 等人[18]的技术。Sun等人的方案是一个密钥分发方案,其中一个公共密钥使用一个多项式在一组用户之间共享,经过授权的用户可以从多项式中访问密钥,而未经授权或被撤销的用户则不能。因此,可以认为Sun等人方案的概念对于从一组具有限定属性集(或限定解密密钥)的用户中去授权选定的用户非常有用。
为了实现有选择的用户授权,将预期或授权用户的唯一秘密信息嵌入密文中,以便具有限定属性集/限定解密密钥的用户可以解密密文中存在的秘密信息。另一方面,如果用户的秘密信息没有出现在密文中,或者他的属性集不满足访问策略,则用户无法解密。为此,使用预期或授权用户的秘密信息构造一个多项式,即授权多项式PAUTH(x),并将其作为附加组件添加到密文中。需要注意的是将相对昂贵的授权任务委托给CSP以减少开销。
方案包括5个阶段,即设置阶段、加密阶段、密钥生成阶段、用户授权阶段和解密阶段,具体描述如下所示。
(1)设置:在此阶段,授信机构AA计算系统密匙SK和公开参数PK,保持SK机密,PK公开。选择随机数δ,,系统生成私钥SK,公钥PK,如下:
(2)加密:在此阶段,数据所有者加密他的数据或文件,数据或文件表示为所有者使用访问策略AT(即访问树)加密M,并为访问树AT中的每个节点x选择dx=qx-1 次的多项式qx。之后选择一个随机数,并为根节点计算qr(0)=s,然后选择多项式qr中的dr个随机点来完全定义它。对于根节点以外的节点,计算qx(0)=qparent(x)(index(x)),并选择其他dx个随机点来完全定义多项式qx。密文CT如下:
其中Y是访问树中所有叶节点的集合。
(3)密钥生成:在此阶段,AA 和CSP 分别向用户发布解密密钥和个人秘密。它分为两个子阶段,即AA KeyGen 和 CSP KeyGen。在 AA KeyGen 中,当用户最初加入系统时,AA 向用户发出解密密钥DK。另一方面,在CSP KeyGen 中,CSP 向注册用户发布个人机密。下面将描述这两个子阶段。
然后AA 使用一个安全通道向用户IDi发送解密密钥DK。
②CSP KeyGen:这个阶段由CSP 发起。它随机选择个人秘密:
对于U中的每个用户,当他们最初向CSP注册时。CSP在其数据库中安全地保存随机的个人秘密以及相应的用户身份。此外,CSP使用安全通道将个人秘密发送给用户。用户在收到个人秘密后,将其个人秘密保存在安全的地方。
(4)用户授权:在此阶段,CSP根据从所有者处收到的授权用户列表对用户进行授权。数据属主首先需要向CSP发送一个授权用户列表,比如Au={ID1,ID2,…,IDt},其中Au⊂u,CSP使用安全通道成功验证所有者之后,启动用户授权阶段,如下:
其中
从系统中去掉r1、r2和k。重新加密的密文CT是:
CSP可以动态地阻止新用户(即或允许非预期用户访问数据。为此,它使用更新的授权用户列表重新计算授权多项式,并使用新的随机密匙重新加密密文。
(5)解密:在此阶段,用户解密从CSP接收到的重新加密的密文CT'。令用户IDi∈Au。用户IDi使用其个人秘密PSi和解密密钥DK 对重新加密的密文CT'进行解密。设解密密钥DK和重新加密的密文CT'为:
解密过程如下:
用户IDi首先使用他的个人秘密PSi从授权多项式PAUTH(x)中恢复随机秘密k。具体做法如下:
证明
需要注意的是,任何非预期用户,比如,IDj∈(uAu)都会从PAUTH(PSj)得到一个随机值。
现在用户IDi恢复原始密文CT如下:
然后用户IDi执行其余的解密过程。解密过程由DecNode(CT,DK,x)的递归算法组成,其中x是访问树中的一个节点。解密过程分为两个阶段。
阶段1 如果x是一个叶节点,令Attx表示叶子节点x,它一个属性且j=Attx。解密按如下方式执行:如果j∈ASi,有:
否则返回NULL。
阶段2 如果x不是叶节点,为x的所有子节点xchild递归调用,将结果存储为Rxchild。设ASix是任意kx大小的子节点x集合,令Rx不为NULL。如果大小为kx的集合xchild∃ASix,Rxchild不为NULL,否则,DecNode(CT,DK,xchild)返回NULL。Rx计算如下:
其中:
本章说明所提出的方案在第2 章描述的安全模型中是安全的。
定义3 所有授权用户或预期用户都可以从授权多项式PAUTH(x)中恢复随机密钥k,而非预期用户则不能。
证明Au中的每个用户都可以使用其个人秘密PSi从授权多项式PAUTH(x)中恢复随机秘密k,因此,可以得出:
定义4 提出的方案是抗共谋的。
证明用户可能勾结并试图了解授权多项式PAUTH(x)的随机秘密k。因为他们的个人秘密不包含在授权多项式PAUTH(x)中,所以他们不能使用他们的个人秘密来恢复k。但是,他们可能会试图合谋计算一个授权用户的个人秘密PSi,比如IDi∈Au。但是,个人机密PSi是中的一个随机数,除了用户IDi之外,只有CSP 知道它。因此任何数量的串通用户都无法获得关于个人秘密PSi的任何信息。因此,可以得到:
即本文提出的方案是抗共谋的。
与传统的基于属性的撤销方案不同,本文方案不需要执行用户撤销来选择用户。这避免了代价高昂的密钥重新分发和密文重新加密操作,此外,本文方案不需要对整个密文进行再加密。因此,该方案在CSP上的开销更小。
将所提出的方案在密钥大小、加解密成本、重授权成本方面与经典CP-ABE方案[4]和最新具有撤销控制的CP-ABE方案[10-11,19-20]进行了比较。其中存储开销按组元素大小进行比较,计算成本按G1或GT中的取幂操作数和配对操作进行比较。本文还在访问结构与特点等方引入KP-ABE方案[21]以及不具撤销功能的方案[22]进行了参照对比。
RU,CT,1nc,nu,ni分别表示已吊销用户集、密文,元素的大小,与密文关联的属性数、与解密密钥关联的属性数以及某个属性中子属性的个数。TmulG1和TmulGT分别表示G1和GT中进行一次求幂运算需要的时间,TP分别表示一次配对运算需要的时间。
表1为密钥储存代价。从表中可以看出,所提出方案的密文、密钥大小仅仅比经典CP-ABE 方案[4]多出一个元素组的大小,而文献[4]方案并不能实现用户重授权。文献[10]和[11]中密文的大小随密文相关属性的数量和被撤销用户的数量线性增加,文献[19]中的密文密钥大小随用户属性中子属性个数的增加而增加,文献[20]中的存储开销在通常情况下也大于本文方案。
表1 储存开销比较分析表
表2 为加解密与重授权时的计算成本开销对比。可以看到,本文方案和文献[20]在加解密时的计算开销仅与与密文关联的属性数和与解密密钥关联的属性数有关,而与文献[4]和[11]中的被撤销属性数无关。与文献[20]方案相比,本文方案在加解密计算开销上均有一定优势;另一方面,所提出方案在用户重授权计算中只需要一次求幂运算,性能大大优于其他方案。
表3为几种方案的特点对比,本文方案采用CP-ABE访问策略,同时由CSP 执行撤销服务,避免了传统方案由AA 执行撤销时产生的较大计算成本和云服务器执行撤销时可能会产生的数据故障等问题。
如图1 比较了当发生一个用户撤销请求时本文方案与其他几种方案[10-11,20]所需的计算时间成本(文献[4,22]方案不具备撤销功能,文献[19]方案用到了引入了多重属性个数,计算开销明显增大,文献[21]方案为KPABE方案,故未将上述作图比较)。图中将密文相关属性数作为变量在1~20个取值,由图可知,本文的重授权成本不随相关属性数的增加而增加,相比于其他几种方案所需的计算成本更少。
表2 计算成本开销对比表
表3 方案特点对比表
图1 重授权过程计算成本对比图
本文提出了一种安全有效的基于CP-ABE 的撤销控制方案,用于从具有合格解密密钥的用户集中选择性控制用户访问权限。选择性用户授权通过将被授权用户的唯一秘密信息以多项式形式集成到密文中来实现。安全分析表明,本文方案具有无条件的安全性和抗共谋性。此外,该方案不需要为被授权的用户分配新的属性,因此,它避免了使用新的访问策略对数据进行重新加密,这进而减少了数据所有者的开销,而且CSP 和用户的额外开销也很小。另一方面,本文方案不需要任何额外的服务器进行加解密的在线运行,从而避免了潜在的瓶颈和单点故障。