一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于LSM的对称可搜索加密方法及系统与流程

2021-11-10 02:17:00 来源:中国专利 TAG:

一种基于lsm的对称可搜索加密方法及系统
技术领域
1.本发明属于信息安全技术领域,具体涉及一种基于lsm的对称可搜索加密方法及系统。


背景技术:

2.数据量的爆发式增长促进了云服务技术的飞速发展,因此,人们选择将本地数据外包存储至云服务器上,以缓解本地存储的压力同时降低本地计算资源,使得海量数据信息得到更好的共享与利用。然而,用户数据的隐私信息会被诚实且好奇的云服务器获取,并且云服务器也容易受到攻击而泄漏敏感数据的信息,近来频发的云存储安全事件使得有关数据的安全存储问题备受关注。数据所有者选择将数据加密后再上传至云服务器。该方法虽然可以确保数据存储的安全性,但也给数据的灵活使用带来了障碍。
3.为此,研究者们致力于探索既能保护数据隐私安全又同时能支持准确高效的多功能查询操作的sse方法。目前,该方法在加密数据的动态更新、查询方式的扩展、查询结果的优化以及安全性优化等方面取得了一定的成果。其中,可以通过建立安全索引实现高效的可搜索加密方案。例如,基于倒排索引的对称可搜索加密方法,可支持次线性时间的单关键词搜索,适用于静态查询。除了支持高效的单关键字查询,现已有一些研究人员基于不同的索引构建方法实现了对加密数据查询功能的扩展,例如联合查询和布尔查询等。例如,中国专利(申请号:cn201780065527.4,公开号:cn109923549a)提出了处理倒排索引的可搜索对称加密系统和方法。中国专利(申请号:cn202110083023.3,公开号:cn112800445a),该发明支持布尔查询操作,提高了查询结果的准确性并节省传输带宽;支持数据的更新,并对查询结果进行了完整性验证。
4.在实现大规模数据的安全存储以及高效多功能查询的现实场景下,单服务器节点虽然结构简单,但处理能力有限。云服务技术不断发展的背景下,为了更好的处理大规模数据资源,研究者们提出了多服务器节点的分布式存储,降低了单服务器节点存储的安全风险,并且可通过支持并行查找提高查询效率。
5.大多数sse方案为提高检索性能实现线性最佳的搜索时间,设计了基于倒排索引表的sse方法。该方法虽然查询速度快,但其要么不支持数据的增删,要么索引构造复杂,时间空间消耗大,增删操作不灵活。同时,为了避免数据信息的泄露以及受到服务器的统计分析攻击,需要对倒排索引结构进行填充,这就造成了空间的浪费。另外该方法限制了用户能够在查询中使用的关键字,并且由于倒排索引表顺序的存储在磁盘的随机位置上,当查询关键字对应的posting list包含成千上万个文档时,会造成显著的延迟。
6.虽然大多数sse方案的构造在理论上具有最佳的搜索时间,但其在大型数据集上的实现效果却不那么明显。因为i/o延迟,存储利用率不高以及实际数据集分布的差异等因素会降低理论上有效的sse方案的实际性能。在现有的可搜索加密技术研究中,通常仅考虑将加密数据存储在内存中的场景,未充分考虑大规模数据场景下物理磁盘i/o对性能的影响,导致其难以实际应用在大规模密态数据的存储和检索场景。同时,当前支持多服务器节
点的分布式存储方案,在管理大规模密态数据时也存在查询效率低以及支持查询功能单一的问题。
7.后续研究的工作重点是在保证数据隐私性的前提下,实现支持多功能的查询操作;在加密数据上实现扩展查询功能的众多sse方案中,存在查询存储性能低、存储利用率不高、不支持数据增删等问题。


技术实现要素:

