首页 > 其他分享 >可搜索加密(Searchable Encryption)机制概述

可搜索加密(Searchable Encryption)机制概述

时间:2023-03-26 21:34:48浏览次数:39  
标签:加密 Searchable Encryption 关键字 搜索 机制 密码学 SE

  引言[1]:可搜索加密(searchable encryption,SE)是近年来发展的一种支持用户在密文上进行关键字查找的密码学原语,能够为用户节省大量的网络和计算开销,并充分利用云端服务器庞大的计算资源进行密文上的关键字查找。

 

1、SE机制的设计可以根据其构造算法的不同分为两类[1]

(1)基于对称密码学算法的SE机制

  【对称密码学算法指的是:加密和解密的密钥均衍生于同一个密钥,其优点是计算开销小,适用于大块数据的加密,缺点是加密方和解密方需事先协商好密钥,且密钥需通过安全信道传输。】

  基于对称密码学的SE机制是采用伪随机函数、伪随机置换、哈希算法(或散列算法)对关键字进行处理,当需要搜索关键字时,先将关键字随机化处理,然后让服务器端按照协议预设的计算方式进行关键字匹配,若最后结果是某种特定的格式,则说明匹配成功。

  基于对称密码学的SE机制在运算性能方面较基于公钥密码学的SE机制更高效,但仅支持单个关键字或连接关键字的搜索,且搜索凭证(Token)大小与所搜索的关键字数目呈线性关系,搜索语句灵活性较差,更适用于单数据拥有者上传数据并与多用户共享的应用场景。

(2)基于公钥密码学算法的SE机制

  基于公钥密码学的SE机制大多基于双线性对技术构建,将安全性建立在困难性问题(如DLP、CDH、DDH、BDH等)上。在执行过程中无需加密方和解密方事先协商密钥,加密方可直接使用公钥对关键字集合加密,解密方可以使用私钥产生搜索凭证(Token)进行密文关键字搜索。

  搜索过程中需要进行群元素计算、双线性对映射和双线性对上的运算,开销较大。由于双线性对的特性和困难性问题的存在,基于公钥密码学的SE机制支持更复杂的搜索语句,更适用于不安全的网络中。

 

2、SE机制主要算法描述[1]

  SE机制构造方法众多,其形式化描述方法各不相同。基本的SE机制主要包括下述4类算法,最后用户在获得返回的密文后使用相应的对称密钥解密密文。

(1)Setup:由权威机构或数据所有者执行以生成密钥。

  在基于对称密码学的SE机制中,该算法会产生一些私钥,例如伪随机函数的密钥等。

  在基于公钥密码学的SE机制中,该算法会根据输入的安全参数产生公钥和私钥。

(2)GenToken:将用户需要搜索的关键字作为输入,产生相应的搜索凭证(Token)。算法执行者可由数据所有者、用户或者权威机构来执行,由应用场景决定。

(3)BuildIndex:根据文件内容选出相应的关键字集合,使用SE机制建立索引表,由数据所有者执行。

  在基于对称密码学的SE机制中,数据所有者使用对称密钥或基于密钥的哈希算法对关键字集进行加密,文件主体内容将会使用对称加密算法进行加密。

  在基于公钥密码学的SE机制中,数据所有者会使用公钥对每个文件的关键字集进行加密,文件主体内容将会使用对称加密算法进行加密。

(4)Query:服务器将以接收到的搜索凭证(Token)和每个文件中的索引表为输入,进行协议所预设的计算,最后通过输出结果是否与协议预设的结果相同来判断该文件是否满足搜索请求.服务器最后将搜索结果返回。

 

3、应用模型分类[2]

  在本小节中,获取数据的实体分为数据所有者(数据处理和上传方)和用户(非数据所有者,有共享数据所有者数据需求)两类,从应用角度可将SE机制分为如下4类:

