首页 / 专利库 / 人工智能 / N元标识符 / 一种云环境中动态的密文多关键词模糊搜索方法

一种环境中动态的密文多关键词模糊搜索方法

阅读:986发布:2020-05-14

专利汇可以提供一种环境中动态的密文多关键词模糊搜索方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种 云 环境中动态的密文多关键词模糊搜索方法,依次包括以下步骤:(1)数据拥有者生成密钥:(2)数据拥有者构造索引树;(3)数据拥有者加密索引树,并上传至云 服务器 ;(4)数据用户生成查询陷 门 ,并发送给云服务器;(5)云服务器执行关键词搜索,并返回文件给用户;(6)数据拥有者生成文件更新信息;(7)云服务器执行文件及索引树的更新。本发明搜索复杂度低,搜索时间快,开销小,搜索 精度 高。,下面是一种环境中动态的密文多关键词模糊搜索方法专利的具体信息内容。

1.一种环境中动态的密文多关键词模糊搜索方法,其特征在于:依次包括以下步骤:
(1)数据拥有者生成密钥:数据拥有者生成密钥SK(S,M1,M2),其中S∈{0,1}m是一个随机向量,M1和M2分别是两个可逆矩阵,且M1,M2∈{0,1}m,m是布隆过滤器的长度;
(2)数据拥有者构造索引树;
(21)从p-stable局部敏感哈希函数蔟H={h:{0,1}160→{0,1}m}中选择l个独立的局部敏感哈希函数LSH: 其中a是m维的向量,b∈[0,w]是一个实数,w是固定值;
(22)为每个文件Di构造一个m位的布隆过滤器作为文件的索引向量,布隆过滤器每一位初始化为0;
(23)从文件Di中提取关键词,并用LSH将其哈希到布隆过滤器中;
(24)将构造的索引向量组织成一棵索引树,其构造的具体过程为:对于每一个文件Di,存储相应的文件标识符i和布隆索引向量IDi,
如果文件个数为偶数个即n=2k,k是指自然数;则为每一对叶子结点D2k-1和D2k生成一个父亲结点Du,存储一个m位的向量,满足:
IDu[j]=max{ID2k-1[j],ID2k[j]}         (1);
如果文件个数为奇数个即n=2k+1,则前D2k个叶子结点构造父亲结点的方式与公式(1)相同,最后一个结点D2k+1与D2k的父亲结点构造一个父亲结点;重复以上过程,直到生成一个根结点;
(3)数据拥有者加密索引树,并上传至云服务器
(31)对于索引树中的每个节点中的索引向量IDu,根据密钥S的值将索引向量分割为两个m位的向量IDu1和IDu2,如果S[j]=0, 否则
r是一个随机数;
(32)将两个向量分别与矩阵M1和M2作乘积,将每个索引向量转化成一个二元组(33)将每个节点中的索引向量按以上两步加密,最后将加密的索引树上传至云服务器;
(4)数据用户生成查询陷,并发送给云服务器;
(41)从p-stable局部敏感哈希函数蔟H={h:{0,1}160→{0,1}m}中选择l个独立的局部敏感哈希函数LSH: 其中a是m维的向量,b∈[0,w]是一个实数,w是固定值;
(42)构造一个m位的布隆过滤器作为查询向量;
(43)将每个搜索关键词哈希到布隆过滤器中;
(44)将构造的查询向量加密,即根据密钥S的值将查询向量分割为两个向量,将构造的查询向量加密,即根据密钥S的值将查询向量分割为两个向量,{Q1,Q2},如果否则,Q1[i]=Q2[i]=Q[i],r是一个随机数;然后分别用
矩阵M1,M2的逆与随机向量{Q1,Q2}作乘积,得到一个二元组
(45)将查询陷门发送给云服务器;
(5)云服务器执行关键词搜索,并返回文件给用户;
(6)数据拥有者生成文件更新信息;
(7)云服务器执行文件及索引树的更新。
2.根据权利要求1所述的云环境中动态的密文多关键词模糊搜索方法,其特征在于:所述步骤(5)的具体过程为:
(51)云服务器使用步骤(45)所得查询陷门在索引树上搜索,得到结果列表,结果列表包括文件标识符和相关性分数;
(52)云服务器根据文件标识符取出加密的目标文件;
(53)云服务器将排序的目标文件集发送给用户,用户解密得到最终结果。
3.根据权利要求1所述的云环境中动态的密文多关键词模糊搜索方法,其特征在于:所述步骤(6)的具体过程为:
(61)当数据拥有者需要更新文件时,首先判断需要更新的索引树结点,即索引树的子树;
(62)取出结点中的索引向量,根据步骤(24)重新计算每个索引向量的值,并加密;
(63)将更新的加密的子树及加密的待更新文件上传给云服务器。
4.根据权利要求1所述的云环境中动态的密文多关键词模糊搜索方法,其特征在于:所述步骤(7)的具体过程为:
(71)云服务器更新文件集,删除或添加文件;
(72)云服务器替换索引树中的相应的子树,得到新的索引树。