8.针对现有技术中存在的问题,本发明的目的在于提供一种基于lsm的对称可搜索加密方法及系统。本发明基于sse方法实现对加密数据高效准确的多功能查询,支持数据的动态增删,同时不向服务器泄漏过多的数据信息,确保数据存储的安全性。
9.为有效提高密态索引读写的局部性,本发明提出了基于lsm数据组织模型的密态数据索引方法。并且采用了基于分块的类倒排索引思想,有效降低了密态索引的大小,提高了密态数据检索的性能。设计了一种基于全对等架构的分布式密态检索系统,将生成的加密索引同加密数据均匀的分布在各个节点上,节点之间可并行的进行插入、查询和计算功能,支持数据的增删。实现大规模密态数据索引的高效存储和检索。
10.同时,本发明考虑了现实场景中,用户的数据既包括敏感数据,也包括对隐私性要求不高的数据。对于这部分对安全性要求不高的数据,就不必采用和敏感数据相同的操作,直接按照明文进行存储和查询更好。因此,本发明设计实现了明文密文的混合存储以及混合查询方案。
11.本发明的技术方案为:
12.一种基于lsm的对称可搜索加密方法,其步骤包括:
13.1)客户端创建数据库表,设置该数据库表中的字段名称和属性,确定加密字段和加密索引字段,然后将数据集中的数据信息填入相应的字段中;其中客户端待上传的多个文档构成所述数据集;
14.2)为所述加密索引字段构建加密索引,使用对称加密算法加密所述加密字段中的数据,生成验证集合xset,该验证集合xset中存储的信息为所述数据集中各文档对应的组合值,其中根据文档i的文档id及文档i的关键字w生成文档i的组合值;将加密索引和加密数据上传至服务器端分配的服务器节点;
15.3)客户端利用对称密钥和查询关键字生成对应的查询token发送给服务器端;
16.4)服务器端接收到所述查询token后,在加密数据库上执行查询操作并将查询结果返回给客户端;
17.5)客户端接收服务器端返回的查询结果并对其进行解密。
18.进一步的,构建所述加密索引的方法为:
19.21)根据数据集设置最优的缓存块数目blocknum和缓存块大小blocksize;
20.22)设置所述加密索引的索引结构,其包含三个字段:pkey、ckey、value;其中,pkey为根据关键字w生成的标签,value中存放包含关键字w的文档的文档id值,ckey为存储value信息的缓存块的块号;
21.23)对所述加密索引字段中对应的数据信息进行分词,得到关键字和包含该关键字的文档的文档id集合,分别存储到对应的pkey字段、value字段;将value字段存储到缓存
块中;
22.24)判断当前缓存块是否存满,若是存满则将当前缓存块上传至对应的服务器节点中存储。
23.进一步的,pkey=f
k
(w,c),其中w为关键字,c为计数器值,f为加密算法,k为随机生成的加密密钥;若关键字w对应的文档id数目多于blcoksize*blocknum,则将关键字w对应的blocknum个已满缓存块上传至服务器端后,将计数器值c加1,对应生成新的标签pkey,再对剩余的文档id进行存储。
24.进一步的,当服务器端接收到客户端提交的删除请求后,在加密数据库上执行相应的删除操作。
25.进一步的,当客户端收到一查询请求时,客户端首先根据该查询请求中的关键字,利用加密算法、随机生成的密钥以及计数器值c,生成查询token;然后将该查询token传至服务器端进行查询,服务器端将加密的查询结果返回客户端;然后客户端对收到的查询结果进行解密。
26.进一步的,为支持布尔查询,value中存放的信息为(e,y)对;其中,e表示为包含关键字w的文档的文档id加密值,y是关键字w和对应文档id的组合加密值。
27.进一步的,当客户端收到一布尔表达式的查询时,首先确定出布尔表达式中对应文档id最少的关键字w1,然后为关键字w1生成查询token,将关键字w1与该布尔表达式中其余的查询关键字生成xtoken,其中xtoken=fp(kz,w1)*fp(kx,wi),i=2
……
n,n为布尔表达式中关键字的个数;将token、xtoken传至服务器端;服务器端根据客户端传入的查询token进行查找,得到关键字w1对应的所有(e,y)对;然后将xtoken与y值计算,得到计算结果fp(k
i
,id)*fp(kx,wi),i=2
……
n,并在xset表中验证筛选计算结果;然后根据布尔表达式对查询结果进行处理后返回给客户端。
28.一种基于lsm的对称可搜索加密系统,其特征在于,包括客户端和服务器端;其中所述客户端包括数据库表创建模块、索引构建模块和数据处理模块;所述服务器端包括数据存储模块、数据查询模块和多个服务器节点;
29.所述数据库表创建模块,用于创建一数据库表并设置该数据库表中的字段名称和属性,确定加密字段和加密索引字段,然后将数据集中的数据信息填入相应的字段中;其中客户端待上传的多个文档构成所述数据集;
30.所述索引构建模块,用于为所述加密索引字段构建加密索引,使用对称加密算法加密所述加密字段中的数据,生成验证集合xset,该验证集合xset中存储的信息为所述数据集中各文档对应的组合值,其中根据文档i的文档id及文档i的关键字生成文档i的组合值;
31.所述数据处理模块,用于将加密索引和加密数据上传至服务器端分配的服务器节点;以及利用对称密钥和查询关键字生成对应的查询token发送给服务器端,并对服务器端返回的查询结果进行解密;
32.所述数据存储模块,用于将收到的加密索引和加密数据分配到服务器节点进行存储;
33.所述数据查询模块,用于根据收到的查询token在加密数据库上执行查询操作并将查询结果返回给客户端;
34.所述服务器节点,用于存储加密索引和加密数据。
35.一种客户端,其特征在于,包括数据库表创建模块、索引构建模块和数据处理模块,其中,所述数据库表创建模块,用于创建一数据库表并设置该数据库表中的字段名称和属性,确定加密字段和加密索引字段,然后将数据集中的数据信息填入相应的字段中;其中客户端待上传的多个文档构成所述数据集;所述索引构建模块,用于为所述加密索引字段构建加密索引,使用对称加密算法加密所述加密字段中的数据,生成验证集合xset,该验证集合xset中存储的信息为所述数据集中各文档对应的组合值,其中根据文档i的文档id及文档i的关键字生成文档i的组合值;所述数据处理模块,用于将加密索引和加密数据上传至服务器端分配的服务器节点;以及利用对称密钥和查询关键字生成对应的查询token发送给服务器端,并对服务器端返回的查询结果进行解密。
36.一种服务器端,其特征在于,包括数据存储模块、数据查询模块和多个服务器节点;其中,所述数据存储模块,用于将所述客户端上传的加密索引和加密数据分配到服务器节点进行存储;所述数据查询模块,用于根据收到的查询token在加密数据库上执行查询操作并将查询结果返回给客户端;所述服务器节点,用于存储加密索引和加密数据。
37.本发明的关键点包括:
38.1、索引的构建过程中采用类倒排索引以及基于lsm(log

structured merge)机制的块存储,并且可根据不同大小的数据集设置缓存块的大小和缓存块的数目。先将value数据存储在本地缓存块中,当缓存块存满后再上传至对应的服务器节点中存储。整个索引框架可分为三部分来查找数据,pkey,ckey,value;分别代表关键字,块号,以及id集合。查询时,只需要输入关键字,生成查询token,访问一次磁盘就能返回所有的查询结果。大大提高了空间利用率和查询效率。
39.2、为扩展查询功能实现布尔查询,本文基于代表性框架oxt的设计思路,在本论文设计的框架上进一步做优化。即,将oxt所涉及的数据结构tset采用基于lsm的块存储,将xset中的元素用布隆过滤器来进行存储,两个结构的存储方式,均有效的提升了存储空间利用率以及查询效率。满足用户的查询需求,提高查询准确率。高效支持密态数据的复杂逻辑组合查询。该方法可支持多关键词的布尔检索,提高了密态检索系统的实用性。
40.3、基于全对等架构实现分布式存储,将此框架下生成的加密索引同加密数据均匀的分布在不同的节点,节点之间可并行的进行插入、查询和计算功能,支持数据的增删,支持布尔查询。提高了存储安全性和查询性能。
41.同时在初始化阶段建立数据库表时,通过设置字段的属性,即该字段对应是加密字段或是明文字段,由此在查询的时候对应用户不同的查询需求可支持混合查询。
42.本发明的优点如下:
43.1、本发明借鉴了类倒排索引的设计思路进行索引的构建,实现了次线性搜索时间,确保泄漏到云服务器的信息最少;同时避免了填充造成的空间浪费;
44.2、针对i/o延迟,存储利用率不高以及实际数据集分布的差异所造成的查询性能降低,本研究参考lsm方法的工作原理,对加密索引采用了块存储的方法,考虑磁盘的局部性原理,实现以数据块/文件为单位的流式增加和删除;
45.3、支持加密数据的多功能查询,为用户提供了实用的搜索功能;
46.4、考虑到单节点服务器虽然结构简单但处理能力有限的性质,本文提出了基于全
对等架构的分布式存储;将加密的索引和数据随机均匀的分布在各个节点上,各节点有自己的计算、存储、查询操作模块。查询时,各节点可并行、独立的进行相关计算和查找操作,实现了对大规模数据的高效并行存储和查询,满足用户对不同安全等级数据的最优处理。
47.5、索引的构建过程中,分别设置了加密字段和明文字段,并且为对应字段生成索引,支持混合查询。
附图说明
48.图1是本发明方法的流程示意图;
49.图2是本发明设计的索引结构示意图;
50.图3是任意布尔表达式的查询示意图。
具体实施方式
51.下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
52.本发明参考基于倒排索引表的sse方案的索引结构,提出了新的索引构造方法,以实现在保留倒排索引的亚线性查询时间的同时避免了填充导致的空间浪费以及查询延迟。具体为:单个关键字会生成多个标签,分别与包含该关键字的每个文档id一一对应。也就是说,如果有t个带有某关键字的文档,那么新的索引构建方案中该关键字会产生t个独立标签,而传统的基于倒排索引的sse方案中只会产生1个标签。新的索引构造方法能够避免填充并支持并行搜索,从而显著节省大型数据集的存储空间和查询时间。
53.另外,磁盘具有随机读写慢、顺序读写快的特性。lsm核心思想就是考虑磁盘的局部性原理,利用内存以及顺序磁盘访问来取代随机磁盘访问,以提高读写更新性能。因此,本发明采用了基于lsm的数据组织模型实现磁盘读、写性能的优化,设计了块存储方案,其本质是将数据按顺序写入本地缓存块block中,当block块存满后再通过周期性合并block来减少block的数目,可有效降低密态索引的大小。并且,block中的数据始终是有序的,用户访问只用进行顺序磁盘读写,而不是随机访问,有效的提升了检索效率。
54.为提高存储的可扩展性,本发明采用了基于全对等架构的分布式存储。索引的构建过程中,根据客户端中待上传文档的文档id生成关键值value并将其存入本地缓存块中,当块存满后,将加密索引块和加密的文档/文件集合上传至云服务器,并随机均匀地存储在多个服务器节点上,并对服务器节点中的加密索引存储块进行周期性的compact,很大程度上提高了存储空间的利用率。
55.本发明构造的系统结构包括两个实体,客户端和服务器端。客户端的主要功能是初始化整个系统,产生随机密钥,并生成加密索引和加密数据,生成查询token(陷门)并提交查询请求给服务器端,接收服务器端返回的查询结果并利用随机密钥对查询结果进行解密。服务器端负责保存客户端上传的加密索引和加密数据,并行的执行客户端发起的查询请求并返回查询结果。
56.客户端的功能共包括以下四个方面:
57.(1)预处理客户端待上传文档构成的数据集,首先创建数据库表,设置字段的名称和属性,确定加密字段和加密索引字段,然后将数据信息填入相应的字段中;
58.(2)构建索引,为加密索引字段构建加密索引,索引的构建过程如图2所示;使用对称加密算法加密设定加密字段中的数据,同时生成验证集合xset,xset中存储的是数据集中所有关键字和文档id的组合值用于后续结果的验证,组合值算式表示为fp(k
i
,id)*fp(kx,w),i=1~n,k
i
、kx为随机密钥,w为关键字,fp为加密算法;将加密索引和加密数据上传至服务器端分配的一服务器节点保存,客户端仅存储加、解密密钥;对数据集中的每一文档进行处理,每一文档可对应提前出多个关键字,比如文档a包含n个关键字w1,
……
wn,将文档a的id
a
和该n个关键字作为一个组合值;
59.(3)利用对称密钥和查询关键字生成对应的查询token(陷门),并提交给服务器端来作为查询请求;
60.(4)接收服务器端发送回来的查询结果,并对查询结果进行解密。
61.服务器端的功能共包括以下两个方面:
62.(1)服务器端接收到客户端提交的加密数据和加密索引后,将其随机均匀的存储至服务器的各个服务器节点中;
63.(2)服务器端接收到客户端提交的查询(或删除)请求后,通过加密索引在加密数据上执行查询(或删除)操作,并将查询结果返回给客户端。
64.客户端的功能(2)中,对数据库表中的索引字段按照本发明的设计思路构建索引,索引的构建过程可详细描述为:
65.(1)首先,本发明根据数据集设置最优的块数目blocknum和块大小blocksize两个参数。
66.(2)整个索引结构包含了三个字段:pkey,ckey,value;pkey是由关键字w、计数器值c和加密算法f决定,算式表示为:f
k
(w,c),k为随机生成的加密密钥,计数器值c从0逐渐递增,设置计数器值c可以有效提高安全性,即能够避免泄漏关键字对应包含的文档id数目;ckey对应为块号,指向的是当前对应的存储块,ckey的最大取值可为blocknum;value中存放的是blocksize个加密的文档id值;当存满一个缓存块,ckey便自增1。
67.(3)使用分词器对索引字段中对应的数据信息进行分词,得到关键字和对应的文档id集合,在客户端本地分别生成对应的三个字段,其中,为支持布尔查询,value中存放是(e,y)对,e表示为包含该关键字的文档id的加密值,算式表示为:enc(ke,id);y是关键字w和文档id的组合加密值,用于后续的计算验证操作,算式表示为:fp(k
i
,id)*(fp(kz,w))
‑1。value中的值采用了块存储。
68.(4)判断缓存块中的值是否存满,若是存满则将缓存块上传至对应的服务器节点中存储,服务器节点会周期性的对存储在该节点中的加密索引存储块进行合并compact操作。
69.(5)若是关键字对应的文档id的数目多于blcoksize*blocknum,则将对应的blocknum个存储块上传至服务器端后,将计数器值c加1,对应生成新的标签pkey,再对剩余的文档id进行存储。
70.完成索引的构建后,基于关键字的查询操作的过程可详细描述为:
71.(1)客户端根据所要查询的关键字,利用加密算法,随机生成的密钥以及计数器值c,生成查询token。查询token的计算方式同索引字段中的pkey;
72.(2)将生成的查询token传至服务器端,并行的在各服务器节点的索引结构表上进
行查询,将加密的查询结果返回客户端。
73.(3)客户端利用对应的对称加密算法、密钥,对加密的查询结果进行解密。
74.图3为任意布尔表达式的查询过程,可描述为:
75.(1)设对应包含关键字w1的文档最少,可将任意的布尔查询表达式表示为其中,可转换为三种形式,分别为:
76.w2∧
……
77.a∧b∧
……
[0078][0079]
(2)a,b等表示的是或操作以及取非操作的表达式,或操作查询可以利用集合的特性得到查询结果;取非的操作则是在做查询判断前进行相反的操作。
[0080]
(3)客户端为关键字w1生成查询token,生成方法同pkey,由加密算法,随机密钥,关键字w1和计数器值c决定,c从0开始逐渐递增,直至最新生成的查询token无查询结果为止;同时,将关键字w1与其余的查询关键字生成xtoken,算式表示为:fp(kz,w1)*fp(kx,wi),i=2
……
n。将token与xtoken传至服务器端。
[0081]
(4)服务器端根据客户端传入的查询token,并行的在各节点间的索引结构表tset中进行查找,得到关键字w1对应的所有(e,y)对。将xtoken与y值计算,得到计算结果为:fp(k
i
,id)*fp(kx,wi),i=2
……
n;并在xset表中验证筛选计算结果。利用集合的性质得到或查询操作的结果,若是有取非操作的关键字,则去除包含该关键字的文档,保留不含该关键字的文档。
[0082]
(5)最后将加密的查询结果返回给客户端。客户端再进行解密。
[0083]
本发明的具体实现语言是java编程开发语言,java有自带的crypto软件包提供加密算法。利用bouncycastle第三方库提供的多个不同的哈希加密算法用于密钥的随机化处理,有效的防止了黑客使用“跑字典”的方法破获密码。本文的框架是基于对称可搜索加密方法来实现的,采用了对称可搜索加密算法(aes_cbc和aes_ctr)进行加密/解密。
[0084]
安全性方面,本文的索引构造方式使得服务器的查询工作是随结果集的大小而定(与数据库大小无关),并且可确保在查询过程中向服务器的泄漏仅限于查询得到的文档集(该文档集是加密的)和系统的一些全局参数,例如总数据大小和文档数。查询期间服务器会推理获知用户的访问模式以及查询模式,本文索引的构造方法可以有效地应对解决推理攻击。
[0085]
为更好地表达本发明中提出的基于lsm的对称可搜索加密方法,下面针对多功能查询的功能流程,结合具体的实施实例对本发明作进一步说明。
[0086]
以布尔查询表达式为例,查询过程为如下:
[0087]
(1)首先采用单关键字的查询操作得到关键字w1的查询结果,将筛选验证的范围缩小为包含关键字w1的文档id。这里假设w1对应的文档id数最少。
[0088]
(2)客户端利用加密算法,计数器值c,以及关键字w1,生成查询token用于单关键字查询。其中,c的取值从0开始,逐次递增,对应为关键字w1生成多个查询token,传至服务器端,直至新生成的查询token无查询结果。
[0089]
(3)客户端利用关键字w1分别和剩余关键字w2、w3、w4生成xtoken,传至服务器端。
[0090]
(4)服务器端利用客户端生成的查询token在各节点的tset表中并行的进行查找,
得到关键字w1对应的全部(e,y)对。e表示为enc(ke,id),y表示为fp(k
i
,id)*fp(kz,w1)
‑1。
[0091]
(5)关键字w1和w2、w3、w4对应的xtoken表示为:fp(kz,w1)*fp(kx,wi),i=2,3,4;将xtoken分别与y进行计算得到计算结果为,fp(k
i
,id)*fp(kx,wi),i=2,3,4;
[0092]
(6)将计算结果代入xset中进行验证,保留包含关键字w2和关键字w3的文档,利用集合的特性得到w2∨w3的查询结果,去除包含关键字w4的文档。最后得到整个布尔查询表达式的查询结果。
[0093]
尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献