文章目录

  • 1 SE的研究方向
  • 2 SE 机制的构造算法
    • 2.1 SE机制的主要算法
  • 3 SE 机制搜索效果分析
    • 3.1 支持单词搜索的SE机制
      • 3.1.1 最早版本的SSE
      • 3.1.2 建立在Bloom Filter上的SE
    • 3.2 加上了倒排索引技术的SSE
    • 4 模糊搜索的SSE
    • 5 支持连接(多)关键字搜索的可搜索加密机制
      • 5.1 Secure conjunctive keyword search over encrypted data 2004
        • A Conjunctive Search Scheme with Constant Online Communication Cost
        • A Conjunctive Search Scheme with Constant Communication Cost
      • 5.2 Privacy-Preserving Multi-Keyword Ranked
      • 5.3 Efficient and Secure Ranked Multi-Keyword Search on Encrypted Cloud Data
        • Index Generation
        • Trapdoor & Query Generation
        • Oblivious Search on the Database
        • Document Retrieval
      • 5.4 面向多关键字的模糊密文搜索方法

1 SE的研究方向

  1. 灵活、高效的搜索语句的设计:从研究初期的支持单词搜索,到后来逐渐发展为支持连接关键字搜索,再到支持
    区间搜索和子集搜索等复杂的逻辑语句。其研究难点在于:如何达到支持复杂的搜索请求的效果以及如何寻找
    到适合的困难假设来证明其安全性
  2. 模糊搜索和基于相似度排序的模糊搜索
  3. 在不同现实场景中对 SE 机制的应用

2 SE 机制的构造算法

根据构造算法不同分为基于对称密码学算法(symmetric key cryptography based)的 SE 机制以及基于公钥密码学算法(public key cryptography based)的 SE 机制

2.1 SE机制的主要算法

  1. Setup:该算法主要由权威机构或者数据所有者进行并生成密钥.在基于公钥密码学的 SE 机制中,该
    算法会根据输入的安全参数(security parameter)来产生公钥和私钥;在基于对称密码学的 SE 机制中,
    运行该算法后会产生一些私钥,例如伪随机函数的密钥等;
  2. BuildIndex:该算法由数据所有者执行.在这种算法中,数据所有者将根据文件内容,选出相应的关键
    字集合,并使用可搜索加密机制建立索引表.在基于公钥密码学的 SE 机制中,数据所有者会使用公钥
    对每个文件的关键字集进行加密;在基于对称密码学的 SE 机制中,数据所有者会使用对称密钥或者
    使用基于密钥的哈希算法对关键字集进行加密.而文件内容主体将会使用对称加密算法进行加密;
  3. GenToken:该算法以根据用户需要搜索的关键字为输入,产生相应的搜索凭证.算法的执行者主要由
    应用场景决定,可以由数据所有者、用户或者权威机构来执行(具体场景部分将在第 4节中进行讨论);
  4. Query:该算法是由服务器端进行.服务器将以接收到的搜索凭证和每个文件中的索引表为输入,进行
    协议所预设的计算,最后通过输出结果是否与协议预设的结果相同来判断该文件是否满足搜索请
    求.服务器最后将搜索结果返回.

3 SE 机制搜索效果分析

分为单词字搜索、连接关键字搜索和复杂逻辑结构语句

3.1 支持单词搜索的SE机制

3.1.1 最早版本的SSE

支持单词搜索指的是用户一次只能对一个关键字进行搜索.2000 年提出了一种基于对称密码学算法的实用 SE 方案

加密过程:

  1. 一次加密:使用固定的分组加密算法 E 加密文档中的每个关键字得到密文 Xi=E(wi)。并将密文 Xi分成<Li, Ri > 两部分,假设词语 wi的比特流有 n 位, Li 和 Ri 分别为 n-m 和 m 位。
  2. 伪随机生成器生成一串伪随机序列( S1 ,S2… Sk)且i∈(1,k ) ,Si 有 n-m位;根据散列函数 f 生成密钥ki=f(Li),使用Ki生成校验序列Fki(Si)长度为m位。所以由伪随机序列和校验序列组成流密码Ti=<Si,Fki (Si)>。
  3. 使用流密码Ti对密文Xi进行二次加密,通过异或运算Ci=Xi^Ti得到二次加密密文。

