软件学报  2020, Vol. 31 Issue (6): 1817-1828   PDF    
面向公有云的支持快速解密的CP-ABE方案
邹莉萍1 , 冯朝胜1 , 秦志光2,3 , 袁丁1 , 罗王平1 , 李敏1,3     
1. 四川师范大学 计算机科学学院, 四川 成都 610101;
2. 电子科技大学 信息与软件工程学院, 四川 成都 610054;
3. 网络与数据安全四川省重点实验室(电子科技大学), 四川 成都 610054
摘要: 现有的密文策略基于属性加密CP-ABE(ciphertext-policy attribute-based encryption)算法普遍在解密时存在计算量过大、计算时间过长的问题,该问题造成CP-ABE难以应用和实施.针对该问题,将计算外包引入到方案的设计之中,提出一种面向公有云的基于Spark大数据平台的CP-ABE快速解密方案.在该方案中,专门根据CP-ABE的解密特点设计了解密并行化算法;利用并行化算法,将计算量较大的叶子节点解密和根节点解密并行化;之后,将并行化任务交给Spark集群进行处理.计算外包使得绝大多数解密工作由云服务器完成,用户客户端只需进行一次指数运算;而并行化处理则提高了解密速度.安全性分析表明,所提出的方案在一般群模型和随机预言模型下能对抗选择明文攻击.
关键词: 快速解密    解密外包    密文策略基于属性加密    访问树    Spark平台    
CP-ABE Scheme with Fast Decryption for Public Cloud
ZOU Li-Ping1 , FENG Chao-Sheng1 , QIN Zhi-Guang2,3 , YUAN Ding1 , LUO Wang-Ping1 , LI Min1,3     
1. School of Computer Science, Sichuan Normal University, Chengdu 610101, China;
2. School of Information & Software Engineering, University of Electronic Science and Technology of China, Chengdu 610054, China;
3. Network and Data Security Key Laboratory of Sichuan Province (University of Electronic Science and Technology of China), Chengdu 610054, China
Abstract: Most of existing CP-ABE (ciphertext-policy attribute-based encryption) schemes have such problems as over-computation and a long calculation time in decryption, which make them difficult to be applied and implemented. To solve this problem, the computation outsourcing is introduced into the design of CP-ABE scheme, a Spark-platform-based CP-ABE scheme with fast decryption for public cloud is proposed. In this scheme, the decryption parallelization algorithm is designed based on the decryption feature of CP-ABE, with which, decryption at both leaf node and root node with over-computation is parallelized. Then, the parallelization tasks are handed over to the Spark cluster. The computation outsourcing makes the most decryption computation done by cloud servers, while the user client only needs an exponential operation, and parallelization greatly improves the speed of decryption. Security analysis shows that the proposed scheme can fight against chosen plaintext attack under both the generic group model and the random oracle model.
Key words: fast decryption    decryption outsourcing    CP-ABE    access tree    Spark platform    

大数据的出现, 使得企业特别是中小型企业将数据外包给云服务商[1]变得紧迫, 而数据外包首先要解决好数据机密性和隐私性[2]问题.加密是确保数据机密性和隐私性的有效途径.如果只是进行加密保存, 传统的加密方法即可胜任; 如果还要实现密文共享, 虽然传统的加密方法也可以实现, 但只有采取效率低下的“一对一”加密方式和粗粒度的访问控制[3]方式.为了实现密文共享的高效性和访问控制的细粒度, 基于属性的加密方法被提出[4].基于属性的加密方法可以分为两种:密文策略基于属性加密方法CP-ABE[5]和密钥策略基于属性加密方法KP-ABE(key-policy attribute-based encryption)[6].由于CP-ABE的访问控制方法和企业IT系统在明文访问控制上广泛采用的基于角色的访问控制方法RABC(role-based access control)相似, 更加受到企业的关注.然而, 现有的大部分CP-ABE方案在解密时所用的时间随着匹配访问策略的属性数量呈线性增长, 用户客户端计算量急剧增长, 对用户终端设备要求较高, 常用的用户终端特别是平板、手机难以胜任.针对这一问题, 利用Spark集群中的Map运算和Reduce运算, 提出一种基于Spark的支持快速解密的CP-ABE方案.本文具体贡献包括:

(1) 提出一种基于Spark集群的解密外包方案.在该方案中, 云服务器对大量密文进行存储, 授权中心生成仅由用户存储的最终解密密钥DK和用于云服务器解密的转换密钥TK, 降低用户客户端对于存储性能的需求.利用转换密钥TK对上传到云服务器端密文使用Spark集群中的Map运算与Reduce运算进行半解密, 将用户客户端解密代价降低到一次指数运算, 显著减少云服务器计算时间;

(2) 设计了一种快速求解共享访问树根节点值的算法.该策略的核心是:将求解任务分成若干个可并行执行的子任务, 然后将子任务交由Spark集群中的Map节点去完成, Reduce节点通过汇聚Map节点的输出结果计算出目标值.现有的包括Bethencourt等人[5]的方案(以下简称BSW方案)在内的用树来表示访问策略CP-ABE方案, 几乎所有的方案求解根节点所需的指数运算次数都和共享访问树的节点数量成正比, 而基于所设计的快速求解算法求解根节点值所需的指数运算时间仅和叶子节点的数量成正比;

