对称密文检索

布隆过滤器

在这里插入图片描述

集合S = {x1,x2,…,xn}

数组BF的初始值为0,选取k个hash函数h1,h1,h2,…,hk,这些hash函数将集合中的元素映射到数组中的某一位上,对于集合中的各个元素xi,为其计算h1(xi),h2(xi),…,hk(xi),并将数组中对应的位置设置为1。

判断元素y是否属于集合S时,先算出k个h1(y),h2(y),…,hk(y),如果数组中对应的这k个元素有一个位置的值不为1,那么我们可以肯定y一定不属于集合S。但是如果数组中这k个hask值都为1,不能说y一定在集合S上,显然可能有其他元素,比如xi的哈希值把BF数组中y对应的值赋值为1。

借助于布隆过滤器提出:基于文档-关键词索引的密文关键词检索方案

  1. setup算法。数据所有者生成r个秘钥k1,k2,…,kr以及伪随机函数f。

  2. BuildIndex算法。对于包含t个关键词w1,w2,…,wt的文档D,数据所有者首先为其生成一个位数组BF(D),并置BF(D)所有位均为0;

    ​ 对于每个关键词wi

    1. 以wi作为输入计算r个值:x1=f(wi,k1),x2=f(wi,k2),…,xr=f(wi,kr)
    2. 以文档标识id作为输入计算r个值:(把1算出来的xi拿过来)y1=f(id,x1),y2=f(id,x2),…,yr=f(id,xr)。
    3. 将BF(D)中y1,y2,…,yr这r个值对应的位置设为1,并对BF(D)进行随机填充为啥这个随机填充没懂。
  3. Gentrapdoor算法,把2.1中的r个xi的值发送给服务器。

  4. Search算法:根据陷门,服务器为文档D计算r个yi就是2.3中r个yi,若这BF(D)中这r个值对应位置都为1。若是,则说明文档D包含w,并将其返回给用户。

文档-关键词索引总结:只需要计算若干次伪随机数,速度比基于全文扫描的方法提高很多,然而由于布隆过滤器的硬伤所在(就是前面说过的被其他值把BF(D)中对应的值赋值为1了。)会有一定的概率返回不包含查询关键词的文档。

为了证明基于布隆过滤器的安全性,首先形式化地定义关键词语义安全IND-CKA和IND2-CKA,并证明该方案满足这些安全性。主要介绍IND2-CKA,IND2-CKA含义:对于两个数据文档V0和V1,仅凭密文索引无法对二者进行区分。

基于掩码技术的方案:

定理3-1:

如果函数f是一个伪随机函数,则基于布隆过滤器的方案满足IND2-CKA安全性。

通过掩码技术,人们实现了一种误报率为0的密文关键词检索方案。方案的核心思路是:提前为关键词构造字典,并由用户保存在本地。字典包含2d对(i,wi),wi∈{0,1}代表 一个关键词,i∈[1,2d]为wi对应的唯一值。

具体概述:

  1. Setup算法。数据所有者生成密钥s、r,伪随机置换函数P以及伪随机函数F、G.
    在这里插入图片描述在这里插入图片描述
    上述方案中,每个关键词对应位串中的某一位,且没有冲突,因此,检索结果不包含冗余数据。
    在这里插入图片描述
    在这里插入图片描述
发布了22 篇原创文章 · 获赞 0 · 访问量 787

猜你喜欢

转载自blog.csdn.net/sjxgghg/article/details/105394753