本文是CCF A类期刊上的关于隐私保护的一篇论文的读书笔记,这篇论文主要贡献是提出了一种有效的、保护隐私的集合包含或者交集搜索方案。
文章目录
前言
集合包含搜索,旨在检索包含特定查询集的所有集合记录。许多现有的关于外包数据的集合包含搜索的研究仍然存在搜索效率和安全问题。针对上述问题,我们提出了一种有效的、保护隐私的集合包含搜索方案。具体来说,我们首先部署了一种非对称标量产品保留加密技术ASPE来设计一个集合包含/交叉加密(SCIE-Enc)方案。然后,我们构建一个半径树来表示集合的记录。基于半径树和SCIE-Enc的构造,提出了隐私保护的集合求交方案。
提示:以下是本篇文章正文内容,下面案例可供参考
1、场景搭建
1.1应用场景
给定一个数据库{X1,X2,X3…},里面存储着大量数据集Xi,给定一个查询集Q,隐私保护地查询数据库中哪些数据集包含给定的查询集合Q,返回这些集合的标识符
1.2实现方式
将集合包含关系查询转化为向量操作,使用非对称标量积技术来实现对向量操作的判定
2、研究背景及主要贡献
2.1 研究背景
①在加密外包数据上进行隐私保护的查询操作 一般都会使用ASPE技术,因为矩阵加密是高效的,因为它是一种对称加密并且只涉及实域的矩阵乘法。
②ASPE技术存在效率和安全问题。具体来说,在ASPE方案中,每个向量都被加密为密文并外包给云端。给定一个查询向量,云服务器需要遍历数据库中的所有向量,找出查询结果。换句话说,ASPE方案中搜索的计算复杂度与数据库的大小成线性关系。当数据库很大时,搜索过程效率低下。
2.2 本文主要贡献
①利用ASPE方案的思想设计了一个集合包含/交集加密(SCIE-Enc)结构,支持隐私保护的集合包含查询和集合交集查询。
②设计基数树组织数据集记录,使用SCIE-Enc对数据集记录加密,实现了高效且隐私保护的集合包含关系查询。
③安全性。
3.系统模型
3.1 模型实体
在该方案的应用场景中,系统模型有三种实体。
①数据所有者:持有一个数据集集合,并将加密后的数据集外包给云
②云服务器:存储加密后的数据集,并向用户提供集合包含搜索服务
③查询用户:在注册时,数据所有者会将密钥分为两部分,分别分发给查询用户和云服务器,以便之后用户向云服务器请求查询服务;查询用户会给出一个查询集合向云服务器请求查询数据集中包含该查询集合的集合标识符
3.2 方案目标
效率
安全性
4.预备知识
4.1 radix树
对于给定集合,集合元素有序放置,按照e1 e2 e3这种顺序(全局秩序)进行放置。有序集合的集合可以组织为前缀树。在前缀树中,每个内部节点存储 E 中的一个元素。每个叶节点存储集合标识的集合。同时,在给定的叶节点中存储标识的集合包含相同的元素,这些元素与从叶节点的父节点到根节点的路径中存储的元素完全相同。另外,当两条路径共享相同的前缀元素时,可以合并该前缀对应的路径。
基数树是一种紧凑的前缀树。具体来说,在前缀树中,当一个内部节点只有一个子节点时,可以与其子节点合并。这样就可以将前缀树压缩为基数树。
4.2 ASPE 技术
ASPE 非对称标量积加密技术,使用一个矩阵M 对向量进行加密,达到隐私保护的查询的效果。
加密:对x进行加密,加密后的密文CTx=xM,
查询令牌生成:TKq=rq(M-1)T
ASPE方案特性:
4.3 加密方案简述
集合包含查询是判断查询集合是否是数据库中某个集合的子集,集合交集查询是判断查询集合是否与数据库中的集合有交集。我们构建SCIE-Enc的主要思路是对数据库中的集合记录进行加密,生成数据集密文,针对查询数据集生成查询令牌,根据查询令牌和数据密文使用ASPE技术进行判定,
5.方案详述
首先,每个数据集包含若干属性,集合包含关系查询就是判定集合之间的包含关系,在本篇论文中使用向量操作来实现。
5.1 集合包含关系查询:
加密:先将集合转化为向量,然后对向量扩展,最后乘上M矩阵加密
查询令牌生成:先将查询集合转化为查询向量,然后对向量扩展,最后乘以(M-1)T
集合包含关系查询:
5.2 集合交叉关系查询
5.3 高效的集合包含关系搜索算法
算法一
主要思想:将两个待比较的集合元素按照全局顺序进行排列,用li,tj分别表示两集合中第i或j个元素为1的位置,比较两数组中第一个为1元素的位置(即对li,tj进行比较),如果li>tj,则对于Q中部分元素X不包含,从而X不包含Q;
否则继续比较第二个为1元素的位置
由于X和Q都遵循全局顺序,当li > tj时,算法可以判断Q不是Xi的子集。类似地,当j > |Q| 时,可以判定Q 是Xi 的子集。这些提前终止条件有助于提高集合包含搜索效率。
算法2
但是,此时li和tj会泄露两个集合的隐私,所以要做到隐私保护,还需要将高效的搜索算法和SCIE加密结合起来,主要方式是将X和Q转化为多个集合,对这些集合进行包含关系搜索。所以对算法一进行了改进,下面为算法2
集合的转化:
判定条件的转化:
将算法1中对元素下标的比较转化为对更小的子集合包含关系的比较(迭代思想?)
5.3思考
从算法1到算法2的转化,我更倾向于是因为隐私保护而不是效率,因为在算法1中,直接使用为1 的元素下标进行比较会泄露两个集合的具体元素,造成隐私泄露,所以将这待比较的两个集合分别转化为多个集合,从而进行隐私保护
但是我没搞懂在算法2中也没有具体体现隐私保护!!
懂了,可以对集合进行SCIE方案加密,所以转化为集合比较
6.具体方案构造
6.1系统初始化
数据所有者生成一个可逆矩阵M用于加密,计算出M^-1也作为密钥;
对于每个授权的数据用户,数据所有者生成矩阵M1和M2分别分发给数据用户和云,满足
6.2 本地数据外包
数据所有者将本地数据加密后进行外包:
①:构建基数树 T 来表示 X 中的集合。
②:扩展基数树T。在扩展树中,我们将每个内部节点的元素替换为从当前节点到根节点的所有元素。这样,图4中的基数树可以扩展为图5中的基数树。所以每个节点都可以表示为一个集合。
③:加密扩展基数树T。在扩展树T中,每个内部节点都与一个集合相关联,记为Xnode。然后,数据拥有者通过加密Xnode为CTXnode 。使用ScieEncðM来加密这个节点。对于每个叶节点,数据所有者使用 AES 算法来加密存储在其中的集合的身份。假设 IDleafNode 是存储在叶节点中的集合标识的集合。
然后,数据所有者将叶节点加密为 AESakðIDleafNodeÞ。
④:将加密树T外包给云服务器。
⑤:云服务器收到外包树T,将其存储在云端。
主要工作:为数据集合记录使用SCIE方案加密生成密文
6.3 集合包含关系搜索
主要工作:为查询集合生成查询令牌以供和数据记录进行包含关系查询
①:按照上文的算法2,为查询集合Q生成2|Q|个集合;
②:为2|Q|个集合生成查询令牌(分为包含关系查询令牌和交叉关系查询令牌)
③:云服务器收到查询请求后,首先验证查询用户Ui是否被授权。如果不是,则拒绝当前搜索请求。否则运行以下步骤以获得搜索结果。
④:因为查询令牌由矩阵 M1 加密。为了执行集合包含搜索,云服务器首先使用 M2 更新每个查询令牌为
云服务器对加密后的扩展基数树T进行深度优先集合包含搜索,得到查询结果R。搜索算法如算法3所示,其主要思想是将每个叶子节点视为一个集合,从叶节点到根节点的路径存储其转换集。然后,可以使用算法2来判断与叶节点关联的集合是否包含查询集合。
节点可能匹配多个查询令牌。之后,如果当前节点匹配了Q的所有元素,则其所有叶子节点都包含查询集Q,将它们添加到查询结果R中。 TKISQ2jÞ ¼ 1,其所有子节点不能包含Q,将被剪枝。否则,将其所有子节点加入栈S,稍后再查找。
⑤:云服务器使用会话密钥ssk将查询结果R 加密。然后,云服务器将R0返回给查询用户Ui。
⑥:Ui收到查询结果R0后,可以使用会话密钥ssk和访问密钥ak恢复每个叶节点的标识符,其中每个标识符对应的集合都包含查询集Q。