说明书全文

一种环境中动态的密文多关键词模糊搜索方法

技术领域

[0001] 本发明属于云计算安全技术,具体涉及一种。

背景技术

[0002] 云计算是近年来兴起的一项技术,它依赖云服务器强大的存储能与计算能力,为云用户提供按需的高质量的服务。由于其灵活性,高效性,低成本等特点,越来越多的企业或个人外包海量的数据到云服务器进行存储和管理。然而一些敏感的数据信息,比如电子病历,重要邮件,股票信息等可能会被外部入侵者窃取,或者云服务器本身恶意挖掘。因此这些敏感数据在上传之前需要加密,但是这样会带来另一个问题,数据的高效检索变得很困难。显然,将所有的数据下载到本地解密后,执行明文的关键词搜索的方法是不切实际的,因为这样会导致巨大的通信代价和计算开销。那么能够直接对密文做安全的关键词搜索是一个有效的解决方法,即可搜索加密技术。
[0003] 近年来,随着深入的研究,可搜索加密技术支持越来越多的搜索功能,如单关键词搜索,多关键词搜索,可验证的关键词搜索,连接关键词搜索等,但是这些关键词搜索方法都属于精确地关键词搜索的范畴,只能在输入的搜索关键词拼写正确时有效,若由于用户本身的知识有限或不小心等原因导致输入时出现拼写错误,则用户将搜索不到想要的结果,这对于一个密文搜索系统来说显然是不实用的。而模糊关键词搜索方法能够解决以上的问题,即使用户输入的搜索关键词有拼写错误,系统仍能够识别并搜索到用户想要的文件。在之前的研究中,出现了基于局部敏感哈希函数及布隆过滤器实现的模糊关键词密文搜索方法(Fu,Z.,Wu,X.,Guan,C.,Sun,X.,&Ren,K.(2016).Toward Efficient Multi-Keyword Fuzzy Search Over Encrypted Outsourced Data  With Accuracy Improvement.IEEE Transactions on Information Forensics and Security,11(12),2706-2716.),通过用局部敏感哈希将关键词哈希到布隆过滤器中,构造出文件的索引向量,以同样的方式构造查询向量,通过索引向量与查询向量的内积值得到文件与查询的相关性分数。由于局部敏感哈希的性质,即两个相近的输入被哈希到同一位置的概率很大,不相近的输入被哈希到同一位置的概率很小,从而实现模糊关键词搜索的功能。
[0004] 但是,上述方法存在以下缺陷
[0005] (1)云服务器搜索文件集需要遍历所有文件的索引向量,时间开销较大。
[0006] (2)没有提供文件的动态更新方法。

发明内容

