计算机应用   2017, Vol. 37 Issue (11): 3299-3303  DOI: 10.11772/j.issn.1001-9081.2017.11.3299
0

引用本文 

李聪, 杨晓元, 王绪安, 白平. 固定密文长度的可验证属性基外包解密方案[J]. 计算机应用, 2017, 37(11): 3299-3303.DOI: 10.11772/j.issn.1001-9081.2017.11.3299.
LI Cong, YANG Xiaoyuan, WANG Xu'an, BAI Ping. Efficient verifiable outsourced decryption based on attribute-based encryption and fixed ciphertext length[J]. Journal of Computer Applications, 2017, 37(11): 3299-3303. DOI: 10.11772/j.issn.1001-9081.2017.11.3299.

基金项目

国家自然科学基金资助项目(U1636114,61572521);陕西省自然科学基础研究计划项目(2016JQ6037)

通信作者

李聪, E-mail:wugongcong@163.com

作者简介

李聪(1990-), 男, 山东济宁人, 硕士研究生, 主要研究方向:公钥密码学;
杨晓元(1959-), 男, 湖南湘潭人, 教授, 博士生导师, CCF会员, 主要研究方向:密码学、信息安全;
王绪安(1981-), 男, 湖北公安人, 副教授, 博士, 主要研究方向:密码学、信息安全;
白平(1990-), 男, 内蒙古乌兰察布人, 硕士研究生, 主要研究方向:公钥密码学

文章历史

收稿日期:2017-05-15
修回日期:2017-07-03
固定密文长度的可验证属性基外包解密方案
李聪1,2, 杨晓元1,2, 王绪安1,2, 白平1,2    
1. 武警工程大学 电子技术系, 西安 710086;
2. 武警工程大学 网络与信息安全武警部队重点实验室, 西安 710086
摘要: 传统密钥策略属性基加解密方案存在密文长度随着属性增加而线性增加,在通信过程中消耗用户大量的通信带宽的缺点。提出了属性加密的改进方案,基于密钥策略属性加密,提出具有固定密文长度的可验证外包解密方案,在非单调访问结构实现密文长度固定,有效节省通信带宽,通过对外包密钥生成算法的改进,实现一次模指数运算,有效缩短外包密钥生成时间。通过运用哈希函数,实现外包解密的验证性,并对其安全性进行了证明。
关键词: 密钥策略属性基加密    外包解密    可验证性    云计算    
Efficient verifiable outsourced decryption based on attribute-based encryption and fixed ciphertext length
LI Cong1,2, YANG Xiaoyuan1,2, WANG Xu'an1,2, BAI Ping1,2     
1. Department of Electronic Technology, Engineering College of Chinese Armed Police Force, Xi'an Shaanxi 710086, China;
2. Key Laboratory of Network and Information Security, Engineering College of Chinese Armed Police Force, Xi'an Shaanxi 710086, China
Abstract: The traditional key policy attribute base encryption and decryption scheme has the disadvantages that the ciphertext length increases linearly with the increase of the number of attributes, and consumes a large amount of communication bandwidth of the user in the communication process. The improved scheme of attribute encryption was proposed. Based on the encryption of key policy attributes, a verifiable packet decryption scheme with fixed ciphertext length was proposed. In the non-monotonic access structure, the cipher length was fixed, and the communication bandwidth was effectively saved. Through the improvement of outsourced key generation algorithm, a primary modular exponentiation operation was realized, and the generation time of key generation was effectively shortened.The hash function was used to realize the verification of the decryption and its security was proved.
Key words: Key-Policy Attributed-Based Encryption (KP-ABE)    outsourced description    verifiability    cloud computing    
0 引言

现代社会中云计算快速发展,人们大量使用云计算来共享数据。为了加强数据安全和防止隐私泄露,需要对数据进行加密操作, 因此提出基于属性的加密方案(Attributed-Based Encryption, ABE)[1],ABE方案灵活地利用访问策略加密数据。根据密文与访问策略和属性的关系,可分为两大类[2]:密文策略属性基加密(Ciphertext-Policy ABE, CP-ABE)和密钥策略属性基加密(Key-Policy ABE, KP-ABE)。

传统双线性对的ABE方案,存在大量的双线性对运算,计算量随着访问策略的复杂性而线性增加。这对于资源受限的用户设备完成解密是一个重大的挑战,为了减少用户解密算法中用户的计算量, Green等[5]提出了解密计算外包给第三方云服务器,这有助于“瘦身客户机”实现解密,他们提出外包解密的一个关键的技术,使第三方云服务不泄露数据或被恶意攻击。用户提供转换密钥给云服务器,云服务器解密输出恒定大小的ElGamal密文,然后利用私钥恢复出明文。考虑以下场景:用户Alice想要把自己的病例传给某医院的医生Bob,但是Bob在休假且只能用移动电话的情况下,那么Alice先用加密方案加密数据(如KP-ABE); 然后把密文上传到云存储,医生B需要下载数据解密,假如他直接下载密文解密,他的移动电话不能承担如此大的计算量,因此,将解密过程外包给云端。一个重要的问题是密文长度,假如外包给云的密文非常长, 需要消耗移动电话大量电量,会严重缩短移动电话的使用时间,这是难以忍受的。还有外包密钥生成服务器,算法复杂生成外包密钥也会花费大量时间和手机电量。另外还要确保解密结果是正确的,否则,看错病,对病人是非常严重的问题,所以在外包解密时既要关心密文的长度也要关心解密的正确性。

