«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (11): 29-36  DOI: 10.19678/j.issn.1000-3428.0061050
0

引用本文  

黄保华, 黄丕荣, 赵伟宏, 等. 云存储中支持属性撤销的多关键词可搜索加密方案[J]. 计算机工程, 2021, 47(11), 29-36. DOI: 10.19678/j.issn.1000-3428.0061050.
HUANG Baohua, HUANG Pirong, ZHAO Weihong, et al. Multi-Keyword Searchable Encryption Scheme Supporting Attribute Revocation in Cloud Storage[J]. Computer Engineering, 2021, 47(11), 29-36. DOI: 10.19678/j.issn.1000-3428.0061050.

基金项目

国家自然科学基金(61962005);国家重点研发计划(2018YFB1404404)

作者简介

黄保华(1973-), 男, 副教授、博士, 主研方向为信息安全;
黄丕荣, 硕士研究生;
赵伟宏, 硕士研究生;
彭丽, 硕士研究生

文章历史

收稿日期:2021-03-08
修回日期:2021-04-29
云存储中支持属性撤销的多关键词可搜索加密方案
黄保华 , 黄丕荣 , 赵伟宏 , 彭丽     
广西大学 计算机与电子信息学院, 南宁 530004
摘要:云存储的便捷性和管理高效性使得越来越多的用户选择将数据存放在云端。为支持用户对云端加密数据进行检索,提出云存储中基于属性加密支持属性撤销的多关键词搜索方案。采用线性秘密共享矩阵来表示访问控制结构,实现密文细粒度访问控制,在属性撤销过程中不需要更新密钥,应对用户属性变更的情况,在此基础上构造基于多项式方程的搜索算法支持多关键词搜索,从而提高搜索精度。理论分析和实验结果表明,该方案具有陷门不可伪造性和关键词隐私性,能够保证用户数据的隐私和安全,相比CP-ABE方案,具有较高的存储性能和计算效率,功能性更强。
关键词可搜索加密    属性撤销    连接关键词    属性加密    云存储    
Multi-Keyword Searchable Encryption Scheme Supporting Attribute Revocation in Cloud Storage
HUANG Baohua , HUANG Pirong , ZHAO Weihong , PENG Li     
School of Computer and Electronic Information, Guangxi University, Nanning 530004, China
Abstract: The convenience and efficiency of cloud storage make more and more users choose to store data in cloud.In order to support users to retrieve encrypted data in cloud, a multi keyword search scheme based on attribute encryption supporting attribute revocation is proposed for cloud storage.The scheme uses the linear secret sharing matrix to represent the access control structure, which can achieve fine-grained control for cipher text access.The scheme does not need to update the key in the process of attribute revocation, and can flexibly deal with the change of user attributes.On this basis, a search algorithm that supports multi-keyword search is constructed based on polynomial equation to improve the search accuracy.Theoretical analysis and experimental results show that the proposed scheme provides trapdoor unforgeability and keyword privacy, which can guarantee the privacy and security of user data.Compared with the existing schemes, the proposed scheme has stronger functionality, higher storage performance and computational efficiency.
Key words: searchable encryption    attribute revocation    connection keywords    attribute encryption    cloud storage    

开放科学(资源服务)标志码(OSID):

0 概述

随着互联网技术的快速发展,用户对数据处理和数据存储的需求日益增加。为满足高效的数据处理能力和海量数据存储的需求,选择将个人或企业的数据外包给云存储服务器是当前流行的做法,但是当用户将数据存储在云端时,服务器并非完全可信,有可能工作在半可信或者恶意的模型下。半可信模型是指服务器试图通过与用户的交互获取敏感信息,恶意模型是指服务器除了会试图获取用户信息,还有可能破坏协议的执行或者破坏数据的完整性和正确性。在这种数据外包的背景下,不可避免地会带来数据的隐私性和安全性等方面的问题。

为防止非授权用户访问数据进行非法操作,在外包数据之前,可以先对其进行加密,最后以密文的形式交由云服务器进行存储管理。但这样会限制外包数据的可用性,加密后的数据不能再根据原来的明文索引进行检索,传统的明文检索方案不再可行。因此,在对密文数据进行检索的同时保证关键词隐私,成为当前亟待解决的问题,可搜索加密技术应运而生。

本文将密文策略基于属性加密与关键词搜索相结合,提出一种支持属性撤销的多关键词可搜索加密方案。该方案支持连接关键词搜索,可提供灵活的多关键词搜索功能。针对可能存在的访问策略动态变化问题,能够对过期非授权用户进行属性撤销操作,使其更接近于真实场景需求。相对于效率较低的树形访问结构,本文采用具有强表达能力的线性秘密共享方案作为访问结构。

1 相关工作

可搜索加密代表性的方案是SONG等[1]在2000年提出的线性扫描算法,由于此方案每进行一次检索都要扫描单篇文档的关键词集合,检索效率较低,并且容易暴露关键词在文档中的位置信息,因此易受到关键词统计攻击。其搜索开销与文档数、关键词总数成正比,当文档数和关键词总数特别大时,该方案在实际应用中的搜索效率较低。此后学术界有很多研究人员从功能性、安全性、搜索效率等方面对可搜索加密方案进行改进。KAMAR等[2]提出支持文档动态更新和密态索引动态构建的密文检索方案,该方案在更新用户数据时,不需要重构索引,通过扩展倒排索引,设计一个关键词搜索字典,以此来达到次线性的搜索时间。CURMOLA等[3]分别在自适应的非自适应模型下设计具有高安全性和高效率的对称加密关键词搜索方案。

2005年,SAHAI等[4]提出一种基于属性的加密方案。在该方案中,用户的密文和密钥可以使用一组属性来标识,如用户的性别、年龄、工作等信息可以视为一组属性。只有解密者拥有的属性符合嵌入密文的属性组时,解密者才能正确解密密文。2008年,WATERS等[5]用线性秘密共享(Linear Secret-Sharing Scheme,LSSS)矩阵表示密文的访问控制结构,相比树形的访问控制结构,LSSS在拥有相同性能和功能情况下有更好的表达能力,该基于属性的加密方案具有高效和可证明安全的特点。由于加密文件的访问策略是动态变化的,用户属性也是动态变化的,为应对这种属性动态变化的需求,文献[6-8]提出一种支持用户属性自动撤销基于属性加密的解决方案。由于基于属性加密的加解密算法计算量大,对于移动设备等计算力受限的设备来说是沉重的计算负担,也会加快设备电池的消耗,为平衡设备的计算量和加密方案的安全性之间关系,文献[9]提出将复杂计算外包给第三方服务器的基于属性加密方案,能在一定程度上减轻轻量型设备的计算负担。以上的方案仅提供了数据加解密功能,并没有实现加密数据的搜索和共享功能,将基于属性加密运用在关键词搜索中是其应用场景之一。

传统的可搜索加密方案没有考虑到用户的搜索权限,不能对加密的文件进行细粒度的访问控制,并且由于运用对称加密技术,仅适用于一对多场景且存在泄露密钥的风险。结合基于属性加密技术,可搜索加密方案能够在实现关键词搜索的同时,又能够实现加密文件的细粒度访问控制。曹素珍等[10]借助区块链技术防篡改、去中心化的优势,将密态索引存储于区块链,加密数据存储于云服务器,构造一个可验证基于属性的多关键词搜索方案,系统的密钥可安全地在公开信道传输。MICHALAS等[11]将对称可搜索加密与基于属性加密技术相结合,构造一个混合加密的可搜索加密方案,该方案既具有对称可搜索加密方案高效检索的特点,又能对用户进行访问控制。YIN等[12]提出密文策略基于属性(CP-ABE)的可搜索加密方案,由于该方案只能进行单关键词搜索,因此会使服务器返回的搜索结果包含大量不相关的内容而浪费网络带宽,或者因为进行多轮搜索而增加通信开销。宋衍等[13]提出一种基于属性加密的支持关键词任意连接的搜索方案,该方案使用多项式方程实现对非结构化数据的多关键词连接搜索,但不支持用户的属性撤销。陈燕俐等[14]提出一个密文策略基于属性加密的关键词搜索方案,该方案支持用户属性撤销但不支持多关键词检索,且属性撤销时需要同时更新用户密钥和密文信息。