[0007] 发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种云环境中动态的密文多关键词模糊搜索方法。
[0008] 技术方案:本发明一种云环境中动态的密文多关键词模糊搜索方法,依次包括以下步骤:
[0009] (1)数据拥有者生成密钥:数据拥有者生成密钥SK(S,M1,M2),其中S∈{0,1}m是一个随机向量,M1和M2分别是两个可逆矩阵,且M1,M2∈{0,1}m,m是布隆过滤器的长度;
[0010] (2)数据拥有者构造索引树;
[0011] (3)数据拥有者加密索引树,并上传至云服务器;
[0012] (4)数据用户生成查询陷,并发送给云服务器;
[0013] (5)云服务器执行关键词搜索,并返回文件给用户;
[0014] (6)数据拥有者生成文件更新信息;
[0015] (7)云服务器执行文件及索引树的更新。
[0016] 进一步的,所述步骤(2)的具体过程为:
[0017] (21)从p-stable局部敏感哈希函数蔟H={h:{0,1}160→{0,1}m}中选择l个独立的局部敏感哈希函数LSH: 其中a是m维的向量,b∈[0,w]是一个实数,w是固定值;并且l与w的取值均根据实际的m而定,一般当m=8000左右时,l取30,w取4;
[0018] (22)为每个文件Di构造一个m位的布隆过滤器作为文件的索引向量,布隆过滤器每一位初始化为0;
[0019] (23)从文件Di中提取关键词,并用LSH将其哈希到布隆过滤器中;
[0020] (24)将构造的索引向量组织成一棵索引树:对于每一个文件Di,存储相应的文件标识符i和布隆索引向量IDi,如果文件个数为偶数个即n=2k,则为每一对叶子结点D2k-1和D2k生成一个父亲结点Du,存储一个m位的向量,满足IDu[j]=max{ID2k-1[j],ID2k[j]}(*);如果文件个数为奇数个即n=2k+1,则前D2k个叶子结点构造父亲结点的方式与(*)相同,最后一个结点D2k+1与D2k的父亲结点构造一个父亲结点;重复以上过程,直到生成一个根结点。
[0021] 进一步的,所述步骤(3)的具体过程为:
[0022] (31)对于索引树中的每个节点中的索引向量IDu,根据密钥S(S的值是第一步数据拥有者生成的密钥,随机的生成的m位的向量,也就是m位的0、1序列)的值将索引向量分割为两个m位的向量IDu1和IDu2,S[j]=0, 否则r是一个随机数;
[0023] (32)将两个向量分别与矩阵M1和M2作乘积,将每个索引向量转化成一个二元组[0024] (33)将每个节点中的索引向量按以上两步加密,最后将加密的索引树上传至云服务器。
[0025] 进一步的,所述步骤(4)的具体过程为:
[0026] (41)从p-stable局部敏感哈希函数蔟H={h:{0,1}160→{0,1}m}中选择l个独立的局部敏感哈希函数LSH: 其中a是m维的向量,b∈[0,w]是一个实数,w是固定值;
[0027] (42)构造一个m位的布隆过滤器作为查询向量;
[0028] (43)将每个搜索关键词哈希到布隆过滤器中;
[0029] (44)将构造的查询向量加密,即根据密钥S的值将查询向量分割为两个向量,将构造的查询向量加密,即根据密钥S的值将查询向量分割为两个向量,{Q1,Q2},如果S[i]=0,否则,Q1[i]=Q2[i]=Q[i]r是一个随机数。然后分别用矩阵M1,M2的逆与随机向量{Q1,Q2}作乘积,得到一个二元组
[0030] (45)将查询陷门发送给云服务器。
[0031] 进一步的,所述步骤(5)的具体过程为:
[0032] (51)云服务器使用步骤(45)所得查询陷门在索引树上搜索,得到结果列表,结果列表包括文件标识符和相关性分数;
[0033] (52)云服务器根据文件标识符取出加密的目标文件;
[0034] (53)云服务器将排序的目标文件集发送给用户,用户解密得到最终结果。
[0035] 进一步的,所述步骤(6)的具体过程为:
[0036] (61)当数据拥有者需要更新文件时,首先判断需要更新的索引树结点,即索引树的子树;
[0037] (62)取出结点中的索引向量,根据步骤(24)重新计算每个索引向量的值,并加密;
[0038] (63)将更新的加密的子树及加密的待更新文件上传给云服务器。
[0039] 进一步的,所述步骤(7)的具体过程为:
[0040] (71)云服务器更新文件集,删除或添加文件;
[0041] (72)云服务器替换索引树中的相应的子树,得到新的索引树。
[0042] 有益效果:
[0043] 1、本发明通过在基本的模糊关键词搜索方法中引入基于树的索引结构以及高效的搜索算法,使得模糊搜索方法的整体搜索时间降低,现有的方法执行一次搜索需要遍历所有文件的索引向量,搜索的时间复杂度为O(n);而发明的搜索时间复杂度仅为O(r·log n),其中n是所有文件的个数,r是包含搜索关键词的文件的个数。
[0044] 2、本发明提供了文件的动态的更新方法,使数据拥有者存储在云服务器中的文件可以灵活的动态更新,而每次更新不需要重建整个索引树,只需要将涉及到的需要更新的节点更新即可,一个文件的更新操作的时间复杂度为O(log n)。综上所述,本发明搜索复杂度低,搜索时间快,开销小,搜索精度高实现了多关键词的模糊搜索,而且还支持文件的动态更新。附图说明
[0045] 图1为本发明的整体流程图
[0046] 图2为本发明的功能模示意图;
[0047] 图3为本发明的系统框架图;
[0048] 图4为本发明中的索引树结构图。