(3) 证明方案的有效性.安全性分析表明, 在一般群模型和随机预言模型下可抵御选择明文攻击.性能分析表明, 该方案在计算上对用户客户端要求较低, 手机、平板、电脑等移动设备亦可胜任.

1 相关研究

2005年, Sahai和Waters[4]在欧洲密码学年度会议上首先提出了一种基于属性的加密算法(attribute-based encryption, 简称ABE), 并在学术界受到了广泛的关注与研究.在该方案中, 将每一个标识视为一组描述属性, 并且将用户私钥和密文都与属性相关联, 只有当用户私钥的属性集合满足密文属性集合时, 才能解密出正确的明文数据.之后, Bethencourt和Goyal分别提出了密文策略基于属性加密CP-ABE[5]和密钥策略基于属性加密KP- ABE[6].在CP-ABE中, 密文策略与访问属性相关联; 在KP-ABE中, 密钥策略与访问属性相关联.2007年, Ostrovsky等人[7]提出了一种允许使用任意访问结构的ABE方案, 并且基于DBDH假设(decisional bilinear diffie-Hellman assumption)进行了安全性证明.同年, Ling等人[8]提出一种支持访问结构包含正属性和负属性的CP-ABE方案, 在DBDH假设下, 证明了该论文提出的基本方案满足CPA安全, 然后使用Canetti-Halevi-Katz技术进行一次性签名, 使得改进方案满足CCA安全.但是该方案只适用于仅限于门限与(“AND”)的共享访问策略. 2008年, Goyal等人[9]首次提出了一种基于数论理论假设且支持高级访问结构的CP-ABE方案, 并且在DBDH假设下给出安全性证明.2009年, Li等人[10]提出了一种具有用户责任的ABE方案, 在该方案中, 给每个用户私钥中嵌入额外的用户特定信息, 以防止用户间非法密钥共享问题, 进一步解决用户访问隐私问题.2011年, Waters[11]提出一种更加安全的易于实现的高效CP-ABE方案, 在该方案中, 提出了3种不同的结构, 这些结构允许在系统效率和不同的安全假设间进行不同的权衡, 使其比基本的CP-ABE方案拥有更好的实用效率.但是其解密时间还是随着密文大小增长, 随着访问结构复杂度增加而增加.同年, Green等人[12]在Water等人[11]的方案上提出了一种实现了RCCA安全并且同时适用于CP-ABE和KP-ABE的解密外包方案.该方案将大量解密计算外包给云服务器, 减少了用户客户端解密计算量, 但是没有给出云服务器端进行解密的具体操作.2012年, Li等人[13]基于Zhou等人[14]提出的外包加密CP-ABE方案, 提出了一种基于MapReduce的外包加密方案.但是在该方案中, 没有提出相应的使用MapReduce的快速解密方案, 且Hadoop中的MapReduce存在高延迟性的特性, 在实际应用中较难实现.2013年, Lai等人[15]基于Green等人[12]的方案, 提出了一种可验证的外包解密方案, 并且该方案的安全性不依赖于随机预言模型.在该方案中, 除了对明文数据进行加密, 还需要对GT域中的一个随机元素进行加密处理.由于加密工作量的增加, 导致解密时计算代价增加一倍. 2015年, Qin等人[16]基于Green等人[12]的方案, 提出了一个高效的可验证的解密外包方案, 与Lai等人[15]方案相比, 在该方案中引入了哈希映射来验证第三方解密的正确性.同年, Lin等人[17]也提出了一种可验证的外包解密方案, 并且证明其在标准模型下是安全的.与Lai等人[15]方案相比, 密文长度减少, 解密计算代价减少接近一半. 2016年, Mao等人[18]提出一种CPA安全的可验证的外包解密方案.与其他可验证的CPA安全相比, 该方案不再单独加密一个额外的随机消息, 而是采用同时对一个消息和一个随机值进行加密, 然后通过该随机值来将消息提交给云服务器, 使得其拥有比一般CPA安全外包方案更短的密文长度.同年, Zhang等人[19]提出一种具有可验证性外包功能的自适应安全的多授权CP-ABE方案.该方案不仅实现了解密外包验证, 并且降低了公钥大小.但是在该方案中, 每个属性不是由唯一的控制权限控制, 所以仅能被视为适当的多授权ABE方案, 且其仅支持单调访问结构.2017年, Liu等人[20]提出一种将离线与在线技术相结合的密文策略ABE方案, 并且支持可验证的外包解密.该方案将密钥生成和大部分加密计算都进行离线计算, 减少在线计算时间, 并且将大部分解密工作量都外包给第三方服务器, 但是仍然没有对云服务器端解密方式进行快速处理.

由以上分析可知:现有的ABE方案, 无论是在用户端还是云服务器端, 都存在计算量过大、计算时间过长的问题.

2 系统模型与算法定义 2.1 系统模型

支持快速解密的CP-ABE系统模型如图 1所示, 包括授权中心、云服务器、数据所有者和数据消费者.

Fig. 1 Ciphertext-policy attribute-based encryption system model with fast decryption 图 1 支持快速解密的密文共享系统模型

(1) 授权中心:通常在企业可信域内, 负责生成系统公钥PK、系统主密钥MK、用户最终解密密钥DK和云服务器转换密钥TK;

(2) 云服务器:云服务器是模型中半可信的第三方, 用于存储大量密文数据, 并且从授权中心获取转换密钥TK对密文进行半解密;