检索过程:

  1. 在用户提交检索后需要加密查询关键字w’i得到X’i=E(w’i),X’i分成<L’i,R’i>两部分。
  2. 使用散列函数得到k’i=f(Li)将<X’i,k’i>发送给服务器。
  3. 与存储在服务器端的密文集合(C1,C2,…,Cl)进行异或运算,得到T’i =Xi^Ci,进行异或操作得到T’i,如果存在Si对应的Ti使得T’i=Ti,成立,那么该文档中包含关键字wi,反之不包含。

缺点:云端服务器需要对每个文件的内容进行扫描,看密文内容是否存在给定的关键字的密文形式相匹配的内容,造成的计算开销将与文件大小呈线性关系,在海量数据环境下,该方法效率不佳.同时,服务器端可以通过统计攻击的方法获得一些额外的用户隐私信息,例 如,通过得到的搜索凭证来判断用户前后搜索的关键字是否相同等.

3.1.2 建立在Bloom Filter上的SE

它的主要思想是:将文档中的关键字通过多个哈希函{h1,…,hr}处理,将映射到的布隆过滤器位置设为 1。用户在查询时使用同样的哈希函数,若果该位置上的值均为 1,那么该关键字在文档中存在


缺点:在映射的过程中可能会出现碰撞问题。例如在图中的y3并没有在该文件中,但因为该文件有x1和x2,于是y3发生碰撞,导致了错误

为了解决这个问题。在此方案的基础上提出一种基于公钥加密关键字搜索的方案,主要思想是:将关键字字符串通过 k 个哈希函数映射到布隆过滤中,原本置为“1”的位置现在插入的是关键字的地址。在查询关键字 yi 时,将其映射到得所有位置的值取与运算,如果值为 1 那么该关键字在文档中存在,反之。
在检索 y1、y2、y3 是否存在时:y1 和 y2 映射位置上所有的值都相同可以认为两个关键字均存在,y3映射的位置上与运算后的结果为 0 因此 y3 不存在。

新的弊端:如果数据库的规模比较大那么需要的存储空间也更多

3.2 加上了倒排索引技术的SSE

即属性当作索引,指向包含该属性的文件。流程图如下

4 模糊搜索的SSE

该方案的突破点是基于编辑距离构建模糊关键字集合,使得用户在一些微小失误情况下,得到与输入方式正确一样的检索结果。编辑距离:把字符串 wi 转换成 wj 的最少操作次数称为编辑距离,即 ed(wi, wj)。它可以用来衡量两个字符串的相似性,在转换的过程中可以进行替换、插入、删除的操作。例如 w1=“student”进行替换操作,集合 W={atudent, studlnt, stodent,„}中的字符串均符合 ed(w1,wi)=1。

与传统的SSE的区别在于建立索引时为每个关键词wi建立编辑距离为d的集合Swi-d,当搜索关键词w‘时,便依据Sw-d中的关键词集合,依次匹配,,若有匹配则加入SK计算出查询陷门,再到索引中查询。

牺牲存储容量来提高少量精确度,大大降低了系统的可用性

5 支持连接(多)关键字搜索的可搜索加密机制

对于多关键词搜索,拍脑袋的想法是应用单词搜索后求交集,或者对每个多关键词进行存储

  • 前者允许服务器除了连接查询的结果之外,还学习大量额外的信息,使服务器能够观察到哪些文档匹配了多关键词搜索的每个单独的关键字,随着时间的推移,服务器可能会将这些信息与统计上可能的搜索知识相结合,以推断有关用户文档的信息。
  • 后者却需要指数级的存储空间