(1)单数据所有者-单数据所有者(一对一):

  数据所有者加密文件并将其外包给服务器。要求:①只有该数据所有者具备基于关键词检索的能力;②服务器无法获取明文和待检索关键词的信息。

 (2)多数据所有者-单用户(多对一):

  多个数据所有者加密文件并将其外包给服务器,单个用户(非数据所有者)有访问数据需求。要求:①只有用户(非数据所有者)具备基于关键词检索的能力;②服务器无法获取明文和待检索关键词的信息。

 (3)单数据所有者-多用户(一对多)

  与(2)类似,借此与多个用户共享数据。

 (4)多数据所有者-多用户/多数据所有者(多对多)

  多个数据所有者加密文件并将其外包给服务器。通过访问控制和认证策略使任意用户都能访问数据,用户具备基于关键词的密文检索方式和提取共享数据的能力。要求:①只有合法用户(例如能够满足发送者预先指定的属性或身份要求)具备基于关键词检索的能力;②服务器无法获取明文和待检索关键词的信息。该模型既是多对一模型的扩展,同时也是云计算中复杂共享机制的抽象,具备广阔的应用前景。

 

 4、应用模型所适合的SE机制[2]

应用模型类别

基于对称密码学算法的SE机制

基于公钥密码学算法的SE机制

一对一

×

多对一

×

一对多

多对多

解释如下:

(1)基于对称密码学算法的SE机制,适用于一对一模型。

  基于对称密码学算法的SE机制通常基于伪随机函数,具有计算开销小、算法简单、速度快的特点,除了加解密过程采用相同的密钥外,待检索关键词搜索凭证(Token)的生成也需密钥的参与。单数据所有者特点使得对称可搜索加密非常适用于该类问题的解决,单数据所有者使用密钥加密个人文件并上传至服务器,检索时通过密钥生成待检索关键词搜索凭证,服务器根据搜索凭证执行检索过程后返回目标密文。

(2)基于公钥密码学算法的SE机制,适用于多对一模型。

  基于公钥密码学算法的SE机制加密算法通常较为复杂,加解密速度较慢,数据所有者使用公钥加密文件和相关关键词,检索时用户使用私钥生成待检索关键词搜索凭证(Token),服务器根据搜索凭证执行检索算法后返回目标密文,该处理过程避免了在发送者与接收者之间建立安全通道,具有较高的实用性。

(3)基于对称密码学算法的SE机制或基于公钥密码学算法的SE机制,可解决一对多和多对多模型中的可搜索加密问题。

  基于公钥密码学算法的SE机制本身即能有效地支持最基本形式的加密数据的共享,通过共享密钥,可被拓展到多对多的应用场景。基于对称密码学算法的SE机制虽然通常适用于一对一模型,但其由于计算开销小、速度快,更适合于大型文件数据的加密和共享,通过混合加密与基于属性加密技术相结合,或与代理重加密技术结合,也可用于构造共享方案。

 

5、SE机制所支持的搜索语句分类[1]

  搜索语句是用户搜索兴趣的表现,灵活的搜索语句不仅可以让用户能够更加准确地描述自己的搜索意愿,同时也能够更加精确地定位到用户所需文件。根据SE机制支持的搜索语句,分为单词字搜索、连接关键字搜索和复杂逻辑结构语句这3类。

(1)支持单词搜索的SE机制

  支持单词搜索指的是用户一次只能对一个关键字进行搜索,服务器通过搜索凭证搜索包含该关键词的文件,最后将满足条件的结果返回给用户。

  研究现状简述:①基本做法是对待搜索关键字加密上传给服务器由服务器比对密文依次进行查询和比对,直至找到需要的数据返回给用户,但需要对每个文件进行扫描并查询匹配内容,计算开销与文件大小成正相关线性关系,不适用于大数据环境下的查询。②用布隆过滤器(Bloom Filter)对关键字进行哈希函数映射,查询时对照哈希表查询,降低了计算开销和查询时间开销,但布隆过滤器自身存在误识别率和删除困难的缺点,查询精度不高且不支持数据的增删改操作。③基于公钥密码学算法,利用双线性映射的性质进行关键字的匹配判断,支持对多个发送者的密文进行搜索,该方法加密效果为非确定性加密,服务器无法从密文和加密关键字中窃取明文信息。但双线性对的计算开销较大,不适用于大数据环境下的查询。④基于身份加密技术对加密审计日志文件进行关键字搜索,根据搜索凭证对密文进行异或运算,结果满足某种格式则搜索成功,但该方法需要用户自己在服务器上进行关键字搜索,用户开销较大。(未完,待更新)