(3) 数据所有者:数据所有者是模型中数据的原始拥有者, 将数据进行加密并上传至云服务器进行存储;

(4) 数据消费者:数据消费者是模型中数据的使用者, 使用由授权中心获取到的最终解密密钥DK, 将从云服务器获取到的半解密密文进行解密, 以获得共享数据.

2.2 算法定义

定义1.一种基于Spark集群的解密外包方案由以下5个算法构成.

Setup(λ, U)→(PK, MK):由授权中心执行, 输入安全参数l、属性空间U, 输出系统公钥PK和系统主密钥MK;

Encrypt(PK, M, T)→(CT):由用户客户端执行, 输入访问策略T、明文M和系统公钥PK, 输出密文CT;

KeyGen(MK, S)→(DK, TK):由授权中心执行, 输入用户属性集合S、系统主密钥MK, 输出用户最终解密密钥DK和转换密钥TK;

Transform(CT, TK)→(CT'):由云服务器执行, 输入密文CT和转换密钥TK, 输出半解密密文CT';

Decrypt(DK, CT')→(M):由用户客户端执行, 输入用户最终解密密钥DK和半解密密文CT', 输出解密密文M.

3 支持快速解密的CP-ABE方案 3.1 预备知识 3.1.1 双线性映射

双线性映射(bilinear map)[21, 22]因其在密钥生成上具有高效、精确和安全的特点, 使其成为ABE的数学基础之一.其具体定义如下.

G1, G2GT都是阶为素数p的乘法循环群, 记G1的生成元为g1, G2的生成元为g2.形如e:G1×G2GT的映射就是双线性映射.双线性映射具有以下特性.

(1) 双线性.对于∀a, bZp, ∀uG1, ∀vG2e(ua, vb)=e(ub, va)=e(u, v)ab, 当G1=G2时, 该映射被称为对称双线性映射;

(2) 可计算性.对于任意取值, 双线性映射的计算都是高效的;

(3) 非退化性.e(g, g)≠1;1, 即不会将所有的数对都映射为GT中的同一元素.

3.1.2 拉格朗日插值系数

拉格朗日插值法[23]是以法国数学家约瑟夫·拉格朗日命名的一种多项式插值方法.假设平面上有(x0, y0), (x1, y1), …, (xn-1, yn-1)共n个点, 令函数f(x)经过这n个点, 设Dn={0, 1, …, n-1}, 存在n个多项式pj(x), jDn.则对于任意kDn, 都有pk(x), Bk={i|i≠1;k, iDn}, 使得:

$ {p_k}(x) = \prod\limits_{i \in {B_k}} {\frac{{x - {x_i}}}{{{x_k} - {x_i}}}} $ (1)

pk(x)就是拉格朗日系数.拉格朗日插值公式的一般表达形式如下:

$ {L_n}(x) = \sum\nolimits_{j = 0}^{n - 1} {{y_i}{p_j}(x)} $ (2)

在本文方案中, 令iZp*, S表示一个节点集合, i, S(x)表示拉格朗日系数, 则由公式(1)可得:

$ {\Delta _{i, S}}(x) = \prod\nolimits_{j \in S, j \ne i} {\frac{{x - j}}{{i - j}}} . $
3.1.3 共享访问树

为实现秘密共享, 访问策略可以用共享访问树表达.设共享访问树为T, 且其根节点为R.共享访问树T的每一个非叶子节点都代表一个“AND”门或“OR”门.为实现基于属性的访问控制, 共享访问数T的每一个叶子节点都和一个属性相对应.

令共享访问树T的每个节点x的阈值为kx(当x为叶子节点时, 设kx=1), 为x随机选择一元kx-1次多项式qx.秘密共享从T的根节点R开始, 采用自上而下的方式进行.选择随机数sZp*(p为大素数), 令根节点的秘密共享数qR(0)=s, 加密共享数为e(g, g)αs(αZp*); 令其他节点的秘密共享数为qx(0)=qparent(x)(index(x))(parent(x)表示节点x的父节点; index(x)表示节点x在兄弟节点中的序号, 按共享访问树结构从左往右依次进行编号), 加密共享数为e(g, g)αqx(0).

如果属性集S满足Tx(以x为根的树), 记作Tx(S)=1.计算Tx(S)按照递归方式进行.如果x不是叶子节点, 则为x的每个孩子节点x'计算Tx'(S); 如果x代表“AND”门, 只有所有孩子的返回值都为1时, 才有Tx(S)=1;如果x代表“OR”门, 只要有一个孩子的返回值为1, 就有Tx(S)=1.如果x是叶子节点且其关联的属性属于S, 则Tx(S)=1.

3.2 最优子树与加密共享数 3.2.1 共享访问树的最优子树

如果某个用户属性集满足共享访问树T, 就可以用用户密钥和叶子节点的共享数计算出根节点R对应的共享数e(g, g)αs, 其中, s为秘密共享数.显然, 满足共享访问树并不一定要求属性集中的属性和每个叶子节点关联的属性都匹配, 可能只需匹配部分叶子节点就能满足访问树.

定义2.如果属性集S只和T的叶子节点集LT的某个子集SLT匹配就能实现对T的满足, 即T(S)=1, 那么由从T的根节点到叶子节点集SLT形成的T的子树, 就被称作共享访问树T的解密子树.

定义3.共享访问树T的解密子树中叶子节点最少的子树, 被称作共享访问树T的最优解密子树.

定义4.将共享访问树T的最优解密子树中所有的“OR”节点删除后所形成的树, 称作共享访问树T的最优简化解密子树.

3.2.2 加密共享数

观察如图 2所示共享访问树, 该树的所有非叶子节点都代表“AND”门, siF=ESi分别表示节点i的秘密共享数和加密共享数, lij表示i的第j个孩子的拉格朗日系数, 其中, E=e(g, g)α.

Fig. 2 Sharing access tree 图 2 共享访问树

根据共享访问树秘密共享方法和拉格朗日插值法, 计算根节点加密共享数的过程如下:

$ \begin{array}{l} {F_G} = {({E^{{s_A}}})^{{l_{GA}}}} \cdot {({E^{{s_B}}})^{{l_{GB}}}} \cdot {({E^{{s_C}}})^{{l_{GC}}}} = {E^{{s_G}}}, \\ {F_H} = {({E^{{s_D}}})^{{l_{HD}}}} \cdot {({E^{{s_E}}})^{{l_{HE}}}} = {E^{{s_H}}}, \\ {F_R} = {({E^{{s_G}}})^{{l_{RG}}}} \cdot {({E^{{s_H}}})^{{l_{RH}}}} \cdot {({E^{{s_F}}})^{{l_{RF}}}}\\ {\rm{ }} = {({({E^{{s_A}}})^{{l_{GA}}}} \cdot {({E^{{s_B}}})^{{l_{GB}}}} \cdot {({E^{{s_C}}})^{{l_{GC}}}})^{{l_{RG}}}} \cdot {({({E^{{s_D}}})^{{l_{HD}}}} \cdot {({E^{{s_E}}})^{{l_{HE}}}})^{{l_{RH}}}} \cdot {({E^{{s_F}}})^{{l_{RF}}}}\\ {\rm{ }} = {E^{{s_A}{l_{GA}}{l_{RG}}}} \cdot {E^{{s_B}{l_{GB}}{l_{RG}}}} \cdot {E^{{s_C}{l_{GC}}{l_{RG}}}} \cdot {E^{{s_D}{l_{HD}}{l_{RH}}}} \cdot {E^{{s_E}{l_{HE}}{l_{RH}}}} \cdot {E^{{s_F}{l_{RF}}}}\\ {\rm{ }} = {F_A}^{{l_{GA}}{l_{RG}}} \cdot {F_B}^{{l_{GB}}{l_{RG}}} \cdot {F_C}^{{l_{GC}}{l_{RG}}} \cdot {F_D}^{{l_{HD}}{l_{RH}}} \cdot {F_E}^{{l_{HE}}{l_{RH}}} \cdot {F_F}^{{l_{RF}}}. \end{array} $

根据以上观察, 得到定理1.

定理1.共享访问树的最优简化子树根节点对应的加密共享数等于以每个叶子节点对应的加密共享数为底、以从叶子节点到根节点路径上所有节点对应的拉格朗日系数的积为指数的幂的乘积.

证明:用数学归纳法容易证明, 限于篇幅考虑, 省略证明过程.

3.3 方案构造

方案包括系统初始化、数据加密、密钥生成、数据转换和数据解密这5个模块.

(1) 系统初始化:Setup(λ, U)→(PK, MK)

系统初始化算法由授权中心执行, 该算法以系统空间U和安全参数λ作为输入, 选择一个阶为大素数p的双线性群G0, 记G0的生成元为g, 定义双线性映射e:G0×G0GT.设定哈希函数H1:GT→{0, 1}l, 选择两个随机数α, βZp*, 输出系统公钥PK信息如下:

$ PK = ({G_0}, g, h = {g^b}, e{\left( {g, g} \right)^a}, {H_1}). $

将其上传至云服务器, 并向云服务器及所有用户公开.

授权中心保存系统主密钥:MK=(β, gα).

(2) 数据加密:Encrypt(PK, M, T)→(CT)

数据加密算法由用户客户端执行, 该算法以系统公钥PK、明文数据M、密文共享访问树T作为输入, 输出明文数据M与共享访问树T相关联的密文数据CT.

随机选择秘密共享数sZp*, 令qR(0)=s(R表示共享访问树T的根节点).按照第3.1.3节介绍的方法进行秘密共享.令Y是共享访问树T中的所有叶子节点的集合, 输出如下密文:

$ CT = (T, \tilde C = M \cdot e{(g, g)^{\alpha s}}, C = {h^s}, \hat C = {H_1}(M), \forall y \in Y:{C_y} = {g^{{q_y}(0)}}, {C'_y} = H{(att(y))^{{q_y}(0)}}). $

(3) 密钥生成:KeyGen(MK, S)→(DK, TK)

密钥生成算法由授权中心执行, 该算法以系统主密钥MK和属性集合S作为输入, 选择一个随机数rZp*, 对于任意属性jS, 选择随机数rjZp*.在授权中心输出用户私钥SK如下:

$ SK = \left( {D = {g^{\frac{{\alpha + r}}{\beta }}}, \forall j \in S:{D_j} = {g^r} \cdot H{{(j)}^{{r_j}}}, {{D'}_j} = {g^{{r_j}}}} \right). $

选择随机数nZp*, 计算用于云服务器外包解密的转换密钥TK, 并将其发送给云服务器.

转换密钥TK的计算过程如下:

$ TK = \left( {{D^{TK}} = {{\left( {{g^{\frac{{\alpha + r}}{\beta }}}} \right)}^n},\forall j \in S:D_j^{TK} = {{\left( {{g^r} \cdot H{{\left( j \right)}^{{r_j}}}} \right)}^n},{D_j}{'^{\left( {TK} \right)}} = {{\left( {{g^{{r_j}}}} \right)}^n}} \right). $

最后, 通过安全信道将最终解密密钥DK=n发送给用户客户端.

(4) 数据转换:Transform(CT, TK)→(CT')

数据转换算法由云服务器执行, 该算法以密文消息CT和转换密钥TK作为输入, 根据定理1, 使用Spark集群快速计算半解密密文CT'的模型如图 3所示.

Fig. 3 Spark-based semi-decryption model 图 3 基于Spark平台进行半解密模型图

首先检测用户属性是否满足共享访问树:若不满足, 则直接输出⊥; 否则, 针对最优简化解密子树中的节点x (包括叶子节点)启动Spark中的Map运算, 对最优解密子树中的叶子节点y启动Spark中的Reduce运算.整个算法包括Transform(Map), Transform(Reduce)和Transform(Multiple)这3个重要模块.

Transform(Map)

对每个叶子节点y, 使用转换密钥TK, 通过如下计算获得该节点的部分秘密值CTy':

$ C{'}{T_y} = Transform\left( {CT,TK,y} \right) = \frac{{e\left( {D{'}_i^{TK},{C_y}} \right)}}{{e\left( {D_i^{\left( {TK} \right)},{C{'}_y}} \right)}} = \frac{{e\left( {{{\left( {{g^r} \cdot H{{\left( j \right)}^{{r_j}}}} \right)}^n},{g^{{q_y}\left( 0 \right)}}} \right)}}{{e\left( {{{\left( {{g^{{r_j}}}} \right)}^n},H{{\left( i \right)}^{{q_y}\left( 0 \right)}}} \right)}} = e{\left( {g,g} \right)^{nr{q_y}\left( 0 \right)}}. $

NodeLeafy为叶子节点标识符, 将每个叶子节点的标识符和部分秘密值CTy'以(NodeLeafy, CTy')键值对分别发送到不同的Reduce.

对于从叶子节点y到根节点路径上的每个非叶子节点x, 计算该节点在该路径上的孩子节点sx对应的拉格朗日系数值△index(sx), S(0).对于x的每个子孙叶子节点y, 将(NodeLeafy, △index(sx), S(0))键值对发送给y所对应的Reduce.

Transform(Reduce)

对每一个Reduce运算, 首先判断传入的值是叶子节点的值还是非叶子节点的值:如果是两个非叶子节点的值, 则将两个节点的拉格朗日系数值相乘; 如果是一个叶子节点的值、一个非叶子节点的值且该轮Reduce运算所需要的所有非叶子节点的值还未全部传入, 则将非叶子节点的拉格朗日系数值保存起来, 直到所有节点的值传入完毕.在Reduce节点接收到所有值后, 根据定理1计算叶子节点y对应的幂值:

$ {Y_y} = e{(g, g)^{nr{q_y}(0) \cdot \prod {\Delta index(sx), S(0)} }}. $

Transform(Multiply)

令共享访问树T的最优简化解密子树ST的叶子节点的总数为num(ST), 将每一个Reduce的结果收集起来进行连乘运算, 得到根节点的秘密共享数:

$ C{T'_R} = \prod\nolimits_{y = 1}^{num(ST)} {{Y_y}} = \prod\nolimits_{y = 1}^{num(ST)} {e{{(g, g)}^{nr{q_y}(0) \cdot \prod {\Delta index(sx), S(0)} }}} = e{(g, g)^{nr{q_R}(0)}} = e{(g, g)^{nrs}}. $

然后进行如下计算, 得到半解密密文CT'.

$ CT' = \frac{{e(C, {D^{TK}})}}{{C{{T'}_R}}} = \frac{{e\left( {{h^s}, {{\left( {{g^{\frac{{\alpha + r}}{\beta }}}} \right)}^n}} \right)}}{{e{{(g, g)}^{nrs}}}} = e{(g, g)^{n\alpha s}}. $

(5) 数据解密:Decrypt(DK, CT')→(M)

数据解密算法由用户客户端执行, 以用户最终解密密钥DK和云服务器传回的半解密密文CT'作为输入, 输出明文M.

首先, 使用最终解密密钥DK对从云服务器传回的半解密密文CT'进行开方处理, 得到密文解密参数A=e(g, g)αs, 再通过如下计算得到明文M':

$ M' = \frac{{\tilde C}}{A} $

如果H1(M')等于Ĉ, 则表明M'等于M, 输出明文M; 否则, 输出⊥.

4 安全性与性能分析 4.1 安全模型

实现CPA安全的CP-ABE安全模型如下.

●初始化:挑战者运行Setup算法, 产生系统公钥PK, 并且将公钥PK公开给敌手;

●第1阶段:敌手A查询属性集S1, …, Sq1分别对应的私钥;

●挑战:敌手提交要挑战的访问结构A*和两个等长的明文消息M0M1.选择挑战的访问结构时, 应保证第1阶段查询过的任意属性集都不满足该访问结构.挑战者选择一个随机数b, 并且基于访问结构A*加密数据Mb形成密文CT*, 然后将密文CT*提供给敌手;

●第2阶段:选择一组都不满足访问结构的属性Sq+1, …, Sq, 重复第1阶段的操作;

●猜测:敌手A输出与随机数b对应的猜测值b'.

敌手能够赢得上述挑战游戏的优势为Pr[b'=b]-1/2.在上述游戏中, 如果敌手在多项式时间内赢得游戏的优势是可忽略不计的, 就可以认为对应的CP-ABE方案是安全的.

4.2 安全性分析

定理2.本文所提出的方案, 在一般群模型和随机预言模型下可抵御选择明文攻击.

证明:假设敌手(算法)A在一般群模型和随机预言模型能以不可忽略优势攻破本文所提出的方案, 那么可以基于A构建敌手(算法)B, 使得其可以在同样模型下攻破BSW方案, 这与在一般群模型和随机预言模型下BSW方案可以抵御选择明文攻击矛盾, 故本文所提出的方案在一般群模型和随机预言模型下可抵御选择明文攻击.下面说明敌手B的构建过程.

●初始化阶段:敌手B获取BSW方案的公钥PK=(G0, g, h=gβ, e(g, g)α), 并将其发送给A;

●第1阶段:敌手B建立空表T, 敌手A可重复发出查询请求.A发出一次查询后, B将要查询属性集S发送给BSW方案挑战者(模拟器), 由BSW方案挑战者利用密钥生成算法生成与S对应的私钥SK'并返回给B.B选择一个随机数nZp*, 由SK'计算出转换密钥TK, 计算SK=(n, TK).将SK返回给A.将(S, SK, TK)存入到表T中;

●挑战阶段:当A确定第一个阶段结束后, 向B提交要挑战的访问结构树T和两个明文消息M0, M1G1.提交T时, 要确保已经查询的属性集中没有一个满足T.BT和两个消息发送给BSW方案挑战者以获得密文CT;

●第2阶段:B继续接受A的查询, 但查询分为如下两种情况.

S不满足T.重复第1阶段的查询过程;

S满足T.该情况下, 无法查询S对应私钥, 故只能按如下方法生成伪转换密钥:B随机选择dZp*, tG0, 运行KeyGen((d, t, PK), S)生成密钥SK', 令TK=SK', SK=(d, TK).将TK返回给A, 将(S, SK, TK)存入到表T中;

●猜测:如果A输出的猜测为b', 那么B输出的猜测也为b'.因此, 如果A能以不可忽略优势攻破本文所提出的方案, 那么B也能以不可忽略优势攻破BSW方案.

5 性能分析 5.1 理论分析

在进行数据处理时, 双线性运算B和指数运算E所需要的时间占CP-ABE方案绝大部分时间, 故以这两个指标作为衡量计算性能的指标.令|TL|为T的叶子节点个数(树结构)或矩阵的行数(LSSS结构), 则针对本文方案, 在解密时, 用户客户端仅需对从云服务器端获取到的半解密密文CT'进行一次指数运算, 即用户客户端解密代价仅为1E.云服务器端需要对每一个叶子节点进行一次双线性运算和一次指数运算, 最后在求解半解密密文时再进行一次双线性运算, 所以在云端的解密代价为(|TL|+1)B+|TL|E, 且其运行在Spark集群上, 将云服务器的解密代价分给集群中各个节点, 从而进一步减少了云服务器解密时间.故本文方案解密总代价为(|TL|+1)B+(|TL|+1)E.

本文方案与BSW方案、文献[12]中的方案、文献[18]中的方案在用户端解密计算开销、服务器端解密计算开销以及解密计算总开销对比见表 1~表 3.

Table 1 Comparison of decryption time in user client 表 1 用户客户端解密计算开销对比

Table 2 Comparison of decryption time in cloud server 表 2 云服务器计算开销对比

Table 3 Comparison of total decryption time 表 3 解密计算总开销对比

5.2 实验分析

实验采用Eclipse开发工具, 利用双线性对加密库(JPBC)(http://crypto.stanford.edu/pbc/)和CP-ABE开发工具包(http://acsc.csl.sri.com/cpabe/), 基于本文提出的方案, 在Spark集群环境下进行.双线性运算和指数运算皆采用JPBC中原有的操作, 从素数阶群y2=x3+x中选取群GGT, 群GGT中的元素长度为512位.实验使用的虚拟PC机用户客户端配置为:1个Intel(R) Xeon(R) CPU(E5-2620 2.0GHZ), 内存1GB, 系统CentOS6.5 64位; 实验使用的虚拟移动设备用户客户端配置为:1个Google APIs Intel Atom(x86_64), 内存2GB, 系统Android7.0;实验使用的虚拟云服务器端配置为:4个Intel(R) Xeon(R) CPU(E5-2620 2.0GHZ), 内存8GB, 系统CentOS6.5 64位; 实验使用的虚拟云服务器端Spark集群配置为:11台虚拟机, 其中1台为master节点, 另外10台均为node节点.每台配置均为:2个Intel(R) Xeon(R) CPU(E5-2620 2.0GHZ), 内存8GB, 系统CentOS6.5 64位.

实验时, 分别使用PC机和手机作为客户端进行对比实验.为保证数据的可靠性, 每组对比实验中每个方案每轮进行50次运算并取其平均值.针对PC机用户客户端解密时间和总解密时间, 将本文方案分别与BSW方案、文献[12]中的方案、文献[18]中的方案进行对比; 针对移动设备用户客户端解密时间和总解密时间, 将本文方案分别与文献[12]中的方案、文献[18]中的方案进行对比; 针对云服务器端解密时间, 将本文方案分别和基于BSW方案的Proxy方案(即将解密工作外包给云服务器但未进行并行化处理)、文献[12]中的方案、文献[18]中的方案进行对比.为方便进行实验比较, 密文共享访问结构之间的逻辑关系均为逻辑与(即“AND”关系).每组对比实验进行25轮测试, 每轮增加4个共享访问策略属性, 为保证实验变量的唯一性, 每一轮所使用的数据及共享访问策略相同.

当用户客户端分别为PC机和移动设备时, 本文方案与BSW方案、文献[12]中的方案、文献[18]中的方案在用户客户端解密时间对比分别如图 4图 5所示.当用户客户端为PC机时, 本文方案、文献[12]中的方案、文献[12]中的方案在用户客户端解密时间在3ms~5ms之间, 而BSW方案的解密时间随着访问策略属性数量的增加呈急剧上升趋势; 当用户客户端为移动设备时, 本文方案、文献[12]中的方案和文献[18]中的方案这3种方案在用户客户端解密时间均在4ms~8ms之间.

Fig. 4 Comparison of decryption time in user client (PC) 图 4 用户端解密时间对比图(PC)

Fig. 5 Comparison of decryption time in user client (Android) 图 5 用户端解密时间对比图(安卓)

本文方案与Proxy方案、文献[12]中的方案、文献[18]中的方案在云服务器端解密时间对比如图 6所示, 几种方案在云服务器端的解密时间都随着访问策略属性的增加而逐渐增长, 但是当共享访问策略属性数量增加时, 本文方案具有明显优势.

Fig. 6 Comparison of decryption time in cloud server 图 6 云服务器端解密时间对比图

当用户客户端为PC机时, 本文方案与BSW方案、文献[12]中的方案、文献[18]中的方案总解密时间对比如图 7所示; 当用户客户端为移动设备时, 本文方案与文献[12]中的方案、文献[18]中的方案总解密时间对比如图 8所示.无论是使用PC机还是移动设备, 几种方案的解密时间都随着访问策略属性的增加呈现上升趋势, 但是在两种环境下, 本文方案在共享访问策略数量增加的情况下都具有明显优势, 且当访问策略属性的数量达到100个时, 本文方案总解密时间在1s左右, 满足用户响应时间要求.

Fig. 7 Comparison of total decryption time (PC) 图 7 总解密时间对比图(PC)

Fig. 8 Comparison of total decryption time (Android) 图 8 总解密时间对比图(安卓)

6 结束语

现有的CP-ABE方案在解密时普遍存在计算量过大、计算时间过长等问题, 难以在用户终端特别是运算能力较弱的移动终端上实施.为了减少用户客户端的负担, 一些将解密外包给云服务器的CP-ABE方案被提出.这些方案虽然明显降低了用户终端解密时的计算量, 但计算时间过长问题并没有得到有效解决.针对该问题, 将Spark集群技术和并行计算技术引入到CP-ABE方案的设计之中, 提出了一种面向公有云的支持快速解密的CP-ABE方案.在该方案中, 将计算量较大的求解共享访问树根节点对应的加密共享数的任务分解为若干个可并行执行的Map任务和Reduce任务.Map任务负责拉格朗日系数的计算或叶子节点加密共享数的计算, Reduce节点负责计算出叶子节点对应的幂值.最后, 计算出的幂值的乘积即为共享访问树根节点对应的加密共享数.性能分析表明, 与BSW方案、文献[12]中的方案、文献[18]中的方案相比, 所提出的方案在解密速度上有显著提高; 而安全性分析表明, 所提出方案在一般群模型和随机预言模型下能对抗选择明文攻击.

参考文献
[1]
Feng CS, Qin ZG, Ding Y, Yu Q. Key techniques of access control for cloud computing. Acta Electronica Sinica, 2015, 43(2): 312-319(in Chinese with English abstract). [doi:10.3969/j.issn.0372-2112.2015.02.017]
[2]
Feng DG, Zhang M, Zhang Y, Xu Z. Study on cloud computing security. Ruan Jian Xue Bao/Journal of Software, 2011, 22(1): 71-83(in Chinese with English abstract). [doi:10.3724/SP.J.1001.2011.03958]
[3]
Feng CS, Qin ZG, Yuan D. Techniques of secure storage for cloud data. Chinese Journal of Computers, 2015, 38(1): 150-163(in Chinese with English abstract). [doi:10.3724/SP.J.1016.2015.00150]
[4]
Sahai A, Waters B. Fuzzy identity based encryption. In: Proc. of the Advances in Cryptology, Eurocrypt. LNCS, Springer-Verlag, 2005. 457-473. [doi: 10.1007/11426639_27]
[5]
Bethencourt J, Sahai A, Waters B. Ciphertext-Policy attribute-based encryption. In: Proc. of the 2007 IEEE Symp. on Security and Privacy. Washington: IEEE Computer Society, 2007. 321-334. [doi: 10.1109/SP.2007.11]
[6]
Goyal V, Pandey A, Sahai A, Waters B. Attribute-Based encryption for fine-grained access control of encrypted data. In: Juels A, Wright RN, Vimercati SDC, eds. Proc. of the 13th ACM Conf. on Computer and Communications Security (CCS 2006). Alexandria: ACM, 2006. 89-98. [doi: 10.1145/1180405.1180418]
[7]
Ostrovsky R, Sahai A, Waters B. Attribute-Based encryption with non-monotonic access structures. In: Proc. of the 14th ACM Conf. on Computer and Communications Security. New York: ACM, 2007. 1-17. [doi: 10.1145/1315245.1315270]
[8]
Cheung L, Newport C. Provably secure ciphertext policy ABE. In: Proc. of the 14th ACM Conf. on Computer and Communications Security. New York: ACM, 2007. 456-465. [doi: 10.1145/1315245.1315302]
[9]
Goyal V, Jain A, Pandey O, Sahai A. Bounded ciphertext policy attribute based encryption. In: Proc. of the 35th Int'l Colloquium on Automata, Languages and Programming. Berlin: Spring-Verlag, 2008. 579-591. [doi: 10.1007/978-3-540-70583-3_47]
[10]
Li J, Ren K, Zhu B, Wan Z. Privacy-Aware attribute-based encryption with user accountability. In: Proc. of the Int'l Conf. on Information Security. Berlin: Springer-Verlag, 2009. 347-362. [[doi: 10.1007/978-3-642-04474-8_28]
[11]
Waters B. Ciphertext-Policy attribute-based encryption: An expressive, efficient, and provably secure realization. In: Proc. of the Public Key Cryptography (PKC 2011). Berlin: Springer-Verlag, 2011. 53-70. [doi:10.1007/978-3-642-19379-8_4]
[12]
Green M, Hohenberger S, Waters B. Outsourcing the decryption of ABE ciphertexts. In: Proc. of the 20th Usenix Conf. on Security. San Francisco: ACM, 2011. 34-34.
[13]
Li J, Jia C, Li J, et al. Outsourcing encryption of attribute-based encryption with MapReduce. In: Proc. of the 14th Int'l Conf. on Information and Communications Security. Berlin: Springer-Verlag, 2012. 191-201. [doi: 10.1007/978-3-642-34129-8_17]
[14]
Zhou Z, Huang D. Efficient and secure data storage operations for mobile cloud computing. In: Proc. of the 8th Int'l Conf. on Network and Service Management. Austria: IEEE, 2012. 37-45.
[15]
Lai J, Deng RH, Guan C, Weng J. Attribute-based encryption with verifiable outsourced decryption. IEEE Trans. on Information Forensics and Security, 2013, 8(8): 1343-1354. [doi:10.1109/TIFS.2013.2271848]
[16]
Qin B, Deng R, Liu S, Ma S. Attribute-Based encryption with efficient verifiable outsourced decryption. IEEE Trans. on Information Forensics and Security, 2015, 10(7): 1384-1393. [doi:10.1109/TIFS.2015.2410137]
[17]
Lin S, Zhang R, Ma H, Wang M. Revisiting attribute-based encryption with verifiable outsourced decryption. IEEE Trans. on Information Forensics & Security, 2015, 10(10): 2119-2130. [doi:10.1109/TIFS.2015.2449264]
[18]
Mao X, Lai J, Mei Q, et al. Generic and efficient constructions of attribute-based encryption with verifiable outsourced decryption. IEEE Trans. on Dependable & Secure Computing, 2016, 13(5): 533-546. [doi:10.1109/TDSC.2015.2423669]
[19]
Zhang K, Ma J, Liu J, et al. Adaptively secure multi-authority attribute-based encryption with verifiable outsourced decryption. Science China Information Sciences, 2016, 59(9): 99-105. [doi:10.1007/s11432-016-0012-9]
[20]
Liu Z, Jiang ZL, Wang X, et al. Offline/Online attribute-based encryption with verifiable outsourced decryption. Concurrency & Computation Practice & Experience, 2017. [doi:10.1002/cpe.3915]
[21]
Boneh D, Franklin M. Identity-Based encryption from the Weil pairing. Siam Journal on Computing, 2001, 32(3): 213-229. [doi:10.1137/S0097539701398521]
[22]
Dan B, Lynn B, Shacham H. Short signatures from the Weil pairing. Journal of Cryptology, 2004, 17(4): 297-319. [doi:10.1007/s00145-004-0314-9]
[23]
Rockafellar RT. Lagrange multipliers and optimality. Siam Review, 1993, 35(2): 183-238. [doi:10.1137/1035044]
[1]
冯朝胜, 秦志光, 袁丁, 卿昱. 云计算环境下访问控制关键技术. 电子学报, 2015, 43(2): 312-319. [doi:10.3969/j.issn.0372-2112.2015.02.017]
[2]
冯登国, 张敏, 张妍, 徐震. 云计算安全研究. 软件学报, 2011, 22(1): 71-83. [doi:10.3724/SP.J.1001.2011.03958]
[3]
朝胜, 秦志光, 袁丁. 云数据安全存储技术. 计算机学报, 2015, 38(1): 150-163. [doi:10.3724/SP.J.1016.2015.00150]