5.1 Secure conjunctive keyword search over encrypted data 2004

贡献:

  1. 形式化的定义了安全的多关键词搜索方案(通俗的讲:如果服务器没有从一组加密的文档和功能中学习到其他信息)
  2. 提出了2个满足上述安全的多关键词搜索方案,但是他们要求多关键字字段时固定的

几个假设:

  • 关键词字段:如果文档是电子邮件,我们可以定义以下4个关键字字段:“From”、“To”、“Date”和“Subject”。
  • 同一个关键字永远不会出现在两个不同的关键字字段中(满足这一需求的最简单方法是在关键字前添加它们所属字段的名称)
  • 每个文档都有相同的关键字字段(NULL作为填充)
  • Di = (Wi,1,… ,Wi,m)
  • 当讨论使服务器能够验证文档在字段j中包含特定关键字的功能时,我们用Wj表示该关键字

一个多关键词搜索算法由以下5个算法组成,前4个算法是随机的

A Conjunctive Search Scheme with Constant Online Communication Cost

在这个方案中多关键词查询的Capability的大小,相对于在服务器上存储的文档总数是线性的,并且用户和服务器之间的大部分通信成本可以离线完成。由两个部分组成:

  1. A “proto-capability” part:它包含一个以n为线性的数据量,n是存储在服务器上的加密文档的总数。该数据独立于该功能允许的连接查询,因此可以离线传输
  2. A “query” part:依赖于连接查询功能允许的的常量数据。此数据必须在进行查询时在线发送。我们称这个数据量为常数,因为它并不依赖于存储在服务器上的文档的数量,而只取决于每个文档的关键字字段的数量m。m为创建索引时的常量

A Conjunctive Search Scheme with Constant Communication Cost

该协议向服务器发送能力的总通信成本在文档数量上是不变的(但在关键字字段数量上是线性的)。

5.2 Privacy-Preserving Multi-Keyword Ranked

不考虑隐藏访问模式和搜索模式,要求有关键词字典
使用了安全kNN(最邻近的k个点)算法,中内积相似度的概念来定义作者自己的前k个相关的文档

安全kNN:数据记录pi和查询向量q之间的欧氏距离用于选择k个最近的数据库记录。密钥由S(d+1维向量)和{M1,M2}((d+1)*(d+1)),其中d是每个记录pi的域的数量。首先将pi和q扩展为d+1维向量,第d+1维的值是 -0.5||p2i||和1,然后q被一个随机数r缩放为(rq,r),然后pi和q分别分裂为{p’i,p’‘i}和{q’,q’’},这里S作为分裂指示器(若S的第j位为0,{p’i[j],p’‘i[j]}和pi[j]一致,q’[j]和q’’[j]为两个随机数,但加起来和为q[j],当S的第j位为1时,qi和q的操作互换),然后{p’i,p’‘i}加密为{MT1p’i,MT2p’‘i},{q’,q’’}加密为{M-11q’和M-12q’’}。然后在查询阶段pi和q的内积为

作为指标来选择k个最近的邻居数据

将安全kNN用在MRSE中

  1. 将扩展去掉,就用原来的n维向量,那么最后的內积为rpi * q
  2. 由于S在已知的密文模型中是未知的,所以{p’i,p’‘i}和{q’,q’’}可当做d维随机串
  3. 那么若要求解加密的数据向量,来看下产生的线性方程的数量,{p’i,p’‘i}中,m个数据有2dm 未知数,并且{M1,M2}有 2d2个未知数,因为我们只有2dm个方程式所以解不出来,{q’,q’’}中类似也解不出来
  4. 因此,在没有密钥知识的情况下,数据向量和查询向量在经过这样一系列分裂和乘法等过程之后,都不能通过分析相应的密文来恢复。

