可验证属性基代理重加密

面向安全公共云数据共享的可验证属性基代理重加密

摘要

为了实现公共云中安全的数据共享,基于属性的加密被引入以同时实现数据机密性和细粒度访问控制。为了从委托中更新基于属性的加密数据的访问控制,相应地提出了基于属性的代理重加密(AB‐PRE)。大多数先前的AB‐PRE方案要求代理诚实地执行重加密。然而,作为代理的公共云可能无法满足该要求,因为加密数据被委托给公共云后超出了数据所有者的控制范围。在本文中,我们为AB‐PRE引入了可验证性,以检查代理执行的重加密的正确性。通过引入一个承诺方案和一个密钥派生函数,我们提出了一种通用构造,用于支持密钥策略和密文策略设置下的单向单跳AB‐PRE,并具有可验证的重加密(AB‐VPRE),且访问结构可以是单调和非单调的。我们在标准模型下证明了所构造的AB‐VPRE方案的安全性和验证可靠性,并提供了三个实例化方案。与以往关于AB‐PRE的研究相比,我们提出的AB‐VPRE方案需要更少的计算量,并能有效检测代理的恶意行为。

引言

随着云计算应用的快速发展,越来越多的用户需要在公共云中进行数据存储和计算服务。数据所有者将其数据外包给公共云以与他人共享,而数据共享的安全性成为一个极为关注的问题。基于属性的加密(ABE)[1]因此被引入,以同时实现数据隐私和细粒度访问控制。

如果公共云中的基于属性的加密数据急需使用,而所有合格用户均无法访问时,代理重加密可以在不泄露任何机密信息的情况下,帮助通过委托实现对数据的重加密。传统代理重加密在公钥密码系统中允许代理将一个密文转换为使用不同公钥的另一个密文。将代理重加密应用于基于属性的密码系统,Liang等[2]提出了基于属性的代理重加密(AB‐PRE)。根据该方案,密文或私钥与访问策略相关联,基于属性的代理重加密(AB‐PRE)被划分为密文策略(CP)AB‐PRE和密钥策略(KP)AB‐PRE。CP(或KP)AB‐PRE通过委托第三方将基于某一访问策略(或属性集合)加密的数据转换为另一访问策略(或属性集合)下的数据,从而实现对加密数据的访问控制变更。因此,AB‐PRE是一种通过委托实现访问控制更新的有前景的技术。具体而言,合格用户可以在保证私有信息安全的前提下,委托公共云对密文进行重加密。

CP‐AB‐PRE的一个应用是电子病历系统,其中患者的病历在委托给云之前,会根据访问策略(例如,“骨科”与“主任”与“联合医院”)进行加密。医生根据其属性(例如,“科室”和“职称”)获得私钥。如果患者处于紧急情况且没有合格的医生可用,则需要使用CP‐AB‐PRE将加密的病历转换为符合另一访问策略的密文,以便及时获取病历。

KP‐AB‐PRE的一个应用是针对审计日志的安全取证分析,该审计日志包含有关待保护系统或网络上活动的详细记录[3]。如果一家公司打算将某些审计日志条目上传到公共云进行取证分析,同时又不泄露敏感信息,则可以使用标注的属性(例如“用户名”、“日期”和“操作”)对这些条目进行加密。取证分析师将被授予一个与访问策略相关联的私钥(例如,“用户名:Alice” OR(“日期:介于2012‐1‐1至2014‐1‐1之间” AND“操作:访问与新产品设计相关的数据”))。如果指定的取证分析师无法到场,他或她可以通过应用KP‐AB‐PRE将访问控制更新权限委托给公共云,从而确保工作不会延误。

现有的AB‐PRE方案(例如[2,4–6])通常假设代理是半可信的,并且会诚实地执行重加密;然而,作为代理的公共云并不一定诚实,可能由于故障、恶意攻击等原因进行不可靠计算。以往关于AB‐PRE的研究主要关注数据隐私和访问控制,而未将重加密验证一并考虑在内。数据隐私和访问控制能够保证任何攻击者都无法获取有关明文和私钥的任何机密信息,但缺乏对重加密正确性的检查可能导致用户从代理接收到错误的结果。回顾之前描述的应用场景,医疗记录中的错误信息可能导致严重的医疗事故,而基于错误重加密条目分析出的无效结果可能会给企业带来重大经济损失。

因此,如何保证重加密密文的正确性并检测代理对基于属性的代理重加密执行的重加密操作值得重点关注。本文中,我们研究了网络模型,并提出了一种新技术来解决此问题。

1.1. 我们的技术

通过在加密过程中结合承诺方案和密钥派生函数,我们为不可信代理执行的重加密提供了验证机制。我们的验证机制分为两个步骤:不变性测试和正确检测。

不变性测试在重加密期间检查原始密文的不变组成部分。正确检测在解密过程中进行,帮助用户检验重加密密文的计算正确性。

示意图0

如图1所示的网络模型,加密数据存储在公共云服务器上,该服务器表示云存储服务提供商(CSS),用于数据共享,而重加密由表示重加密云服务提供商(RCS)的公共云服务器执行。我们注意到,CSS被假定为半可信的,并会诚实执行不变性测试。如果用户需要更新数据的访问控制,则将重加密密钥(re‐key)提交给RCS,同时CSS将原始密文发送给RCS。随后,重新加密的密文被返回到CSS并经历不变性测试。如果不变性测试失败,则会给出一个错误符号进行存储;否则,将存储重新加密的密文。当合格用户解密重新加密的密文时,作为密文组成部分的承诺可用于验证重加密。

1.2. 我们的贡献

对于将基于属性的代理重加密(AB‐PRE)应用于由不可信代理(例如公共云)更新加密数据的访问控制时,需要验证代理返回的重加密密文的正确性。我们提出一种技术,为基于属性的代理重加密(AB‐PRE)引入可验证性,以检测代理执行的重加密,并提供一种支持可验证重加密(AB‐VPRE)的通用单跳单向AB‐PRE构造。

我们提出了AB‐VPRE的模型,并描述了数据隐私、验证可靠性以及弱主密钥安全性的定义。验证算法根据不变性测试和正确检测两个步骤进行介绍。只有通过验证后,才能成功执行解密算法以恢复数据。我们证明了所构造的AB‐VPRE方案在标准模型下是抵御选择明文攻击的(CPA安全),并满足验证可靠性。

最后,我们在密钥策略(KP)和密文策略(CP)设置下,使用三种支持线性秘密共享可实现且支持非单调访问结构的基于属性的密钥封装机制(AB‐KEMs)对所提出的构造进行实例化。所得到的AB‐VPRE方案继承了底层AB‐KEMs的安全属性,并在计算性Diffie‐Hellman(CDH)假设下具有弱主密钥安全性。与之前的AB‐PRE方案相比,我们的AB‐VPRE方案实例化相对更高效,且由不可信任代理执行的重加密可以被验证。

