CN112446041A - 一种基于安全索引的可验证多关键词密文查询方法及系统 - Google Patents
一种基于安全索引的可验证多关键词密文查询方法及系统 Download PDFInfo
- Publication number
- CN112446041A CN112446041A CN202011376509.8A CN202011376509A CN112446041A CN 112446041 A CN112446041 A CN 112446041A CN 202011376509 A CN202011376509 A CN 202011376509A CN 112446041 A CN112446041 A CN 112446041A
- Authority
- CN
- China
- Prior art keywords
- query
- vector
- node
- executing
- vectors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于安全索引的可验证多关键词密文查询方法及系统,查询方法包括以下步骤:数据拥有者为电子文档集构建一棵索引树;利用可搜索密钥对索引树进行加密,利用默克哈希认证方法对加密的索引树进行认证;数据拥有者和查询用户在不泄露可搜索密钥的情况下合作生成查询请求的陷门;对加密及认证后的索引树进行查询,将查询结果和辅助验证信息返回给查询用户;验证查询结果正确性。本发明同时提供了一种实现上述方法的系统。本发明在不泄露可搜索密钥的情况下实现了多关键词排序查询,利用默克哈希认证方法对索引树进行认证,实现了查询结果正确性的公共验证,有利于减轻查询用户的计算和存储负担。
Description
技术领域
本发明属于信息安全领域,具体涉及一种基于安全索引的可验证多关键词密文查询方法及系统,能够用于在云存储背景下多个查询用户对云服务器接收的数据密文进行基于语义的多关键词排序查询以及查询结果的正确性验证。
背景技术
随着云存储技术的发展,越来越多的用户将繁重的数据存储和管理工作外包至“诚实但好奇”的云服务器。为了保证用户数据在存储和检索过程中不被泄露,一般情况下用户需要在外包数据前对数据进行加密,然而传统的加密技术隐藏了明文的所有特征,致使基于明文的传统搜索机制无法实现密文搜索。可搜索加密技术的提出解决了数据机密性和可检索性之间的矛盾。根据使用的密码体制不同,现有的可搜索加密技术可分为:对称可搜索加密和非对称可搜索加密。但是这些技术在电子文档检索应用中存在相应的问题。
吉林省外国企业服务有限公司在其申请的专利文献“一种面向云计算的多关键字可排序密文检索方法”(专利申请号201711247475.0,公开号CN105871543A)中公开了一种基于改进的k近邻查询算法的多关键词排序密文检索方法。该方法中数据拥有者首先为每组逆关键词集文档向量集构建相应的B+索引树,并利用基于改进的k近邻查询算法进行加密;然后查询用户利用同样的密钥加密查询向量,得到查询陷门;最后云服务器计算每个文档和查询陷门的相关度得分,返回相关度得分最高的前k个文档。该方法存在的不足之处是:被授权的查询用户拥有完整的密钥,如果泄露给未授权的用户,会威胁外包数据的隐私安全。
西安电子科技大学在其申请的专利文献“多数据拥有者背景下基于属性的多关键字密文检索方法”(专利申请号201610188151.3,公开号CN105871543A)中公开了一种基于双线性对实现多关键词密文检索方法。该方法中数据拥有者首先结合可搜索加密技术与基于密文属性的加密策略,为外包密文建立关键字集索引;然后查询用户根据查询关键字集、私钥以及属性集生成陷门;最后云服务器对陷门和索引进行匹配,并返回满足匹配条件的文档密文集。数据用户利用陷门实现对密文的多关键字查询,该方法存在的不足之处是:基于非对称可搜索加密实现多关键词检索,计算开销大,查询效率低。
南京邮电大学在其申请的专利文献“一种面向云计算的可验证单关键词Top-k检索方法”(专利申请号201710225029.3,公开号CN107194282A)中公开了一种验证单关键词查询结果正确性的方法。该方法中数据拥有者首先采用Hash消息认证编码机制,为所有文档与关键词的相关度得分的偏序关系构造验证码信息;然后检索时云服务器返回与查询关键词最相关的k个文档以及相应的验证码信息;最后查询用户根据获得的检索结果重构验证码。该方法存在的不足之处是:只支持单关键词搜索,查询结果中包含许多查询用户不感兴趣的文档,浪费了带宽和计算资源;只有拥有密钥的查询用户才能验证查询结果的正确性,增加了查询用户的计算负担。
发明内容
本发明的目的在于针对上述现有技术中多关键词密文检索过程可搜索密钥可能泄露、查询效率不高以及查询结果正确性验证操作只能由拥有密钥的查询用户执行的问题,提供一种基于安全索引的可验证多关键词密文查询方法及系统,基于对称可搜索加密在不泄露可搜索密钥的情况下实现基于语义的多关键词排序查询和查询结果的正确性验证。
为了实现上述目的,本发明有如下的技术方案:
一种基于安全索引的可验证多关键词密文查询方法,包括以下步骤:
-数据拥有者为电子文档集构建一棵索引树;
-利用可搜索密钥对索引树进行加密,利用默克哈希认证方法对加密的索引树进行认证;
-数据拥有者和查询用户在不泄露可搜索密钥的情况下合作生成查询请求的陷门;
-对加密及认证后的索引树进行查询,将查询结果和相应辅助验证信息返回给查询用户;
-验证查询结果正确性。
索引树构建具体包括以下步骤:
(1a)利用tf-idf和向量空间模型,从外包电子文档集中提取关键词组成字典,为每个电子文档生成一个n维的随机向量,将字典中第ι个关键词在每个电子文档中的tf-idf值赋给相应随机向量中的第ι个元素,得到每个电子文档的初始数据向量,其中,ι=1,2,…,N,N表示字典的大小,N=n;
(1b)将所有初始数据向量作为叶子节点,构建一棵平衡二叉树,作为索引树,选取每一个非叶子节点的所有孩子节点中的初始数据向量每一维的最大值,构成一个新的初始数据向量,存储到相应的非叶子节点中。
利用可搜索密钥对索引树进行加密具体包括以下步骤:
-设置可搜索密钥和文档加密密钥:
(2b)将对称加密算法的对称密钥作为文档加密密钥;所述对称加密算法是指:高级加密算法、数据加密标准算法和国际数据加密算法中的任意一个算法;
-对索引树进行加密:
(3b)利用数据向量分裂方法,将每个目标数据向量分裂成两个随机向量,作为相应节点的两个子向量;
(3d)利用文档加密密钥对每个外包电子文档加密,将密文存储到相应的叶子节点中。
步骤(3b)中所述数据向量分裂方法的步骤如下:
3b1,生成维数均与目标数据向量维数相同的两个随机向量,将目标数据向量中的第2n+1、2n+2个元素值赋给两个随机向量中的第2n+1、2n+2个元素;
3b2,从比特向量b=(b1,…,bn)中选取一个任意未选过的第ι个元素值,其中,ι的取值范围为{1,2,…,n};
3b3,判断所选的元素值是否为0,若是,则执行第3b4步,否则,执行第3b5步;
3b4,将目标数据向量中的第2ι-1个元素值赋给第一个随机向量和第二个随机向量中的第2ι-1个元素;
3b5,在实数域上随机选取一个实数,赋给第一个随机向量中的第2ι-1个元素,用目标数据向量中的第2ι-1个元素值减去该随机数,将差值赋给第二个随机向量中的第2ι-1个元素;
3b6,在实数域上随机选取一个实数,赋给第一个随机向量中的第2ι个元素,用目标数据向量中的第2ι个元素值减去该随机数,将差值赋给第二个随机向量中的第2ι个元素。
对加密的索引树进行认证,具体包括以下步骤:
(4a)利用默克哈希认证方法,计算索引树中每个节点的摘要,存储在相应的节点中;
(4b)利用数字签名算法,计算索引树根节点中摘要的签名,公开所得的根签名;所述数字签名算法是指:RSA算法、DSA算法、ECDSA算法中的任意一个算法。
步骤(4a)中所述默克哈希认证方法的步骤如下:
4a1,选取索引树中的任意一个未被处理的节点;
4a2,判断所选节点是否为叶子节点,若是,则执行第4a3步,否则,执行第4a4步;
4a3,将所选节点的两个加密子向量分别作为两个字符串,用连接运算符连接所选节点中的密文和这两个字符串,利用安全散列函数,将由连接符连接所得的字符串映射成一个长度固定的随机字符串,作为所选节点的摘要;所述安全散列函数是指:SHA-224、SHA-256,SHA-512中的任意一个算法;
4a4,将所选节点的两个加密子向量分别作为两个字符串,用连接符连接这两个字符串以及所选节点的所有孩子节点中的摘要,利用安全散列函数,将由连接符连接所得的字符串映射成一个长度固定的随机字符串,作为所选节点的摘要;所述安全散列函数是指:SHA-224、SHA-256,SHA-512中的任意一个算法。
生成查询请求的陷门具体包括以下步骤:
(5a)利用查询请求向量化方法,将查询请求W′={w1,w2,…,wz}转化为一个n维的初始查询向量,其中,wτ表示第τ个查询关键词,τ=1,2,…,z,z表示查询关键词的数量;
查询请求向量化方法的步骤如下:
5a1,生成一个n维的随机向量;
5a2,从查询请求W′={w1,w2,…,wz}中选取一个任意未选过的查询关键词;
5a3,判断所选的查询关键词是否在字典中,若是,执行第5a4步,否则,执行第5a5步;
5a4,将常数1赋给随机向量中与所选查询关键词对应的元素;
5a5,将常数0赋给随机向量中与所选查询关键词对应的元素;
(5b)查询用户随机选取一个n维的实数向量作为混淆向量,将初始查询向量与混淆向量相加,得到安全查询向量,发送给数据拥有者;
(5c)数据拥有者利用查询向量分裂方法,将安全查询向量分裂成两个随机向量,作为安全查询向量的两个子向量;
查询向量分裂方法的步骤如下:
5c1,生成维数均与安全查询向量维数相同的两个随机向量;
5c2,从比特向量b=(b1,…,bn)中选取一个任意未选过的元素值;
5c3,判断所选的元素值是否为0,若是,执行第5c4步,否则,执行第5c5步;
5c4,在实数域上随机选取一个实数,赋给第一个随机向量对应位置上的元素,用安全查询向量中与所选元素对应的元素值减去该随机数,将差值赋给第二个随机向量中与所选元素对应的元素;
5c5,将安全查询向量中与所选元素对应的元素值赋给第一个随机向量和第二个随机向量中与所选元素对应的元素;
所述陷门辅助信息生成公式如下:
其中,分别表示两个辅助向量中的第i个元素,分别表示两个辅助矩阵中第i行、第j列的元素,i=1,2,…,2n+2,j=1,2,…,n,β表示在实数域上随机选取的正实数,ε1,ε2,μ1,μ2表示在实数域上随机选取的四个实数,分别表示两个可逆矩阵中第i行、第j列的元素,分别表示安全查询向量的两个子向量中第j个元素,∑表示求和操作;
(5e)查询用户对陷门生成辅助信息集中的第一辅助矩阵和第二辅助矩阵进行转置操作,分别计算混淆向量和转置后的第一辅助矩阵、第二辅助矩阵的乘积,将两个乘积结果分别与陷门生成辅助信息集中的第一辅助向量第二辅助向量相加,组成查询请求的陷门;
(5f)查询用户向云服务器提交查询请求的陷门。
对加密及认证后的索引树进行查询,具体包括以下步骤:
(6a)将索引树的根节点作为当前检索访问节点,利用深度优先搜索方法,选出k个密文,作为查询结果,其中,k表示所需查询结果的数量,且5≤k≤50;
所述深度优先搜索方法的步骤如下:
6a1,设置一个空列表,作为查询结果列表;
6a2,判断当前检索访问节点是否为非叶子节点,若是,则执行第6a3步,否则,执行第6a6步;
6a3,判断查询结果列表中的元组数量是否等于所需查询结果的数量,若是,则执行第6a4步,否则,执行第6a5步;
6a4,选取查询结果列表中最小的得分,判断当前检索访问节点的得分是否大于最小得分,若是,则执行第6a5步,否则,执行第6a10步;
6a5,将当前检索访问节点的每个孩子节点中的两个加密子向量,分别与查询请求的陷门中的两个向量相乘,两次乘积结果相加后得到相应孩子节点的得分,将得分最大的孩子节点作为新的检索访问节点,执行第6a2步;
6a6,判断查询结果列表中的元组数量是否等于所需查询结果的数量,若是,则执行第6a7步,否则,执行第6a9步;
6a7,选取查询结果列表中最小的得分,判断当前检索访问的节点的得分是否大于最小得分,若是,则执行第6a8步,否则,执行第6a10步;
6a8,删除最小得分对应的元组,将当前检索访问节点中的密文和对应的得分作为元组,存储到查询结果列表中,执行第6a10步;
6a9,将当前检索访问节点中的两个加密子向量分别与查询请求的陷门中的两个向量相乘,两次乘积结果相加后得到当前检索访问节点的得分,将当前检索访问节点中的密文和对应的得分作为元组存储到查询结果列表中,执行第6a10步;
6a10,返回上一个检索访问节点,判断当前检索访问节点是否有未被访问的孩子节点,若是,则执行第6a11步,否则,执行第6a12步;
6a11,将当前检索访问节点中未被访问的孩子节点作为新的检索访问节点,执行第6a2步;
6a12,判断当前检索访问节点是否为根节点,若是,则执行第6a13步,否则,执行第6a10步;
6a13,结束检索;
(6b)选取查询结果所在的k个叶子节点到根节点路径上每个节点中的两个加密子向量以及相应兄弟节点中的摘要,作为辅助验证信息返回给查询用户。
验证查询结果正确性具体包括以下步骤:
(7a)利用查询结果和辅助验证信息重新计算根节点的摘要;
(7b)利用数字签名的公钥对公开的根签名进行解密,得到真正的根摘要;
(7c)比较新生成的根节点的摘要与真正的根摘要,若相同,则执行步骤(7d),否则执行步骤(7e);
(7d)利用文档加密密钥解密查询结果;
(7e)丢弃收到的查询结果。
本发明还提出一种基于安全索引的可验证多关键词密文查询系统,包括:
索引树构建模块,用于为电子文档集构建一棵索引树;
索引树加密模块,用于利用可搜索密钥对索引树进行加密;
索引树认证模块,用于利用默克哈希认证方法对加密的索引树进行认证;
陷门生成模块,用于在不泄露可搜索密钥的情况下生成查询请求的陷门;
查询模块,用于对加密及认证后的索引树进行查询,获取查询结果和相应辅助验证信息;
查询结果验证模块,用于验证查询结果正确性。
相较于现有技术,本发明至少具有以下有益效果:由于本发明通过数据拥有者和查询用户一轮通信的方式生成了查询请求的陷门,克服了现有的基于对称可搜索加密的技术中被授权的查询用户知晓完整的可搜索密钥,可能将密钥泄露给未授权的查询用户,以及现有的基于非对称可搜索加密的技术中计算开销大的问题,使得本发明基于对称可搜索加密在不泄露可搜索密钥的情况下实现了多关键词排序查询。此外,由于本发明利用默克哈希认证方法对索引树进行认证,利用返回的辅助验证信息验证查询结果的正确性,克服了现有技术中“诚实但好奇的”云服务器可能返回错误的查询结果、查询结果正确性验证操作只能由拥有密钥的查询用户执行的问题,使得本发明实现了查询结果正确性的公共验证,保证了查询结果没有被篡改或伪造,而且有利于减轻查询用户的计算和存储负担。
附图说明
图1本发明基于安全索引的可验证多关键词密文查询方法流程图;
图2加密且认证后的索引树的一个示例图。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
参见图1,本发明基于安全索引的可验证多关键词密文查询方法,包括以下步骤:
步骤1,构建索引树。
利用tf-idf和向量空间模型,从外包电子文档集中提取关键词组成字典,为每个电子文档生成一个n维的随机向量,将字典中第ι个关键词在每个电子文档中的tf-idf值赋给相应随机向量中的第ι个元素,得到每个电子文档的初始数据向量,其中,m表示外包电子文档集中文档的总数,ι=1,2,…,N,N表示字典的大小,N=n;
将所有初始数据向量作为叶子节点,构建一棵平衡二叉树,作为索引树,选取每一个非叶子节点的所有孩子节点中的初始数据向量每一维的最大值,构成一个新的初始数据向量,存储到相应的非叶子节点中。
本发明的实施例中,非叶子节点的左、右孩子节点中的初始数据向量分别为p1=(p1,1,…p1,ι,…,p1,n),p2=(p2,1,…,p2,ι,…,p2,n),则新构成的初始数据向量为pmax=(max(p1,1,p2,1),…,max(p1,i,p2,i),…,max(p1,n,p2,n)),其中,p1,ι,表示左孩子的初始数据向量p1中的第ι个元素,p2,ι表示右孩子的初始数据向量p2中的第ι个元素,ι=1,2…,n,max(·)表示取最大值操作。
步骤2,设置可搜索密钥和文档加密密钥。
将对称加密算法的对称密钥作为文档加密密钥;对称加密算法是指:高级加密算法、数据加密标准算法和国际数据加密算法中的任意一个算法。
步骤3,对索引树进行加密。
数据向量分裂方法的步骤如下:
第1步,生成维数均与目标数据向量维数相同的两个随机向量,将目标数据向量中的第2n+1、2n+2个元素值赋给两个随机向量中的第2n+1、2n+2个元素;
第2步,从可搜索密钥中的比特向量中选取一个任意未选过的第ι个元素值,其中,ι的取值范围为{1,2,…,n};
第3步,判断所选的元素值是否为0,若是,则执行第4步,否则,执行第5步;
第4步,将目标数据向量中的第2ι-1个元素值赋给第一个随机向量和第二个随机向量中的第2ι-1个元素;
第5步,随机选取一个实数,赋给第一个随机向量中的第2ι-1个元素,用目标数据向量中的第2ι-1个元素值减去该随机数,将差值赋给第二个随机向量中的第2ι-1个元素;
第6步,随机选取一个实数,赋给第一个随机向量中的第2ι个元素,用目标数据向量中的第2ι个元素值减去该随机数,将差值赋给第二个随机向量中的第2ι个元素。
利用文档加密密钥对每个外包电子文档加密,将密文存储到相应的叶子节点中。
步骤4,对索引树进行认证。
利用默克哈希认证方法,计算索引树中每个节点的摘要,存储在相应的节点中。
默克哈希认证方法的步骤如下:
第1步,选取索引树中的任意一个未被处理的节点;
第2步,判断所选节点是否为叶子节点,若是,则执行第3步,否则,执行第4步;
第3步,将所选节点的两个加密子向量分别作为两个字符串,用连接运算符连接所选节点中的密文和这两个字符串,利用安全散列函数,将由连接符连接所得的字符串映射成一个长度固定的随机字符串,作为所选节点的摘要;所述安全散列函数是指:SHA-224、SHA-256,SHA-512中的任意一个算法;
第4步,将所选节点的两个加密子向量分别作为两个字符串,用连接符连接这两个字符串以及所选节点的所有孩子节点中的摘要,利用安全散列函数,将由连接符连接所得的字符串映射成一个长度固定的随机字符串,作为所选节点的摘要;所述安全散列函数是指:SHA-224、SHA-256,SHA-512中的任意一个算法。
利用数字签名算法,计算索引树根节点中摘要的签名Sig,公开所得的根签名Sig;所述数字签名算法是指:RSA算法、DSA算法、ECDSA算法中的任意一个算法。
步骤5,生成查询请求的陷门。
利用查询请求向量化方法,将查询请求W′={w1,w2,…,wz}转化为一个n维的初始查询向量,其中,wτ表示第τ个查询关键词,τ=1,2,…,z,z表示查询关键词的数量。
查询请求向量化方法的步骤如下:
第1步,生成一个n维的随机向量;
第2步,从查询请求W′={w1,w2,…,wz}中选取一个任意未选过查询关键词;
第3步,判断所选的查询关键词是否在字典中,若是,则执行第4步,否则,执行第5步;
第4步,将常数1赋给随机向量中与所选查询关键词对应的元素;
第5步,将常数0赋给随机向量中与所选查询关键词对应的元素。
查询向量分裂方法的步骤如下:
第1步,生成维数均与安全查询向量维数相同的两个随机向量;
第2步,从比特向量b=(b1,…,bn)中选取一个任意未选过的元素值;
第3步,判断所选的元素值是否为0,若是,则执行第4步,否则,执行第5步;
第4步,在实数域上随机选取一个实数,赋给第一个随机向量对应位置上的元素,用安全查询向量中与所选元素对应的元素值减去该随机数,将差值赋给第二个随机向量中与所选元素对应的元素;
第5步,将安全查询向量中与所选元素对应的元素值赋给第一个随机向量和第二个随机向量中与所选元素对应的元素。
陷门辅助信息生成公式如下:
其中,分别表示两个辅助向量中的第i个元素,分别表示两个辅助矩阵中第i行、第j列的元素,i=1,2,…,2n+2,j=1,2,…,n,β表示在实数域上随机选取的正实数,ε1,ε2,μ1,μ2表示在实数域上随机选取的四个实数,分别表示两个可逆矩阵中第i行、第j列的元素,分别表示安全查询向量的两个子向量中第j个元素,∑表示求和操作。
查询用户对陷门生成辅助信息集中的第一辅助矩阵和第二辅助矩阵进行转置操作,分别计算混淆向量和转置后的第一辅助矩阵、第二辅助矩阵的乘积,将两个乘积结果分别与陷门生成辅助信息集中的第一辅助向量第二辅助向量相加,组成查询请求的陷门其中,T表示转置操作。
步骤6,查询密文。
将索引树的根节点作为当前检索访问节点,利用深度优先搜索方法,选出k个密文,作为查询结果,其中,k表示返回的查询结果的数量,且5≤k≤50。
深度优先搜索方法的步骤如下:
第1步,设置一个空列表,作为查询结果列表;
第2步,判断当前检索访问节点是否为非叶子节点,若是,则执行第3步,否则,执行第6步;
第3步,判断查询结果列表中的元组数量是否等于所需返回的查询结果的数量,若是,则执行第4步,否则,执行第5步;
第4步,选取查询结果列表中最小的得分,判断当前检索访问节点的得分是否大于最小得分,若是,则执行第5步,否则,执行第10步;
第5步,将当前检索访问节点的每个孩子节点中的两个加密子向量分别与查询请求的陷门中的两个向量相乘,两次乘积结果相加后得到相应孩子节点的得分,将得分最大的孩子节点作为新的检索访问节点,执行第2步;
第6步,判断查询结果列表中的元组数量是否等于所需返回的查询结果的数量,若是,则执行第7步,否则,执行第9步;
第7步,选取查询结果列表中最小的得分,判断当前检索访问的节点的得分是否大于最小得分,若是,则执行第8步,否则,执行第10步;
第8步,删除最小得分对应的元组,将当前检索访问节点中的密文和对应的得分作为元组存储到查询结果列表中,执行第10步;
第9步,将当前检索访问节点中的两个加密子向量分别与查询请求的陷门中的两个向量相乘,两次乘积结果相加后得到当前检索访问节点的得分,将当前检索访问节点中的密文和对应的得分作为元组存储到查询结果列表中,执行第10步;
第10步,返回上一个检索访问节点,判断当前检索访问节点是否有未被访问的孩子节点,若是,则执行第11步,否则,执行第12步;
第11步,将当前检索访问节点中未被访问的孩子节点作为新的检索访问节点,执行第2步;
第12步,判断当前检索访问节点是否为根节点,若是,则执行第13步,否则,执行第10步;
第13步,结束查询。
选取查询结果所在的k个叶子节点到根节点路径上每个节点中的两个加密子向量以及相应兄弟节点中的摘要,作为辅助验证信息返回给查询用户。
本发明的实施例中,设由5个外包电子文档{f1,…,f5}构建的索引树如图2所示,其中加阴影的两个圆圈表示top-2查询结果所在的节点,ci表示电子文档fi的密文,i=1,2,3,4,5,dj表示第j个节点的摘要,j=1,2,…,9,则top-2查询结果为R={c1,c3},辅助验证信息为
步骤7,验证查询结果的正确性。
利用查询结果和辅助验证信息重新计算根节点的摘要。
其中,||表示连接符,H(·)表示安全散列函数。
利用数字签名的公钥对公开的根签名进行解密,得到真正的根摘要。
比较新生成的根节点的摘要与真正的根摘要,若相同,则利用文档加密密钥解密查询结果,否则,丢弃收到的查询结果。
本发明通过数据拥有者和查询用户一轮通信的方式生成查询请求的陷门,在不泄露可搜索密钥的情况下实现了多关键词排序查询。本发明利用默克哈希认证方法对索引树进行认证,实现了查询结果正确性的公共验证,有利于减轻查询用户的计算和存储负担。
以上所述的仅仅是本发明的较佳实施例,并不用以对本发明的技术方案进行任何限制,本领域技术人员应当理解的是,在不脱离本发明精神和原则的前提下,该技术方案还可以进行若干简单的修改和替换,这些修改和替换也均会落入权利要求书涵盖的保护范围之内。
Claims (10)
1.一种基于安全索引的可验证多关键词密文查询方法,其特征在于,包括以下步骤:
-数据拥有者为电子文档集构建一棵索引树;
-利用可搜索密钥对索引树进行加密,利用默克哈希认证方法对加密的索引树进行认证;
-数据拥有者和查询用户在不泄露可搜索密钥的情况下合作生成查询请求的陷门;
-对加密及认证后的索引树进行查询,将查询结果和辅助验证信息返回给查询用户;
-验证查询结果正确性。
2.根据权利要求1所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
索引树构建具体包括以下步骤:
(1a)利用tf-idf和向量空间模型,从外包电子文档集中提取关键词组成字典,为每个电子文档生成一个n维的随机向量,将字典中第ι个关键词在每个电子文档中的tf-idf值赋给相应随机向量中的第ι个元素,得到每个电子文档的初始数据向量,其中,ι=1,2,…,N,N表示字典的大小,N=n;
(1b)将所有初始数据向量作为叶子节点,构建一棵平衡二叉树,作为索引树,选取每一个非叶子节点的所有孩子节点中的初始数据向量每一维的最大值,构成一个新的初始数据向量,存储到相应的非叶子节点中。
3.根据权利要求1所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
利用可搜索密钥对索引树进行加密,具体包括以下步骤:
-设置可搜索密钥和文档加密密钥:
(2b)将对称加密算法的对称密钥作为文档加密密钥;所述对称加密算法是指:高级加密算法、数据加密标准算法和国际数据加密算法中的任意一个算法;
-对索引树进行加密:
(3b)利用数据向量分裂方法,将每个目标数据向量分裂成两个随机向量,作为相应节点的两个子向量;
(3d)利用文档加密密钥对每个外包电子文档加密,将密文存储到相应的叶子节点中。
4.根据权利要求3所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
步骤(3b)中所述数据向量分裂方法的步骤如下:
3b1,生成维数均与目标数据向量维数相同的两个随机向量,将目标数据向量中的第2n+1、2n+2个元素值赋给两个随机向量中的第2n+1、2n+2个元素;
3b2,从比特向量b=(b1,…,bn)中选取一个任意未选过的第ι个元素值,其中,ι的取值范围为{1,2,…,n};
3b3,判断所选的元素值是否为0,若是,则执行第3b4步,否则,执行第3b5步;
3b4,将目标数据向量中的第2ι-1个元素值赋给第一个随机向量和第二个随机向量中的第2ι-1个元素;
3b5,在实数域上随机选取一个实数,赋给第一个随机向量中的第2ι-1个元素,用目标数据向量中的第2ι-1个元素值减去该随机数,将差值赋给第二个随机向量中的第2ι-1个元素;
3b6,在实数域上随机选取一个实数,赋给第一个随机向量中的第2ι个元素,用目标数据向量中的第2ι个元素值减去该随机数,将差值赋给第二个随机向量中的第2ι个元素。
5.根据权利要求1所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
对加密的索引树进行认证,具体包括以下步骤:
(4a)利用默克哈希认证方法,计算索引树中每个节点的摘要,存储在相应的节点中;
(4b)利用数字签名算法,计算索引树根节点中摘要的签名,公开所得的根签名;所述数字签名算法是指:RSA算法、DSA算法、ECDSA算法中的任意一个算法。
6.根据权利要求5所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
步骤(4a)中所述默克哈希认证方法的步骤如下:
4a1,选取索引树中的任意一个未被处理的节点;
4a2,判断所选节点是否为叶子节点,若是,则执行第4a3步,否则,执行第4a4步;
4a3,将所选节点的两个加密子向量分别作为两个字符串,用连接运算符连接所选节点中的密文和这两个字符串,利用安全散列函数将由连接符连接所得的字符串映射成一个长度固定的随机字符串,作为所选节点的摘要;所述安全散列函数是指:SHA-224、SHA-256,SHA-512中的任意一个算法;
4a4,将所选节点的两个加密子向量分别作为两个字符串,用连接符连接这两个字符串以及所选节点的所有孩子节点中的摘要,利用安全散列函数将由连接符连接所得的字符串映射成一个长度固定的随机字符串,作为所选节点的摘要;所述安全散列函数是指:SHA-224、SHA-256,SHA-512中的任意一个算法。
7.根据权利要求1所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
生成查询请求的陷门具体包括以下步骤:
(5a)利用查询请求向量化方法,将查询请求W′={w1,w2,…,wz}转化为一个n维的初始查询向量,其中,wτ表示第τ个查询关键词,τ=1,2,…,z,z表示查询关键词的数量;
查询请求向量化方法的步骤如下:
5a1,生成一个n维的随机向量;
5a2,从查询请求W′={w1,w2,…,wz}中选取一个任意未选过的查询关键词;
5a3,判断所选的查询关键词是否在字典中,若是,执行第5a4步,否则,执行第5a5步;
5a4,将常数1赋给随机向量中与所选查询关键词对应的元素;
5a5,将常数0赋给随机向量中与所选查询关键词对应的元素;
(5b)查询用户随机选取一个n维的实数向量作为混淆向量,将初始查询向量与混淆向量相加,得到安全查询向量,发送给数据拥有者;
(5c)数据拥有者利用查询向量分裂方法,将安全查询向量分裂成两个随机向量,作为安全查询向量的两个子向量;
查询向量分裂方法的步骤如下:
5c1,生成维数均与安全查询向量维数相同的两个随机向量;
5c2,从比特向量b=(b1,…,bn)中选取一个任意未选过的元素值;
5c3,判断所选的元素值是否为0,若是,执行第5c4步,否则,执行第5c5步;
5c4,在实数域上随机选取一个实数,赋给第一个随机向量对应位置上的元素,用安全查询向量中与所选元素对应的元素值减去该随机数,将差值赋给第二个随机向量中与所选元素对应的元素;
5c5,将安全查询向量中与所选元素对应的元素值赋给第一个随机向量和第二个随机向量中与所选元素对应的元素;
所述陷门辅助信息生成公式如下:
其中,分别表示两个辅助向量中的第i个元素,分别表示两个辅助矩阵中第i行、第j列的元素,i=1,2,…,2n+2,j=1,2,…,n,β表示在实数域上随机选取的正实数,ε1,ε2,μ1,μ2表示在实数域上随机选取的四个实数,分别表示两个可逆矩阵中第i行、第j列的元素,分别表示安全查询向量的两个子向量中第j个元素,∑表示求和操作;
(5e)查询用户对陷门生成辅助信息集中的第一辅助矩阵和第二辅助矩阵进行转置操作,分别计算混淆向量和转置后的第一辅助矩阵、第二辅助矩阵的乘积,将两个乘积结果分别与陷门生成辅助信息集中的第一辅助向量第二辅助向量相加,组成查询请求的陷门;
(5f)查询用户向云服务器提交查询请求的陷门。
8.根据权利要求1所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
对加密及认证后的索引树进行查询具体包括以下步骤:
(6a)将索引树的根节点作为当前检索访问节点,利用深度优先搜索方法,选出k个密文,作为查询结果,其中,k表示所需查询结果的数量,且5≤k≤50;
所述深度优先搜索方法的步骤如下:
6a1,设置一个空列表,作为查询结果列表;
6a2,判断当前检索访问节点是否为非叶子节点,若是,则执行第6a3步,否则,执行第6a6步;
6a3,判断查询结果列表中的元组数量是否等于所需查询结果的数量,若是,则执行第6a4步,否则,执行第6a5步;
6a4,选取查询结果列表中最小的得分,判断当前检索访问节点的得分是否大于最小得分,若是,则执行第6a5步,否则,执行第6a10步;
6a5,将当前检索访问节点的每个孩子节点中的两个加密子向量,分别与查询请求的陷门中的两个向量相乘,两个乘积结果相加后得到相应孩子节点的得分,将得分最大的孩子节点作为新的检索访问节点,执行第6a2步;
6a6,判断查询结果列表中的元组数量是否等于所需查询结果的数量,若是,则执行第6a7步,否则,执行第6a9步;
6a7,选取查询结果列表中最小的得分,判断当前检索访问节点的得分是否大于最小得分,若是,则执行第6a8步,否则,执行第6a10步;
6a8,删除最小得分对应的元组,将当前检索访问节点中的密文和对应的得分作为元组,存储到查询结果列表中,执行第6a10步;
6a9,将当前检索访问节点中的两个加密子向量分别与查询请求的陷门中的两个向量相乘,两次乘积结果相加后得到当前检索访问节点的得分,将当前检索访问节点中的密文和对应的得分作为元组存储到查询结果列表中,执行第6a10步;
6a10,返回上一个检索访问节点,判断当前检索访问节点是否有未被访问的孩子节点,若是,则执行第6a11步,否则,执行第6a12步;
6a11,将当前检索访问节点中未被访问的孩子节点作为新的检索访问节点,执行第6a2步;
6a12,判断当前检索访问节点是否为根节点,若是,则执行第6a13步,否则,执行第6a10步;
6a13,结束检索;
(6b)选取查询结果所在的k个叶子节点到根节点路径上每个节点中的两个加密子向量以及相应兄弟节点中的摘要,作为辅助验证信息返回给查询用户。
9.根据权利要求1所述基于安全索引的可验证多关键词密文查询方法,其特征在于:
验证查询结果正确性具体包括以下步骤:
(7a)利用查询结果和辅助验证信息重新计算根节点的摘要;
(7b)利用数字签名的公钥对公开的根签名进行解密,得到真正的根摘要;
(7c)比较新生成的根节点的摘要与真正的根摘要,若相同,则执行步骤(7d),否则执行步骤(7e);
(7d)利用文档加密密钥解密查询结果;
(7e)丢弃收到的查询结果。
10.一种基于安全索引的可验证多关键词密文查询系统,其特征在于,包括:
索引树构建模块,用于为电子文档集构建一棵索引树;
索引树加密模块,用于利用可搜索密钥对索引树进行加密;
索引树认证模块,用于利用默克哈希认证方法对加密的索引树进行认证;
陷门生成模块,用于在不泄露可搜索密钥的情况下生成查询请求的陷门;
查询模块,用于对加密及认证后的索引树进行查询,获取查询结果和相应辅助验证信息;
查询结果验证模块,用于验证查询结果正确性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011376509.8A CN112446041A (zh) | 2020-11-30 | 2020-11-30 | 一种基于安全索引的可验证多关键词密文查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011376509.8A CN112446041A (zh) | 2020-11-30 | 2020-11-30 | 一种基于安全索引的可验证多关键词密文查询方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112446041A true CN112446041A (zh) | 2021-03-05 |
Family
ID=74738885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011376509.8A Pending CN112446041A (zh) | 2020-11-30 | 2020-11-30 | 一种基于安全索引的可验证多关键词密文查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112446041A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112966086A (zh) * | 2021-03-12 | 2021-06-15 | 湖南大学 | 一种基于位置敏感哈希函数的可验证模糊搜索方法 |
CN113420175A (zh) * | 2021-06-15 | 2021-09-21 | 西安电子科技大学 | 一种可验证细粒度加密图像检索方法及系统 |
CN115860932A (zh) * | 2022-11-14 | 2023-03-28 | 临沂大学 | 一种跨分片交易方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815350A (zh) * | 2017-01-19 | 2017-06-09 | 安徽大学 | 一种云环境中动态的密文多关键词模糊搜索方法 |
CN109885640A (zh) * | 2019-01-08 | 2019-06-14 | 南京邮电大学 | 一种基于α叉索引树的多关键词密文排序检索方法 |
CN110908959A (zh) * | 2019-10-30 | 2020-03-24 | 西安电子科技大学 | 一种支持多关键字和结果排序的动态可搜索加密方法 |
CN111614470A (zh) * | 2020-05-27 | 2020-09-01 | 贵州大学 | 基于改进Merkle-Tree认证方法的可验证多关键字搜索方法 |
-
2020
- 2020-11-30 CN CN202011376509.8A patent/CN112446041A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815350A (zh) * | 2017-01-19 | 2017-06-09 | 安徽大学 | 一种云环境中动态的密文多关键词模糊搜索方法 |
CN109885640A (zh) * | 2019-01-08 | 2019-06-14 | 南京邮电大学 | 一种基于α叉索引树的多关键词密文排序检索方法 |
CN110908959A (zh) * | 2019-10-30 | 2020-03-24 | 西安电子科技大学 | 一种支持多关键字和结果排序的动态可搜索加密方法 |
CN111614470A (zh) * | 2020-05-27 | 2020-09-01 | 贵州大学 | 基于改进Merkle-Tree认证方法的可验证多关键字搜索方法 |
Non-Patent Citations (2)
Title |
---|
QIUYUN TONG 等: "VPSL: Verifiable Privacy-Preserving Data Search for Cloud-Assisted Internet of Things", 《IEEE TRANSACTIONS ON CLOUD COMPUTING》 * |
严小龙等: "支持动态更新的多关键词密文排序检索", 《计算机工程与设计》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112966086A (zh) * | 2021-03-12 | 2021-06-15 | 湖南大学 | 一种基于位置敏感哈希函数的可验证模糊搜索方法 |
CN113420175A (zh) * | 2021-06-15 | 2021-09-21 | 西安电子科技大学 | 一种可验证细粒度加密图像检索方法及系统 |
CN113420175B (zh) * | 2021-06-15 | 2022-12-09 | 西安电子科技大学 | 一种可验证细粒度加密图像检索方法及系统 |
CN115860932A (zh) * | 2022-11-14 | 2023-03-28 | 临沂大学 | 一种跨分片交易方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106803784B (zh) | 安全多媒体云存储中基于格的多用户模糊可搜索加密方法 | |
CN109450935B (zh) | 云存储中可验证的语义安全的多关键词搜索方法 | |
CN107256248B (zh) | 云存储安全中基于通配符的可搜索加密方法 | |
WO2022099495A1 (zh) | 云计算环境中的密文搜索方法及系统、设备 | |
CN112446041A (zh) | 一种基于安全索引的可验证多关键词密文查询方法及系统 | |
CN112989375B (zh) | 一种分级优化加密无损隐私保护方法 | |
CN112332979B (zh) | 云计算环境中的密文搜索方法及系统、设备 | |
CN110222081B (zh) | 多用户环境下基于细粒度排序的数据密文查询方法 | |
CN111930881B (zh) | 基于国密算法的连接关键词认证可搜索加密方法 | |
CN106934301B (zh) | 一种支持密文数据操作的关系型数据库安全外包数据处理方法 | |
CN115314295B (zh) | 一种基于区块链的可搜索加密技术方法 | |
Kissel et al. | Verifiable phrase search over encrypted data secure against a semi-honest-but-curious adversary | |
CN111177787B (zh) | 多数据拥有者环境中基于属性的连接关键字搜索方法 | |
CN112560075B (zh) | 一种基于椭圆曲线的轻量级可搜索加密方法及装置 | |
CN116684062B (zh) | 基于代理重加密的云计算外包和数据动态分享方法及系统 | |
Zhou et al. | Evss: An efficient verifiable search scheme over encrypted cloud data | |
CN110222012B (zh) | 单一用户环境下基于细粒度排序的数据密文查询方法 | |
KR100951034B1 (ko) | 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법 | |
CN113158245A (zh) | 一种文档搜索的方法、系统、设备及可读存储介质 | |
Das et al. | Algorithm for multi keyword search over encrypted data in cloud environment | |
CN112836005B (zh) | 一种基于pca的密文排序搜索方法及系统 | |
CN116127498B (zh) | 一种密文检索结果可验证的多关键字可搜索加密方法 | |
CN113420175B (zh) | 一种可验证细粒度加密图像检索方法及系统 | |
Ma et al. | PPGJ: A privacy‐preserving general join for outsourced encrypted database | |
CN117375801B (zh) | 基于sm9的指定服务器可搜索加密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |