对称密文检索_ind2-cka-程序员宅基地

技术标签: 云安全  信息安全  网络安全  

布隆过滤器

在这里插入图片描述

集合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.
    在这里插入图片描述在这里插入图片描述
    上述方案中,每个关键词对应位串中的某一位,且没有冲突,因此,检索结果不包含冗余数据。
    在这里插入图片描述
    在这里插入图片描述
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sjxgghg/article/details/105394753

智能推荐

蓝桥杯Python组国二经验+备考建议-程序员宅基地

文章浏览阅读1.9w次,点赞141次,收藏834次。楼主参加了2021年的蓝桥杯算法程序竞赛Python组。经过长达半年的训练+比赛时候的一点点运气,最终获得了蓝桥杯Python组省一国二的好成绩。只要好好准备,Python组的省一并没有那么难,我今年10道题中做了7道就拿到了省一等奖。本篇经验适合:1.希望参加Python组的同学2.想参加Java、C++ B组的同学(难度与Python组类似)3.想系统提升算法能力的同学4.ACM大佬可以直接退出了、点击就送总结:1.要总结并背诵基本的算法模板2.需要一定的训练量,但更追求的是写题质量和_蓝桥杯python组

PHP 浮点数计算精度问题_php float 精度-程序员宅基地

文章浏览阅读1.2k次。​ 在计算机中,只有二进制的数据才能被识别和处理。所以无论是哪种编程语言,在什么编译环境下工作,都要先把源程序(编译)转换成二进制的机器码后才能被计算机识别。二进制的方式可以准确表示一个整数,但不能准确表示一个浮点数。和十进制无法精确表示分数的1/3同样,二进制也无法精确表示十进制的小数。我们可以看下面的例子:// 但是对于浮点数来说,二进制并不能完整地表示一个浮点数。// 例如,我们将浮点数 2.4 表示为二进制,此时不能使用 decbin(), bindec()等类似的php系统函数。这里我是用在线_php float 精度

常见的十大运算符及其优先级_运算符优先级-程序员宅基地

文章浏览阅读1.1w次,点赞18次,收藏99次。常见运算符及其优先级_运算符优先级

最长公共子串的问题(正常方法和矩阵法,动态规划)-程序员宅基地

文章浏览阅读1.1k次。这个题我本人看着在网上没有详细的解释,其实你要搞懂一个问题,整体是让你求最长公共子串的长度比较简单,一直双重遍历,比较 最长子串的长度,但是如果最后要你那个最长公共子串难度会有一个提升,首先下面第一种方法我用双重遍历去找一下,找到最长公共子串,找到最长公共子串的关键是用map去储存字符串,这样以len为键一下就找到了最长公共子串。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。,返回这两个字符串的最长。矩阵法:简单的动态规划。

Android图片压缩框架Tiny学习记录_android tiny-程序员宅基地

文章浏览阅读2.9k次。Android Tiny Compress_android tiny

黑马程序员——Java基础---I/O流(上[异常])_gephi显示java调用目标异常-程序员宅基地

文章浏览阅读512次。——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 引言 讲解IO流之前为什么先讲解异常和File类呢? 因为File表示的是IO流将来要操作的文件,所以我们需要学习File类。 而操作文件无非就是上传文件和下载文件,在这个操作的过程中可能出现问题, 出现问题后,我们需要对对应的代码进行处理。所以我们需要学习异常异常。 I/O流操作之上传下载 异_gephi显示java调用目标异常

随便推点

AppsFlyer Unity V6_edm4u-程序员宅基地

文章浏览阅读1.8k次。AppsFlyer Unity Plugin V6踩坑记录Unity plugin V6 插件链接首先粗略讲一下EDM4U(Unity外部依赖管理器)。EDM4U类似于一个插件管理器,通过Android Resolver 和 iOS Resolver来进行库文件的下载、更新、去重等,目前新的facebook,google,appsflyer等插件都自带这两个玩意儿了。iOS开发需要注意一点,没有安装CocoaPods,则需要使用/Assets/External Dependency Manage_edm4u

【JAVA秒会技术之玩转SQL】MySQL优化技术(一)_java mysql语句中,表关联,sql会如何优化-程序员宅基地

文章浏览阅读2.3k次。MySQL优化技术(一) 开发的路上,总会碰到一些老系统,越用越慢。“慢”的原因也许有很多,但是,博主个人觉得,数据库的设计和sql语句写的好坏,对系统效率的影响是最直接,最显而易见的!所以,学习一下MySQL的优化,还是很有必要的。当然,博主能力有限,没那么多经验,更多的是“道听途说”和“纸上谈兵”。如有不正之处,望大神开后给予指正,不胜感激!(一)MySQL优化技术概述_java mysql语句中,表关联,sql会如何优化

ros的l2tp服务端创建与pptp多出口配置-程序员宅基地

文章浏览阅读5.4k次。小二最近为了搭建自已的动态IP池,同时为了让苹果终端也能正常使用,初次引入了ros系统,纯属分享,如果不对之处请大神们多指点。Ros基础网络配置不再描述,前提保证ros本身能正常上网。l2tp服务端的配置l2tp的pool配置点击IP -> Pool,点击“+”,添加VPN ip地址池。Name:比如l2tp-poolAddress:比如10.1.1.1-10.1.1.253 ...

【MySQL进阶之路丨第十篇】一文带你精通MySQL排序、分组、连接_mysql 分组排序-程序员宅基地

文章浏览阅读1w次,点赞55次,收藏46次。MySQL中可以使用ORDER BY语句对查询结果进行排序。ORDER BY语句按照指定的列或表达式对结果进行排序,可以按升序(默认)或降序排列。模板如下:SELECT column1, column2, ...FROM tableORDER BY {{column}} {{order}};将需要排序的列名替换为{{column}},并将排序顺序(ASC或DESC)替换为{{order}}MySQL中可以使用ORDER BY语句对查询结果进行排序。ORDER BY语句按照指定的列或表达式_mysql 分组排序

解决java.net.ConnectException: Connection refused: connect报错_apache. der by.client .am.disconnectexception: jav-程序员宅基地

文章浏览阅读312次。在application.yml配置文件中加入:eureka: client: register-with-eureka: false fetch-registry: false_apache. der by.client .am.disconnectexception: java.net.connectexcetionerror

Golang.org/x库初探2——text库_golang.org/x/text-程序员宅基地

文章浏览阅读1.6k次。golang/x 库下text库详解,提供国际化、编码转换等丰富功能_golang.org/x/text