(2)支持连接关键字搜索的SE机制

  由于支持单词的SE机制一次只能发送一个单词的搜索凭证,但单个单词无法精确定位所需文件。通常的做法是对多个关键字进行加密,发送给服务器依次比对每个密文是否包含所有关键字。

  还有针对多个用户的单个关键字搜索,将这多个关键字集合进行多个用户的公钥加密,然后发给CSP进行密文搜索。还有针对单个用户的多个关键字,根据每个文件对待搜索关键字的相关性得分进行排序,最后将排名最高的前k个文件返回,但这k个文件可能有一部分不包含待搜索关键字。(未完,待更新)

(3)支持复杂逻辑结构的SE机制

  谓词加密作为一种密码学原语,涵盖了基于属性加密机制和基于身份加密机制。在谓词加密中,每个密文的属性可以用该文件含有的典型关键字来表示,谓词可被认为是用户的查询语句,私钥可看作是根据用户查询语句生成的搜索凭证,若满足某种条件认为密文关键字满足用户的查询语句。

 

未完。。。待更新

 

上述资料来源于下述文献,根据个人理解略有删减:

[1] 沈志荣,薛巍,舒继武. 可搜索加密机制研究与进展[J]. 软件学报,2014,25(4):880-895.

[2] 李经纬,贾春福,刘哲理,等. 可搜索加密技术研究综述[J]. 软件学报,2015,26(1):109-128.

 

标签:加密,Searchable,Encryption,关键字,搜索,机制,密码学,SE
From: https://www.cnblogs.com/forkroad/p/17259578.html

相关文章

  • linux编译加密版sqlite
    加密版SQLite3MultipleCiphers下载网址:https://github.com/utelle/SQLite3MultipleCiphers/下载解压后,在终端执行以下2行命令就能生成libsqlite3.so,建议将libsqlite3.so......
  • 前端RSA非对称加密Go解密
    Person:JavaScript实现非对称加密ChatGPT:JavaScript可以使用公钥密码学算法来实现非对称加密。常用的公钥密码学算法包括RSA和ECC。下面是一个使用RSA算法......
  • AI大数据视频智能预警平台EasyCVR服务遇到加密狗授权失败是什么原因?
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集......
  • java MD5加密
    参考文章:http://warren.iteye.com/blog/107386---------------------------------------------------------------------------------------------------------------------......
  • Linux GRUB加密方法详解(2种加密方式)
    转至:http://c.biancheng.net/view/1036.htmlLinux在启动时,在GRUB管理界面中是可以通过按"e"键进入编辑模式,修改启动选项的。图1GRUB界面如图1所示,每个启动选项......
  • Prometheus通过Nginx防盗链加密node_exporter
    node_exporter是Prometheus的一个扩展程序,也是通过go语言编写,同样是开箱即食,主要用来采集服务器上的数据(CPU、内存等等)主机Prometheus可以通过部署在客户端的node_exporte......
  • 前端js RSA jsrsasign加密、解密、加签、验签
     jsrsasign(RSA-SignJavaScript库)是一个免费的开源加密库,支持RSA/RSAPSS/ECDSA/DSA签名/验证,ASN.1,PKCS#1/5/8私钥/公钥,X.509证书,纯JavaScript中的CRL,OCSP,CMSSigned......
  • 让CAD图纸加密、锁定防修改so easy!
    作为一名CAD设计师,有时不仅需要为了创新设计、快速制图而绞尽脑汁,还需要为了图纸泄密、客户拿图不付款等图纸数据安全问题而斗智斗勇、耗费心力。但面对层出不穷的“套路深......
  • python 接口加密
    #-*-coding:utf-8-*-"""@author:Mr_zhang@software:PyCharm@file:encryption.py@time:2023/3/2310:00"""importjsonimporttimeimportbase64from......
  • 基于C#的软件加密、授权与注册
    参考:基于C#的软件加密、授权与注册_c#软件加密_C_xxy的博客-CSDN博客  tets_License:服务C#Winform的可扩展授权验证解决方案。(gitee.com)......