为了确定第三方是诚实地进行外包计算, Lai等[11]引入可验证性的外包解密ABE方案,在文献[5]加密/解密算法的基础上增加了额外的实例,用于验证外包结果的正确性。该方法明显增加了方案的计算开销,发送者需要加密一个额外的随机消息,计算同两个消息有关的校验值。虽然文献[11]方案很容易理解,但它存在两个缺点:第一,加密和解密的成本是其他ABE方案的两倍;第二,密文长度是其他ABE方案的两倍。2015年Qin等[12]提出了一个非常有效的可验证外包解密方案,随机选择一个消息密钥K,利用密钥提取器提取对K操作生成对称加密的密钥,再对消息密钥K进行公钥加密,同时在加密过程中对消息密钥K进行哈希生成验证密钥,有效实现了外包解密结果的验证。但是,他们都没有关注密文的长度,其加密的密文随着属性数量的增加而增大, 而且也没有关注外包密钥生成时间,其外包密钥生成时间也随着属性数量的增加而增加。Attrapadung等[13]提出了非单调访问结构的短密文KP-ABE方案,实现了固定长度的密文,但是其加解密的运算量很大。

本文在文献[12-13]方案的基础上实现了固定密文可验证外包解密,并在外包密钥生成算法上进行了改进。通过运用密钥提取器及两个散列碰撞函数,实现外包解密的验证性。与之前在ABE的外包解密方案相比,本方案不仅可以缩短外包密文的长度,还可有效节省外包密钥生成时间。

1 预备知识

定义1  双线性映射e:G0×G0=G1G0G1是两个以素数p为阶的循环群,满足以下性质:

1) 双线性性。e(ga, gb)=e(g, g)ab,∀a, bZp,∀p, qG0

2) 非退化性。存在gG0的生成元,使得e(g, g))≠1。

3) 可计算性。存在有效算法计算双线性对。

定义2  线性秘密共享方案(Linear Secret Sharing Scheme, LSSS),当满足以下两个条件时,参与方集合P上的秘密共享方案在Zp域上是线性的[12, 14]

1) 各方共享的秘密形成一个Zp域上的矩阵;

2) 存在一个行列的秘密共享矩阵A。存在一个函数把矩阵的每一个行映射到参与方P,即矩阵的第i(i=1, 2, …, l)行被标识为参与方ρ(i),当考虑列向量ν=(α, r2, r3, …, rn),其中αZp是将要共享的秘密值,r2, r3, …, rn是随机数, 则向量Αν为秘密αl个共享子秘密,且(Αν)i属于参与方ρ(i)。

假定一个LSSS秘密共享方案的访问结构为$ \mathscr{A} $[14]。令S$ \mathscr{A} $为一个授权集合,定义I⊂{1, 2, …, l}且I={i:ρ(i)∈S}; 然后,存在常量值{ωiZp}il, 假如{λi}il是真实合法的共享秘密α,则$ \sum\limits_{i \in I} {{\omega _i}{\lambda _i}} = \alpha $

引理1[15]  定义XYZ为随机变量,假如Y有2r种可能取值,则H(X|(Y, Z))≥H(X|Z)-r

定理1[15]  当H(X|Z)≥log |$ \mathscr{Y} $|+2 log |1/ε|时,成对独立的哈希函数$ \mathscr{H} $:(h: $ \mathscr{X} $$ \mathscr{Y} $)是平均(H(X|Z),ε)的强提取器。

随机提取器[12]  当所有的随机变量(X, Z),X$ \mathscr{X} $H(X|Z)≥k时,一个有效的函数Ext: $ \mathscr{X} $×{0, 1}t$ \mathscr{Y} $是平均(k, ε)的强提取器,可计算SD((Z, s, Ext(X, s)), (Z, s, Uy))≤εsR{0, 1}tUyR$ \mathscr{Y} $,其中SD(*,*)代表的是两方的统计距离。

