随着云技术的发展, 用户习惯于将自己的私人数据存储在云上用于共享。由于云可能会遭到破坏或不完全可信, 而密文策略属性基加密(Ciphertext-Policy-Attribute Based Encryption, CP-ABE)[1]可解决密钥泄露的问题, 比较适合用于云存储, 因此用户可将数据加密后存放在云上。访问控制策略本身可能会泄露重要信息, 因此对访问控制策略中的属性需要进行盲化, 以便隐藏访问控制策略[2-4]。
在CP-ABE中, 数据加密和解密所需的时间与访问结构的复杂性相关, 因此在移动设备中实施CP-ABE会使设备面临巨大的计算压力。为减轻用户在移动设备上的计算量, 文献[5]提出一种在线/离线属性基加密(Online/Offline Attribute-Based Encryption, OO-ABE)方案, 该方案的加密阶段由在线加密和离线加密2个部分组成。在明文和访问策略未知的情况下, 用户在离线加密阶段利用高性能服务器进行大量运算得到中间的通用密文部分计算能力较差的移动设备得到中间密文后, 通过少量的计算即可快速完成加密过程得到最终密文, 因而有效地减轻了移动设备的计算量和电量消耗[6-8]。此外, 文献[9]考虑解密阶段的计算复杂性, 提出一种外包解密ABE方案, 该方案将大量的解密计算工作委托给代理服务器完成, 实现部分解密, 代理服务器将部分解密的密文发送给用户, 用户只需少量的计算就能对密文进行解密。代理服务器被认为是半诚实的, 所以为了保证代理服务器正确执行部分解密过程, 文献[10]提出一种可验证外包解密ABE方案, 文献[11-13]对验证外包解密方案进行了相关研究。
本文在文献[4]方案的基础上, 提出一种隐藏策略的可验证外包解密在线/离线密文策略属性基加密(Online/Offline Ciphertext Policy Attribute Based Encryption, OO-CP-ABE)访问控制方案。
1 数据共享系统 1.1 系统描述数据共享系统架构如图 1所示。
|
Download:
|
| 图 1 数据共享系统架构 | |
共享系统描述如下:
1) 云服务器:提供数据共享服务。
2) 数据拥有者:根据访问控制策略对数据进行加密并数字签名, 之后将密文存放到云服务器。
3) 用户:访问云服务器上加密过的数据, 并且对解密出来的数据进行验证。
4) 密钥生成中心(Key Generation Center, KGC):为系统生成公私钥, 假定它是半诚实的。KGC执行其他实体分配给它的合法任务, 但有可能看到数据拥有者的数据、访问控制策略。
5) 代理服务器:实施数据的访问控制, 并对其部分解密。假定该代理服务器是半诚实的, 执行由其他实体分配给它的合法任务, 但有可能会看数据拥有者的数据、访问控制策略。
1.2 算法结构该方案由Setup、KeyGen、Offline.Encryption、Online.Encryption、GenToken、SPartDecrypt、Decrypt7个算法组成, 算法介绍如下:
1) Setup(λ)→(PKKGC, MKKGC), (PKS, MKS), (PKsign, MKsign):该算法输入安全参数λ, KGC为整个系统生成公共参数。KGC、代理服务器和数据拥有者分别输出自己的公私钥对(PKKGC, MKKGC)、(PKS, MKS)和(PKsign, MKsign)。
2) KeyGen(MKKGC, S)→SKut:该算法是由密钥生成中心来执行, 输入为密钥生成中心的私钥MKKGC和属性集合S, 并且为用户ut输出私钥SKut。
3) Offline.Encryption(PKKGC, PKS)→IT:该离线加密算法是由数据拥有者来执行, 该算法在不确定明文和访问控制策略的情况下, 完成加密的大量计算工作, 以公共参数PKKGC和PKS为输入, 输出中间密文IT。
4) Online.Encryption(M, IT, Γ, MKsign)→CT:该在线加密算法是由数据拥有者来执行。此阶段只需要很少的计算量就可以快速完成属性基加密过程。该算法输入明文M、中间密文IT、访问结构Γ和签名私钥MKsign, 输出密文CT, 其中间密文包含密文和明文的签名ξ。
5) GenToken(SKut, S′)→TKS′, ut:用户ut将SKu和属性集S′⊆S作为输入, 并输出一个令牌TKS′, ut。
6) SPartDecryp(CT, TKS′, ut)→CT′:代理服务器判断S′是否与访问控制策略相匹配。如果是, 则对CT进行部分解密, 并输出部分解密结果CT′; 否则返回⊥。
7) Decrypt(CT′, SKS′, ut, PKsign)→M:该算法对数据进行解密, 并且对解密出来的数据进行正确性验证。以CT′、SKS′, ut和PKsign为输入, 如果数据验证成功, 则输出数据M。
2 具体方案 2.1 预备知识定义1(访问结构) 设{p1, p2, …, pn}是一个集合, 访问结构A⊆2{p1, p2, …, pn}\{∅}。如果对∀B, C有B∈A, 且B⊆C, 则有C∈A, 从而可得A是单调的。
定义2(双线性对) 设G0和G1是阶为素数p的乘法循环群, g是G0的生成元素。映射e:G0×G0→G1是一个双线性对, e具有以下特性:
1) ∀u, v∈G0并且∀x, y∈
2) 非退化性:e(g, g)≠1。
3) 可计算性:计算双线性映射e:G0×G0→G1是有效的。
定义3(DBDH问题) 基于上述概念和符号, 给出了G0的生成元g和gx、gy、gz, 其中∀x, y, z∈
设G0是一个素数p阶双线性群, g是G0的生成元, e:G0×G0→G1为双线性映射。一个安全参数k将决定群的大小。本文使用3个散列函数:H:{0, 1}*→G0, H1:G1→{0, 1}logap和H2:{0, 1}*→{0, 1}*。同时定义拉格朗日系数
Setup(1λ)→(PKKGC, MKKGC), (PKS, MKS), (PKsign, MKsign):KGC、代理服务器和数据拥有者分别生成自己的公钥和主密钥对。
KGC选择素数阶为p的循环群G0和G1, g是生成元。KGC选择以下公共参数:(G0, g, H, H1, H2), 其中, H:{0, 1}*→G0, H1:G1→{0, 1}logap, H2:{0, 1}*→{0, 1}*。
KGC选择2个随机指数α, β∈
代理服务器选择随机指数γ∈
数据拥有者选择随机指数v∈
KeyGen(MKKGC, S)→SKut:此算法为用户生成私钥。KGC选择2个随机指数rt∈
Offline.Encryption(PKKGC, PKS)→IT:数据拥有者选择2个随机数a, s∈
Online.Encryption(M, IT, Γ, MKsign)→CT:关于访问树的内容参考文献[1], 设Y为访问控制树Γ中的叶节点集, 数据拥有者对每一个叶节点y∈Y计算Sy=e((gβ)a, H(λy))。然后计算H1(Sy), 并且在访问树中的所有节点的属性都被模糊化的属性H1(Sy)替换。最后数据拥有者用签名私钥对数据进行签名
| $ \begin{align} & CT=(\mathit{\Gamma} , \tilde{C}={\tilde{C}}'\cdot M, C={{h}^{s}}, \\ & \ \ \ \ \ \ \ \ \ \ \forall y\in Y:{{C}_{{{y}_{1}}}}={{g}^{{{q}_{y}}(0)}}, {{C}_{{{y}_{2}}}}=H{{\left( {{\lambda }_{j}} \right)}^{{{q}_{y}}(0)}}, \xi ) \\ \end{align} $ |
数据拥有者ua将(IDa, ga, CT)发给代理服务器。
GenToken(SKut, S′)→TKS′, ut:首先用户发送ut请求到代理服务器, 并从中得到ga, 然后运行GenToken(SKu, S′)算法生成令牌TKS′, ut。
对于所有λj∈S′, 用户计算Sj=e(ga, D″j)=e(ga, H(λj)β)。此算法选择一个随机数τ∈
SPartDecryption(CT, TKS′, ut)→CT′:收到用户发送的令牌后, 代理服务器判断令牌中嵌入的属性索引Ij是否匹配CT中嵌入的模糊化访问控制策略。如果令牌与数据的访问控制策略相匹配, 那么运行SPartDecryption(CT, TKS′, ut)算法为用户ut部分解密密文。
SPartDecryption(CT, TKS′, ut)算法以递归的方式运行, 首先定义递归算法DecryptNode(CT, TKS′, ut, x), 该算法输入有关属性集S′的令牌TKS′, ut, 访问控制树Γ的节点x和密文CT, 该算法输出G1的元素或⊥。
假设代理服务器使用用户ut提供的令牌TKS′, ut运行该算法。叶子节点x的属性被模糊化为H1(Sx), 因此, 做如下的定义:
如果H1(Sx)∈Ψ, 其中Ψ是相关令牌中的所有属性索引Ij的集合, 则有:
| $ \begin{align} & DecryptNode\left( CT, T{{K}_{{S}', {{u}_{t}}}}, x \right)=\frac{e\left( {{\left( {{D}_{x}} \right)}^{\tau }}, {{C}_{x}} \right)}{e\left( {{\left( {{{{C}'}}_{x}} \right)}^{\tau }}, {{{{C}'}}_{x}} \right)}= \\ & \ \ \ \ \ \ \ \ \ \frac{e\left( {{\left( {{g}^{{{r}_{t}}}}\cdot H{{\left( {{\lambda }_{x}} \right)}^{{{r}_{j}}}} \right)}^{\tau }}, {{g}^{{{q}_{x}}(0)}} \right)}{e\left( {{\left( {{g}^{{{r}_{x}}}} \right)}^{\tau }}, H{{\left( {{\lambda }_{x}} \right)}^{{{q}_{x}}(0)}} \right)}=e{{\left( g, g \right)}^{{{r}_{t}}\tau {{q}_{x}}(0)}} \\ \end{align} $ |
如果H1(Sx)∉Ψ, 则有:
| $ DecryptNode\left( CT, T{{K}_{{S}', {{u}_{t}}}}, x \right)=\bot $ |
考虑x是一个非叶子节点的递归过程, 算法DecryptNode(CT, TKS′, ut, x)的执行如下:对所有节点z是x的子节点, 该算法运行算法DecryptNode(CT, TKS′, ut, z), 并输出Fz。设Sx是一个大小为kx的子节点z的集合, 使Fz≠⊥, 然后该计算:
| $\begin{align} & {{F}_{x}}=\underset{z\in {{S}_{x}}}{\mathop{\prod }}\, F_{z}^{{{\Delta }_{i, {{{{S}'}}_{x}}}}\left( 0 \right)}= \\ & \ \ \ \ \ \ \ \ \ \underset{z\in {{S}_{x}}}{\mathop{\prod }}\, {{\left( e{{\left( g, g \right)}^{{{r}_{t}}\cdot \tau \cdot {{q}_{z}}\left( 0 \right)}} \right)}^{{{\Delta }_{i, {{{{S}'}}_{x}}}}\left( 0 \right)}}= \\ & \ \ \ \ \ \ \ \ \ \underset{z\in {{S}_{x}}}{\mathop{\prod }}\, {{\left( e{{\left( g, g \right)}^{{{r}_{t}}\cdot \tau \cdot {{q}_{parent(z)}}\left( index\left( z \right) \right)}} \right)}^{{{\Delta }_{i, {{{{S}'}}_{x}}}}\left( 0 \right)}}= \\ & \ \ \ \ \ \ \ \ \ \underset{z\in {{S}_{x}}}{\mathop{\prod }}\, {{\left( e{{\left( g, g \right)}^{{{r}_{t}}\cdot \tau \cdot {{q}_{x}}(i)}} \right)}^{{{\Delta }_{i, {{{{S}'}}_{x}}}}\left( 0 \right)}}=e{{\left( g, g \right)}^{{{r}_{t}}\tau {{q}_{x}}(0)}} \\ \end{align} $ |
其中, i=index(z), S′x={index(z):z∈Sx}, 返回结果。
该算法从访问控制树Γ的根节点R开始运行, 如果属性集S′相关的令牌满足访问树, 则代理服务器运行DecryptNode(CT, TKS′, ut, R)=e(g, g)rtτs。
代理服务器计算CT中的KS=(ga, MKS)=e(ga, H(IDS)γ), 并且计算
Decrypt(CT′, SKS′, ut, MKsign)→M:当用户ut接收中间密文CT′时, 用户通过运算Decrypt(CT′, TKS′, ut, MKsign)算法对密文进行解密, 并且对数据进行验证, 解密过程如下:
| $ \begin{align} & \frac{{{\tilde{C}}''}}{\left( e\left( C, D \right)/{{A}^{1/\tau }} \right)}=\frac{{{\tilde{C}}''}}{\left( e\left( {{h}^{s}}, {{g}^{\left( \alpha +{{r}_{t}} \right)/\beta }} \right)/{{\left( e{{\left( g, g \right)}^{{{r}_{t}}\tau s}} \right)}^{1/\tau }} \right)}=\text{ } \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \frac{{{\tilde{C}}''}}{\left( e\left( {{g}^{\beta s}}, {{g}^{\left( \alpha +{{r}_{t}} \right)/\beta }} \right)/{{\left( e{{\left( g, g \right)}^{{{r}_{t}}\tau s}} \right)}^{1/\tau }} \right)}= \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{ }\ \ \frac{M\cdot e{{\left( g, g \right)}^{\alpha s}}}{e{{\left( g, g \right)}^{\alpha s}}}=M \\ \end{align} $ |
在得到数据M后, 对数据的外包解密验证如下:
| $ \begin{align} & e({{g}^{{{H}_{2}}(M)}}\cdot P{{K}_{\text{sign}}}, \xi )=e\left( {{g}^{{{H}_{2}}(M)}}\cdot {{g}^{v}}, {{g}^{\frac{1}{{{H}_{2}}\left( M \right)+v}}} \right)= \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{ }e\left( {{g}^{{{H}_{2}}\left( M \right)+v}}, {{g}^{\frac{1}{{{H}_{2}}\left( M \right)+v}}} \right)=e(g, g) \\ \end{align} $ |
如果验证成功, 则说明解密正确, 输出明文M, 否则解密失败, 输出⊥。
3 方案分析 3.1 数据机密性放到云存储中的数据需要对未经授权的用户保密。数据的机密性通过用户属性来保证, 如果用户的属性集不能满足密文中的访问树, 则不能为密文生成有效令牌。因此, 代理服务器无法计算出e(g, g)rtτs。即使用户从云服务器直接得到密文, 也无法恢复出明文。因为密文中的会话密钥KS只在代理服务器和数据拥有者之间共享。另一方面, KGC可能试图偷看云存储中心的数据, 但是KGC无法对密文进行解密。因为密文中的会话密钥KS只在代理服务器和数据拥有者之间共享。
本文方案抗合谋特性、策略隐藏特性与文献[4]一致, 此处不再赘述。
3.2 数据认证性数据在代理服务器解密的过程中, 存在被伪造及被篡改的可能性。针对该问题, 本文方案通过短签名方法, 能验证最终解密出来数据的正确性。当数据拥有者加密数据时, 用Hash函数对数据进行数字签名, 并将签名过的数据嵌入到密文中。当用户解密数据时用签名公钥对解密出来的数据进行正确性验证, 从而代理服务器部分解密的数据是否被篡改和伪造都能够识别出来, 即保证数据的完整性。
3.3 理论分析表 1对不同方法的访问策略、在线/离线加密、验证外包解密、隐藏策略特性与本文方法进行了比较。从表 1可以看出, 3个方法都具有隐藏策略的特性, 文献[15]方法和本文的访问结构是树型的, 本文采用在线/离线加密方法, 并具有验证外包解密功能。这2个功能文献[14-15]都不具备。
|
下载CSV 表 1 不同方法特性比较 |
表 2对各方法中的密文长度、密钥长度和系统公钥长度进行比较。其中, C0和C1分别表示G0和G1中元素的长度, k表示与用户密钥相关的属性个数, t表示与密文相关联的属性个数, u表示系统所有属性个数。
|
下载CSV 表 2 不同方法存储长度比较 |
本文提出一种策略隐藏的可验证外包解密OO-CP-ABE访问控制方案。该方案使用代理服务器对数据进行解密, 并引入短签名方法, 对解密的数据进行正确性验证。分析结果表明, 与现有的CP-ABE方案相比, 该方案可减少移动设备加密阶段的计算负担, 并且能够鉴别解密数据的篡改和伪造, 保证数据的完整性, 同时对访问树中的属性进行隐藏, 避免从访问控制策略中泄漏重要信息。
| [1] |
BETHENCOURT J, SAHAI A, WATERS B.Ciphertext-policy attribute-based encryption[C]//Proceedings of IEEE Symposium on Security and Privacy.[S.1.]: IEEE Computer Society, 2007: 321-334.
( 0)
|
| [2] |
HELIL N, RAHMAN K. CP-ABE access control scheme for sensitive data set constraint with hidden access policy and constraint policy[J]. Security and Communication Networks, 2017(6): 1-13. ( 0)
|
| [3] |
应作斌, 马建峰, 崔江涛. 支持动态策略更新的半策略隐藏属性加密方案[J]. 通信学报, 2015, 36(12): 178-189. DOI:10.11959/j.issn.1000-436x.2015327 ( 0)
|
| [4] |
HUR J. Attribute-based secure data sharing with hidden policies in smart grid[J]. IEEE Transactions on Parallel and Distributed Systems, 2013, 24(11): 2171-2180. DOI:10.1109/TPDS.2012.61 ( 0)
|
| [5] |
HOHENBERGER S, WATERS B.Online/offline attribute-based encryption[C]//Proceedings of International Workshop on Public Key Cryptography.Berlin, Germany: Springer, 2014: 293-310.
( 0)
|
| [6] |
LAI Jiancheng, MU Yi, GUO Fuchuan, et al.Improved identity-based online/offline encryption[C]//Proceedings of Conference on Information Security and Privacy.Berlin, Germany: Springer, 2015: 247-261.
( 0)
|
| [7] |
LIU J K, ZHOU J. An efficient identity-based online/offline encryption scheme[M]. Berlin, Germany: Springer, 2009.
( 0)
|
| [8] |
张凯, 马建峰, 张俊伟, 等. 在线/离线的可追责属性加密方案[J]. 计算机研究与发展, 2018, 55(1): 216-224. ( 0)
|
| [9] |
GREEN M, HOHENBERGER S, WATERS B.Outsourcing the decryption of ABE ciphertexts[C]//Proceedings of the 20th USENIX Conference on Security.[S.1.]: USENIX Association, 2011: 34-34.
( 0)
|
| [10] |
LAI Junzhuo, DENG R H, GUAN Chaowen, et al. Attributebased encryption with verifiable outsourced decryption[J]. IEEE Transactions on Information Forensics and Security, 2013, 8(8): 1343-1354. DOI:10.1109/TIFS.2013.2271848 ( 0)
|
| [11] |
孙剑飞.基于外包的属性基密码体制应用研究[D].成都: 电子科技大学, 2017. http://cdmd.cnki.com.cn/Article/CDMD-10614-1017066048.htm
( 0)
|
| [12] |
MAO Xianping, LAI Junzhuo, MEI Qixiang, et al. Generic and efficient constructions of attribute-based encryption with verifiable outsourced decryption[J]. IEEE Transactions on Dependable and Secure Computing, 2016, 13(5): 533-546. DOI:10.1109/TDSC.2015.2423669 ( 0)
|
| [13] |
LIU Hongwei, WANG Xueyuan, ZHANG Peng.Verifying outsourced decryption of CP-ABE with signature[C]//Proceedings of the 4th International Conference on Mechatronics, Materials, Chemistry and Computer Engineering.[S.1.]: Atlantis Press, 2015: 388-397.
( 0)
|
| [14] |
江泽涛, 赵嘉旭, 吴辉. 策略隐藏的CP-ABE访问控制方案[J]. 计算机工程与设计, 2017, 38(6): 1429-1433. ( 0)
|
| [15] |
陈成, 努尔买买提·黑力力. 基于CP-ABE的隐藏属性外包解密访问控制[J]. 计算机与现代化, 2018(5): 74-78. DOI:10.3969/j.issn.1006-2475.2018.05.016 ( 0)
|
2019, Vol. 45

0)