支持多用户关键词搜索的密文策略隐藏向量加密方案
摘要
在云计算中,大量数据可以被有效存储和管理。人们可以使用可搜索加密(SE)来外包加密数据,以实现数据安全和高效检索。然而,大多数现有的可搜索加密方案仅支持单用户访问,而在许多企业应用中需要多用户可搜索加密。从基于属性的加密(ABE)中我们发现,通过在密文中嵌入基于属性的访问策略,可以显著提高加密方案的灵活性和可用性。本文中,利用ABE的思想,我们提出了一种密文策略隐藏向量加密(CPHVE)方案,以支持多用户的加密和搜索操作。在该方案中,关键词与基于属性的访问策略一起被加密,当用户属性满足该策略时即可进行搜索。本文还定义并证明了CPHVE的安全性。此外,CPHVE方案基于素数阶双线性群上的标准复杂性假设,因此比现有方案更加高效。版权所有 © 2014约翰威立父子有限公司
关键词 云计算;多用户可搜索加密;隐藏向量加密;对加密数据的搜索;基于属性的加密
引言
云计算被称为高性能计算和几乎无限的存储服务。用户只要能够连接到互联网,就可以从世界任何地方访问他们的数据。它还帮助企业大幅降低管理大量数据的成本。然而,服务提供商通常不可信,数据的机密性和完整性在云中受到威胁。解决这一问题的常见方法是在外包之前对数据进行加密。随着加密数据量的不断增加,有必要由云服务提供商提供搜索服务。幸运的是,一种称为可搜索加密(SE)[1–6]的技术已提出多年,能够在不泄露明文的情况下实现关键词搜索。
然而,现有的大多数对称加密研究仅关注单用户设置,其中只有私钥持有者才能进行搜索。在许多环境中,例如企业,通常要求多个用户以及加密数据的用户都能够搜索关键词。图1给出了一个示例。在图1(a)中,一家公司有多个部门,每个部门又有多个部门。同一部门或部门内的员工通常需要共享机密文件。现有的多用户搜索加密方案要么效率低下[5],要么不是动态可扩展的[4,7,8],因为公司或经理需要管理一组密钥。
本文中,我们提出了一种密文策略隐藏向量加密(CPHVE)方案,通过使用用户的属性来实现多用户搜索控制,而不是将私钥分发给用户。在图1(b)中,某人希望与人力资源(HR)部门的成员共享包含关键词w=‘人才需求’的文档。通过使用CPHVE,他可以加密一个由用户部门、关键词和通配符‘*’(表示“无关项”)组成的向量(HR,*,*,w)。当Alice想要搜索该文档时,她将使用基于其属性向量(HR,PD,Alice,w)生成的令牌。由于她的属性向量与加密向量匹配,因此她能够找到该文档。Dave也可以用同样的方式搜索到该文档,但Henry无法搜索到,因为他的属性向量(TD,QS,Henry,w)与加密向量不匹配。我们的方案在此场景下能够良好运行,并允许多个用户共享其加密数据并提交有效的关键词搜索查询。
现有的支持多用户搜索的方案几乎无法满足前述需求。Curtmola [4]首次考虑了多用户环境,通过结合广播加密提出了一种多用户可搜索对称加密方案。Hwang [7]为电子邮件路由系统提出了一种支持合取关键词搜索的多用户公钥加密方案,其中一名用户希望向多个接收者发送邮件。该方案聚焦于一个用户加密数据、多个接收者进行搜索的场景。Yanjiang[8]考虑了一个企业将其数据外包至云并授权多个用户访问数据库的情况。当用户被授权时,将被颁发唯一的查询密钥,用户可利用该密钥生成有效查询令牌以搜索数据。所有这些方案都需要管理一组用户的私钥,不具备动态可扩展性。Hattori [5]提出了一种密文策略可委托隐藏向量加密(CPdHVE)方案,该方案能够实现我们的目标,但它基于复合阶双线性群。根据文献[9,10],,为了保证安全性,双线性群的合数阶必须足够大(例如至少1024位),这导致效率较低。
在本文中,为了安全有效地搜索加密数据,我们结合了基于属性的加密思想,提出了一种CPHVE方案。该方案基于素数阶双线性群,因此比CPdHVE更高效。
本文其余部分组织如下:第2节讨论关于同态加密、密文策略属性基加密(CP‐ABE)和对称加密(SE)的相关工作。第3节介绍了预备知识、一个复杂性假设以及IP08的仅属性方案的简要说明。第4节给出了系统模型和CPHVE的定义。第5节给出了安全性的定义和证明。第6节对CPHVE与CPdHVE进行了比较。最后,我们在第7节做出结论。
2. 相关工作
2.1. 全同态加密
2009年,金特里[12]首次提出了基于格密码学的全同态加密(FHE)方案。该方案允许在无需解密密钥的情况下对加密数据进行任意函数计算。在FHE方案中,给定消息m的密文e =E(m)以及一个高效可计算函数f(m),可以构造一种操作F,使得F(e)= E(f(m)),此时E是基于f的同态加密。同态加密算法可由不可信方执行,且不泄露其输入和内部状态。因此,它是一种理想的对加密数据的搜索方案:用户将加密文档存储在远程服务器上,服务器即使无法解密文档,也能检索满足布尔约束的文档。然而,现有研究需要大量计算,难以应用于实际场景。
2.2. 密文策略属性基加密
贝滕科特[24]首次提出了CP‐ABE方案,由于其具有灵活、可扩展和细粒度的访问控制特性,该方案被公认为保护数据的重要方法。此后,许多关于不同种类访问策略结构的方案被提出。但所有CP‐ABE方案均关注文件的加密。因此,我们采用CP‐ABE方案对与安全索引相关联的文件进行加密。本文主要研究索引的加密与搜索。
2.3. 可搜索加密
可搜索加密是一种密码学原语,允许用户将加密数据存储在不可信的服务器上,同时赋予服务器在不泄露任何数据信息的前提下进行关键词搜索的能力。2000年,宋首次提出了一种可搜索加密方案,这是一种对加密数据进行搜索的实用技术[1]。在他的论文中,他设计了多个算法以实现对加密数据的搜索。但这些算法都必须逐个匹配密文,导致在搜索大量密文时效率较低。2003年,高[2]提出了一种称为安全索引的方案。该方案生成一个安全索引对于给定的文档,通过索引进行文档搜索时提供常数时间复杂度(O(1))。2006年,科特莫拉[4,13]提出了两种改进的可搜索对称加密(SSE)方案:SSE‐1和SSE‐2,这些方案的时间复杂度为常数(O(1))。2012年,Kamara[14]提出了一种称为动态SSE的构造,以解决服务器上文档更新的问题。上述所有方案均被称为私钥可搜索加密。此外,还有一些其他工作专注于联合关键字搜索[15–17],、保持排序的搜索[17–19],以及相似性搜索[20,21]。
公钥可搜索加密由Boneh于2004年首次提出[3]。他提出了一种带关键词搜索的公钥加密[3],,该方法提供了一种将加密关键词附加到使用标准公钥密码学加密的文档上的方式。该方案允许服务器在不知道任何关于关键词信息的情况下搜索特定关键词。2007年,Boneh[15]提出了隐向量加密(HVE)≥,能够支持比较查询(例如x 1= a)、子集查询和等值查询,并且还支持任意合取(例如等值合取:x1,an=…,xna[11])。2008年,Iovino[16]通过将双线性群的阶从合数阶改为素数阶,提出了一种更高效的HVE方案。2011年,Park[22],以另一种方式提出了一种高效的HVE方案,使配对操作的数量保持为常数。还有一些其他的公钥密码学方案,例如旨在支持多个关键字的方案[23],,以及旨在提高安全性的方案{v13}。
在HVE中,消息M使用属性向量x→ ¼ x1 L ð Þ∈∑; …; x进行加密,而查询令牌与向量→y ¼ y 1 L ð Þ ∈∑*; …; y相关联,其中∑是一个有限集,‘*’是表示通配符或无关项的特殊符号。当HVE用于可搜索加密系统时,消息空间M可设为单元素集,即M= {true}。成功搜索的条件是当且仅当xi=yi或xi=*,其中i= 1,…,L。可以用邮件服务器应用的例子来简单说明HVE方案。假设一封邮件包含信息(发件人,主题,日期),发件人Bob想要发送一封邮件给Alice。Bob使用Alice的公钥加密信息(Bob, 紧急,20130627)。当Alice想要查找由Bob发送且主题为=‘urgent’的邮件时,她可以使用向量(Bob, 紧急,*)生成一个令牌并将其发送到服务器;服务器则使用该令牌为她搜索邮件。
我们之前介绍的所有HVE方案都具有相同的性质,即与密文对应的向量可以包含任意数量的通配符‘*’,而与令牌对应的向量则不包含任何通配符。其结果是无法支持多用户关键词搜索。2011年,Hattori提出了CPdHVE,该方案中与密文相关的向量可包含任意数量的通配符‘*’,并实现了支持多用户设置的目标。但CPdHVE的构造基于复合阶双线性群,效率较低[9,10]。
3. 预备知识
3.1. 符号说明
本文中使用的符号说明见表 I。为简便起见,在复杂性假设和证明中,我们令 ∑={0,1}。文档可以通过CP‐ABE [24],进行加密,但此处不再讨论。在本文中,我们主要关注关键词的加密。我们还使用哈希函数 H : {0, 1} * → Zp 将每个属性和关键词值映射到 Zp 中的一个元素。
表 I. 符号说明表
| 符号 | 含义 |
|---|---|
| ∑ | 一个有限集 |
| * | 符号表示通配符 |
| ∑* | ∑*= ∑ ∪{*} |
| L | 向量的长度 |
| →x,→y | 两个长度为的向量 |
| P(→x; →y) | P(→x; →y )=1当且仅当 xi=yi或 yi=* 对于 i=1,…, L。否则,P(→x; →y ) =0 |
| w | 关键词 |
| D(w) | 包含w的文档 |
| Did | 文档标识 |
| En( → x,w) | 加密→x 和 w |
| 一个索引 (En(→x,w) ,Did) | 属性通常指公司中成员的公司中成员的属性 |
3.2. Asymmetric bilinear pairing setting
设G1、G2和GT表示三个素数阶p的乘法群,且g1, g2, 和e(g1,g2)分别为G1、G2和GT的生成元。双线性配对e是一个可高效计算的函数e:G1 G2→GT,满足
(1) 双线性:对于所有a, b ∈Zp,有e ga b 2 ð Þab; g :
(2) 非退化:e(g1 ,g2) ≠ 1。
元组[p,g1 ,g2 ,G1,G2,GT,e]称为非对称双线性实例。如果G1= G2= G且g是G的生成元,则元组I =[p,g,G,GT,e]称为对称双线性实例。
3.3. 复杂性假设
我们的方案的安全性依赖于假设(L,m)‐Q[25],该假设描述了挑战者C与区分器D之间进行的一个游戏,如下所示:
游戏 (L,m)‐Q(1 n )
1) C 以安全参数 1 n 作为输入,获得一个非对称双线性实例 I,并设置 ChOutput = θ。ChOutput 是 C 后续计算的一系列值。
2) C 选择随机的 ^ti ; b; ^vi ; b ∈Zp,其中 i = 1,…,L 且 b = 0,1。
3) C 在约束条件为其总和为 0 的情况下,为 i = 1,…,L 选择随机的 ai ∈Zp。
4) C定义一个整数对集合JK={(j,k)|1≤j ≤m, 1≤k ≤m, j ≠k 或 j = k,m + 1≤j ≤L}。C为每个(j, k) ∈JK选取一个随机数^s ðj ;kÞ∈Zp,并按如下方式计算矩阵Aj,k和Bj,k(其中 表示矩阵中的缺失项)。C将这两个矩阵附加到ChOutput中。
$$
A_{j;k} =
\begin{cases}
\begin{bmatrix}
g^{\hat{s} {j;k}\hat{t} {1;0}} 1 ;…;\mathbf{\emptyset};…; g^{\hat{s} {j;k}\hat{t} {k;0}}_1 ;…; g^{\hat{s} {j;k}\hat{t} {L;0}}_1 \
g^{\hat{s} {j;k}\hat{t} {1;1}}_1 ;…; g^{\hat{s} {j;k}\hat{t} {j;1}}_1 ;…;\mathbf{\emptyset};…; g^{\hat{s} {j;k}\hat{t} {L;1}}_1
\end{bmatrix} & \text{if } j \neq k \text{ and } j, k \leq m \
\begin{bmatrix}
g^{\hat{s} {j;k}\hat{t} {1;0}}_1 ;…;\mathbf{\emptyset};…; g^{\hat{s} {j;k}\hat{t} {L;0}}_1 \
g^{\hat{s} {j;k}\hat{t} {1;1}}_1 ;…; g^{\hat{s} {j;k}\hat{t} {j;1}}_1 ;…; g^{\hat{s} {j;k}\hat{t}_{L;1}}_1
\end{bmatrix} & \text{if } j = k \text{ and } j > m
\end{cases}
$$
$$
B_{j;k} =
\begin{cases}
\begin{bmatrix}
g^{\hat{s} {j;k}\hat{v} {1;0}} 1 ;…;\mathbf{\emptyset};…; g^{\hat{s} {j;k}\hat{v} {k;0}}_1 ;…; g^{\hat{s} {j;k}\hat{v} {L;0}}_1 \
g^{\hat{s} {j;k}\hat{v} {1;1}}_1 ;…; g^{\hat{s} {j;k}\hat{v} {j;1}}_1 ;…;\mathbf{\emptyset};…; g^{\hat{s} {j;k}\hat{v} {L;1}}_1
\end{bmatrix} & \text{if } j \neq k \text{ and } j, k \leq m \
\begin{bmatrix}
g^{\hat{s} {j;k}\hat{v} {1;0}}_1 ;…;\mathbf{\emptyset};…; g^{\hat{s} {j;k}\hat{v} {L;0}}_1 \
g^{\hat{s} {j;k}\hat{v} {1;1}}_1 ;…; g^{\hat{s} {j;k}\hat{v} {j;1}}_1 ;…; g^{\hat{s} {j;k}\hat{v}_{L;1}}_1
\end{bmatrix} & \text{if } j = k \text{ and } j > m
\end{cases}
$$
5) C 计算以下值,并将它们添加到 ChOutput 中,其中 i = 1,…,L 且 b= 0,1,
$$
C_{i;b} = g^{1/\hat{t}_{i;b}}_2 \tag{3}
$$
and
$$
D_{i;b} = g^{1/\hat{v}_{i;b}}_2 \tag{4}
$$
6) C 从 {0,1} 中随机选择 η,并令 →z ¼ z 1 L ð Þ ¼; …; zηm0Lm:对于 i = 1,…,L,C 计算以下值并将其追加到 ChOutput:
$$
E_i = C^{a_i}_{i;z_i} \tag{5}
$$
and
$$
F_i = D^{a_i}_{i;z_i} \tag{6}
$$
7) C 在 ChOutput 的输入上运行 D,并接收输出 η’。
假设 1. (假设 (Lm)‐)[25]
对于所有概率多项式时间(PPT)区分器D,Adv D (n,L,m) 关于n是可忽略的,其中Adv D(n,L,m) 是区分器 D在游戏(L, m)‐Q(1 n )中的优势。
$$
\text{Adv}_D(n; L; m) = |\text{Prob}[\eta = \eta’] - 1/2| \tag{7}
$$
3.4. IP08的仅属性
2008年,Iovino和Persiano提出了一种基于素数阶双线性群[11]的HVE方案。我们称之为IP08。现在,我们介绍IP08的仅属性方案,其中加密算法的输入仅包含一个属性向量。该仅属性 HVE方案由以下四个算法组成。
Setup(1n) :输入安全参数 1n,输出密钥对(PK, SK)。
加密(PK, x→) :以公钥PK和属性向量x→ ¼ x(i)L i¼1∈∑ L 为输入,由加密者运行并输出密文CT x→。
GenToken(SK, y→) :输入为SK和一个向量y→ ¼x(i)L i¼1∈∑ L,输出令牌Ty→,由接收者执行。
Test(CTx→, T y→) :输入为 y→ 的 T y→ 和 x→ 的 CT x→。当且仅当 xi=yi 或对于 i = 1,…,L 有 xi=* 时,输出 1(真)。
IP08的一个重要应用是之前描述的邮件服务器。从上述算法中我们发现,向量x→不包含通配符‘*’,这意味着它无法在我们的方案中实现基于属性的访问策略。为了实现这一目标,我们提出了基于属性专用方案的CPHVE方案。
4. 密文策略隐藏向量加密方案
4.1. CPHVE模型
我们考虑一个基于CPHVE方案的模型,如图2所示。该模型包含五个实体{DB, TA, PKG, Client, Server}。DB是用于存储用户属性的数据库。TA是可信授权机构,负责用户管理,例如用户注册与撤销、用户身份验证、用户属性管理以及使用用户属性生成关键词令牌。PKG是公钥生成器,负责生成系统的公钥和私钥。Client是负责加密关键词和文档、解密文档、向TA提交关键词以生成令牌,并将令牌发送给服务器以搜索整个加密索引的应用程序。Server是文档服务器,用于提供搜索和存储文档服务,并维护一个由二元组(密文, Did)组成的索引列表。
4.2. CPHVE的定义
定义1 CPHVE 。密文策略隐藏向量加密(CPHVE)由四个概率多项式时间算法(Setup, Encryption, GenToken, Test)组成的四元组,具体如下:
Setup(1n) :输入安全参数 1n,输出系统的公钥PK和私钥 SK。该过程由私钥生成中心PKG执行,私钥SK由可信授权机构TA持有。
加密(PK, x→) :输入为PK和属性向量x→ ¼ x(i)L i¼1∈∑ L,输出密文CT x→。该向量包含用户属性和一个关键词,属性可以是通配符‘*’。该算法由客户端运行。
GenToken(SK,y→) :输入为SK和向量y→∈∑L,输出为一个令牌。由可信授权机构TA运行。
Test(CTx→, Ty→) :输入为关于 y→ 的令牌 Ty→ 和密文 CT x→。当且仅当 P(x→, y→) =1 时输出 1(真)。该操作由服务器执行。
我们的系统主要包含三个过程:密钥生成阶段、存储过程和搜索过程,其中密钥生成阶段仅执行一次,而存储与搜索阶段会执行多次。
密钥生成过程 :私钥生成中心运行设置以生成系统的公钥和私钥,发布公钥并将私钥发送给可信授权机构。
存储过程 :客户端输入用户属性和关键词w,计算出一个索引项二元组 CTx → ( , Did) ←加密(PK, x→) 并将其提交给服务器。然后,服务器将索引项添加到索引列表中。
搜索过程 :当有人想要搜索包含关键词w的文档时,他首先将他的身份和w发送给TA。TA会利用他的属性和w计算出一个令牌Ty→,并将其发送给服务器。服务器在索引列表中的Ty→和CTx→上运行Test(CTx→, Ty→)算法,如果测试算法输出1(TRUE),则返回相应的加密文档集合。当整个索引处理完毕后,服务器停止。
4.3. CPHVE的详细构造
CPHVE方案详细如下。
设置(1 n )
初始化算法以安全参数 1 n和属性长度L作为输入,然后按以下方式计算系统的公钥和私钥:
(1) 为了生成CPHVE参数,设置阶段随机选择一个随机的非对称实例I。
(2) 对于 1 ≤i ≤L, b ∈∑,随机选取ti,b, vi,b ∈Zp,并令Ti ; b ¼ g 1 = t i; b 2 ;Vi ; b ¼ g 1 =v i; b 2 。
(3) 公布PK并将SK发送给TA,其中
$$
SK = [I; {t_{i;b}, v_{i;b}}_{i\in {1,…,L}, b \in \sum}]
$$
$$
PK = [I; {T_{i;b} = g^{1/t_{i;b}} 2, V {i;b} = g^{1/v_{i;b}} 2} {i \in {1,…,L}, b \in \sum}]
$$
加密(公钥, x→)
加密算法以PK和属性向量x→ ¼x 1 L1 ( ;…;x , xL)作为输入,输出一个密文向量,其中x1,…, xL 1 ∈∑* 和xL ∈∑分别表示用户属性和关键词w。加密过程如下:
(1) 设 Sx→ 为满足 xi ≠*, 的位置 i 的集合,则对于 i∈ Sx→,在它们的和为 0 的约束下,选择随机的 ai ∈Zp。
(2) 按如下方式计算密文:
$$
X_i =
\begin{cases}
T^{a_i}_{i;x_i} & \text{if } x_i \neq * \
\emptyset & \text{if } x_i = * \text{ and } i \neq L
\end{cases}
\tag{8}
$$
$$
W_i =
\begin{cases}
V^{a_i}_{i;x_i} & \text{if } x_i \neq * \
\emptyset & \text{if } x_i = * \text{ and } i \neq L
\end{cases}
\tag{9}
$$
(3) 返回密文向量 CTx→ ¼ X i i ( )L; Wi¼1:
加密后,用户将元组CTx → id ( );D发送给服务器,服务器将其添加到索引列表中。
生成令牌(私钥, y → )
TA 在输入 SK 和 y → 上运行 GenToken 算法,并输出一个令牌。当某人想要搜索包含关键词 w 的文档时,他首先将 w 发送给 TA。TA 负责验证用户的身份。如果用户成功通过验证,TA 将使用其属性和 w 生成一个令牌 Ty→。然后 TA 将 Ty→ 发送给服务器以检索数据。该令牌的计算方式如下:
(1) 从Zp中随机选择L + 1个s, s1,…, sL。
(2) 令 Ti;yi ¼g t i; y i 1, Vi; y i ¼g v i ; y i 1,然后计算令牌 Ty → ¼ Y i i ( )L;Li¼1,其中
$$
Y_i = T^{s-s_i}_{i;y_i} \tag{10}
$$
$$
L_i = V^{s_i}_{i;y_i} \tag{11}
$$
(3) 将 Ty → 返回给 Server。
测试(公钥, T y→, 密文 x→)
当服务器收到令牌时,会运行测试算法。该算法以令牌和索引列表中的所有密文→作为输入。如果Test(公钥, Ty →, CTx→)= 1(TRUE),则选择索引项中对应D id 的数据。在搜索完整个索引列表后,服务器发送将选定的结果返回给用户。测试算法的流程如下:
$$
\text{Test}(PK; CT_{\vec{x}}; T_{\vec{y}}) = \prod_{i\in S_{\vec{x}}} e(Y_i,X_i) \cdot e(L_i, W_i) \tag{12}
$$
如果 P x→ → ¼ 1y ; 测试输出 1,否则输出 0。
接下来我们证明算法四元组(Setup、Encryption、GenToken、Test)是一个CPHVE。
证明 。现在,我们将验证当P(x→; y→) = 1时,算法 Test返回1。由于每个文档至少应包含一个关键词,因此经过加密处理的x→不可能是x→ ¼ ; …;; 的情况。
If xi=yi, then e Ti;yi; Ti;xi ¼ e g1; g2 ð Þ and e Vi;yi; Vi;xi = e(g1,g2), we have Test PK; CT→x; T→y ð Þ
$$
= \prod_{i\in S_{\vec{x}}} e(Y_i,X_i) \cdot e(L_i, W_i)
= \prod_{i\in S_{\vec{x}}} e(T^{a_i} {i;x_i}, T^{s-s_i} {i;y_i}) \cdot e(V^{a_i} {i;x_i}, V^{s_i} {i;y_i})
= \prod_{i\in S_{\vec{x}}} e(g_1, g_2)^{s \cdot a_i}
= e(g_1, g_2)^{s \cdot \sum_{i\in S_{\vec{x}}} a_i}
$$
since
$$
\sum_{i\in S_{\vec{x}}} a_i = 0
= 1 \tag{13}
$$
5. 安全性证明
5.1. 安全定义
这里,我们使用语义(1L,1n)游戏来定义CPHVE方案的安全性。在游戏中,允许敌手A对向量y →发起任意数量的令牌查询,且这些向量必须满足P(z → 0; y → ) =P(z → 1; y → ) = 0。然后,A选择两个挑战向量,C随机加密其中一个,而A试图从密文中获取某些信息。我们证明所提出的CPHVE方案在选择性模型[11],下具有语义安全性,其中A必须在游戏开始时公布这两个挑战向量。在 CPHVE中,与密文关联的向量包含通配符,且A公布 的两个向量受限于通配符必须出现在相同的位置。游戏过程如下:
语义(1 L,1 n )
(1) 初始化。A 在通配符‘*’出现在相同位置的约束下选择两个挑战向量 z→0; z → 1 ∈∑ L 。
(2) 密钥生成。C 运行 Setup(1 n ) 生成 (PK,SK) 并将 PK 发送给 A。
(3) 查询阶段I。A 发起任意的生成令牌查询。C 在满足 P(z → 0; y → ) = P(z → 1; y → ) = 0 的条件下进行响应。
(4) 挑战。C 随机选择一个 η ∈{0, 1} 并将 Encrypt(PK, z → η) 返回给 A。
(5) 查询阶段II。与查询阶段I相同。
(6) 输出阶段。A 给出一个猜测 η′。如果 η= η′ 成立,则游戏返回 1;否则返回 0。
定义2. 如果对于所有PPT A,A的优势 ε关于n是可忽略的,则CPHVE是语义安全的。
$$
\varepsilon = \left| \mathrm{Prob} \left[ \mathrm{SemanticExp}_A (1^l, 1^n) = 1 \right] - \frac{1}{2} \right| \tag{14}
$$
5.2. CPHVE的证明
在本节中,我们将对所提出的构造进行详细的证明,并证明其满足不可区分性‐选择明文攻击(IND‐CPA)安全。从语义的初始化阶段(1L,1n)可知,通配符‘*’的位置会向敌手公开。因此,不要求敌手选择在不同位置包含通配符‘*’的挑战向量。在实际应用中,这并不会构成缺陷。例如,一个用户选择向量( HR,*,*, w)来生成密文。敌手仅能获知通配符‘*’的位置,但无法推断出HR和w的信息。因此,向量中通配符‘*’的位置不会影响我们方案的安全性。
(L‐h,m)‐Q假设在[25],中也成立,其中h表示通配符 *的数量,m表示不同位置的数量。因此,我们仅给出加密向量中不含*时方案的证明。
我们用 A 在初始化时公布的两个向量 z→0 ¼ z 0;1 0;L ; …; z 和 →z1 ¼z 1;1 1;L ; …; z 表示。为简便起见,我们设 ∑={0, 1},并且不失一般性,假设 zr 0 和 zr1 的前 m个位置不同,即 z→0 ¼ 0m·0Lm 和 z → 1 ¼ 1m·0Lm:
引理1。 假设(L,m)‐Q成立。那么,对于所有PPT A以及具有m个不同位置的向量z→0; z → 1,我们有p A → 11 → 0 → 10 A → 0 z ; z p z ; z是可忽略的,其中pA z→0 → 1η ð Þ; z表示游戏返回 η时的概率。
证明。 根据引理1,我们知道要证明CPHVE的安全性,只需证明引理1成立即可。我们使用反证法来证明引理 1。我们假设对于某个具有优势 ε的PPT A,引理1不成立。然后,我们证明存在一个概率多项式时间模拟器 B,其在假设下具有不可忽略的优势。利用假设中的序列值ChOutput,B为A模拟 Semantic(1 L,1 n ),然后B利用A的优势证明假设( L,m)‐Q在某个不可忽略的优势下不成立。游戏过程如下:
(1) 初始化。A选择之前提到的两个挑战向量z → 0 和z → 1 。
(2) 密钥生成。B定义JK={(j,k)|1 ≤j ≤m,1 ≤k≤m, j ≠k 或 j =k,m +1 ≤j ≤L},如果(j,k)∈JK,则设置G (j ,k ) = e(Aj ,k [1,j],Cj ,1)。在接下来的证明中,我们考虑(公钥,私钥)由该假设隐式定义,其中
(a)
$$
PK = \left[I;\left(T_{i;b} = C_{i;b} = g^{1/\hat{t} {i;b}}_2, V {i;b} = D_{i;b} = g^{1/\hat{v} {i;b}}_2\right) {i\in {1,…,L}, b\in\sum}\right]
$$
(b)
$$
SK = \left[I;{\hat{t} {i;b},\hat{v} {i;b}}_{i\in {1,…,L}, b\in\sum}\right]:
$$
(c) 这意味着对于 i =1, …, L 且 b = 0,1,有 ti;b ¼^ti;b; vi;b ¼^vi;b。由于值 ^ti;b; ^vi;b 是从 Zp 中随机选取的,因此公钥和私钥的分布与设置阶段输出的分布相同。
(3) 查询阶段I。B 在约束条件 P z→0 → ¼;y 和 P z →1 → ¼ 0;y,行响应。为了回答该查询,应讨论以下两种情况。
情况1 :向量 y→ 对于 m + 1 ≤j ≤L 存在某个 yj= 1。B 从 Zp 中随机选择 s′; s′ 1; …; s ′ L,并对 i = 1,…,L 计算 eYi ¼A j;j½ s′ i y ;is′ i 和 eLi ¼ B j;j½ s′ i y ; i。B 将 eTy→ ¼ eY i i L¼1
情况2 。对于m + 1 ≤j ≤L,向量y→完全存在于yj= 0中。由于P z →0 → ¼;y P z →1 → ¼ 0;y,存在两个索引j和 k,使得yj= 1和yk= 0。B从Zp中随机选择s′; s′ 1; …; s ′ L, 并对i= 1,…,L,计算eYi ¼A j;k½ s ′ i y ; i s′ i 和eLi ¼ B j;k½ s ′ i i y ; i:B将eTy → ¼eY i i L¼1 询结果返回给A。可以证明,B返回的结果与 GenToken的输出具有相同的分布。在情况1中,令s ¼ s′^s ð j ;jÞ,si ¼ s′ i ^s ð j ;jÞ,其中i =1, …,L。在情况2中,令s ¼ s′^s ð j ;kÞ, si ¼ s′ i ^s ð j ;kÞ,其中i= 1,…,L。设eTi;yi ¼ g ^t i; b 1; eV ¼ g ^v i; b 1 。我们有eYi ¼ eTss i i;yi 和 eLi ¼ eVsi i;yi 在两种情况下均成立,且s′; s′ 1; …; s ′ L是来自Zp的独立随机值。综上所述,eT →y 与Semantic(1 L,1n )得到的答案具有相同的分布。
(4) 挑战。在此阶段,B将回应A的挑战。B 在满足其和为 0 的约束条件下,随机选择 ′ i ∈Zp,其中 i =m +1,…, L,并设置 R i =Ei 和 W i =Fi ,其中 i =1,…,m。B 计算 Ri ¼ Ei·C b ′ i i; 0 且 W i ¼ F i ·D b ′ i i;0,其中 i =m +1,…,L。然后可知,对于 i =1,…,m,有 X i ¼T a i i;z ηi 且 W i ¼V a i i;zηi ,其中 a i ¼^ai ;而对于 i =m +1,…, L,有 X i ¼T a i i;0 且 W i ¼V a i i;0,其中 a i ¼^ai +b′ i 。因此,我们可以得到 f密文 = Encrypt (公钥; z → η ; a 1 L ð Þ; …; a ),且 a i 是在约束条件 ∑a i =0 下从 Zp 中随机选取的。因此,密文 在 Semantic(1 L,1 n ) 的回答中是均匀分布的。
(5) 查询阶段II。与查询阶段I相同。
(6) 输出阶段。A给出猜测 η′ ∈{0,1}。当且仅当 η=η′ 时,B返回0。
现在,我们可以得出以下结论。如果 η= η′,则 B输出 β′ = 0。这意味着B是该游戏中的一个成功敌手。由于B提供了完美模拟,挑战阶段返回的密文是完美密文。根据我们对A的优势的假设,可以按如下方式计算 B的优势:
$$
\mathrm{Pr}[\eta = \eta’ \mid \beta’ = 0] = \frac{1}{2} + \varepsilon \tag{15}
$$
如果 η ≠η′,B 输出他的猜测 β′ = 1。在这种情况下,攻击者无法获得关于明文的任何信息。因此,B 输出 β′ = 1 的概率是
$$
\mathrm{Pr}[\eta = \eta’ \mid \beta’ = 1] = \frac{1}{2} \tag{16}
$$
现在,我们得到B在假设(L,m)‐Q下的优势:
$$
\frac{1}{2}\mathrm{Pr}[\eta = \eta’ \mid \beta’ = 1] + \frac{1}{2}\mathrm{Pr}[\eta = \eta’ \mid \beta’ = 0] - \frac{1}{2} = \frac{\varepsilon}{2} \tag{17}
$$
由方程(17)可知,B的优势是不可忽略的,这与假设(L,m)‐Q相矛盾。因此,引理1成立,且我们的 CPHVE构造是IND‐CPA安全的。
6. 与密文策略可委托隐藏向量加密的比较
在本节中,我们将展示我们提出的CPHVE方案与 Hattori提出的CPdHVE [5]之间的对比。比较结果如表II所示。我们方案最重要的优势在于其基于素数阶双线性群,因此比CPdHVE更加高效。文献[9,10]指出,在合数阶群上计算配对运算的开销要大得多
表II. 与CPHVE的比较。
| CPdHVE[5] | CPHVE(我们的) | |
|---|---|---|
| 双线性映射 | 对称性 | 非对称性 |
| 群阶 | 合数阶 | 素数阶 |
| 密文大小 | (2w +3) | G |
| 加密成本 | (2 L+4)e | 2 ( L‐w ) e |
| 测试成本 | 2we +3Pc | 2(L‐w)Pp |
| 假设 | L‐wDBDH ( L,m ) ‐ Q | L‐cDDH BSD |
| 安全 | IND‐CPA | IND‐CPA |
|G|、 |G1| 和 |GT| 分别是双线性群 G、G1 和 GT 中一个元素的数据大小。L 是向量大小。w 是相应向量中的通配符数量。e 表示幂运算。P c 表示合数阶群上的配对运算。P p 表示素数阶群上的配对运算。CPHVE,密文策略隐藏向量加密;CPdHVE,密文策略可委托隐藏向量加密。
相比于素数阶群,合数阶群的计算成本更高。合数阶需要足够大(至少1024位)才能难以被分解,而更小的素数阶(160位)就足以达到相同的安全级别。[9]中的估算表明,基于合数阶的配对计算比素数阶的配对计算慢50倍。在信息检索领域,人们通常关注搜索效率,而在CPHVE中,只有测试算法会影响该效率。根据表II中测试成本的公式,当通配符数量为零且P c= 50 Pp时,2we + 3Pc= 2(L‐w)Pp,我们将得到L = 75。这意味着当通配符数量为零且L 75时,CPdHVE的测试成本将高于CPHVE。但在正常情况下,L很少或几乎不会达到75。
此外,合数阶双线性群中的一个元素比素数阶双线性群中的元素更大,因此在合数阶群中对该元素进行幂运算需要更多的计算量。在Hattori发表的论文 [4]中,他们仅描述了CPdHVE的安全定义,而并未详细阐述其证明过程。
为简化描述,我们在方案中将关键词的数量限制为仅一个。我们也可以扩展我们的方案以支持多个关键字。如果我们希望支持多关键字搜索,则应在初始化算法中增加变量L的长度。
7. 结论
本文提出了一种CPHVE方案,该方案通过基于属性的访问控制方法,支持对存储在云中的加密数据进行多用户搜索。该CPHVE方案支持一人加密的数据可被多人搜索。在该方案中,我们利用用户属性来控制用户对加密数据的访问,从而实现多用户搜索的目标,这使得方案具有更高的灵活性和可用性。由于CPHVE基于素数阶双线性群,因此相比其他构造更加高效。本文还给出了我们的CPHVE的证明。未来,我们将考虑如何支持用户管理者在服务器上搜索与其属性相关联的所有内容,换句话说,如何支持关键词值为通配符 ‘*’的情况。
支持多用户的密文策略加密方案
502

被折叠的 条评论
为什么被折叠?