XΩ的离散分布[15],定义它的最小熵为H(X)=-log($ \mathop {\max }\limits_{\omega \in \mathit{\Omega} } \;\Pr \left[{X = \omega } \right] $),XY的条件下的平均最小熵定义为$ \overline {{H_\infty }} \left( {X/Y} \right) =- \log \left( {{E_{y \leftarrow Y}}\left[{{2^{(-{H_\infty }(X/Y = y)}}} \right]} \right) $

2 安全模型

访问结构用f表示,定义(Ienc, Ikey)为加密操作和密钥生成操作,在KP-ABE中,有(Ienc, Ikey)=(ω, f),模型中允许敌手选择云服务提供者,并且腐化他们进行恶意攻击。S代表属性集,安全模型包括以下几个阶段:

1) 初始化。敌手A宣布一系列加密属性集S用于挑战阶段生成挑战密文,并把属性集S提交给挑战者。

2) 系统参数建立。挑战者运行初始化算法,将公共参数发给敌手A

3) 阶段1。敌手重复发出私钥询问给相应的访问结构(L, π),但是ω*不满足访问结构(L, π),ω*是敌手准备攻击的属性。

4) 挑战。敌手输出两个属性长度相同的明文M0M1,挑战者随机选择b∈{0, 1},加密明文(M, S*),并把密文CT作为挑战发给敌手A

5) 阶段2。敌手的属性在不满足挑战访问结构(L, π)的条件下,重复阶段1的过程,发出更多的询问。

6) 猜测。敌手输出猜测的β′, 假如β=β′,则敌手获胜,敌手在游戏中的优势为|Pr[β=β′]-1/2|。

3 固定密文长度的可验KP-ABE外包解密方案 3.1 可验证外包解密方案模型定义

可验证外包属性基解密方案模型通常由以下算法组成。

1) Setup (λn)。运行Setup′(λn)得一外包ABE密钥对(MPK′,MSK′),对于消息空间$ \mathscr{M} $,选择两个哈希函数H0M→{0,1}lH0, H1:{0,1}*→{0,1}lH1和密钥提取器h$ \mathscr{H} $[15],及一个对称加密方案SE。输出主公钥MPK=(MPK′,H0, H1hSE)和主私钥MSK=(MPKMSK′)。

2) Encrypt(MPKMIenc)。随机消息K,明文M,运行Encrypt′(MPK′,KIenc),输出密文C。另外定义标签为Lab0=H0(K)计算对称加密密钥KSE=h(K),计算对称加密密文CSE=SE.Enc(KSE, M)和标签Lab=H1(Lab0CSE),输出最后密文CTIenc=(C, CSE)和验证密钥VK=Lab

3) KeyGenout(MPKMSKIkey)。外包密钥生成算法输入主私钥MSK,主公钥MPK和密钥生成算法Ikey,输出转换公钥Tkout和转换私钥Skout

4) Transform(TkoutCTIenc)。密文转换算法输入转换公钥Tkout和密文CTIenc。输出部分解密密文即转换密文CTout=(CTout′, CSE)。

5) Decryptout(MPKSkoutCTout)。首先解密算法计算出随机消息K,然后计算Lab0=H0(K),若H(Lab0CSE)≠VK输出⊥,否则计算KSE=h(K),输出明文M=SE.Dec(KSECSE)。

3.2 固定密文长度的可验证外包解密方案

1) Setup (λn)。初始化算法输入安全参数λNnNn表示在密文中属性数,随机选择循环双线性群(G0, G1),以素数p > 2λ为阶,gG0的生成元。对于消息空间$ \mathscr{M} $,选择两个哈希函数H0$ \mathscr{M} $→{0,1}lH0, H1:{0,1}*→{0,1}lH1,和密钥提取器h$ \mathscr{H} $[15],及一个对称加密方案SE。定义Η=(h1h2,…,hn)Thi=gβi, i∈{1, 2, …, n}且β=(β1, β2, …, βn)TZpn,随机选择αZp。输出公共参数mpk=(g, e(g, g)α, Η=gβ, H0, H1, h, SE)和主私钥msk=(mpk, α)。

2) KeyGen(msk, A′)。定义非单调访问结构A′=NM(A),A为单调访问结构[16]。该算法利用线性秘密共享方案,获得主密钥α的共享数据{λi}, 共享数据λi可以用潜在属性素数xi来表示,随机选择riZp定义ρi=(ρi, 1, ρi, 2, …, ρi, n)T=(1, xi, xi2, …, xin-1),ρi, j=xij-1。输出私钥skA=(Di, 1, Di, 2, Kρi, i),i∈{1, 2,…, n}则:

$ \begin{array}{l} {D_{i, 1}} = {g^{{\lambda _i}}} \cdot {h_1}^{{r_i}}, {D_{i, 2}} = {g^{{\lambda _i}}}, \\ {K_{{\rho _{i, j}}}} = {\left\{ {{K_{i, j}} = {{\left( {{h_1}^{-{\rho _{i, n}}/{\rho _{i, 1}}}\cdot{h_j}} \right)}^{{r_i}}}} \right\}_{j = 2, 3, \ldots, n}}\\ s{k_{{A'}}} = {\left\{ {{D_i}} \right\}_{{{x}'_i} \in {P_i}}} \in {G^{l \times \left( {n + 1} \right)}}。\end{array} $