具体实施方式

[0049] 下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例
[0050] 为便于进一步理解本发明,以下首先就本发明的技术术语进行解释和说明:
[0051] 数据拥有者:持有数据的一方。主要工作是加密原始文件,构造和加密索引;对数据使用方进行搜索控制和访问控制(通过安全渠道分发陷门生成密钥和文件解密密钥),以及生成文件更新信息。
[0052] 数据用户:使用数据的一方。用户根据要查询的关键词,用数据拥有者发来的密钥构造查询陷门;解密搜索到的文件。
[0053] 云服务器:文件的存储方。主要工作是将数据用户发来的查询陷门与数据拥有者存储在云上的加密的索引进行匹配,搜索相应的文件,另外,当文件需要更新时,云服务器根据数据拥有者递交的文件更新信息更新加密的文件和索引。
[0054] 如图1所示,本发明的云环境中动态的密文多关键词模糊搜索方法,其过程[0055] 主要如下:
[0056] (1)数据拥有者生成密钥;
[0057] (2)数据拥有者构造索引树。
[0058] (3)数据拥有者加密索引树,并上传至云服务器;
[0059] (4)数据用户生成查询陷门,并发送给云服务器。
[0060] (5)云服务器执行关键词搜索,并返回文件给用户;
[0061] (6)数据拥有者生成文件更新信息;
[0062] (7)云服务器执行文件及索引树的更新。
[0063] 实施例1:
[0064] 如图2所示,本实施例适用于云计算环境中,在这个云计算系统环境中,有3个实体:可信的数据拥有者、半可信的云服务器以及可信的数据用户。其中半可信的云服务器指云服务器能诚实地按照既定的协议提供存储与计算服务,但是同时又好奇地去挖掘额外的关于文件以及用户的隐私信息。
[0065] 本实施例的具体步骤如下:
[0066] 步骤(1)具体实施过程如下:
[0067] (11)给定一个安全参数m,输出密钥SK(S,M1,M2),其中S∈{0,1}m是一个随机向量,M1,M2∈{0,1}m是两个可逆矩阵。
[0068] 步骤(2)具体实施过程如下:
[0069] (21)从p-stable局部敏感哈希函数蔟H={h:{0,1}160→{0,1}m}中选择l个独立的局部敏感哈希函数在实施过程中可取m=8000,l为30,hash函数为 a是m维的向量,b∈[0,w]是一个实数,w是固定值。
[0070] (22)为每个文件D构造一个m位的布隆过滤器作为文件的索引向量,布隆过滤器中所有位置初始化为0。
[0071] (23)首先从文件D中提取关键词,并转换成160位长的向量表示形式,转换方法为:将关键词按字母拆分,例如”cloud={c1,l1,o1,u1,d1}”,构造一个160位长的向量,前130位表示字母,后30位表示数字,英文字母中有26个,所以将26个字母在向量中表示5次,一共
26*5=130位,数字表示3次,一共10*3=30位,例如单词cloud构造的向量会在第一次表示的26个字母的相应位置1,其余位置0。然后用(21)中选择的l个哈希函数hj∈H,1≤j≤l将关键词向量hash到布隆过滤器中相应的位置,并置1,得到文件D的布隆索引向量ID。
[0072] (24)将(23)中构造的所有的索引向量{ID1,ID2,…IDn}组织成一棵索引树,构造的具体过程为:对于每一个文件Di,存储相应的文件标识符i和布隆索引向量IDi,如果文件个数为偶数个(n=2k),为每一对叶子结点D2k-1和D2k生成一个父亲结点Du,存储一个m位的向量,满足IDu[j]=max{ID2k-1[j],ID2k[j]}(*);如果文件个数为奇数个(n=2k+1),前D2k个叶子结点构造父亲结点的方式与(*)相同,最后一个结点D2k+1与D2k的父亲结点构造一个父亲结点;重复以上过程,直到生成一个根结点,即树T。图4为索引树的结构。
[0073] 步骤(3)具体实施过程如下:
[0074] (31)层序遍历平衡二叉树T中的每个结点并根据密钥SK加密节点Du中的向量IDu,具体过程为:数据拥有者根据秘密向量S中的值为每个结点Du中的向量IDu生成一对随机向量 S[j]=0, 否则 r是一个随机数。
[0075] (32)将两个向量分别与矩阵M1,M2作乘积,将每个索引向量转化成一个二元组,即[0076] (33)将每个节点中的索引向量按以上两步加密,最后将加密的索引树TE上传至云服务器。
[0077] 步骤(4)具体实施过程如下:
[0078] (41)从p-stable局部敏感哈希函数蔟H={h:{0,1}160→{0,1}m}中选择l个独立的局部敏感哈希函数在实施过程中可取m=8000,l为30,hash函数为 a是m维的向量,b∈[0,w]是一个实数,w是固定值。(
[0079] (42)构造一个m位的布隆过滤器作为查询向量,布隆过滤器的每一位初始化为0。
[0080] (43)与步骤(2)构造索引向量的方法类似,将每个搜索关键词转换为向量表示的形式,再hash到布隆过滤器中,生成布隆查询向量Q。
[0081] (44)数据拥有者根据秘密向量S中的值为查询向量Q生成一对随机向量{Q1,Q2},如果S[i]=0, 否则,Q1[i]=Q2[i]=Q[i]r是一个随机数。然后分别用矩阵M1,M2的逆与随机向量{Q1,Q2}作乘积,得到加密的查询向量,即陷门[0082] 步骤(5)具体实施过程如下:
[0083] (51)收到数据用户的搜索陷门后,云服务器在加密的索引树上搜索k个最相关的包含搜索关键词的文件,具体过程为:将搜索陷门与索引树根结点的向量作内积运算,若结果大于l,则计算其左右孩子结点相应的内积值(相关性分数),然后优先搜索内积值较大的子树,直至叶子结点,若叶子结点中的索引向量与搜索陷门的内积值大于l,则将此叶子结点加入结果列表,格式为<内积值,文件标识符>。再回溯并继续搜索其他符合要求的叶子结点,如果结果列表已存在k个记录,则判断新的待加入的记录的内积值是否大于结果列表中的最小值,若大于,则用其替代当前结果列表中的内积值最小的记录,否则维持原表。通过以上步骤,只需遍历一部分树结点即可得到最终的搜索结果列表。图4给出了搜索实例。
[0084] (52)云服务器根据步骤(51)得到的文件的标识符,从加密的文件集中取出k个加密的文件,这些文件是与搜索请求最相关的k个文件,并将这些文件发送给数据用户。
[0085] (53)数据用户收到加密的k个文件后,用数据拥有者分发的密钥解密文件,得到最终需要的结果。
[0086] 步骤(6)具体实施过程如下:
[0087] (61)数据拥有者预先在本地保存一个未加密的索引树,当数据拥有者需要更新文件时,首先判断需要更新的索引树结点(索引树的子树)。由于叶子结点存储的索引向量为文件的索引向量,内部结点中的向量是由其子结点中的向量生成的,所以,更新一个文件需要更新文件对应的叶子结点及从这个叶子结点至根结点的最短路径上的所有结点。
[0088] (62)数据拥有者根据步骤(24)中的方法重新计算子树上所有的结点中的向量的值,具体过程为,如果更新操作为删除,则将对应叶子结点中的向量置空,文件标识符值为空,并重新计算子树中的其余结点;如果更新操作为插入,则插入到空的叶子结点中,并重新计算子树中的其余结点。
[0089] (63)将步骤(62)中得到的子树加密,加密方式与步骤(3)相同,最后将加密的子树以及需要更新的文件等信息上传到云服务器。
[0090] 步骤(7)具体实施过程如下:
[0091] (71)云服务器根据数据拥有者发来的更新信息,从加密的文件集中删除相应的文件,或添加新的加密的文件。
[0092] (72)云服务器根据更新信息替换索引树中的相应的子树,得到新的索引树。
[0093] 由实施例可以看出,发明的搜索时间复杂度仅为O(r·log n),其中n是所有文件的个数,r是包含搜索关键词的文件的个数。
[0094] 本发明能同时实现对加密的云数据的多关键词模糊搜索和文件的动态更新操作。首先数据拥有者利用局部敏感哈希和布隆过滤器为文件集构造索引树并加密索引树和文件集,外包到云服务器;然后通过安全渠道向合法用户分发密钥。当进行关键词搜索时,合法用户用密钥构造查询陷门,发送给云服务器。收到查询陷门后,云服务器用查询陷门在索引树上搜索相应的文件标识符ID,再根据ID取出加密的文件,将最相关的k个文件发送给用户,用户解密得到最终的文件。当需要文件更新时,数据拥有者在本地更新部分索引树节点并发送给云服务器,云服务器将索引树中相应的节点替换,并更新文件集中的文件。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