1.3. 相关工作

在基于属性的加密(ABE)[1]概念被提出之后,分别开发了具有单调和非单调访问结构的密钥策略基于属性的加密(KP‐ABE)和密文策略基于属性的加密(CP‐ABE)方案[3,7–9]。为了降低资源受限用户的解密开销,Green et al.[10]提出了基于属性的加密外包解密方法。随后,Lai et al.[11]提出了一种支持可验证外包解密的基于属性的加密方案。

代理重加密方案最初由布莱兹、布鲁默和斯特劳斯[12],形式化定义,首个单向单跳PRE方案由Ateniese et al.[13]提出。尽管此后提出了多个PRE方案,但第一个能够抵御选择密文攻击(CCA安全)的PRE方案的通用构造由Hanaoka et al.[14]提出。最近,Ohata et al.[15]将重加密可验证性引入PRE方案中,以检测代理的非法行为,并证明了其CCA安全性。在基于属性的加密(ABE)概念出现之后,Liang et al[2]基于支持非单调访问结构的CP‐ABE方案[8],提出了首个CP‐AB‐PRE方案。随后,Luo et al.[16]提出了另一种支持多值正向属性的CP‐AB‐PRE方案。此外,Yu et al.分别提出了KP[17]和CP[18],两种AB‐PRE方案。Seo et al.[19]提出了一种具有恒定配对运算延迟的CP‐AB‐PRE方案。Liang et al.构建了CCA安全的CP‐AB‐PRE方案[4–6],以及一些基于AB‐PRE的其他模型[20]。

2. 预备知识

在本节中,我们回顾一些有用的符号和定义。

2.1 符号说明

令 A(u, v, …) → w (w ← A(u, v, …)) 表示使用输入 (u, v, …) 运行算法A并输出w的操作。记 x || y 为两个字符串x和y的拼接,|x|表示字符串x的长度。令 |Ez| 表示向量 Ez中元素的个数。b ←R S 表示从集合S中均匀随机选择一个元素b的操作。记 E1 为向量 (1, 0, …, 0)。令 N 为自然数集合。 1ℓ(ℓ ∈ N) 表示由 ℓ 个1组成的字符串。令 R 为实数集合。若函数 negl : N → R 满足:对于任意常数 c>0,存在 9 ℓ0 ∈ N,使得当ℓ足够大时,negl(ℓ)<1/ℓc 成立,则称该函数是可忽略的,∀ℓ> ℓ0。

2.2. 双线性映射

设G和GT为两个素数阶p的乘法循环群,g是G的生成元。令e: G × G → GT是一个可高效计算的映射,满足以下条件:(i) 非退化性:e(g, g) ≠ 1;(ii) 双线性性:对所有u, v ∈ G 和所有a, b ∈ Z∗p,有e(ua, vb) = e(u, v)ab。我们称(G, GT)为双线性群对,e是从G到GT的双线性映射。

3. AB‐VPRE模型

我们将Ikey和Ienc分别设为密钥生成算法和加密算法的输入,并定义f(Ikey, Ienc) = 1当且仅当Ienc与Ikey相匹配时成立。AB‐VPRE方案由以下多项式时间算法定义:
- Setup(1λ,U) :设置算法以安全参数 λ 和属性全集 U 作为输入,输出公共参数 PP 和主私钥 MSK。
- KGen(PP, MSK, Ikey) :密钥生成算法以 PP、MSK 和 Ikey 作为输入,输出私钥 SKI。
- Enc(PP, Ienc, M) :加密算法以 PP、Ienc 和消息 M 作为输入,输出密文 CTI。
- Dec(PP, SKI, CTI) :原始密文的解密算法以 PP、SKI 和 CTI 作为输入,若 f (Ikey, Ienc) = 1 成立,则输出 M,否则输出错误符号 ?。
- RKGen(PP, SKI, I′enc) :重加密密钥生成算法以 PP、SKI 和 I′enc 作为输入,输出重加密密钥 RKI→I′。
- REnc(PP, RKI→I′, CTI) :重加密算法以 PP、RKI→I′, 和 CTI 作为输入,若 f (Ikey, Ienc) = 1 成立,则输出重新加密的密文 CTI′,否则输出错误符号 ?。
- REVer.Test(CTI, CTI′) :重加密验证测试算法以 CTI 和 CTI′ 作为输入,输出一个比特 b。
- REVer.Dec(PP, SKI′, CTI′, b) :重加密验证与解密算法以 PP、SKI′, CTI′, b 作为输入,若 b 成立,则输出 M,否则输出错误符号 ?。

正确性 。对于所有 (PP,MSK) ← Setup(1λ,U),SKI ← KGen(PP, MSK,Ikey),SKI′ ← KGen(PP,MSK,I′key),RKI→I′ ← RKGen(PP,SKI,I′enc),CTI ← Enc(PP,Ienc, M),
(1) Dec(PP, SKI, CTI) 在 f (Ikey, Ienc) = 1 时输出 M,否则输出 ?。
(2) 对于所有 CTI′ ← REnc(PP, RKI→I′,CTI),如果 f (I′key, I′enc) ≠ 1,则 REVer.Dec(PP, SKI′,CTI′,b) 返回 ?;否则,当 REVer.Test(CTI, CTI′) = 1 时,REVer.Dec(PP, SKI′,CTI′,b) 输出 M。

在给出AB‐VPRE的数据隐私、弱主密钥安全性和验证可靠性的定义之前,我们分别定义密钥生成预言机 Osk、重加密密钥生成预言机 Ork、重加密预言机 Ore、解密预言机 Ode以及重加密验证与解密预言机 Orvd,如表I所示。

原始密文下的CPA安全性 。如果对于任意在预言机 O ∈{Osk, Ork}辅助下的概率多项式时间(PPT)攻击者 A,其在以下安全游戏中的优势是可忽略的,则称该AB‐VPRE方案在原始密文下是CPA安全的:
$$
\left| \Pr\left[\begin{array}{l}(PP,MSK) \leftarrow \text{Setup}(1^\lambda, U); \ (M_0,M_1, \tilde{I} {\text{enc}}, \text{st}) \leftarrow A^O(PP); \ b \leftarrow_R {0, 1}; \ CT \beta \leftarrow \text{Enc}(PP,M_b, \tilde{I} {\text{enc}}); \ b’ \leftarrow A^O(CT \beta, \text{st}): b= b’\end{array}\right] - \frac{1}{2} \right| \leq \text{negl}(\lambda),
$$
其中 st 是状态信息,所有 Ikey 被分发给 Osk,Ork 满足 f(Ikey, $\tilde{I}$enc) ≠ 1。

重加密密文下的CPA安全性 。如果对于任意由 oracle O ∈{Osk, Ork} 辅助的 PPT 攻击者 A,其在以下安全游戏中的优势是可忽略的,则称一个 AB‐VPRE 方案在重加密密文下是 CPA 安全的:
$$
\left| \Pr\left[\begin{array}{l}(PP,MSK) \leftarrow \text{Setup}(1^\lambda, U); \ (M_0,M_1, \tilde{I} {\text{enc}}, \text{st}) \leftarrow A^O(PP); \ SKI \leftarrow \text{KGen}(PP,MSK, I {\text{key}}); \ RK_{I\rightarrow\tilde{I}} \leftarrow \text{RKGen}(PP, SKI, \tilde{I} {\text{enc}}); \ b \leftarrow_R {0, 1}; \ CT_b \leftarrow \text{Enc}(PP,M_b, I {\text{enc}}); \ CT_\beta \leftarrow \text{ReEnc}(PP, CT_b, RK_{I\rightarrow\tilde{I}}); \ b’ \leftarrow A^O(CT_\beta, \text{st}): b= b’\end{array}\right] - \frac{1}{2} \right| \leq \text{negl}(\lambda),
$$
其中st是状态信息,f(Ikey, Ienc) = 1且所有颁发给 Osk的I′ key, Ork满足f(I′ key, $\tilde{I}$ enc) ≠ 1。

选择性CPA安全性 。如果在设置之前增加一个初始化阶段,攻击者提交挑战$\tilde{I}$enc,则AB‐VPRE方案在原始密文(重加密密文)下是选择性CPA安全的。

弱主密钥安全性 。 如果对于任意PPT攻击者 A,在能够访问 oracle O ∈{Osk, Ork, Ode, Orvd} 的情况下,其在以下安全游戏中的优势是可忽略的,则称一个AB‐VPRE方案具有弱主密钥安全性:
$$
\Pr\left[\begin{array}{l}(PP,MSK) \leftarrow \text{Setup}(1^\lambda, U); \ (I_{\text{key}}^ , SK_{I^ }, RK_{I^ \rightarrow I’}) \leftarrow A^O(PP); \ CT_I \leftarrow \text{Enc}(PP,M, I_{\text{enc}}): \ M \leftarrow \text{Dec}(PP, SK_{I^ }, CT_I)\end{array}\right] \leq \text{negl}(\lambda),
$$
其中 f(I∗key, Ienc) = 1,且任何发放给 Osk 的 Ikey 都满足 I∗key ≠ Ikey。RKI∗→I′ 是由 SKI∗ 生成的重加密密钥,其中 (I∗key, I′enc) 已被发放给 Ork。

选择性弱主密钥安全性 。 如果我们在Setup阶段之前增加一个Init阶段,要求攻击者承诺 I∗key,则称一个AB‐VPRE方案具有选择性弱主密钥安全性。

验证可靠性 。 如果对于任意PPT攻击者 A,在能够访问 oracle O ∈{Osk, Ork, Ore, Ode, Orvd} 的情况下,其在以下安全游戏中的优势是可忽略的,则称一个AB‐VPRE方案满足验证可靠性:
$$
\Pr\left[\begin{array}{l}(PP,MSK) \leftarrow \text{Setup}(1^\lambda, U); \ (M^ , \tilde{I}_{\text{enc}}, \text{st}) \leftarrow A^O(PP); \ CT_I^ \leftarrow \text{Enc}(PP,M^ , \tilde{I} {\text{enc}}); \ (I’ {\text{key}}, I’_{\text{enc}}^ , CT_{I’}^ ) \leftarrow A^O(CT_I^ , \text{st}); \ SK_{I’} \leftarrow \text{KGen}(PP, MSK, I’ {\text{key}}); \ \text{REVer.Test}(CT_I^ , CT_{I’}^ )= b: \ b \land \text{REVer.Dec}(PP, SK {I’}, CT_{I’}^ , b) \notin {M^ ,?}\end{array}\right] \leq \text{negl}(\lambda),
$$
其中 st 是状态信息,且 f(I′ key, I′∗ enc) = 1。

4. 通用构造

在本节中,我们提出了一种基于配对的AB‐KEM方案构建AB‐VPRE方案,该方案形式上类似于双线性谓词编码方案[21–23],并对其安全性进行分析。此处,我们仅考虑在素数阶双线性群系统上构建的 AB‐KEM方案,以适用于实际应用。

4.1. 双线性编码 AB‐KEM

令 ˘KM = (KM.Setup, KM.KGen, KM.Enc, KM.Dec) 表示一个 AB‐KEM 方案,其算法描述如下:
- KM.Setup(1λ,U) :该设置算法选择一个素数阶 p(p ∈ ‚(2λ))的双线性群系统(G, GT, e),然后在G中随机选取一个生成元g ∈R G。一个向量 Ea=(x, a1, a2, …) ∈R (Z∗p)|Ea 和一个值 α ∈R Z∗p。它输出公共参数 PK=(e, g, ga, e(g,g)α) 和主私钥 MSK=(α, Ea)。
- KM.KGen(PK,MSK,Ikey) :密钥生成算法选择一个向量 Er ∈R (Z∗p)|Er,然后输出私钥 SK=(SK0,SK1),其中 SK0=gα · gxKE0(Er, Ea),SK1=gKE(Ikey, Er,Ea)。
- KM.Enc(PK,Ienc,M) :加密算法选择 s ∈R Z∗p,以及一个向量 Eu ∈R (Z∗p)|Eu,并设置 C0= gs,C1= gsCE(Ienc,Eu,Ea), C2= hs,然后输出密文 C=(C0,C1,C2)。封装的密钥为 DK0= e(g,g)αs。
- KM.Dec(SK, C) : 若 f(Ikey, Ienc)≠1,则返回错误符号 ?;否则,计算 e(SK0,C0) / F(SK1,C1) 以获得 DK0= e(g,g)αs。

这里,KE0、KE、CE 是多项式时间可计算函数,其输出为 Z∗p 上的向量,且 F: G|SK1| × G|C1| → GT 是满足以下性质的多项式时间可计算双线性函数:

解密性 。 对于所有 Ikey、Ienc,当 f(Ikey, Ienc) = 1 时,存在一个高效可计算的双线性函数F,使得
$$
F\left( g^{KE(I_{\text{key}}, \mathbf{E} r, \mathbf{E}_a)}, g^{sCE(I {\text{enc}}, \mathbf{E}_u, \mathbf{E}_a)}, g^s \right) = e(g,g)^{\alpha s}.
$$
解密性这一性质与[22,23]中提出的α–重构性质类似,且上述方案的正确性易于验证。我们要求函数KE0、KE和CE具有如下所述的线性性质:

线性性 。(i) 对于所有 Ea ∈ (Z∗p)|Ea,KE0(Er, Ea) 在 Er 上是线性的。(ii) 对于所有 Ikey 和 Ea ∈ (Z∗p)|Ea,KE(Ikey, Er, Ea) 在 Er 上是线性的。(iii) 对于所有 Ikey 和 Ea ∈ (Z∗p)|Ea,CE(Ienc, Eu, Ea) 在 Ea 上是仿射的,并且当 Eu 非零时,在 Eu 上也是仿射的。

备注1 。 KE0、KE 和 CE 的线性性意味着,在给定 Ikey、Ienc 以及 g、g Ea(但不包含 Ea)的情况下,我们可以计算 gxKE0( Er, Ea)、gKE(Ikey, Er, Ea) 和 gsCE(Ienc, Eu, Ea)。

4.2. AB‐VPRE的构造

  • Setup(1λ,U) :选择一个如第4.1节所述的AB‐KEM,以及一个对称密钥加密方案˘SE = (SE.Gen, SE.Enc, SE.Dec),其中 SE表示私钥的长度,并选择一个输出长度为 的密钥派生函数KDF和一个承诺方案 (Commit, Decom)。调用KM.Setup(1λ) → (PK, MSK),然后输出公共参数PP=(PK, KDF, ,˘SE, SE,(Commit, Decom)) 和主私钥MSK。
  • KGen(PP,MSK,Ikey) :调用KM.KGen(PK,MSK, Ikey) → SK并输出私钥SKI =(Ikey ,SK)。
  • Enc(PP, Ienc, M) :调用 KM.Enc(PK, Ienc) → (CI, DK0),其中 CI=(C0, C1, C2)。计算 KDF(DK0, = SE+||d||) → DK || d,得到 SEd,然后运行 SE.Enc(DK, M) → C。计算 Commitd(DK) = bC,并输出密文 CTI=(Ienc, CI, C,bC)。
  • Dec(PP, SKI, CTI) :如果f(Ikey, Ienc) ≠ 1,返回?。如果f (Ikey, Ienc) = 1,调用 KM.Dec(SK, CI) → DK0 并计算 KDF(DK0, ) = DK || d,其中 =`SE + ||d||。如果 Commitd(DK) =bC,执行 SE.Dec(DK, C) → M并输出M; 否则,输出?
  • RKGen(PP, SKI, I′enc) :解析 SKI =(Ikey, SK),其中 SK =(SK0, SK1),且 SK0= gα · gxKE0(Er,Ea),SK1= gKE(Ikey,Er,Ea)。随机选择 Eγ, Eδ ∈R (Z∗p)|Er,并设 D = gKE0(Eδ,Ea),rk =(rk0, rk1),其中 rk0= SK0 · gxKE0(Eγ, Ea),rk1=SK1 · erk1=SK1 · gKE(Ikey, Eγ+Eδ, Ea)。调用 KM.Enc(PK, I′enc) → ( QCI′,fDK),然后运行 SE.Enc(KDF( fDK, `SE), D) → QC,并设 CI′=( QCI′,QC)。输出重加密密钥 RKI→I′= (Ikey, I′enc, rk, CI′)。
  • REnc(RKI→I′, CTI) :如果f(Ikey, Ienc) = 1,调用 KM.Dec(rk, CI) → C′1 并输出重新加密的密文 CTI′=(I′enc, C0, C′1, C2, C, bC, CI′);否则,输出错误符号 ?
  • REVer.Test(CTI, CTI′) :解析 CTI =(Ienc, C0, C1, C2, C, bC),CTI′=(I′enc, C′0, C′1, C′2, C′, bC′, CI′)。若C0=C′0 且 C2= C′2 且 C = C′ 且 bC = bC′,输出 比特b = 1;否则,返回 比特b = 0。
  • REVer.Dec(PP, SKI′,CTI′,b) :如果 f(I′enc, I′key) ≠ 1 或 b = 0,返回?;否则,调用 KM.Dec(SKI′,QCI′) → fDK,并运行 SE.Dec(KDF(fDK, SE), QC) → D,然后计算 DK0= C′1 / e(D, C′2) 和 KDF(DK0, ) = DK || d。如果 Commitd(DK)=bC′,执行 SE.Dec(DK, C′ ) → M,并输出 M;否则,返回特殊符号 ? 表示验证失败。

我们注意到,原始密文的正确性自然成立,而重新加密的密文的正确性可验证如下。如果 f(I′ enc, I′ key) = 1,
$$
C’ 1 / e(D, C’_2)= e(rk_0, C_0) / F(rk_1, C_1) \cdot e(D, C_2)
= e\left(SK_0 \cdot g^{xKE_0(\mathbf{E}
\gamma, \mathbf{E} a)}, C_0\right) / F\left(SK_1 \cdot g^{KE(I {\text{key}}, \mathbf{E} \gamma + \mathbf{E} \delta, \mathbf{E} a)}, C_1\right) \cdot e(D, C_2)
= e(g, g)^{\alpha s} \cdot e\left(g^{xKE_0(\mathbf{E}_r + \mathbf{E}
\gamma + \mathbf{E} \delta, \mathbf{E}_a)}, C_0\right) / F\left(g^{KE(I {\text{key}}, \mathbf{E} r + \mathbf{E} \gamma + \mathbf{E}_\delta, \mathbf{E}_a)}, C_1\right)
= e(g, g)^{\alpha s} = DK_0.
$$
根据函数 KE、KE0 的线性性以及可解密性属性,第三和第四等式分别成立。则 KDF(DK0,`) =DK || d。如果 REVer.Test(CTI, CTI′) = 1 且 Commitd(DK) =bC,则 REVer.Dec(PP, SKI′, CTI′,b) 输出 M。

4.3. 数据隐私和重加密可验证性

现在我们讨论所构建的AB‐VPRE方案中原始密文和重加密后密文的数据隐私,以及重加密可验证性。形式化地,我们有以下结论:

定理1 。 假设AB-KEM ˘KM是CPA安全的,对称密钥加密方案˘SE是语义安全的,密钥派生函数KDF是安全的,且承诺方案(Commit,Decom)是计算上隐藏且绑定的,则所构造的AB-VPRE方案在原始密文下 CPA安全,并满足验证正确性。

证明 。 我们考虑挑战者与概率多项式时间(PPT)攻击者 A 之间的四个游戏(Game0、Game1、Game2 和 Game3),如下所示。

Game0 :原始密文上的真实CPA游戏,其中挑战密文 CTI∗=(I∗enc, CI∗, C∗, bC∗) 由 (CI∗, DK0) ← KM.Enc(PK, I∗enc)、KDF(DK0,`) = DK || d、C∗ ← SE.Enc(DK,Mb)、b←R{0, 1} 以及 bC∗= Commitd(DK) 生成。

Game1 :该游戏与 Game0 相同,只是 C∗ ← SE.Enc(DR,Mb)、b←R{0, 1} 以及 bC∗= Commitd(DR),其中 DR ← SE.Gen(1λ) 且 d是一个随机硬币。

Game2 :与 Game1 相同,只是 bC∗=Commitd(R)其中 R 是长度为 `SE 的随机字符串,且 d是一个随机硬币。

Game3 :与Game2相同,只是将C∗ ← SE.Enc(DR, QM)中的DR替换为SE.Gen(1λ),且QM为一个随机消息。

此后,Gamei ≈c Gamej(i,j= 0,1, 2, 3,i≠ j) 表示 Gamei 与 Gamej 在计算上不可区分。我们将在以下引理中证明这种不可区分性。

引理1 。 假设AB-KEM ˘KM是CPA安全的,密钥派生函数KDF是安全的,且承诺方案(Commit,Decom)是计算隐藏的,则Game0 ≈c Game2。

证明 . 考虑以下游戏:
Game 0:与Game0 相同,只是 C∗ ← SE.Enc(DR0,Mb),b←R{0, 1},且 bC∗ = Commitd(DR0),其中 DR0 || d= KDF(DR0,`),DR0 是一个随机的会话密钥。

我们首先证明AB‐KEM的CPA安全性意味着 Game0 ≈c Game 0。假设存在一个PPT攻击者A,能够以不可忽略的概率区分Game0和Game 0。我们构造一个算法 B来攻破AB‐KEM的CPA安全性。

实际上,B从挑战者处接收公钥PK,然后选择输出长度为 的KDF、私钥长度为 SE的˘SE,以及(Commit, Decom),并将公共参数PP =(PK, KDF, , ˘SE, SE, (Commit, Decom)) 发送给A。 A自适应地发起私钥和重加密密钥查询。对于任意关于Ikey的私钥查询, B 将其转发给自身的预言机,并将结果返回给A。对于任意关于(Ikey, I′enc)的重加密密钥查询, B从其自身的预言机获取私钥SKI,并通过运行RKGen(PP, SKI, I′enc) → RKI→I′生成重加密密钥,然后将RKI→I′发送给A。在收到A 发送的两个等长消息M0、M1以及I∗enc后,要求对于任何已查询过的Ikey均有f(Ikey, I∗enc) ≠ 1, B将I∗enc发送给挑战者。挑战者运行Enc(PP, I∗enc) → (CI∗,, DK0),并设置K0= := DK0,K1= := DR0,其中DR0是一个随机会话密钥,然后选取β ∈R {0, 1},并将(CI∗,, Kβ)返回给 B。 B计算KDF(Kβ, `) = K || d,并计算Commitd(K) = bC∗,然后选择b ∈R {0, 1},运行SE.Enc(K, Mb) → C∗, ,并将挑战密文CTI∗= := (I∗enc, CI∗,, C∗,, bC∗)发送给 A。在经历第二轮具有相同限制的查询阶段后,A输出其猜测b′ ∈ {0, 1}。如果b′= := b,则 B输出0;否则B输出1。

可以看出, B已分别为 β = 0 和 β = 1 的情况正确模拟了Game0 和 Game0。如果攻击者 A 能以非可忽略的概率区分 Game0 和 Game0,则 B 可以以非可忽略的优势攻击 AB‐KEM 的 CPA 安全性。因此 Game0 ≈c Game0。

KDF的安全性意味着KDF(DR0,`)与随机字符串不可区分。也就是说,DR0和d都与随机字符串不可区分,这意味着Game0 ≈c Game1。因此,Game0 ≈c Game1。由于承诺方案具有计算隐藏性,Game1 ≈c Game2。故而,Game0 ≈c Game2。

引理2 。 假设 ˘SE是语义安全的,则Game2 ≈c Game3。

证明 。 假设存在一个PPT攻击者A ,能够以不可忽略的概率区分Game2和Game3。我们可构造一个算法B, 以不可忽略的概率攻击 ˘SE的语义安全。

实际上,B运行 Setup(1λ,U) → (PP, MSK) 并将 PP 发送给 A,然后为 A模拟预言机 {Osk, Ork}。当 A提交 M0、M1 和 I∗enc 给 B时, B按照游戏2中所述计算 CI∗ , bC∗,然后选择一个随机消息M,选取比特 b ∈R {0, 1},并将 M0= Mb,M1= QM 发送给挑战者。挑战者选取 β ∈R {0, 1} 并计算 C∗ ← SE.Enc(DR, Mβ),其中 DR ← SE.Gen(1λ),然后将 C∗ 返回给 B。接着 B将 CTI∗ =(I∗enc, CI∗ , C∗ ,bC∗ ) 发送给 A。在再次访问预言机后, A输出其猜测 b′ ∈ {0, 1}。如果 b′ = b
则 B 返回 0,否则输出 1。

我们可以看到 B 分别正确地模拟了Game2和Game3。如果 A能够以不可忽略的概率区分Game2和Game3,则 B 可以发起攻击 ˘SE 的语义安全具有不可忽略的概率。因此 Game2 ≈c Game3。

根据计算不可区分性的传递性,我们得到Game0 ≈c Game3。由于Game3中不包含攻击者提交消息的任何信息,因此攻击者在Game3中的优势是可忽略的。因此,攻击者在真实游戏中的优势也是可忽略的。由此可见,所构造的AB‐VPRE方案是CPA安全的。

引理3 。 假设承诺方案(Commit,Decom) 是计算绑定的,则所构造的AB-VPRE方案满足验证可靠性。

证明 。 假设存在一个攻击者 A能够以非可忽略的概率攻击验证可靠性。我们可以构建一个算法 B ,以非可忽略的概率攻击承诺方案的计算绑定性。设 B为承诺方案中的发送方,并按如下方式执行 A:

B调用 Setup(1λ,U) → (PP, MSK),并将 PP 发送给A, 然后模拟预言机 Osk、 Ork、Ore、 Ode、 Orvd 以供A使用。在接收到 A发送的 I∗enc 和 M∗后, B执行 Enc(PP, I∗enc, M∗) → CTI∗,,其中 CTI∗=(I∗enc, C0, C1, C2, C∗,bC∗) 且 bC∗= Commitd(DK),然后将 CTI∗,发送给A,并将 bC∗发送给接收者。在再次获得对预言机的访问权限后, A输出一个重加密的密文 CTI′∗=(I′∗ enc, C′0, C′1, C′2, C′∗ ,bC′∗,CI′∗),以及满足 f(I′key, I′enc) = 1 的 I′key。 B调用 KGen(PP, MSK, I′key) → SKI′,, 然后运行 REVer.Test(CTI∗,, CTI′∗) → b 和 REVer.Dec(PP, SKI′,, CTI′∗,, b) → M′。当 b = 1 且 M′ ∉ {M∗,?} 时, A赢得游戏,这意味着存在一个元组 (DK′, d′) 满足 DK′≠DK,使得 SE.Dec(DK′, C∗) → M′,且 Commitd′(DK′) = Commitd(DK)。这与承诺方案的计算绑定性相矛盾。

假设A以非可忽略的概率赢得游戏,则 B以非可忽略的概率破坏承诺方案的计算绑定性。

结合以上所有讨论,我们完成了对定理1的证明。

重加密密文的安全属性在定理2中给出。由于其证明与定理1的证明类似,受篇幅限制,此处省略证明。

定理2 . 假设AB-KEM ˘KM是CPA安全的,对称密钥加密方案 ˘SE是语义安全的,密钥派生函数KDF是安全的,且承诺方案(Commit,Decom)是计算上隐藏的,则所构造的AB-VPRE方案在重加密密文下是 CPA安全的。

备注2 . 我们指出,所构造的AB‐VPRE方案继承了底层 AB‐KEM的安全性方案。如果AB‐KEM方案是选择性CPA安全的,则所得到的AB‐VPRE方案也是选择性CPA安全的。

5. 实例化

在本节中,我们使用三种AB‐KEM实例化我们的通用构造。为了与现有的基于类似AB‐KEM的AB‐PRE方案[2,6,20]进行比较,我们仅提供三种选择性安全的 AB‐VPRE方案:一种KP‐AB‐VPRE方案,以及分别具有单调和非单调访问结构的两种CP‐AB‐VPRE方案。我们注意到,通过适当地实例化双线性编码 AB‐KEM[23],可以在素数阶群中实现适应性安全的 AB‐KEM,从而获得适应性安全的AB‐VPRE方案。

5.1. AB‐VPRE‐1

我们首先描述后续讨论中的CP‐AB‐KEM方案[2](U= {1,2, …,n})。
- KM.Setup(1λ, U) : Choose a bilinear group system(G, GT, e) of prime order p(p ∈ ‚(2λ)). Select a generator g ∈R G, x, y,{ti}1≤i≤3n ∈R Z∗p. Set aE= (x,{ti, x ti}1≤i≤3n ), α= xy, h= gx. Then e(g, g)α= e(g, h)y, g Ea= gx,{gti, h 1 ti}1≤i≤3n . The public parameters PK=(e, g, g Ea, e(g, g)α) and the master secret key MSK=(α, aE).
- KM.KGen(PK, MSK, S) :选择 Er =(r1, …,rn) ∈R (Z∗p)n 并隐式设置 KE0(Er, Ea)=∑ni=1ri =r0, 以及 KE(S, Er, Ea)=({ xti ri}i∈S; { xtn+i ri}i∈U\S; { x2n+i ri}i∈U)。然后 SK =(SK0, SK1),其中 SK0= gα · gxKE0(Er,Ea) = hy+r0,SK1= gKE(S,Er,Ea) =({h ri ti}i∈S; {h ri tn+i}i∈U\S; {h ri t2n+i}i∈U)。
- KM.Enc(PK, A) :A 表示为 ⋀i, i ∈ I ⊆U,其中 i 表示一个属性(正属性 i+或负属性 i–)。选择 s ∈R Z∗p,并隐式设置 CE(A, Eu, Ea)=({ti}i∈I∧i=i+, {tn+ i}i∈I∧i=i–, {t2n+i}i∈U\I),其中 Eu 为空。则密文 C= (C0, C1, C2),其中 C0=gs, C2= hs, C1= gsCE(A,Eu,Ea) =({gtis}i∈I∧i=i+, {gtn+is}i∈I∧i=i–, {gt2n+is}i∈U\I)。封装的密钥 DK0= e(g, g) αs。
- KM.Dec(SK, C) :如果f(S, A) ≠ 1,输出?;否则,定义双线性函数F如下:
$$
F(SK_1, C_1)=F\left( g^{KE(S, \mathbf{E} r, \mathbf{E}_a)}, g^{sCE(A, \mathbf{E}_u, \mathbf{E}_a)} \right) = \prod {i\in I\wedge i=i^+ \wedge i\in S} e\left( g^{t_i s}, h^{r_i / t_i} \right) \prod_{i\in U\setminus I} e\left( g^{t_{2n+i} s}, h^{r_i / t_{2n+i}} \right) \prod_{i\in I\wedge i=i^- \wedge i\in U\setminus S} \left( g^{t_{n+i} s}, h^{r_i / t_{n+i}} \right)=e(g, h)^{s r_0}
$$
and compute e ( SK 0 ,C 0) / F ( SK 1 ,C 1) = e(g, g) αs .

基于上述AB‐KEM、一次一密和佩德森承诺方案[24],, 我们构造了名为AB‐VPRE‐1的CP‐AB‐VPRE方案。AB‐VPRE‐1的算法根据第4节中提出的构造方式进行描述。为了便于理解,本文在此描述Setup和RKGen算法。
- Setup(1λ,U) :调用KM.Setup(1λ)→ (PK,MSK)。选择w1,w2 ∈R G 和一个抗碰撞的哈希函数H: {0, 1}∗ → Z∗p用于承诺,并选择输出长度为 的KDF。返回PP=(PK, w1, w2, H, KDF, ) 和 MSK。
- RKGen(PP, SKS, A′) :从 (Z∗p)n 中随机选择 Eγ=(γ1, …, γn) 和 Eδ=(δ1, …,δn),并设 D =g∑ni=1δi,rk =(rk0, rk1),其中 rk0= hy+r0+∑ni=1γi,rk1=r′i ({h γi ti}i∈S; {h γi tn+i}i∈U\S; {h γi t2n+i}i∈ U) 且 r′i=ri + γi +δi,i ∈ U。调用 KM.Enc(PK, A′) → ( QCA′, fDK),然后运行 f Q Q Q KDF(DK, ||D=1) ˚ D → C,接着设置 CA′=(CA′, C),最后输出重加密密钥 RKS→A′=(S, A′, rk, CA′)。

5.2. AB‐VPRE‐2

CP‐AB‐KEM 方案 [25] 可以描述如下。
- KM.Setup(1λ, U) :选择一个素数阶p(p ∈ ‚(2λ))的双线性群系统(G, GT, e)。选取生成元g ∈R G,x, α, {ti}i∈U ∈R Z∗p,并设置Ea =(x, {ti}i∈U)。然后 gEa =(h = gx, {Ti = gti}i∈U)。E 公钥参数PK = (e, g, ga, e(g, g)α)和主私钥MSK =(α, Ea)。
- KM.KGen(PK, MSK, S) :选择r ∈R Z∗p,并隐式设置KE0(r, Ea) = r,以及KE(S, r, Ea)=(r, {rti}i∈S)。则SK =(SK0, SK1),其中SK0=gα gxKE0(r, Ea) =gαgxr,SK1 =gKE(S, r, Ea) =(gr, {grti}i∈S) =(gr, {Tri }i∈S)。
- KM.Enc(PK, A, M) : A =(Am×n, ρ),其中Am×n是一个m × n的矩阵,ρ将每一行Ai映射到一个属性。选取s, {si}i∈[m] ,{vi+1}i∈[n–1] ∈R Z∗p。令Eu =({si}i∈[m] ,{vi+1}i∈[n–1]), Ev =(1, v2, …,vn),并设置CE(A, Eu, Ea)=({x Ai · EvT– siρ(i), si}i∈[m])。则C =(C0, C1, C2),其中C0= gs = C2,C1= gsCE(A,Eu,Ea) =({gxsAi· EvT–ssiρ(i) , gssi}i∈[m])。封装的密钥DK0= e(g, g) α s。
- KM.Dec(SK, C) :如果f (S, A) ≠ 1,则输出?; 否则,存在!i ∈ Z∗p使得∑ρ(i)∈S !iAi = E1。定义 F(SK1, C1) = F(gKE(S, r, Ea), gsCE(A,Eu,Ea)) = ∏ρ(i)∈S(e(gr, gxsAi·EvT–ssiρ(i) )e(Trρ(i), gssi))!i = e(g, g)xsr,并计算e(SK0,C0) F(SK1,C1) = e(g, g) αs。

类似于AB‐VPRE‐1的构造,我们可以基于上述 CP‐AB‐KEM获得一个名为AB‐VPRE‐2的 CP‐AB‐VPRE方案,并在下文中提供算法RKGen。
- RKGen(PP,SKS, A′) :选择 γ,δ ∈R Z∗p并设置 D=hδ,rk=(rk0, rk1),其中 rk0=gαhr+γ,rk1= (gr+γ+δ, {Tr+γ+δi}i∈S)。以下描述与AB‐VPRE‐1相同。

5.3. AB‐VPRE‐3

KP‐AB‐KEM [3]具有与CP‐AB‐KEM [25],相同的 设置算法,其余算法描述如下(A =(Am×n, ρ))。
- KM.KGen(PK, MSK, A) :选择 Er =({ri}i∈[m], r0, {vi+1}i∈[n–1]) ∈R (Z∗p)m+n 并设置 Ev =(r0, v2, …, vn)。隐式设置 KE0(Er, Ea) = r0,KE(A, Er, Ea) =({xAi · EvT– ritρ(i), ri}i∈[m]),然后 SK =(SK0, SK1),其中 SK0= gαgxKE0(Er, Ea) = gαgxr0,SK1= gKE(A,Er, Ea)={({gxAi·EvT–riρ(i), gri}i∈[m])。
- KM.Enc(PK, S, M) :选择 s ∈R Z∗p 并隐式设置 CE(S, Eu, Ea) =(1, {ti}i∈S),其中 Eu 为空。然后 M 密文 C =(C0, C1, C2),其中 C0= gs,C1={Tsi }i∈S,C2= hs。令 C1= gsCE(S,Eu,Ea) =(C0, MC1)。封装的密钥为 DK0= e(g, g)αs。
- KM.Dec(SK, C) :如果 f(S, A) ≠ 1,则返回 ?; 否则,存在 !i ∈ Z∗p 使得 ∑ρ(i)∈S 且 !iAi = E1。定义 F(SK1, C1) = ∏ρ(i)∈S e(gxAi·EvT– riρ(i), gs)!i e(gri, Tsρ(i))!i = e(g, g)xsr0,并计算 e(SK0,C0) F(SK1,C1) = e(g, g)αs。

类似地,我们基于此AB‐KEM构建了名为AB‐VPRE‐3的 KP‐AB‐VPRE方案,并随后提供了RKGen算法。
- RKGen(PP, SKA, S′) :选择 Eγ, Eδ ∈R (Z∗p) m+n,其中 Eγ=(γ0, …, γm+n–1),Eδ=(δ0, …, δm+n–1)。令 Ev′= Ev + Eγ+Eδ。设 D = gδ0,rk =(rk0, rk1),其中 rk0= gαgx(r0+γ0),rk1={({gxAi· EvT–r′iρ(i), gr′i }i∈[m]) 且 r′i = ri + γi + δi,i ∈ [m]。以下描述与通用构造相同。

备注3 。我们基于从先前方案改进而来的KP‐AB‐KEM[26]得出该备注,以降低解密成本;我们可以构建具有快速解密功能的KP‐AB‐VPRE方案,命名为AB‐VPRE‐3a。

5.4. 安全性分析

由于佩德森承诺方案在离散对数假设下具有完美隐藏性和计算绑定性,因此当密钥派生函数是安全的时, AB‐VPRE的实例化继承了底层AB‐KEMs的安全性。通过类似的分析,我们可以得到以下安全性结果。

定理3 。 假设ADBDH假设[2]成立且密钥派生函数 KDF是安全的,则所构造的方案AB-VPRE-1是选择性 CPA安全的,并满足验证可靠性。

定理4 。 假设判定性q-并行BDHE假设[25]成立且密钥派生函数KDF是安全的,则方案AB-VPRE-2是选择性 CPA安全的,并满足验证可靠性。

定理5 。 假设判定性q-BDHE假设[26]成立且密钥派生函数 KDF是安全的,则方案AB-VPRE-3是选择性 CPA安全的,并满足验证可靠性。

注意,AB‐VPRE‐1 的主密钥安全性可以在与[2]中所述相同的假设下通过类似分析得以证明。现在我们在CDH假设下证明AB‐VPRE‐2和AB‐VPRE‐3的弱主密钥安全性。

定理6 . 方案AB-VPRE-2和AB-VPRE-3在CDH假设下具有选择性弱主密钥安全性。

证明 。 我们首先证明AB‐VPRE‐2在CDH假设下具有选择性弱主密钥安全性。模拟器 B被给予(p, G, GT, e, g, ga, gb),其中g是G的生成元,a、b∈R Z∗p,并试图计算gab。 B针对攻击者 A按如下方式模拟安全游戏:

A将OS发送给 B。 B选择矩阵A =(Am×n, ρ),满足 f(S, A) = 1,其中Ai=(ai1, …, ain)为矩阵Am×n的第i行。令 Ω={i : ∃!i, s.t. ∑ρ(i)∈OS !iAi = E1}。 B选择ω_j ≠ 0(j ∈ Ω),并设置gt ρ(j) = gat′ρ(j),然后随机选取 α, x ∈R Z∗p , t′ ρ(j), ti ∈R Z∗p (i ∈ U \ {ρ(j)}),以及w1, w2 ∈ G,一个抗碰撞哈希函数H : {0, 1}∗ → Z∗p,以及输出长度为 的KDF。它将公共参数PP =(g, gx, e(g, g)α, {Ti = gti}i∈U,w1, w2, H, KDF, )发送给 A。 A可以访问预言机 Osk、 Ork、 Ode、 Orvd,但限制条件是 A不能向 Osk提交OS。当 A向 Ork提交(OS, A)时, B随机选择 δ0 ∈R Z∗p,并设置D = g–bgδ0, K0= gαgbx, L0= gδ0, K′ ρ(j) = gδ0at′ρ(j), K′i = gati(i ∈ OS{ρ(j)}),然后在属性结构A′下对D进行加密,并输出重加密密钥RK′ OS→A′ = (OS, A′, K0, L0, {K′i }i∈OS, CA′)。最后, A输出私钥 cSK_OS和重加密密钥RKOS→A′′。

假设A能够以极大概率成功生成有效的私钥SK和重加密密钥RKOS→A′′ 。令cSK = (OS,K,L,{Ki}i∈OS) 和 RKOS→A′′ = (OS, A′′, K′′, L′′, {K′′i }i∈OS)。对于一个有效的密文CTA,有 gα Lx ∏ρ(i)∈OS(L–t ρ(i) · Kρ(i))si!i = K成立,其中si ∈R Z∗p,这意味着L–t ρ(i) · Kρ(i) = 1。特别地,Kρ(j) = Lat′ρ(j)。由于(OS,A′′ )已被签发给 Ork,B可以找到重加密密钥(OS,A′′,K′′,L′′,{K′′i }i∈OS) 使得 (OS, K0/K′′, L0/L′′, {K′i /K′′i }i∈OS) 是一个有效的私钥。则 K′ ρ(j)/K′′ ρ(j) = (L0/L′′)at′ρ(j) 且 K′ ρ(j) = L0 at′ρ(j)意味着 K′′ ρ(j) = L′′at′ρ(j)。由于 (L′′/L)at′ρ(j) = gâ δt′ρ(j) = (K′ ρ(j)/gabt′ρ(j)),可得 gab = (K′ ρ(j)K ρ (j)/K′′ ρ(j))(t′ρ(j))–1。即 B 能够以压倒性概率输出 gab,这与 CDH假设 相矛盾。

我们随后为AB‐VPRE‐3的选择性弱主密钥安全性提供一个简要的证明:

B被给出 Ã=( Ãm×n, ρ̃) 并选择 S 使得 f(S, Ã) = 1。然后存在 ∃!i,使得 ∑ρ̃(i)∈S !iAi = E1。 B将 PP =(g, ga, e(g, g)α, {gbt′i }i∈U, w1, w2, H, KDF,`) 发送给 A,其中 {t′i}i∈U ∈R Z∗p。当 A 针对 (Ã, S′) 生成 Ork 时, B 设置 D = gb,K0 = gαgar0,{L0i = gaAi·Ev–bt′(i)r0i , R0i =(ga)ai1/t′(i)gr0i }i∈[ m],,其中 r0, {r0i}i∈[m],{vi+1}i∈[n–1] ∈R Z∗p。最后,c Ã以压倒性概率输出 SK =(A, K, Li, Ri, i ∈ [m]) 和 RKS→Ã′′ =(Ã′′, K′′, L′′i , R′′i , i ∈ [m])。根据该方案的定义,gα∏ρ̃(i)∈S(LiRibρ′(i))!i = K,gα∏ρ̃(i)∈S(L′iR′ibρ′(i))!i =K0 · gab,且 (Ã, K0/K′′, L′i/L′′i , R′i/R′′i , i ∈ [m]) 是一个有效的私钥;gα ∏ρ̃(i)∈S((L′i/L′′i )(R′i/R′′i )bρ′(i))!i = K0/K′′ 意味着 ∏ρ̃(i)∈S(R′′i /R′i)b!iρ′(i) = (gαK′′)/ K0∏ρ̃(i)∈S(L′i/L′′i )!i。由于 ∏ρ̃(i)∈S(R′i/Ri)b!iρ′(i) = ∏ρ̃(i)∈S(R′i/R′′i )b!iρ′(i), B 可计算出 gab = (K/K0) ∏ρ̃(i)∈S(L′i/Li)!i(R′i/Ri)b!iρ′(i)。即 B 能够以压倒性概率输出 gab,这与 CDH假设 相矛盾。

5.5. 对比分析

我们将本研究工作与以往的AB‐PRE方案在计算开销、功能和安全性方面进行了比较。考虑到资源受限用户,我们主要讨论了原始密文和重加密后密文在加密、重加密密钥生成和解密过程中的计算开销。

据我们所知,我们的方案是首个实现AB‐PRE重加密可验证性的方案,能够保证重加密密文的正确性,并同时检测代理的恶意行为。如表II所示,我们的验证过程在加密和解密阶段分别仅需两次模指数运算。我们的重加密在解密过程中仅增加了一次对运算,而其他方案[6,20]在解密阶段的模指数运算和对运算的计算开销均增加了一倍以上。用户在AB‐VPRE‐2和 AB‐VPRE‐3中的计算开销分别小于[6]和[20]。我们方案的重加密计算可以外包给公共云,并且返回的密文将被验证。[6,20]中的方案实现了选择密文攻击安全性,但仍无法保证合格用户在未对重加密密文的正确性进行检查的情况下接收到正确的数据。

6. 结论

对于将公共云建模为代理的基于属性的代理重加密 (AB‐PRE),重加密可能无法被诚实执行。我们提出了一种验证重加密的技术,以确保重加密密文的正确性。我们给出了具有可验证重加密功能的AB‐PRE 的通用构造,并在密钥策略(KP)和密文策略(CP) 设置下提供了三个实例化方案。与之前提出的 AB‐PRE方案相比,我们的方案减少了资源受限用户的计算开销,并且能够高效地实现验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值