针对移动设备计算力有限的情况,文献[15-17]引入加解密离线/在线的思想,离线阶段提前进行了大部分的计算工作,有效减轻了客户端的计算负担,但是这些方案都不支持属性的撤销。SUN等[18]提出可验证性的基于属性的密文检索方案,该方案支持用户属性撤销,在多对多场景下授权机构能对服务器返回的结果进行验证,但该方案存储开销较大且计算效率不高。孙瑾等[19]提出结果可验证的多关键词搜索加密方案,但该方案的访问结构使用的是效率较低的树形结构。邓志辉等[20]提出基于双线性对的可搜索加密方案,该方案能够抵抗外部关键词猜测攻击,但是该方案不能支持用户的访问控制,也缺少实验进行论证。

2 预备知识 2.1 双线性映射及困难性假设

定义1(双线性映射)  $ G\mathrm{、}{G}_{T} $表示阶为素数$ p $的乘法循环群,$ g\in G $满足下述要求,则其为有效的双线性映射。

1)双线性:$ \forall {h}_{1}, {h}_{2}\in G, a, b\in {\mathbb{Z}}_{p}, e({h}_{1}^{a}, {h}_{2}^{b})=e({h}_{1}, {h}_{2}{)}^{ab}\text{。} $

2)非退化性:$ e({h}_{1}, {h}_{2})\ne 1 $

3)可计算性:$ \forall {h}_{1}, {h}_{2}\in G $,存在多项式时间计算$ e({h}_{1}, {h}_{2}) $

定义2q-DPBDHE假设)  令$ G\mathrm{、}{G}_{T} $表示阶为素数p的乘法循环群,$ g\in G $为生成元,$ e:G\times G\to {G}_{T} $为有效的双线性映射,随机选取$ a, s\in {\mathbb{Z}}_{p}, T\in {G}_{T} $。给定元组:

$ y=g, {g}^{s}, {g}^{a}, \cdots , {g}^{{a}^{q}}, {g}^{{a}^{q+2}}, \cdots , {g}^{{a}^{2q}}\text{, } $
$ \underset{1\le j\le q}{\forall }{g}^{s{b}_{j}}, {g}^{a/{b}_{j}}, \cdots , {g}^{{a}^{q}/{b}_{j}}, {g}^{{a}^{q+2}/{b}_{j}}, \cdots , {g}^{{a}^{2q}/{b}_{j}}\text{, } $
$ \underset{1\le j, k\le q, k\ne j}{\forall }{g}^{a.s.{b}_{k}/{b}_{j}}, \cdots , {g}^{{a}^{q}.s.{b}_{k}/{b}_{j}} $

q-DPBDHE假设是指不存在多项式时间的算法以不可忽略的优势判定$ T=e{(g, g)}^{{a}^{q+1}s} $是否成立,其中$ T $$ {G}_{T} $中随机元素,q-DPBDHE假设最早在文献[21]给出定义和安全性证明。

2.2 访问结构

定义3(访问结构)  令$ P=\{{P}_{1}, {P}_{2}, \cdots , {P}_{n}\} $为用户集合,访问结构$ A\subseteq {2}^{P} $是集合$ {2}^{P} $的一个非空子集。如果对于任意集合BC$ B\in A $$ B\subseteq C $,有$ C\subseteq A $,那么称A是单调的访问结构。访问结构A中的集合称为授权集合,否则称为非授权集合。

2.3 线性秘密共享方案

若一组参与方P上的线性秘密共享方案$ \mathrm{\Pi } $满足下述条件,那么它是线性的。

1)每个参与方的线性共享份构成一个$ {\mathbb{Z}}_{p} $上的向量。

2)对于秘密共享方案$ \mathrm{\Pi } $,存在一个秘密共享份生成矩阵$ {\boldsymbol{M}}_{l\times n} $,函数$ \rho :\{\mathrm{1, 2}, \cdots , l\}\to {P}_{i} $$ {\boldsymbol{M}}_{l\times n} $中的第$ i $行映射到参与方的集合中。令$ s\in {\mathbb{Z}}_{p} $表示待共享的秘密值,随机选取$ \underset{2\le i\le n}{\forall }{r}_{i}\in {\mathbb{Z}}_{p} $组成向量$ \boldsymbol{v}=(s, {r}_{2}, \cdots , {r}_{n}) $$ \boldsymbol{M}{\boldsymbol{v}}^{\mathrm{T}} $表示秘密值sl个共享份,其中$ {\lambda }_{i}=(\boldsymbol{M}{\boldsymbol{v}}^{\mathrm{T}}{)}_{i} $表示第i个共享份,将$ {\lambda }_{i} $分配给参与方$ \rho \left(i\right) $

秘密共享方案满足线性重构性质:令$ \mathrm{\Pi } $表示一个线性秘密共享方案,S为其一个授权集,集合I定义为$ I:\{i:\rho (i)\in S\}\subseteq \{\mathrm{1, 2}, \cdots , l\} $,存在多项式时间算法计算$ \{{\omega }_{i}\in {\mathbb{Z}}_{p}{\}}_{i\in I} $,使对$ \mathrm{\Pi } $上的有效共享份$ {\lambda }_{i} $$ \sum\limits_{i\in I}{w}_{i}{\lambda }_{i}=s $成立。

2.4 系统模型

系统中包括云服务器(Cloud Server,CS)、授权机构(Authorized Authority,AA)、数据拥有者(Data Owner,DO)、数据使用者(Data User,DU)4类实体。

1)CS:储存加密的文件并提供关键词的搜索服务。根据授权机构的重加密密钥,对加密的索引进行重加密,以此达到更新访问权限的目的。同文献[14]的方案,假定云服务器诚实且好奇,即云服务器会诚实地执行用户提交的任务,但是可能会通过用户提交的数据推断出额外的信息。

2)AA:负责系统建立、用户密钥生成、根据访问策略更新重加密密钥、撤销用户属性等工作,AA是可信的第三方机构。

3)DO:首先将文件加密,从该文件中提取m个关键词,根据这些关键词使用下文的索引生成算法生成索引,然后使用对称加密算法将文件加密,最后将密态文件和索引一起放至CS存储,提供CS原始数据以进行搜索操作。

4)DU:根据需求向CS发起关键词搜索请求,并获得相应的检索结果。

本文方案的工作流程如图 1所示。

Download:
图 1 本文方案工作流程 Fig. 1 Working procedure of the proposed scheme
2.5 算法描述

一个支持用户属性撤销的多关键词搜索方案由以下6个算法组成:

1)$ \mathrm{S}\mathrm{e}\mathrm{t}\mathrm{u}\mathrm{p}({1}^{\lambda }, U)\to (\mathrm{P}\mathrm{K}, \mathrm{M}\mathrm{S}\mathrm{K}) $。为系统建立算法,由AA运行,输入安全参数$ \lambda $和系统总体属性集合$ U $,输出公钥$ \mathrm{P}\mathrm{K} $和主密钥$ \mathrm{M}\mathrm{S}\mathrm{K} $