MRSE_I: Privacy-Preserving Scheme in Known Ciphertext Model
我们保留这个维数扩展操作,但在每个查询向量中的扩展维数分配一个新的随机数t
但是有缺陷,比如说document frequency,可以观察到某些统计信息,作者总结了是因为n+1位随机数被固定了的原因
于是提出了将扩展1位随机数改进到扩展U位随机数

MRSE_II: Privacy-Preserving Scheme in Known Background Model

5.3 Efficient and Secure Ranked Multi-Keyword Search on Encrypted Cloud Data

基于PIR的多关键词搜索技术
文章贡献

  1. 为加密云数据上的关键字搜索的安全和隐私要求提供了正式的定义
  2. 提出了一种有效的排序多关键词搜索方案,并根据所定义的要求正式证明了该方案的安全性。
  3. 提出了一种排序方法,证明了能够被有效的实现,并且能返回与提交的搜索词高度相关的文档
  4. 实现了该系统
Index Generation

使用HMAC代替Hash函数,防止暴力破解(数据所有者使用每个文档的不同密钥,然后将密钥使用数据拥有者的私钥加密后,放在服务器)
对于每个关键词,进行HMAC函数( (HMAC: {0, 1} → {0, 1}l ) ),xi是关键词wi进行HMAC函数的结果,Ii表示wi的索引,Iij ∈ GF(2),Ii = (Iir−1, . . . , Iij, . . . , Ii1, Ii0),xi是以d为基底,r位的数,即xji有dbit

r位xi转换为rbit输出

那么文档R的索引为它所包含的关键词的索引的位积运算(与运算)

Trapdoor & Query Generation

引入了一种在用户请求数据拥有者时隐藏用户所查询的关键词的方法getBin()。
getBin():

  1. 将keyWord做hash,然后根据特定的几个bit分装进不同的桶(bin)里
  2. 桶的数量为δ,小于关键词数量,以至于每个桶中有多个关键词,可以用于模糊,δ的选择根据安全和效率需求
  3. 输出为{0,。。。,δ-1}

当用户需要查询n个关键词时

  1. 先通过getBin()获取到需要的桶id
  2. 发送桶id给数据拥有者,数据拥有者返回该桶中所需要的所有密钥,
  3. user通过所得的密钥计算出陷门(Ij1, . . . , Ijn )
  4. 将Q发送给服务器
Oblivious Search on the Database

其实就是位运算

Document Retrieval

数据所有者使用不同密钥加密每个文档,然后将密钥使用数据拥有者的公钥加密后,放在服务器
用户要得到加密后的文件后,为了不向数据拥有者暴露自己取的是哪个文件,于是使用RSA盲化处理,其中y = RSAe(sk),sk是对应文件的密钥,e是数据拥有者的公钥,y是我们取回来的结果

  1. 用户计算 z = cey mod N,然后i发送给data owner
  2. z’ = zd mod N ,然后发送给用户
  3. sk = z’c−1 mod N得到对应的对称密钥

5.4 面向多关键字的模糊密文搜索方法

思想:使用布隆过滤器,将生成的索引与查询陷门一一做内积,取内积最大的几个文件返回。