3) Encrypt(mpk, M, S)。随机选一个消息RGT运行加密算法Encrypt(mpk, R, S),访问矩阵Al行乘n列,函数ρ的作用是把矩阵中的行映射到属性。随机选择sRZp是将要共享的秘密值,随机选择列向量ν=(s, r2, …, rn),r2, r3, …, rnZp是随机数,则向量Αν为秘密sl个共享子秘密,且(Αν)i属于参与方ρ(i)。定义I⊂{1, 2, …, l},计算{λi}iI=(Αν)i,存在常量值{ωiZp}iI, 则$ \sum\limits_{i \in I} {{\omega _i}{\lambda _i} = \alpha } $。属性为S(|S| < n),该算法定义Υ=(y1, y2, …, yn)T作为PS[Z]多项式的系数坐标向量,Ps[Z]=$ \sum\limits_{i = 1}^{q + 1} {{y_i}{Z^{i-1}} = \prod\limits_{j \in S} {\left( {Z-j} \right)} } $,假如q+1 < n,令yi=0,q+2≤jn,计算密文:

$ C = ({C_0}, {C_1}, {C_2}) = (R \cdot e{\left( {g, g} \right)^{\alpha s}}, {g^s}, {\left( {{\rm{}}h_1^{{y_1}}, h_2^{{y_2}}, \cdots, h_n^{{y_n}}} \right)^s}) $

另外Lab0=H0(R),计算对称加密密钥KSE=h(R),利用对称加密方案加密明文得CSE=SE.Enc(KSE, M),而后生成验证标签Lab=H1(Lab0, CSE), 最后输出密文CT=(C, CSE)和验证密钥VK=Lab

4) KeyGenout(skA, z)。外包密钥生成算法输入私钥skA和随机数zZp,输出外包私钥Skout=z,外包公钥Tkout=Di ′=(Di, 1, Di, 2, Kρi, i),i={1, 2, …, n}:

$ \begin{array}{l} {D_{i, 1}}^\prime = {g^{{\lambda _i}/{z}}}{h_1}^{{r_i}}\\ {D_{i, 2}}^\prime = {g^{{r_i}}}\\ {K_{{\rho _{i, i}}}} = {\left\{ {{K_{i, j}} = {{\left( {{h_1}^{-{\rho _{i, n}}/{\rho _{i, 1}}}\cdot{h_j}} \right)}^{{r_i}}}} \right\}_{j = 2,3, \ldots, n}} \end{array} $

5) Decryptout(Tkout, A′, CT, S)。非单调访问结构A′=NM(A),A为单调访问结构。如果属性集S不属于A′,则输出⊥;否则,利用线性秘密共享方案LSSS,可以得S′=N(S), 让I=(i:xi′∈S′), 因为S′是在A中授权的,外包云服务器可以有效计算系数{ωiZp}iI, 则$ \sum\limits_{i\in I}{{{\omega }_{i}}{{\lambda }_{i}}=\alpha } $。然后计算:

$ \begin{align} &{{K}_{i}}=\underset{j=2}{\overset{n}{\mathop \prod }}\, {{K}_{i, j}}^{{{y}_{i}}}={{\left( {{h}_{1}}^{-\left\langle {{\mathit{\boldsymbol{\rho}}}_{i}}, \mathit{\boldsymbol{Y}} \right\rangle /{{\rho }_{i, 1}}}\cdot {{h}_{1}}^{{{y}_{1}}}\cdot\ \cdots\ \cdot\ {{h}_{n}}^{{{y}_{n}}} \right)}^{{{r}_{i}}}} \\ &C{{{{T}'}}_{\rm{out}}}=e({{C}_{1}}, {{(\underset{i\in I}{\mathop \prod }\, {{{{D}'}}_{i, 1}})}^{{{\omega }_{i}}}})\cdot \\ &\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {{\left( \frac{e\left( {{C}_{1}}, {{(\prod\limits_{i\in I}{{{K}_{i}}})}^{{{\omega }_{i}}}} \right)}{e\left( {{C}_{2}}, {{(\prod\limits_{i\in I}{{{{{D}'}}_{i, 2}}})}^{{{\omega }_{i}}}} \right)} \right)}^{\frac{{{\rho }_{I, 1}}}{\left\langle {{\mathit{\boldsymbol{ \rho}}}_{i}}, \mathit{\boldsymbol{Y}} \right\rangle }}}=e{{\left( g, g \right)}^{\alpha s/z}} \\ \end{align} $

返回密文CTout=(C0, CTout, CSE)。

6) Decrypt(Skout, CTout, VK)。运行解密算法,计算得e(g, g)αs=(CTout)z=(e(g, g)αs/z)z,那么可以恢复随机消息R=C0/e(g, g)αs。然后计算Lab0=H0(R):假如H1(Lab0CSE)≠VK,则输出⊥;否则计算KSE=h(R),解密出明文M=SE.Dec(KSE, CSE)。

正确性判断:

$ \begin{align} &{{\left( \frac{e\left( {{C}_{1}}, {{(\prod\limits_{i\in I}{{{K}_{i}}})}^{{{\omega }_{i}}}} \right)}{e\left( {{C}_{2}}, {{(\prod\limits_{i\in I}{{{{{D}'}}_{i, 2}}})}^{{{\omega }_{i}}}} \right)} \right)}^{\frac{{{\rho }_{i, 1}}}{\left\langle {{\mathit{\boldsymbol{ \rho}}}_{i}}, \mathit{\boldsymbol{Y}} \right\rangle }}}= \\ &{{\left( \frac{e\left( {{g}^{s}}, {{\left( {{\prod\limits_{i\in I}{\left( {{h}_{1}}^{-\left\langle {{\mathit{\boldsymbol{\rho }}}_{i}}, \mathit{\boldsymbol{Y}} \right\rangle /{{\rho }_{i, 1}}}\cdot {{h}_{1}}^{{{y}_{1}}}\cdot\ \cdots\ \cdot {{h}_{n}}^{{{y}_{n}}} \right)}}^{{{r}_{i}}}} \right)}^{{{\omega }_{i}}}} \right)}{e\left( {{\left( {{h}_{1}}^{{{y}_{1}}}\cdot {{h}_{2}}^{{{y}_{2}}}\cdot\ \cdots\ \cdot {{h}_{n}}^{{{y}_{n}}} \right)}^{s}}, {{(\prod\limits_{i\in I}{{{g}^{{{r}_{i}}}}})}^{{{\omega }_{i}}}} \right)} \right)}^{\frac{{{\rho }_{i, 1}}}{\left\langle {{\mathit{\boldsymbol{\rho }}}_{i}}, \mathit{\boldsymbol{Y}} \right\rangle }}}= \\ &\prod\limits_{i\in I}{e{{\left( g, {{h}_{1}} \right)}^{-\left( s{{\omega }_{i}}{{r}_{i}} \right)}}} \\ \end{align} $

所以:

$ \begin{align} &e({{C}_{1}}, {{(\underset{i\in I}{\mathop \prod }\, {{{{D}'}}_{i, 1}})}^{{{\omega }_{i}}}})\cdot \underset{i\in I}{\mathop \prod }\, e{{\left( g, {{h}_{1}} \right)}^{-\left( s{{\omega }_{i}}{{r}_{i}} \right)}}= \\ &\underset{i\in I}{\mathop \prod }\, e{{\left( g, g \right)}^{{{\omega }_{i}}{{\lambda }_{i}}s/z}}=e{{\left( g, g \right)}^{\alpha s/z}} \\ \end{align} $
4 方案分析 4.1 安全分析

RCCA(Replayable Chosen Ciphertext Attacks)安全:运用RCCA安全[13]对于可验证ABE外包解密,它们之间的区别是对手获得一个固定长度的密文,这可能与加密的消息中的挑战密文有关。游戏1包含挑战者和敌手A1,具体包括以下步骤:

Setup:挑战者运行Setup(κ, U)生成主密钥对(mpk, msk),把msk给敌手。

Phase 1:挑战者初始化一个空表T,一个空属性集D和一个计数器j:=0。敌手可以重复对下面的问题进行适应性的询问:

Create(Ikey):挑战者设置j:=j+1,首先运行KeyGenout(msk, Ikey)获得密钥对(Tkout, Ikey, Skout, Ikey),然后发送Tkout, Ikey给敌手,并存储在表T中,一行实体为(j, Ikey, Tkout, Ikey, Skout, Ikey)。

Corrupt(i):假如表中存在第i个实体(i, Ikey, Tkout, Ikey, Skout, Ikey),挑战者获得这个实体(i, Ikey, Tkout, Ikey, Skout, Ikey)。假如if(Ienc*, Ikey)=1,则返回⊥,否则返回选手解密密钥Skout, Ikey和属性D:=D∪{Ikey}。假如不存在这样的实体则返回⊥。

Decrypt(i, (VK, CTout)):假如表中存在第i个实体,挑战者获得实体(i, Ikey, Tkout, Ikey, Skout, Ikey)并发送解密密文Decrypt(Skout, Ikey, VK, CTout)给敌手;如果不存在这样的实体则返回⊥。

Challenge:敌手提交两个等长的消息M0M1和挑战算法Ienc*,其中不能进行私钥询问即if(Ienc*, Ikey)≠1,挑战者随机选择b∈{0, 1},运行加密算法Encrypt(mpk, Mb, Ienc*)获得挑战密文$ CT_{I_{\rm{enc}}^{\rm{*}}}^{*} $和验证密钥VKMb*, 并发送($ CT_{I_{\rm{enc}}^{\rm{*}}}^{*} $, VKMb*)给敌手。

Phase 2:重复阶段1的询问,但是除了以下的询问:

1) 敌手不能进行Corrupt(i)来询问IkeyD, 使得if(Ienc*, Ikey)=1。

2) 如果解密出明文为M0M1,那么挑战者则回应特殊的消息⊥。

Guess:敌手猜测b′=b。敌手猜对的优势为AdvABEout, Arcca(κ):=|Pr[b=b′]-1/2|。

定义3  可验证ABE外包解密是RCCA安全,当在概率多项式时间(Probabilistic Polynomial Time, PPT)内,敌手猜测成功的优势可忽略。

定理2  假设传统外包ABE方案是CPA(Chosen-Plaintext Attack)安全,$ \mathscr{H} $是一对独立的哈希函数,SE是对称加密方案,那么,本文方案可验证ABE外包解密方案是CPA安全。

证明  本文定义三个游戏:游戏1、游戏2、游戏3。其中:游戏1是原始传统CPA安全证明,目的是证明任意两个游戏之间对于敌手是不可区分的,在游戏3中,敌手不可区分加密的是消息M0还是M1。令Si代表敌手在游戏i中成功的可能性。

游戏1  这是原始的CPA安全,令($ CT_{I_{\rm{enc}}^{\rm{*}}}^{*} $, VK*)=(($ C_{I_{\text{enc}}^{\text{*}}}^{'*} $, CSE*), Lab*)代表敌手选择挑战Ienc*的挑战密文和验证密钥。选择随机消息K*$ \mathscr{M} $加密生成密文$ C_{I_{\text{enc}}^{\text{*}}}^{'*} $,提取对称密钥KSE*=h*(K)加密明文。

游戏2  选择随机消息R*$ \mathscr{M} $独立与随机消息随机消息K*,除了生成的$ C_{I_{\text{enc}}^{\text{*}}}^{'*} $KSE*Lab0*不同外,其他均与游戏1相同。

游戏3  在这个游戏中除了KSE*被替换成真正随机的RSE*∈{0, 1}lSE外,其他均同于游戏2。

假设1  假如外包ABE方案是CPA安全,那么敌手对游戏1和游戏2在计算上是不可区分的。

证明  首先定义一个概率多项式时间算法Sim,希望能在敌手A1的帮助下打破CPA安全的ABE方案,Sim依靠挑战密文来模仿敌手A1看待游戏1和游戏2的观点。

初始化  Sim首先运行挑战者,获得挑战共公参数mpk*,选择两个耐碰撞散列函数H0*H1*,选择一密钥提取器h*$ \mathscr{H} $用于生成对称加密密钥,最后,挑战者发送共公参数(mpk*, H0*, H1*, h*)给敌手A1

阶段1  敌手A1可以重复进行Create(Ikey)和Corrupt(i)进行询问。

挑战  敌手发送两个等长的消息M0M1和加密方法Ienc*,模拟器Sim选择两个随机密钥K*R*$ \mathscr{M} $,敌手发送((R*, K*), Ienc*)给挑战者,挑战者返回挑战密文$ C_{I_{\text{enc}}^{\text{*}}}^{'*} $给模拟器,然后Sim选择一个随机消息b∈{0, 1},计算KSE*=h*(R*)、Lab0*=H0*(R*)和CSE*=SE*(KSE*, Mb)、VK*=H1*(CSE*Lab0*)。最后挑战者发送$ CT_{I_{\rm{enc}}^{\rm{*}}}^{*}=\left( C_{I_{\text{enc}}^{\text{*}}}^{'*}, C_{SE}^{*} \right) $VK*发送给敌手,如果加密的是随机密钥K*, 那么$ CT_{I_{\rm{enc}}^{\rm{*}}}^{*} $作为游戏1的挑战密文,否则作为游戏2的挑战密文。

阶段2  敌手重复阶段1的相关询问,但是不能进行满足f(Ienc*, Ikey)=1的相关询问。

猜测  模拟器可以完全模拟敌手在游戏1、2中的观点,所以可得出:

$ |\Pr [{{S}_{0}}]-\Pr [{{S}_{1}}]|\le 2Adv_{AB{{E}_{\rm{out}}}, \mathscr{B}}^{\rm{cpa}}(\kappa ) $

多个敌手$ \mathscr{B} $攻击CPA安全的外包ABE方案。

假设2  假设$ \mathscr{H} $是一对独立的哈希函数,那么敌手对游戏2、3是统计上不可区分的。

证明  选择游戏2和游戏3的随机密钥R*、随机提取器h*和主公钥mpk,另外计算Lab0*=H0*(R*)有2lH0种可能取值,因此:

$ \begin{align} &\overline{{{H}_{\infty }}}({{R}^{*}}|(mpk, C_{I_{\rm{enc}}^{*}}^{'*}, {{h}^{*}}, Lab_{0}^{*}))\ge \\ &\ \ \ \ \ \ \ \overline{{{H}_{\infty }}}({{R}^{*}}|(mpk, C_{I_{\rm{enc}}^{*}}^{'*}, {{h}^{*}}))-{{l}_{{{H}_{0}}}}=\log |\mathscr{M}|-{{l}_{{{H}_{0}}}} \\ \end{align} $

对敌手来说0 < lSE≤log |$ \mathscr{M} $|-lH0-2 log 1/εH,由h*(R*)提取的对称密钥KSE*与真实随机的对称密钥RSE*∈{0, 1}lSE统计上不可区分。那么由KSE*生成密文CSE*,由Lab0*CSE*生成Lab*,就不会增加上两个分布的距离,因此,|Pr[S1]-Pr[S2]|≤εl

假设3  假如对称加密方案SE是语义安全的,那么敌手在游戏3中有可忽略的优势。

证明  在游戏3中获得真实随机的对称加密密钥RSE*,那么我们可以直接构建一个算法$ \mathscr{B} $让敌手A1攻击对称加密方案的语义安全,因此,选择一个恰当的敌手$ \mathscr{B} $攻击SE*的语义安全的优势|Pr[S2]-1/2|≤AdvSE*, $ \mathscr{B} $ss(κ)。

在上述安全性证明中,本文只考虑(选择性)CPA安全。同时,如果潜在的外包加密方案是RCCA安全同时对称加密方案也是RCCA安全,也可证明可验证性外包解密方案也是RCCA安全。到目前为止,所有的RCCA安全外包ABE依靠Random Oracle(RO),因此由此产生的可验证方案只是RO模型下是RCCA安全。

定理3  假设H0H1是耐碰撞散列函数,那么本文外包解密ABE方案是可验证的。

证明  考虑敌手A1攻击可验证性,本文建立一个有效算法Sim打破哈希函数(H0, H1)的抗碰撞性。假设两个挑战哈希函数(H0*, H1*)。Sim运行初始化算法,生成主公钥MPK和主私钥MSK。因为Sim知道主私钥,因此它可以在阶段1和阶段2过程中模仿敌手的询问。敌手发送一个挑战明文M*和加密方法Ienc*,模拟器先随机选择一个密钥K*l, 然后运行加密算法Encrypt′(mpk′, M, Ienc*)获得密文$ C_{I_{\text{enc}}^{\text{*}}}^{'*} $,计算Lab0*=H0*(K*),KSE*=h*(K*),CSE*=SE*(KSE*, M*),VK*=H1*(CSE*Lab0*)。然后模拟器发送密文$ CT_{I_{\rm{enc}}^{\rm{*}}}^{*}=\left( C_{I_{\text{enc}}^{\text{*}}}^{'*}, C_{SE}^{*} \right) $和验证密钥VK*给敌手。最后,敌手输出一个真实密钥Ikey*(f(Ienc*, Ikey*)=1)和转换密文CTout=(C0, CTout, CSE)。假如敌手破坏验证性,Sim通过解密算法计算出来的明文K$ \notin $(K*, ⊥), 现在讨论敌手成功的可能性,那么Lab0*=H0*(K)则H1*(CSELab0)≠VK*,最后解密输出⊥。因此本文仅需要考虑下面两种情形:

情形1  (CSE, Lab0)≠(CSE*, Lab0*),假如这种情形出现,那么Sim获得的碰撞哈希函数H1*

情形2  (CSE, Lab0)=(CSE*, Lab0*),但是,KK*则可得H0*(K)=Lab0=Lab0*=H0*(K*),那么说明抗碰撞哈希函数H0*被破坏。

4.2 性能分析

基于benchmark中的实验数据,通过对模指数和双线性对的理论分析,下面从通信开销和计算开销方面对方案进行性能分析,给出本文方案和文献[5, 11-13]方案的性能比较,如表 1所示。其中n指的是方案的访问结构中的属性个数,|G0|表示群G0中元素的长度, lH代表CRH函数的输出大小。本方案外包密钥生成时运算次数需进行nG0群上的指数运算;Green等方案需进行2nG0群上的指数运算。综上,本方案在通信开销和外包密钥生成算法上比较有优势,节省时间。综合考虑无疑本方案更加适用于实际环境。在表中,l代表LSSS访问结构中的l行,Out.CT.size代表外包密文大小,Ken.out表示外包密钥运算次数。

表 1 几种方法性能对比 Table 1 Program performance comparison
5 结语

本文分析了有效验证属性基外包解密方案。结果表明, 该方案没有关注外包密文的长度,密文大小随着属性的增加而增大,这不利于通信传输。外包密钥生成时间随着属性而增加,同时也不适用于计算能力有限的小型移动设备。本文改进了该方案,实现固定密文大小的可验证KP-ABE外包解密方案,有效缩短外包密钥生成时间,并在标准模型下证明了其安全性。

参考文献(References)
[1] SAHAI A, WATERS B. Fuzzy identity-based encryption[C]//Proceedings of the 24th Annual International Conference on Theory and Applications of Cryptographic Techniques. Berlin:Springer, 2005:457-473.
[2] GOYAL V, PANDEY O, SAHAI A, et al. Attribute-based encryption for fine-grained access control of encrypted data[C]//Proceedings of the 13th ACM Conference on Computer and Communications Security. New York:ACM, 2006:89-98.
[3] ATTRAPADUNG N. Dual system encryption via doubly selective security:framework, fully secure functional encryption for regular languages, and more[C]//Proceedings of the 2014 Annual International Conference on the Theory and Applications of Cryptographic Techniques. Berlin:Springer, 2014:557-577.
[4] YAMADA S, ATTRAPADUNG N, HANAOKA G, et al. Generic constructions for chosen-ciphertext secure attribute based encryption[C]//Proceedings of the 2011 International Workshop on Public Key Cryptography. Berlin:Springer, 2011:71-89.
[5] GREEN M, HOHENBERGER S, WATERS B. Outsourcing the decryption of ABE ciphertexts[C]//Proceedings of the 20th USENIX Conference on Security. Berkeley:USENIX Association, 2011:34-34.
[6] MAO X, LAI J, MEI Q, 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
[7] LI J, HUANG X, LI J, et al. Securely outsourcing attribute-based encryption with checkability[J]. IEEE Transactions on Parallel and Distributed Systems, 2014, 25(8): 2201-2210. DOI:10.1109/TPDS.2013.271
[8] PARNO B, RAYKOVA M, VAIKUNTANATHAN V. How to delegate and verify in public:verifiable computation from attribute-based encryption[C]//Proceedings of the 9th International Conference on Theory of Cryptography. Berlin:Springer, 2012:422-439.
[9] 陈飞, 韩益亮, 李晓策, 等. 支持通用电路的多线性映射外包属性加密方案[J]. 计算机应用, 2016, 36(10): 2747-2752. (CHEN F, HAN Y L, LI X C, et al. Outsourced attribute-based encryption for general circuit from multilinear maps[J]. Journal of Computer Applications, 2016, 36(10): 2747-2752. DOI:10.11772/j.issn.1001-9081.2016.10.2747)
[10] 方雪锋, 王晓明. 可撤销用户的外包加解密CP-ABE方案[J]. 计算机工程, 2016, 42(12): 124-128, 132. (FANG X F, WANG X M. Outsourced encryption and decryption CP-ABE Scheme with user revocation[J]. Computer Engineering, 2016, 42(12): 124-128, 132. DOI:10.3969/j.issn.1000-3428.2016.12.022)
[11] LAI J, DENG R H, GUAN C, et al. Attribute-based encryption with verifiable outsourced decryption[J]. IEEE Transactions on Information Forensics and Security, 2013, 8(8): 1343-1354. DOI:10.1109/TIFS.2013.2271848
[12] QIN B, DENG R H, LIU S, et al. Attribute-based encryption with efficient verifiable outsourced decryption[J]. IEEE Transactions on Information Forensics and Security, 2015, 10(7): 1384-1393. DOI:10.1109/TIFS.2015.2410137
[13] ATTRAPADUNG N, LIBERT B, DE PANAFIEU E. Expressive key-policy attribute-based encryption with constant-size ciphertexts[C]//Proceedings of the 14th International Conference on Practice and Theory in Public Key Cryptography Conference on Public Key Cryptography. Berlin:Springer, 2011:90-108.
[14] 刘梦君, 刘树波, 王颖, 等. 基于LSSS共享矩阵无授权策略的属性密码解密效率提高方案[J]. 电子学报, 2014, 43(6): 1065-1072. (LIU M J, LIU S B, WANG Y, et al. Optimizing the decryption efficiency in LSSS matrix-based attribute-based encryption without given policy[J]. Acta Electronica Sinica, 2014, 43(6): 1065-1072.)
[15] WATERS B. Dual system encryption:realizing fully secure IBE and HIBE under simple assumptions[C]//Proceedings of the 29th Annual International Cryptology Conference on Advances in Cryptology. Berlin:Springer-Verlag, 2009:619-636.
[16] YAMADA S, ATTRAPADUNG N, HANAOKA G, et al. A framework and compact constructions for non-monotonic attribute-based encryption[C]//PKC 2014:Public Key Cryptography, LNCS8383. Berlin:Springer, 2014:275-292.