2)$ \mathrm{K}\mathrm{e}\mathrm{y}\mathrm{G}\mathrm{e}\mathrm{n}(\mathrm{P}\mathrm{K}, \mathrm{M}\mathrm{S}\mathrm{K}, S)\to \mathrm{S}\mathrm{K} $。算法输入公钥$ \mathrm{P}\mathrm{K} $、主密钥和用户属性集$ S $,输出用户的个人私钥$ \mathrm{S}\mathrm{K} $

3)$ \mathrm{I}\mathrm{n}\mathrm{d}\mathrm{e}\mathrm{x}(\mathrm{P}\mathrm{K}, \mathrm{M}\mathrm{S}\mathrm{K}, D, (\boldsymbol{M}, \rho \left)\right)\to \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X} $。算法输入公钥$ \mathrm{P}\mathrm{K} $、用户主密钥$ \mathrm{M}\mathrm{S}\mathrm{K} $、文档集合$ D $和访问结构$ (\boldsymbol{M}, \rho ) $,输出加密索引$ \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X} $

4)$ \mathrm{T}\mathrm{r}\mathrm{a}\mathrm{p}\mathrm{d}\mathrm{o}\mathrm{o}\mathrm{r}(\mathrm{P}\mathrm{K}, \mathrm{S}\mathrm{K}, \mathrm{S}\mathrm{K}\mathrm{W})\to \mathrm{T}\mathrm{D} $。算法输入公钥$ \mathrm{P}\mathrm{K} $、用户私钥$ \mathrm{S}\mathrm{K} $和查询关键词集合$ \mathrm{S}\mathrm{K}\mathrm{W} $,输出查询陷门$ \mathrm{T}\mathrm{D} $

5)$ \mathrm{R}\mathrm{e}\mathrm{E}\mathrm{n}\mathrm{c}(\mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}, \mathrm{R}\mathrm{K})\to \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\text{'} $。算法输入加密索引$ \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X} $和重加密密钥$ \mathrm{R}\mathrm{K} $,输出重加密索引$ \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\text{'} $

6)$ \mathrm{S}\mathrm{e}\mathrm{a}\mathrm{r}\mathrm{c}\mathrm{h}(\mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\text{'}, \mathrm{T}\mathrm{D})\to \mathrm{S}\mathrm{R} $。算法输入重加密索引$ \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\text{'} $和查询陷门$ \mathrm{T}\mathrm{D} $,输出搜索结果$ \mathrm{S}\mathrm{R} $

2.6 安全模型

本文通过敌手$ \mathcal{A} $和挑战者$ \mathcal{C} $之间的交互式攻击游戏,给出本文方案的选择关键词攻击下不可区分性(IND-CKA)安全模型。

初始化   敌手$ \mathcal{A} $提交待挑战的访问结构$ ({\boldsymbol{M}}^{\mathrm{*}}, {\rho }^{\mathrm{*}}) $给挑战者$ \mathcal{C} $

系统建立   挑战者$ \mathcal{C} $运行系统建立算法,将生成的公钥$ \mathrm{P}\mathrm{K} $和系统重加密密钥$ \mathrm{R}\mathrm{K} $发送给敌手$ \mathcal{A} $

阶段1   敌手$ \mathcal{A} $发起以下询问。密钥询问:敌手$ \mathcal{A} $选取属性集合$ S=\{{S}_{1}, {S}_{2}, \cdots , {S}_{n}\} $,其中$ S $不满足访问结构$ ({\boldsymbol{M}}^{\mathrm{*}}, {\rho }^{\mathrm{*}}) $,挑战者$ \mathcal{C} $根据$ \mathcal{A} $提交的$ S $运行密钥生成算法,将生成的密钥$ \mathrm{S}\mathrm{K} $发送给敌手$ \mathcal{A} $。陷门询问:敌手$ \mathcal{A} $向挑战者$ \mathcal{C} $询问关键词集合SKW的陷门,$ \mathcal{C} $将SKW添加到关键词列表$ {L}_{\mathrm{S}\mathrm{K}\mathrm{W}} $中,$ \mathcal{C} $生成SKW的陷门返回给$ \mathcal{A} $

挑战   $ \mathcal{A} $选择2个待挑战的关键词集合$ K{W}_{0}\mathrm{、}K{W}_{1} $,将其发送给$ \mathcal{C} $,要求$ {L}_{\mathrm{S}\mathrm{K}\mathrm{W}} $中没有$ (\mathrm{K}{\mathrm{W}}_{0}\backslash \mathrm{K}{\mathrm{W}}_{1})\bigcup (\mathrm{K}{\mathrm{W}}_{1}\backslash \mathrm{K}{\mathrm{W}}_{0}) $中的任何关键词子集。$ \mathcal{C} $随机选择$ \beta \in \left\{\mathrm{0, 1}\right\} $,生成挑战索引$ \mathrm{i}\mathrm{n}\mathrm{d}\mathrm{e}{\mathrm{x}}_{\mathrm{K}{\mathrm{W}}_{\beta }} $

阶段2   $ \mathcal{A} $重复阶段1发起的询问。要求在密钥询问过程中,$ S $不满足访问结构$ ({\boldsymbol{M}}^{\mathrm{*}}, {\rho }^{\mathrm{*}}) $,在陷门询问过程中,不能询问$ (\mathrm{K}{\mathrm{W}}_{0}\backslash \mathrm{K}{\mathrm{W}}_{1})\bigcup (\mathrm{K}{\mathrm{W}}_{1}\backslash \mathrm{K}{\mathrm{W}}_{0}) $中任何关键词子集的陷门。

猜测   $ \mathcal{A} $输出对$ \beta $的猜测$ \beta \text{'} $,如果$ \beta =\beta \text{'} $,则$ \mathcal{A} $赢下这个游戏,$ \mathcal{A} $在游戏中获胜的优势被定义为$ \mathrm{A}\mathrm{d}{\mathrm{v}}_{\mathcal{A}}=\left|\mathrm{P}\mathrm{r}\right[\beta =\beta \text{'}]-1/2| $

定义4   如果任何多项式时间的$ \mathcal{A} $以可以忽略的优势赢得以下安全游戏,则本文提出的基于属性加密支持用户属性撤销的多关键词搜索方案是IND-CKA安全的。

3 方案构造 3.1 本文方案具体构造

本文方案使用的部分符号描述如表 1所示。

下载CSV 表 1 符号定义 Table 1 Notations definition

本文方案具体构造如下:

1)$ \mathrm{S}\mathrm{e}\mathrm{t}\mathrm{u}\mathrm{p}({1}^{\lambda }, U)\to (\mathrm{P}\mathrm{K}, \mathrm{M}\mathrm{S}\mathrm{K}) $。该算法输入安全参数$ \lambda $,设$ G $是阶数为素数$ p $的循环群,$ g $为其生成元,$ e:G\times G\to {G}_{T} $表示一个双线性映射。首先AA随机选取$ \alpha , a, b\in {\mathbb{Z}}_{p}^{\mathrm{*}} $作为用户的主密钥MSK。U是系统的全体属性集合,对于$ i\in U $,AA随机选取$ {f}_{i}, {d}_{i}\in {\mathbb{Z}}_{p}^{\mathrm{*}} $,随后计算出RK。算法输出公共参数PK、主密钥MSK和重加密密钥RK,如式(1)所示:

$ \left\{\begin{array}{l}\mathrm{P}\mathrm{K}=(g, e{(g, g)}^{\alpha }, {g}^{a}, \{{F}_{i}={g}^{{f}_{i}}{|}_{i\in U}\left\}\right)\\ \mathrm{M}\mathrm{S}\mathrm{K}=(\alpha , a, b)\\ \mathrm{R}\mathrm{K}=\left(r{k}_{i}=\left.\frac{{d}_{i}}{{f}_{i}}\right|i\in U\right)\end{array}\right. $ (1)

2)$ \mathrm{K}\mathrm{e}\mathrm{y}\mathrm{G}\mathrm{e}\mathrm{n}(\mathrm{P}\mathrm{K}, \mathrm{M}\mathrm{S}\mathrm{K}, S)\to \mathrm{S}\mathrm{K} $。该算法为用户的秘钥生成算法,由AA运行。算法输入公共参数PK、主密钥MSK和用户的属性集合S。AA随机选取$ t\in {Z}_{p}^{\mathrm{*}} $,然后计算出$ K={g}^{\alpha }{g}^{at} $$ L={g}^{t} $。对于$ x\in S $,计算$ {K}_{x}={g}^{{d}_{x}t} $。算法输出用户私钥$ \mathrm{S}\mathrm{K}=\{K, L, {K}_{x}\} $,如式(2)所示:

$ \left\{\begin{array}{l}K={g}^{\alpha }{g}^{at}\\ L={g}^{t}\\ {K}_{x}={g}^{{d}_{x}t}\end{array}\right. $ (2)

3)$ \mathrm{I}\mathrm{n}\mathrm{d}\mathrm{e}\mathrm{x}(\mathrm{P}\mathrm{K}, \mathrm{M}\mathrm{S}\mathrm{K}, D, (\boldsymbol{M}, \rho \left)\right)\to \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X} $。该算法为索引的生成算法,由DO运行。输入公共参数$ \mathrm{P}\mathrm{K} $、主密钥$ \mathrm{M}\mathrm{S}\mathrm{K} $、文件集合$ D=({d}_{1}, {d}_{2}, \cdots , {d}_{p}) $以及访问结构$ (\boldsymbol{M}, \rho ) $$ {\boldsymbol{M}}_{l\times n} $为秘密生成矩阵,函数$ \rho :\{\mathrm{1, 2}, \cdots , l\}\to {P}_{i} $将矩阵$ {\boldsymbol{M}}_{l\times n} $中的第$ i $行映射到参与方的集合中。DO随机选取向量$ \boldsymbol{v}=(s, {y}_{2}, \cdots , {y}_{n})\in {\mathbb{Z}}_{p} $,其中s为秘密分享值。对于$ i\in [1, l] $,计算$ {\lambda }_{i}=\boldsymbol{v}.{\boldsymbol{M}}_{\boldsymbol{i}} $。对于$ j\in [1, n] $,DO提取每个文件$ {d}_{j} $m个关键词,假设单个文件的关键词集合$ \mathrm{K}\mathrm{W}=\{\mathrm{K}{\mathrm{W}}_{1}, \mathrm{K}{\mathrm{W}}_{2}, \cdots , \mathrm{K}{\mathrm{W}}_{m}\} $,构造m级多项式:$ f\left(x\right)=d(x-H(\mathrm{K}{\mathrm{W}}_{1}\left)\right)(x-H(\mathrm{K}{\mathrm{W}}_{2}\left)\right)\cdots (x-H(\mathrm{K}{\mathrm{W}}_{m}\left)\right)+s={a}_{m}{x}^{m}+{a}_{m-1}{x}^{m-1}+\cdots +{a}_{1}{x}^{1}+{a}_{0} $$ {a}_{j} $对应为m级多项式的系数。DO随机选取$ {r}_{1}, {r}_{2}, \cdots , {r}_{l}\in {\mathbb{Z}}_{p} $,为每个文件构造索引项$ \mathrm{i}\mathrm{n}\mathrm{d}\mathrm{e}{\mathrm{x}}_{k}=\left\{\right({\boldsymbol{M}}_{l\times n}, \rho ), C, C\text{'}, \{{C}_{i}, {D}_{i}{|}_{i\in [1, U]}\}, \{{E}_{j}{|}_{j\in [0, m]}\left\}\right\} $,如式(3)所示。算法输出加密索引$ \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}=\left\{\mathrm{i}\mathrm{n}\mathrm{d}\mathrm{e}{\mathrm{x}}_{k}{|}_{k\in [1, p]}\right\} $

$ \left\{\begin{array}{l}C=e{(g, g)}^{\alpha s}\\ C\text{'}={g}^{s}\\ {C}_{i}={g}^{a{\lambda }_{i}}{g}^{-{f}_{i}{r}_{i}}, {D}_{i}^{\text{'}}={g}^{{r}_{i}}\\ {E}_{j}={g}^{b{a}_{j}}\end{array}\right. $ (3)

4)$ \mathrm{T}\mathrm{r}\mathrm{a}\mathrm{p}\mathrm{d}\mathrm{o}\mathrm{o}\mathrm{r}(\mathrm{P}\mathrm{K}, \mathrm{S}\mathrm{K}, \mathrm{S}\mathrm{K}\mathrm{W})\to \mathrm{T}\mathrm{D} $。该阶段为数据使用者的查询阶段,$ H:{\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\to G $是一个抗碰撞的哈希函数。假设待查询的关键词集合为:$ \mathrm{S}\mathrm{K}\mathrm{W}=\{\mathrm{S}\mathrm{K}{\mathrm{W}}_{1}, \mathrm{S}\mathrm{K}{\mathrm{W}}_{2}, \cdots , \mathrm{S}\mathrm{K}{\mathrm{W}}_{m\mathrm{\text{'}}}\} $$ m\text{'} $为查询关键词的数量)。数据使用者分别计算$ K\text{'} $$ {F}_{i}{|}_{i=0}^{m\mathrm{\text{'}}} $,算法输出关键词的搜索陷门$ \mathrm{T}\mathrm{D}=(K\text{'}, \{{F}_{i}{\}}_{i=0}^{m\mathrm{\text{'}}}) $,如式(4)所示:

$ \left\{\begin{array}{l}K\text{'}=K.{g}^{b}\\ {F}_{i}={g}^{\frac{H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{1}{)}^{i}+H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{2}{)}^{i}+\cdots +H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{m\mathrm{\text{'}}}{)}^{i}}{m\text{'}}}\end{array}\right. $ (4)

5)$ \mathrm{R}\mathrm{e}\mathrm{E}\mathrm{n}\mathrm{c}(\mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}, \mathrm{R}\mathrm{K})\to \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\text{'} $。该阶段为授权机构根据数据使用者的属性对索引的重加密阶段。对于访问结构$ ({\boldsymbol{M}}_{l\times n}, \rho ) $$ i\in [1, l] $,如果$ \rho \left(i\right)\in S $,则授权机构根据重加密密钥RK计算$ {D}_{i}=({D}_{i}^{\text{'}}{)}^{-r{k}_{\rho \left(i\right)}}={g}^{{f}_{i}{r}_{i}/{d}_{i}} $,如果$ \rho \left(i\right)\notin S $,那么$ {D}_{i}={D}_{i}^{\text{'}} $。算法输出$ \mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\text{'}=\left\{\mathrm{i}\mathrm{n}\mathrm{d}\mathrm{e}{\mathrm{x}}_{k}^{\text{'}}{|}_{k\in [1, p]}\right\} $

$ \mathrm{i}\mathrm{n}\mathrm{d}\mathrm{e}{\mathrm{x}}_{k}^{\text{'}}=\left(\right({\boldsymbol{M}}_{l\times n}, \rho ), C, C\text{'}, ({C}_{i}, {D}_{i}){|}_{i\in [1, l]}, {E}_{j}={g}^{b{a}_{j}}{|}_{j\in [1, m]}) $

6)$ \mathrm{S}\mathrm{e}\mathrm{a}\mathrm{r}\mathrm{c}\mathrm{h}(\mathrm{I}\mathrm{N}\mathrm{D}\mathrm{E}\mathrm{X}\mathrm{\text{'}}, \mathrm{T}\mathrm{D})\to \mathrm{S}\mathrm{R} $。该阶段为云服务器的搜索阶段,在接收到数据使用者的搜索陷门TD后,云服务器首先检查数据使用者的属性集合S是否满足数据拥有者制定的访问结构$ ({\boldsymbol{M}}_{l\times n}, \rho ) $,满足时继续执行以下操作,否则返回$ \perp $

(1)令$ I=\{I:\rho (i)\in S\} $表示满足访问结构的最小属性集合,云服务器按照式(5)分别计算$ {T}_{1}\mathrm{、}{T}_{2}\mathrm{、}{T}_{3} $,其中$ \sum\limits_{i\in I}{\omega }_{i}{\boldsymbol{M}}_{i}=(\mathrm{1, 0}, \cdots , 0) $

(2)验证等式$ {T}_{2}={T}_{1}{T}_{3} $是否成立,若成立,则所检索的文件包含用户查询的关键词,若不成立,则该文件不是用户检索的文件。

$ \left\{\begin{array}{l}{T}_{1}=\prod \limits_{i\in I}\left[e\right({C}_{i}, L)e({D}_{i}, {K}_{\rho \left(i\right)}{\left)\right]}^{{\omega }_{i}}\\ {T}_{2}=e(K\text{'}, C\text{'})\\ {T}_{3}=C\prod \limits_{i=0}^{m}e({E}_{i}, {F}_{i})\end{array}\right. $ (5)
3.2 方案正确性

本节从以下2个方面对方案的正确性进行论述:只有当用户的属性集满足数据拥有者构造索引时所嵌入索引的访问策略,则云服务器检索行为才会继续,否则停止检索协议;只有当数据使用者选取的多个关键词都在数据拥有者设置的关键词集合内,才会返回正确的检索结果,否则返回$ \perp $

1)访问控制。根据线性共享方案的线性重构性质,若检索用户的属性集合满足嵌入密态索引INDEX的访问策略,秘密值$ s $能由有效的共享份$ {\lambda }_{i} $重构,即$ \sum\limits_{i\in I}{w}_{i}{\lambda }_{i}=s $成立,否则秘密值$ s $不能由共享份恢复。$ {T}_{1} $的值计算如下:

$ \begin{array}{l}{T}_{1}= &\prod \limits_{i\in I}\left[e\right({C}_{i}, L\text{'}\left)e\right({D}_{i}, {K}_{\rho \left(i\right)}{\left)\right]}^{{\omega }_{i}}=\\ &\prod \limits_{i\in I}\left[e\right({g}^{a{\lambda }_{i}}{g}^{-{f}_{i}{r}_{i}}, {g}^{t}\left)e\right({g}^{{f}_{i}{r}_{i}/{d}_{i}}, {g}^{{d}_{i}t}{\left)\right]}^{{\omega }_{i}}=\\ &e{(g, g)}^{{at\sum }_{i\in I}{\lambda }_{i}{\omega }_{i}}=\\ &e{(g, g)}^{ats}\end{array} $

2)关键词检索。根据索引构造的多项式$ f\left(x\right)=d(x-H(\mathrm{K}{\mathrm{W}}_{1}\left)\right)(x-H(\mathrm{K}{\mathrm{W}}_{2}\left)\right)\cdots (x-H(\mathrm{K}{\mathrm{W}}_{m}\left)\right)+s $。若数据使用者选取的关键词$ \mathrm{S}\mathrm{K}\mathrm{W}=\{\mathrm{S}\mathrm{K}{\mathrm{W}}_{1}, \mathrm{S}\mathrm{K}{\mathrm{W}}_{2}, \cdots , $ $ \mathrm{S}\mathrm{K}{\mathrm{W}}_{m\mathrm{\text{'}}}\} $都在数据拥有者设置的关键词集合$ \mathrm{K}\mathrm{W}=\{\mathrm{K}{\mathrm{W}}_{1}, \mathrm{K}{\mathrm{W}}_{2}, \cdots , \mathrm{K}{\mathrm{W}}_{m}\} $内,则多项式$ f\left(x\right) $的值才为$ s $$ {T}_{3} $的值计算如下:

$ \begin{array}{l}{T}_{3}=C\prod \limits_{i=0}^{m}e({E}_{i}, {F}_{i})=e{(g, g)}^{\alpha s}=\\          { }_{} \mathrm{ }\mathrm{ }\mathrm{ }e{(g, g)}^{\alpha s}\prod \limits_{i=0}^{m}e\left({g}^{b{a}_{i}}, {g}^{\frac{H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{1}{)}^{i}+H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{2}{)}^{i}+\cdots +H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{m\mathrm{\text{'}}}{)}^{i}}{m\mathrm{\text{'}}}}\right)=\\         { }_{}  \mathrm{ }\mathrm{ }\mathrm{ }e{(g, g)}^{\alpha s}e{(g, g)}^{\frac{b\sum\limits_{i=0}^{m}\sum\limits_{j=1}^{m\mathrm{\text{'}}}{a}_{i}H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{m\mathrm{\text{'}}}{)}^{i}}{m\mathrm{\text{'}}}}=\\        { }_{}  \mathrm{ }\mathrm{ }\mathrm{ }e{(g, g)}^{\alpha s}e{(g, g)}^{\frac{b\sum\limits_{j=1}^{m\mathrm{\text{'}}}\left({a}_{m}H\right(\mathrm{S}\mathrm{K}{\mathrm{W}}_{j}{)}^{m}+{a}_{m-1}H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{j}{)}^{m-1}+\cdots +{a}_{1}H(\mathrm{S}\mathrm{K}{\mathrm{W}}_{j}{)}^{1}+1)}{m\mathrm{\text{'}}}}=\\    { }_{}      \mathrm{ }\mathrm{ }\mathrm{ }e{(g, g)}^{\alpha s}e{(g, g)}^{bs}\end{array} $

从以上推导的结果可知:$ {T}_{1}=e{(g, g)}^{ats} $$ {T}_{3}= $ $ e{(g, g)}^{\alpha s}e{(g, g)}^{bs} $,所以$ {T}_{1}{T}_{3}=e{(g, g)}^{\alpha s}e{(g, g)}^{ats}e{(g, g)}^{bs} $

$ \begin{array}{l}{T}_{2}=e(K\mathrm{\text{'}}, C\mathrm{\text{'}})=\\           { }_{}\mathrm{ }\mathrm{ }e({g}^{\alpha }{g}^{at}{g}^{b}, {g}^{s})=\\          { }_{} \mathrm{ }\mathrm{ }e{(g, g)}^{\alpha s}e{(g, g)}^{ats}e{(g, g)}^{bs}\end{array} $
$ {T}_{1}{T}_{3}={T}_{2} $

故本方案是正确的。

4 安全性分析与证明

本文方案实现属性撤销的步骤如下:

1)授权中心将撤销的用户属性$ \theta \in S $发送给云服务器。

2)根据撤销信息,云服务器更新用户的属性集合。

3)当用户对存储在云服务器上的文件进行关键词搜索时,云服务器会根据用户属性集合运用重加密算法对索引进行重加密,最后再对重加密的索引进行搜索。

下文证明提出的方案满足陷门不可伪造性和关键词隐私性。

陷门不可伪造性:当攻击者要伪造陷门TD时,需要构造出$ K\text{'} $$ {F}_{i} $这2个陷门的组成部分,要正确构造出$ K\text{'} $需要获取用户的私钥,或者通过已有陷门推断出用户私钥b的值,但是在离散对数困难问题的假设下,攻击者无法求解出b的值。

索引隐私性:如果q-DBDHE假设成立,并且挑战矩阵$ {\boldsymbol{M}}^{\mathrm{*}} $的大小为$ {l}^{\mathrm{*}}\times {n}^{\mathrm{*}} $,其中$ {l}^{\mathrm{*}}\times {n}^{\mathrm{*}}\le q $,则该方案满足选择模型下的IND-CKA安全性。

证明   假设本文方案在IND-CKA安全游戏中是不安全的,那么存在一个多项式时间敌手$ \mathcal{A} $能以不可忽略的优势赢得安全游戏,从而本文方案能构造出一个多项式时间的仿真器$ \mathcal{S} $利用$ \mathcal{A} $攻破q-DBDHE假设。

初始化   仿真器$ \mathcal{S} $接收q-DBDHE挑战向量yT,敌手$ \mathcal{A} $将待挑战的访问结构$ ({\boldsymbol{M}}^{\mathrm{*}}, {\rho }^{\mathrm{*}}) $$ {x}^{\mathrm{*}} $提交给仿真器$ \mathcal{S} $,其中$ {\boldsymbol{M}}^{\mathrm{*}} $$ {l}^{\mathrm{*}} $$ {n}^{\mathrm{*}} $列,存在i使得$ {\rho }^{\mathrm{*}}\left(i\right)={x}^{\mathrm{*}} $

系统建立   仿真器$ \mathcal{S} $由以下步骤生成公共参数PK,仿真器$ \mathcal{S} $随机选取$ \alpha \text{'}\in {\mathbb{Z}}_{p} $,令$ \alpha =\alpha \text{'}+{a}^{q+1} $,则$ e{(g, g)}^{\alpha }=e({g}^{a}, {g}^{{a}^{q}})e{(g, g)}^{\alpha \text{'}} $。对于属性$ 1\le x\le U $$ \mathcal{S} $随机选取值$ {z}_{x} $,令X表示使得$ {\rho }^{\mathrm{*}}\left(i\right)=x $所有i的集合,若$ {\rho }^{\mathrm{*}}\left(i\right)=x $,仿真器$ \mathcal{S} $计算$ {F}_{x}={g}^{{z}_{x}}\prod \limits_{i\in X}{g}^{a{M}_{i, 1}^{\mathrm{*}}/{b}_{i}}.{g}^{{a}^{2}{M}_{i, 2}^{\mathrm{*}}/{b}_{i}}\cdots {g}^{{a}^{n\mathrm{*}}{M}_{i, n\mathrm{*}}^{\mathrm{*}}/{b}_{i}} $,否则$ {F}_{x}={g}^{{z}_{x}} $。仿真器$ \mathcal{S} $将公开参数$ \mathrm{P}\mathrm{K}=(g, e{(g, g)}^{\alpha }, $ $ {g}^{a}, {F}_{1}, {F}_{2}, \cdots , {F}_{U}) $发送给敌手。

阶段1(密钥询问)  敌手$ \mathcal{A} $提交属性集,其中该属性集不满足访问结构$ {\boldsymbol{M}}^{\mathrm{*}} $。首先$ \mathcal{S} $随机选取$ r, r{k}_{1}, \cdots , r{k}_{U}\in {\mathbb{Z}}_{p} $$ \boldsymbol{w}=({w}_{1}, {w}_{2}, \cdots , {w}_{n\mathrm{*}})\in {\mathbb{Z}}_{p} $,其中$ {w}_{1}=-1 $,对于所有使得$ \rho \left(i\right)\in S $i的集合,有$ \boldsymbol{w}.{\boldsymbol{M}}_{i}^{\mathrm{*}}=0 $。令t$ t=r+{w}_{1}{a}^{q}+{w}_{2}{a}^{q-1}+\cdots +{w}_{n\mathrm{*}}{a}^{q-n\mathrm{*}+1} $,有$ L={g}^{r}\prod \limits_{i=\mathrm{1, 2}, \cdots , n\mathrm{*}}({g}^{{a}^{q+1-i}}{)}^{{w}_{i}}={g}^{t} $。然后仿真器$ \mathcal{S} $计算$ K={g}^{\alpha \text{'}}{g}^{ar}\prod \limits_{i=2, \cdots , n\mathrm{*}}({g}^{{a}^{q+2-i}}{)}^{{w}_{i}} $。如果不存在i使得$ {\rho }^{\mathrm{*}}\left(i\right)=x $,则$ {K}_{x}={L}^{{z}_{x}r{k}_{x}} $;否则存在i使得$ {\rho }^{\mathrm{*}}\left(i\right)=x $,设X为使$ {\rho }^{\mathrm{*}}\left(i\right)=x $成立的所有i的集合,计算:

$ {K}_{x}^{\text{'}}={L}^{{z}_{x}}\prod \limits_{i\in X}\prod \limits_{j=\mathrm{1, 2}, \cdots , {n}^{\mathrm{*}}}{\left({g}^{\left({a}^{j}/{b}_{i}\right)r}\prod \limits_{\begin{array}{l}k=\mathrm{1, 2}, \cdots , n\mathrm{*}\\ k\ne j\end{array}}({g}^{\left({a}^{q+1+j-k/{b}^{i}}\right)}{)}^{{w}_{k}}\right)}^{{M}_{i, j}^{\mathrm{*}}} $

计算$ {K}_{x}=({K}_{x}^{\text{'}}{)}^{r{k}_{x}} $,将密钥$ \mathrm{S}\mathrm{K}=(K, L, \{{K}_{x}|x\in S\}) $发送给敌手。

陷门询问:根据$ \mathcal{A} $提交的属性集,假设查询的关键词集合$ \mathrm{S}\mathrm{K}\mathrm{W}=\{\mathrm{S}\mathrm{K}{\mathrm{W}}_{1}, \mathrm{S}\mathrm{K}{\mathrm{W}}_{2}, \cdots , \mathrm{S}\mathrm{K}{\mathrm{W}}_{m\text{'}}\} $$ \mathcal{S} $随后执行陷门生成算法Trapdoor,计算$ K\mathrm{\text{'}}=K.{g}^{b} $$ {F}_{i}={g}^{\frac{H(SK{W}_{1}{)}^{i}+H(SK{W}_{2}{)}^{i}+\cdots +H(SK{W}_{m\mathrm{\text{'}}}{)}^{i}}{m\mathrm{\text{'}}}} $。将生成的陷门$ \mathrm{T}\mathrm{D}= $ $ (K\text{'}, \{{F}_{i}{\}}_{i=0}^{m\mathrm{\text{'}}}) $发送给$ \mathcal{A} $,将关键词集合SKW添加到列表$ {L}_{\mathrm{S}\mathrm{K}\mathrm{W}} $中。

挑战   $ \mathcal{A} $将关键词集合$ \mathrm{K}{\mathrm{W}}_{0}^{\mathrm{*}} $$ \mathrm{K}{\mathrm{W}}_{1}^{\mathrm{*}} $提交给$ \mathcal{S} $,要求$ {L}_{\mathrm{S}\mathrm{K}\mathrm{W}} $中没有集合$ (\mathrm{K}{\mathrm{W}}_{0}^{\mathrm{*}}\backslash \mathrm{K}{\mathrm{W}}_{1}^{\mathrm{*}}) $或者集合$ (\mathrm{K}{\mathrm{W}}_{1}^{\mathrm{*}}\backslash \mathrm{K}{\mathrm{W}}_{0}^{\mathrm{*}}) $$ \mathcal{S} $选取随机值$ \beta \in \left\{\mathrm{0, 1}\right\} $,计算$ C=T.e({g}^{s}, {g}^{\alpha \text{'}}),$ $ C\mathrm{\text{'}}=sP $。随机选取$ {y}_{2}^{\text{'}}, {y}_{3}^{\text{'}}, \cdots , {y}_{n\mathrm{*}}^{\text{'}}\in {\mathbb{Z}}_{p} $,使用向量$ \boldsymbol{v}=(s, sa+{y}_{2}^{\text{'}}, s{a}^{2}+{y}_{3}^{\text{'}}, \cdots , s{a}^{n-1}+{y}_{n\mathrm{*}}^{\text{'}})\in {\mathbb{Z}}_{p}^{n\mathrm{*}} $分享秘密值。此外$ \mathcal{S} $随机选择$ {r}_{2}^{\text{'}}, \cdots , {r}_{n\mathrm{*}}^{\text{'}}\in {\mathbb{Z}}_{p} $

生成:

$ \left\{\begin{array}{l}{D}_{i}^{\text{'}}={g}^{-{r}_{i}^{\mathrm{\text{'}}}}{g}^{-s{b}_{i}}\\ {D}_{i}=({D}_{i}^{\mathrm{\text{'}}}{)}^{1/r{k}_{\rho \left(i\right)}}\\ {C}_{i}={h}_{\rho \mathrm{*}\left(i\right)}^{{r}_{i}^{\mathrm{\text{'}}}}\left(\prod \limits_{j=\mathrm{2, 3}, \cdots , n\mathrm{*}}({g}^{a}{)}^{{\boldsymbol{M}}_{i, j}^{\mathrm{*}}{y}_{j}^{\mathrm{\text{'}}}}\right)({g}^{{b}_{i}.s}{)}^{-{z}_{\rho \mathrm{*}\left(i\right)}}.\left(\prod \limits_{k\in {R}_{i}}\prod \limits_{j=\mathrm{1, 2}, \cdots , n}({g}^{{a}^{j}.s.\left({b}_{i}/{b}_{k}\right)}{)}^{{\boldsymbol{M}}_{k, j}^{\mathrm{*}}}\right)\end{array}\right. $

对关键词集合$ \mathrm{K}{\mathrm{W}}_{\beta }^{\mathrm{*}}=\{\mathrm{K}{\mathrm{W}}_{1}, \mathrm{K}{\mathrm{W}}_{2}, \cdots , \mathrm{K}{\mathrm{W}}_{m}\} $,计算:

$ \left\{\begin{array}{l}f\left(x\right)=a(x-H(\mathrm{K}{\mathrm{W}}_{1}\left)\right)\cdots (x-H(\mathrm{K}{\mathrm{W}}_{m}\left)\right)+s=\sum\limits_{i=0}^{m}{a}_{i}{x}^{i}\\ {E}_{0}=({g}^{s}{)}^{b}.{g}^{b\prod \limits_{i=1}^{m}-H\left(\mathrm{K}{\mathrm{W}}_{i}\right)}\\ {E}_{i}={g}^{{a}_{i}b}, 1\le i\le m\end{array}\right. $

将待挑战的索引$ \mathrm{i}\mathrm{n}\mathrm{d}\mathrm{e}{\mathrm{x}}_{\mathrm{K}{\mathrm{W}}_{\beta }^{\mathrm{*}}}=\{C, C\mathrm{\text{'}}, \{{C}_{i}, {D}_{i}\}{|}_{i\in [1, l]}, $ $ \left\{{E}_{j}\right\}{|}_{i\in [0, m]}\} $发送给$ \mathcal{A} $

阶段2   阶段2与阶段1相同。但当$ \mathcal{A} $提交的属性集合满足$ ({\boldsymbol{M}}^{\mathrm{*}}, {\rho }^{\mathrm{*}}) $时,$ \mathcal{A} $查询的关键词集合不能是集合$ (\mathrm{K}{\mathrm{W}}_{0}^{\mathrm{*}}\backslash \mathrm{K}{\mathrm{W}}_{1}^{\mathrm{*}})\bigcup (\mathrm{K}{\mathrm{W}}_{1}^{\mathrm{*}}\backslash \mathrm{K}{\mathrm{W}}_{0}^{\mathrm{*}}) $的子集。

猜测   $ \mathcal{A} $输出$ \beta \text{'} $表示对随机数$ \beta $的猜测。根据敌手的猜测,如果$ \beta \text{'}=\beta $,仿真器回答$ T=e{(g, g)}^{{a}^{q+1}s} $,此时索引是有效索引,$ \mathrm{P}\mathrm{r}=\left[\mathcal{S}\right(\boldsymbol{y}, T=e{(g, g)}^{{a}^{q+1}s})=0]=\frac{1}{2}+ε $;否则仿真器回答T为群$ {G}_{T} $中的一个随机元素$ T\in {G}_{T} $,当$ T $为群中的一个随机元素,关键词对应的索引是保密的,有$ \mathrm{P}\mathrm{r}=\left[\mathcal{S}\right(\boldsymbol{y}, T=R)=0]=\frac{1}{2} $

因此,当多项式敌手以不可忽略的优势$ ε $攻破方案的IND-CKA时,则存在仿真器$ \mathcal{S} $$ \frac{1}{2}ε $的优势攻破q-DBDHE假设。

5 方案分析 5.1 功能比较

表 2选取一些具有代表性的基于属性的可搜索加密方案进行对比。从表 2可以看出,对比方案中的文献[12, 18-19]均不能同时满足表中列出的3个功能性要求,即不能同时满足属性撤销、支持多关键词查询和撤销用户属性时不需要更新用户密钥等要求。本文方案能同时满足以上3个功能性要求且采用表达能力强的LSSS作为访问结构,所以从功能性方面来比较,本文方案更占优势,使得本文方案更适于实际应用。

下载CSV 表 2 不同方案的功能对比 Table 2 Function comparison of different schemes
5.2 存储开销比较

为便于比较,下文定义一些用于存储开销的符号:$ \left|G\right| $表示在群G中元素的比特长度;$ \left|{\mathbb{Z}}_{p}\right| $表示在域$ {\mathbb{Z}}_{p} $中元素的比特长度;|S|表示系统中用户拥有的属性个数;|N|表示系统中总的属性数量;m表示数据拥有者提取的关键词数量;t为用户提交的关键词数量。表 3给出了存储开销对比,从表 3可以看出,本文方案在涉及客户端操作的陷门生成算法的存储开销是对比方案中最小的,其能有效减轻通信带宽。

下载CSV 表 3 不同方案存储开销对比 Table 3 Comparison of storage overhead of different schemes
5.3 计算开销比较

G和域$ {\mathbb{Z}}_{p} $中的指数运算和配对运算比乘法运算和哈更加耗时,所以,以下的分析比较只考虑指数运算E和配对运算P。从表 4可以看出,基本上所有方案算法的计算开销与系统的属性数量或者与用户的属性数量成线性关系,但当$ t\ll \left|S\right| $或者$ t\ll \left|N\right| $时,也就是在系统属性数量和用户属性数量固定的条件下,当用户提交的关键词数量小于这两者数量时,本文方案的陷门生成算法的计算效率更高。

下载CSV 表 4 不同方案的计算开销对比 Table 4 Comparison of calculation overhead of different schemes
5.4 实验仿真

本文实验的硬件条件为:Intel Core i3-2348M 2.3 GHz @ CPU,4 GB RAM。操作系统为64 bit Ubuntu 18.04.3 LTS。实验基于Charm架构,选取SS512椭圆曲线。本文选取系统总体属性数量和用户属性数量为$ \left|N\right|=\left|S\right|\in \left[\mathrm{10, 60}\right] $

图 2(a)~图 2(c)分别描述了系统建立、密钥生成和陷门生成的时间开销。如图 2(a)所示,通过对比3个方案可以看出,文献[12]方案中系统建立算法的计算开销为2E+P,是一个常数,而其他2个方案的开销随着系统属性个数N的增加而增长,本文方案的系统建立算法在对比方案中处于中等水平。如图 2(b)所示,3个方案密钥生成算法的时间代价都与系统属性数量成线性增长关系,但是本文方案的时间开销增长最慢,所以对于密钥生成算法而言,本文方案效率是最高的。图 2(c)描述了陷门生成算法,本文方案的陷门生成只与用户提交的关键词数量相关。在给定关键词数量$ t=20 $时,本文方案陷门生成的时间开销是一个常数,在$ t<S $时有明显的优势。

Download:
图 2 不同方案时间开销对比 Fig. 2 Comparison of time overhead of different schemes
6 结束语

本文提出一个基于属性的可搜索加密方案。采用LSSS作为访问结构,提供多关键词搜索和用户属性撤销的功能,适用于云存储中数据的搜索与共享,并从陷门不可伪造性和关键词隐私性两方面对本文方案进行安全性分析,从存储开销和计算开销两方面与现有方案进行对比。理论分析和实验结果表明,该方案具有安全、高效、灵活等特点。但是本文方案并不支持用户对搜索结果的正确性进行验证,并且不能隐藏同为敏感信息的访问策略,因此设计结果可验证、隐藏访问策略、可动态更新的基于属性加密的关键词搜索方案将是下一步的工作。

参考文献
[1]
SONG D X. Practical techniques for searches on encrypted data[C]//Proceedings of 2000 IEEE Symposium on Security and Privacy. Washington, D.C., USA: IEEE Computer Society, 2000: 44-55.
[2]
KAMARA S, PAPAMANTHOU C. Parallel and dynamic searchable symmetric encryption[C]//Proceedings of International Conference on Financial Cryptography and Data Security. Berlin, Germany: Springer, 2013: 258-274.
[3]
CURTMOLA R, JUAN G, SENY K, et al. Searchable symmetric encryption: improved definitions and efficient constructions[J]. Journal of Computer Security, 2011, 19(5): 895-934. DOI:10.3233/JCS-2011-0426
[4]
SAHAI A, WATERS B. Fuzzy identity-based encryption[C]//Proceedings of Annual International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Germany: Springer, 2005: 254-265.
[5]
WATERS B. Ciphertext-policy attribute-based encryption: an expressive, efficient, and provably secure realization[C]//Proceedings of International Workshop on Public Key Cryptography. Berlin, Germany: Springer, 2011: 978-986.
[6]
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
[7]
SHIRAISHI Y, NOMURA K, MOHRI M, et al. Attribute revocable attribute-based encryption with forward secrecy for fine-grained access control of shared data[J]. IEICE Transactions on Information and Systems, 2017, 100(10): 2432-2439.
[8]
BALU A, KUPPUSAMY K. An expressive and provably secure ciphertext-policy attribute-based encryption[J]. Information Sciences, 2014, 276: 354-362. DOI:10.1016/j.ins.2013.12.027
[9]
LIU Z, JIANG Z, WANG X, et al. Practical attribute-based encryption: outsourcing decryption, attribute revocation and policy updating[J]. Journal of Network and Computer Applications, 2018, 108: 112-113. DOI:10.1016/j.jnca.2018.01.016
[10]
CAO S Z, DU X L, YANG X D, et al. Attribute-based multi-keyword ciphertext retrieval scheme using verifiable hybrid storage[J]. Computer Engineering, 2020, 46(11): 181-186, 193. (in Chinese)
曹素珍, 杜霞玲, 杨小东, 等. 可验证混合存储属性基多关键字密文检索方案[J]. 计算机工程, 2020, 46(11): 181-186, 193.
[11]
MICHALAS A. The lord of the shares: combining attribute-based encryption and searchable encryption for flexible data sharing[C]//Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing. New York, USA: ACM Press, 2019: 146-155.
[12]
YIN H, ZHANG J, XIONG Y, et al. CP-ABSE: a ciphertext- policy attribute-based searchable encryption scheme[J]. IEEE Access, 2019, 7: 5682-5694. DOI:10.1109/ACCESS.2018.2889754
[13]
SONG Y, HAN Z, CHEN D, et al. Supporting key-word arbitrary connection search encryption scheme[J]. Journal on Communications, 2016, 37(8): 77-85. (in Chinese)
宋衍, 韩臻, 陈栋, 等. 支持关键词任意连接搜索的属性加密方案[J]. 通信学报, 2016, 37(8): 77-85.
[14]
CHEN Y L, YANG H S. Searchable encryption scheme based on CP-ABE supporting attribute revocation[J]. Journal of Chongqing University of Posts and Telecommunications(Natural Science Edition), 2016, 28(4): 545-554. (in Chinese)
陈燕俐, 杨华山. 可支持属性撤销的基于CP-ABE可搜索加密方案[J]. 重庆邮电大学学报(自然科学版), 2016, 28(4): 545-554.
[15]
ZHU Z Q, SU H, SUN L, et al. Research on attribute based keyword search encryption scheme in cloud storage[J]. Chinese Journal of Network and Information Security, 2017, 3(11): 5-15. (in Chinese)
朱智强, 苏航, 孙磊, 等. 云存储中基于属性的关键词搜索加密方案研究[J]. 网络与信息安全学报, 2017, 3(11): 5-15.
[16]
ELTAYIEB N, ELHABOB R, HASSAN A, et al. An efficient attribute-based online/offline searchable encryption and its application in cloud-based reliable smart grid[J]. Journal of Systems Architecture, 2019, 98: 165-172. DOI:10.1016/j.sysarc.2019.07.005
[17]
CUI J, ZHOU H, XU Y, et al. OOABKS: online/offline attribute-based encryption for keyword search in mobile cloud[J]. Information Sciences, 2019, 489: 63-77. DOI:10.1016/j.ins.2019.03.043
[18]
SUN W, YU S, LOU W, et al. Protecting your right: verifiable attribute-based keyword search with fine-grained owner-enforced search authorization in the cloud[J]. IEEE Transactions on Parallel & Distributed Systems, 2016, 27(4): 1187-1198.
[19]
SUN J, WANG X J, WANG S P, et al. Verifiable multi keyword search encryption scheme supporting attribute revocation[J]. Journal of Electronics & Information Technology, 2019, 41(1): 58-65. (in Chinese)
孙瑾, 王小静, 王尚平, 等. 支持属性撤销的可验证多关键词搜索加密方案[J]. 电子与信息学报, 2019, 41(1): 58-65.
[20]
DENG Z H, WANG S H, WANG P. Analysis and improvement of searchable encryption scheme based on composite-order bilinear pairs[J]. Computer Engineering, 2020, 46(9): 123-128, 135. (in Chinese)
邓志辉, 王少辉, 王平. 基于合数阶双线性对的可搜索加密方案分析与改进[J]. 计算机工程, 2020, 46(9): 123-128, 135.
[21]
WATERS B. Ciphertext-policy attribute-based encryption: an expressive, efficient, and provably secure realization[EB/OL]. [2021-02-01]. https://eprint.iacr.org/2008/290.pdf.