可搜索加密机制研究与进展相关推荐

  1. 多溴联苯醚内分泌干扰效应机制研究取得进展

    中国科学院生态环境研究中心环境化学与生态毒理学国家重点实验室郭良宏研究组在多溴联苯醚 (PBDEs) 内分泌干扰效应的机制研究中取得新进展,相关成果近日发表于国际期刊Environmental Hea ...

  2. qt最大化和还原实现_研究进展 | 水生所关于细菌异化型硝酸盐还原成铵与反硝化脱氮两种途径抉择的分子调控机制研究取得进展...

    在无氧和缺氧条件下,许多细菌可利用硝酸根和亚硝酸根作为电子受体进行无氧呼吸,包括异化型硝酸盐还原成铵(dissimilatory nitrate reduction (DNR) to ammonia, ...

  3. 蛇类高海拔环境的适应机制研究获进展

    大多数生物都对其生存环境有一定要求,超出适宜的范围就难以存活:但有一些生物却可以在强辐射.缺氧等极端环境中繁衍生息,这类生物被称为"极端环境生物".独特的生活环境.长期的适应性进化 ...

  4. ajax全局加密,Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)...

    数据库查询优化-SQL优化 1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is ...

  5. 可搜索加密基础知识的归纳与总结

    可搜索加密(Searchable Encryption,SE) 以博主看过的文献或查阅的资料为基础,本博文将介绍可搜索加密(Searchable Encryption,SE)的相关知识点,以及归纳与总 ...

  6. 可搜索加密研究进展综述与改进方案(读论文,学习笔记)

    摘要 随着云计算的迅速发展,为保护用户外包数据的安全和用户隐私,越来越多的企业和用户选择将数据加密后上传.因此,对云服务器上加密数据的有效搜索 成为用户关注的重点. 可搜索加密技术是允许用户对密文数据 ...

  7. 面向医疗应用场景的区块链与可搜索加密技术

    原文来自:Chen et al. - 2019 - Blockchain based searchable encryption for electronic health record sharin ...

  8. 百度Create大会:百度AI安全研究的进展与愿景

    以"有AI,更安全"为理念,百度安全在AI安全领域的探索始终处于行业前沿,率先提出了Security.Safety和Privacy三大AI安全研究维度,分别指向了强对抗安全.非对抗 ...

  9. 深度前沿:对话管理模型研究最新进展

    简介: 从人工智能研究的初期开始,人们就致力于开发高度智能化的人机对话系统.对话管理模型研究最新进展源于前沿的深度的研究. 作者: 戴音培1.虞晖华2.蒋溢轩2.唐呈光1.李永彬1.孙健1 单位: 阿 ...

最新文章

  1. 洛谷 P1411 树
  2. winform改变控件的外形
  3. android apk瘦身之 图片压缩 tinypng
  4. Vue中使用Openlayers加载Geoserver发布的TileWMS时单击获取shp文件的坐标信息
  5. mysql dump hbase_mysqldump导出全数据库
  6. (七)SpringBoot+SpringCloud —— 集成断路器
  7. .Net 如何模拟会话级别的信号量,对http接口调用频率进行限制(有demo)
  8. NVIDIA PhysX宣布正式开源 最强物理仿真引擎
  9. Android入门-新手如何成功创建一个Android小应用
  10. yum安装提示yum.pid被锁定解决办法
  11. LINUX环境:MySQL和Oracle开机自启动
  12. 最常用的GitHub—— Android 开源项目整理(精品)
  13. Kconfig的两种用法
  14. springboot使用j2cache
  15. 现有2个空水壶,容积分别为5升和6升,问题是如何只用这2个水壶从池塘里取得3升的水?水壶问题(裴蜀等式)
  16. Storage System
  17. It's only too late if you decide it is. Get busy living, or get busy dying(转)
  18. Ansible-playbook 运维笔记
  19. 笔记本屏幕亮度调节的详细步骤
  20. 实例恢复(Instance Recovery)之前滚(Rolling Forward)和回滚(Rolling Back)

热门文章

  1. C#的中stopwatch的简单应用
  2. lvextend扩容后,发现还是原来的大小。报错: resize2fs: Bad magic number in super-block 打开 /dev/mapper/vg01-lv01 时的解决方法
  3. 可转债配资公司是干什么的
  4. mysql identity sql_SQL Server中identity(自增)的用法详解
  5. 如何有效激励经销商(上)
  6. 【BUG】url 参数 AES 加密和解密问题
  7. pvq真值表_不用真值表证明(p-q)且(q-r)-(p-r)是永真式
  8. C++的三种实例化对象方式
  9. 买书折扣算法 c语言,买书折扣最优惠问题解法
  10. 你所知道的java设计模式有哪些?我来给你讲常用的