一种密文云数据复杂查询方法

文档序号:6552258阅读:316来源:国知局
一种密文云数据复杂查询方法
【专利摘要】密文云数据复杂查询方法,包括:数据拥有者对其文件集构建二进制向量索引,并使用对称密码机制加密文件集,然后将加密文件集发送至云端。当某用户要求访问包含某些关键词的文件时,向数据拥有者申请查询令牌,查询令牌中包含有关键词集合和所有文件的二进制向量索引。用户根据查询关键词与关键词集合构建查询二进制向量,并将查询二进制向量与每个文件的索引二进制向量进行内积计算判断该文件是否包含用户的查询关键词。若该文件包含有查询关键词,则进一步构建与查询关键词对应的新索引二进制向量。用户将查询关键词根据逻辑表达式生成LSSS矩阵,并将新索引二进制向量与LSSS矩阵进行内积计算以进一步判断该文件是否满足查询逻辑表达式。本发明能实现精确的复杂查询,并能实现比目前广泛使用的倒排索引更高的查询效率。
【专利说明】一种密文云数据复杂查询方法
【技术领域】
[0001]本发明属于云存储和信息检索领域,具体涉及一种密文云数据复杂查询方法。
【背景技术】
[0002]在云存储环境下,要保护用户数据机密性和隐私性,加密是一种常用的方法,但是数据加密后,密文数据检索问题亟待解决。
[0003]为解决密文云数据检索问题,目前主要有两种典型的方法:一种是直接对密文进行线性搜索,即对密文中单词逐个进行比对,确认关键词是否存在以及出现的次数;第二种方法基于安全索引,即先对文档建立关键词索引,然后将文档和索引加密后上传至云端,搜索时从索引中查询关键词是否存在于某个文档中。直接对密文线性搜索的方法缺点在于搜索效率不高,且无法应对海量数据的搜索场景。基于索引的密文检索方法是目前的研究主流,原因是其查询效率更好,安全性能更高,适合用于大规模的云存储密文检索系统。
[0004]在已有的研究工作中,所有方案都是采用倒排索引机制,还没有使用二进制向量索引的方案。并且目前关于复杂查询的方案比较少,而查询结果的准确性更是亟待提高。
[0005]采用二进制向量索引在数据拥有者端只需要保留较少的信息,就可以实现高效安全的密文数据检索。采用LSSS矩阵可以实现精确的复杂查询。
[0006]密文云数据查询是保证云存储中数据机密性和可检索性的关键技术,对于推进云存储的快速发展具有重要的理论意义和实用价值。

【发明内容】

[0007]针对现有技术的缺陷,本发明的目的在于提供一种密文云数据复杂查询方法,旨在提高数据查询准确性、查询效率与安全性。
[0008]为实现上述目的,本发明提供了一种密文云数据复杂查询方法,包括以下步骤: 步骤1.数据拥有者对其文件集构建索引,使用二进制向量索引,即索引中每一位代表
一个关键词,以O和I表示相应关键词是否存在于此文件中;
步骤2.数据拥有者基于单个文件或数据块使用对称密码机制加密文件集;
步骤3.数据拥有者将加密文件集发送至云端;
步骤4.用户要求访问包含某些关键词的文件时,向数据拥有者申请查询令牌,查询令牌中包含有关键词集合和所有文件的二进制向量索引;
步骤5.用户根据查询关键词与关键词集合构建查询二进制向量,并将查询二进制向量与每个文件的索引二进制向量进行内积计算判断该文件是否包含用户的查询关键词;步骤6.若该文件包含有查询关键词,则进一步构建与查询关键词对应的新索引二进制向量;
步骤7.用户将查询关键词根据逻辑表达式生成LSSS (Linear Secret Sharing Scheme,线性秘密共享方案)矩阵,并将新索引二进制向量与LSSS矩阵进行内积计算以进一步判断该文件是否满足查询逻辑表达式。[0009]步骤I具体包括以下子步骤:
1.1数据拥有者使用已有的分词算法对其文件集提取关键词,构建关键词集合;
1.2数据拥有者根据每个文件中是否包含关键词集合中的对应关键词构建二进制向量索引,以I表示相应关键词存在于此文件中,以O表示相应关键词不存在于此文件中。
[0010]步骤2中,如果是基于单个文件加密,数据拥有者根据文件集中文件数量,利用对称密码机制随机生成对应数目的对称密钥,并利用对称密钥对文件进行加密生成密文,每个文件的加密密钥均不同;如果是基于数据块加密,数据拥有者根据设定数据块大小将文件集中文件进行分块,利用对称密码机制随机生成对应数目的对称密钥,并利用对称密钥对数据块进行加密生成密文,每个数据块的加密密钥均不同。
[0011]步骤4具体包括以下子步骤:
4.1用户向数据拥有者发送查询授权申请,数据拥有者根据其安全策略决定是否向用户以及针对哪些文件集颁发授权令牌,令牌中包含有授权文件集的关键词集合以及授权文件的二进制向量索引;
4.2数据拥有者使用通用的安全传输机制将令牌发送给用户。
[0012]步骤5具体包括以下子步骤:
5.1首先构建查询二进制向量,其方法如下:用户根据查询关键词是否在关键词集合中构建查询二进制向量,以I表不相应关键词存在于关键词集合中,以O表不相应关键词不存在于关键词集合中。
5.2将查询二进制向量与每个文件的索引二进制向量进行内积计算,当内积计算结果为非O时,表明该文件包含查询关键词,当内积计算结果为O时,表明该文件不包含查询关键词。并且内积计算结果的值越大,表明包含的关键词越多。
假设A是文档Fi的二进制索引向量,其中ri[j] e {0,1}表示关键词Wi是否在文档中存在;Q是一个查询向量,其屮Q[j] e {0,1}表示关键词%是否在查询关键词集合W中。文档Fi与查询关键词集合W的相似性得分通过内积方式计算出来,即rQ。
[0013]步骤6中,构建与查询关键词对应的新索引二进制向量方法如下:在文件的索引二进制向量中,将查询关键词对应位置的二进制位保留,将其它非查询关键词对应位去掉。
[0014]步骤7具体包括以下子步骤:
7.1首先根据查询逻辑表达式构建LSSS矩阵,其方法如下:首先将根节点向量设为(1),其向量长度为1,并将变量C初始化为1,父节点使用向量V标记。如父节点为OR门,则孩子节点由V标记;如父节点为AND门,则左孩子节点为V I 11,右孩子节点为(0,……O) I |_1,0的个数为C,并且C = C+1。完成整棵树的标记后,叶子节点组成LSSS矩阵M的行,若长度不等,则填充O。
7.2将新索引二进制向量与LSSS矩阵进行内积计算,当且仅当计算结果为(I, O, O,…,O)时,表明文件满足查询条件,否则不满足查询条件。
[0015]一种密文云数据复杂查询方法,包括数据拥有者、用户和云端,数据拥有者用于使用已有分词算法对其文件集提取关键词,并构建所有文件的二进制向量索引;数据拥有者还用于对文件使用对称密码机制进行加密,如果是基于数据块,还要将文件按设定数据块大小进行分块,然后使用对称密码机制进行加密,然后将加密的文件发送到云端;用户用于向数据拥有者请求查询授权;数据拥有者还用于按照指定安全策略向用户发放授权令牌;用户还用于使用令牌信息构建查询二进制向量;用户还用于使用查询二进制向量与所有文件的索引二进制向量进行内积计算以判断文件是否包含查询关键词;用户还用于构建与查询关键词对应的新索引二进制向量;用户还用于将查询关键词根据逻辑表达式生成LSSS矩阵,并将新索引二进制向量与LSSS矩阵进行内积计算;用户还用于向云端请求包含查询关键词的文件密文,并使用令牌中包含的文件密钥解密文件;云端用于存放数据,并响应用户的读写请求。
[0016]通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的优势:
1.查询准确度高,使用查询逻辑表达式可以表示复杂的查询条件,使用LSSS矩阵可以得到与查询逻辑表达式完全相符的查询结果。
2.数据更新方便,建立索引的过程由数据拥有者完成,关键词集合信息由数据拥有者保管,当有文件需要更新时,数据拥有者只需要更新文件的二进制向量索引,并重新加密文件,然后将加密的文件发送至云端。
3.使用二进制向量内积计算非常高效,只需要在用户端增加少量的存储就可以实现高效的检索。
【专利附图】

【附图说明】
[0017]图1为本发明所涉及的各实体关系图。
图2为本发明方法流程图。
图3为本发明二进制向量索引图。
图4为本发明LSSS矩阵构造图。
【具体实施方式】
[0018]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0019]以下首先就本发明的技术术语进行解释和说明:
数据拥有者:指文件的拥有者,需要将文件存储在云中,且制定文件的访问控制策略; 用户:需要读取数据拥有者发布的文件;
云端或云存储:存储数据拥有者的文件,会忠实执行数据拥有者和合法用户发出的操作请求,但在条件允许时会偷窥文件内容;
文件:数据拥有者需要上传至云端的数据;
文件块:文件分块,数据拥有者对同一文件的不同分块采用不同的加密密钥;
对称密码机制:是一种传统密码机制,加密和解密采用相同密钥,效率较高,在本发明中采用该机制加密文件或文件块;
对称密钥:对称密码机制中随机生成的二进制数据;
LSSS:线性秘密共享方案,是其英文全称Linear Secret Sharing Scheme的缩写。
[0020]以下结合实施例和附图对本发明做进一步说明。
[0021]如图1所示,本发明的密文云数据复杂查询方法是应用在加密云存储系统中,该系统包括数据拥有者、用户以及云端。
[0022]在本实施方式中,数据拥有者为某科研单位秘书,传至云端的数据是该单位的科研项目文件,主要用于单位内人员包括有出差在外的人员在项目申请以及开发过程中的数
据共享。
[0023]如图2所示,本发明的密文云数据复杂查询方法包括以下步骤:
步骤1.数据拥有者对其文件集构建索引,使用二进制向量索引,即索引中每一位代表一个关键词,以O和I表示相应关键词是否存在于此文件中,如图3所示。本步骤具体包括以下子步骤:
1.1数据拥有者使用已有的分词算法对其文件集提取关键词,构建关键词集合;举例而言,如图3所示,关键词集合{云计算,云存储,加密,数据检索,二进制向量}。
1.2数据拥有者根据每个文件中是否包含关键词集合中的对应关键词构建二进制向量索引,以I表示相应关键词存在于此文件中,以O表示相应关键词不存在于此文件中。 [0024]举例而言,如图3所示,文件I包含关键词{云计算,加密},其索引二进制向量为f! = (1,0, 1,0,O),文件2包含关键词{云存储,加密,数据检索,二进制向量},其索引二进制向量为 f2 = (O, I, I, I, I)。
[0025]步骤2.数据拥有者使用对称密码机制加密文件集(可以基于单个文件或数据块);
[0026]步骤3.数据拥有者将加密文件集发送至云端;
[0027]步骤4.用户要求访问包含某些关键词的文件时,向数据拥有者申请查询令牌,查询令牌中包含有关键词集合和所有文件的二进制向量索引。本步骤具体包括以下子步骤:
4.1用户向数据拥有者发送查询授权申请,数据拥有者根据其安全策略决定是否向用户以及针对哪些文件集颁发授权令牌,令牌中包含有授权文件集的关键词集合以及授权文件的二进制向量索引;
4.2数据拥有者使用通用的安全传输机制将令牌发送给用户。
[0028]步骤5.用户根据查询关键词与关键词集合构建查询二进制向量,并将查询二进制向量与每个文件的索引二进制向量进行内积计算判断该文件是否包含用户的查询关键词。本步骤具体包括以下子步骤:
5.1首先构建查询二进制向量,其方法如下:用户根据查询关键词是否在关键词集合中构建查询二进制向量,以I表不相应关键词存在于关键词集合中,以O表不相应关键词不存在于关键词集合中。
5.2将查询二进制向量与每个文件的索引二进制向量进行内积计算,当内积计算结果为非O时,表明该文件包含查询关键词,当内积计算结果为O时,表明该文件不包含查询关键词。并且内积计算结果的值越大,表明包含的关键词越多。
[0029]举例而言,设查询关键词为=W1 = “云计算”,W2 = “云存储”,W3 = “加密”,W4 = “数据检索”,查询表达式为:(W1Or w2) and w3and W4,贝U查询二进制向量为q = (I, I, I, 1,0)。
[0030]举例而言,如图3所示,文件I包含关键词{云计算,加密},其索引二进制向量为f! = (1,0, 1,0,O),文件2包含关键词{云存储,加密,数据检索,二进制向量},其索引二进制向量为f2= (0,1,1,1,I)。将查询向量与文件I的索引向量进行内积计算:q.fi =(I, 1,1,1,0) -(1,0, I, O, O)^1 = 2,将查询向量与文件2的索引向量进行内积计算:q*f2 =(1,1,1,1,0).(O, I, I, I, I)-1 = 3。
[0031]步骤6.若该文件包含有查询关键词,则进一步构建与查询关键词对应的新索引二进制向量;
步骤6中,构建与查询关键词对应的新索引二进制向量方法如下:在文件的索引二进制向量中,将查询关键词对应位置的二进制位保留,将其它非查询关键词对应位去掉。
[0032]举例而言,文件I的新索引二进制向量为f/ = (1,0,1,0),文件2的新索引二进制向量为 f2’ = (O, I, I, I)。
[0033]步骤7.用户将查询关键词根据逻辑表达式生成LSSS矩阵,并将新索引二进制向量与LSSS矩阵进行内积计算以进一步判断该文件是否满足查询逻辑表达式。本步骤具体包括以下子步骤:
7.1首先根据查询逻辑表达式构建LSSS矩阵,其方法如下:首先将根节点向量设为(I),其向量长度为1,并将变量C初始化为1,父节点使用向量V标记。如父节点为OR门,则孩子节点由V标记;如父节点为AND门,则左孩子节点为V I 11,右孩子节点为(0,……O) I |_1,0的个数为C,并且C = C+1。完成整棵树的标记后,叶子节点组成LSSS矩阵M的行,若长度不等,则填充O。
7.2将新索引二进制向量与LSSS矩阵进行内积计算,当且仅当计算结果为(I, O, O,…,O)时,表明文件满足查询条件,否则不满足查询条件。
[0034]举例而言,要找到满足查询条件的文件,首先构造LSSS矩阵,见图4。构造方法如下:首先将根节点向量设为(1),其向量长度为1,并将变量C初始化为1,父节点使用向量V标记。如父节点为OR门,则孩子节点由V标记;如父节点为AND门,则左孩子节点为v| 11,右孩子节点为(0,……O) 1-1,0的个数为C,并且c = c+1。完成整棵树的标记后,叶子节点组成LSSS矩阵M的行,若长度不等,则填充O。
[0035]矩阵M构造完成后,逐条查询每个文件的索引向量,文件I的新索引二进制向量为f/ = (1,0,1,0),计算41= (1,0,I),因此文件I不满足查询条件。文件2的新索引二进制向量为f2’ = (O, I, I, I),计算f2’M = (I, O, O),因此文件2满足查询条件。
【权利要求】
1.一种密文云数据复杂查询方法,其特征在于,包括以下步骤: 步骤1.数据拥有者对其文件集构建索引,使用二进制向量索引,即索引中每一位代表一个关键词,以O和I表示相应关键词是否存在于此文件中; 步骤2.数据拥有者基于单个文件或数据块使用对称密码机制加密文件集; 步骤3.数据拥有者将加密文件集发送至云端; 步骤4.用户要求访问包含某些关键词的文件时,向数据拥有者申请查询令牌,查询令牌中包含有关键词集合和所有文件的二进制向量索引; 步骤5.用户根据查询关键词与关键词集合构建查询二进制向量,并将查询二进制向量与每个文件的索引二进制向量进行内积计算判断该文件是否包含用户的查询关键词;步骤6.若该文件包含有查询关键词,则进一步构建与查询关键词对应的新索引二进制向量; 步骤7.用户将查询关键词根据逻辑表达式生成LSSS矩阵,并将新索引二进制向量与LSSS矩阵进行内积计算以进一步判断该文件是否满足查询逻辑表达式。
2.根据权利要求1所述的密文云数据复杂查询方法,其特征在于,步骤I具体包括以下子步骤: 1.1数据拥有者使用已有的分词算法对其文件集提取关键词,构建关键词集合; 1.2数据拥有者根据每个文件中是否包含关键词集合中的对应关键词构建二进制向量索引,以I表示相应关键词存在于此文件中,以O表示相应关键词不存在于此文件中。
3.根据权利要求1所述的密文云数据复杂查询方法,其特征在于,步骤2中,如果是基于单个文件加密,数据拥有者根据文件集中文件数量,利用对称密码机制随机生成对应数目的对称密钥,并利用对称密钥对文件进行加密生成密文,每个文件的加密密钥均不同;如果是基于数据块加密,数据拥有者根据设定数据块大小将文件集中文件进行分块,利用对称密码机制随机生成对应数目的对称密钥,并利用对称密钥对数据块进行加密生成密文,每个数据块的加密密钥均不同。
4.根据权利要求1所述的密文云数据复杂查询方法,其特征在于,步骤4具体包括以下子步骤: .1.1用户向数据拥有者发送查询授权申请,数据拥有者根据其安全策略决定是否向用户以及针对哪些文件集颁发授权令牌,令牌中包含有授权文件集的关键词集合以及授权文件的二进制向量索引; .1.2数据拥有者使用通用的安全传输机制将令牌发送给用户。
5.根据权利要求1所述的密文云数据复杂查询方法,其特征在于,步骤5具体包括以下子步骤: .1.1首先构建查询二进制向量,其方法如下:用户根据查询关键词是否在关键词集合中构建查询二进制向量,以I表不相应关键词存在于关键词集合中,以O表不相应关键词不存在于关键词集合中; .1.2将查询二进制向量与每个文件的索引二进制向量进行内积计算,当内积计算结果为非O时,表明该文件包含查询关键词,当内积计算结果为O时,表明该文件不包含查询关键词,并且内积计算结果的值越大,表明包含的关键词越多。
6.根据权利要求1所述的密文云数据复杂查询方法,其特征在于,步骤6中,构建与查询关键词对应的新索引二进制向量方法如下:在文件的索引二进制向量中,将查询关键词对应位置的二进制位保留,将其它非查询关键词对应位去掉。
7.根据权利要求1所述的密文云数据复杂查询方法,其特征在于,步骤7具体包括以下子步骤: 1.1首先根据查询逻辑表达式构建LSSS矩阵,其方法如下:首先将根节点向量设为(I),其向量长度为1,并将变量c初始化为I,父节点使用向量r标记;如果父节点为OR门,则孩子节点由^标记;如父节点为AND门,则左孩子节点为ιΗ 11,右孩子节点为(0,……O) 11-1,0的个数为C,并且c=c+l ;完成整棵树的标记后,叶子节点组成LSSS矩阵#的行,若长度不等,则填充O; 1.2将新索引二进制向量与LSSS矩阵进行内积计算,当且仅当计算结果为(1,O,0,...,O)时,表明文件满足查询条件,否则不满足查询条件。
8.—种密文云数据复杂查询方法,包括数据拥有者、用户和云端,其特征在于, 数据拥有者用于使用已有分词算法对其文件集提取关键词,并构建所有文件的二进制向量索引; 数据拥有者还用于对文件使用对称密码机制进行加密,如果是基于数据块,还要将文件按设定数据块大小进行分块,然后使用对称密码机制进行加密,然后将加密的文件发送到云端; 用户用于向数据拥有者请求查询授权; 数据拥有者还用于按照指定安全策略向用户发放授权令牌; 用户还用于使用令牌信息构建查询二进制向量; 用户还用于使用查询二进制向量与所有文件的索引二进制向量进行内积计算以判断文件是否包含查询关键词; 用户还用于构建与查询关键词对应的新索引二进制向量; 用户还用于将查询关键词根据逻辑表达式生成LSSS矩阵,并将新索引二进制向量与LSSS矩阵进行内积计算; 用户还用于向云端请求包含查询关键词的文件密文,并使用令牌中包含的文件密钥解密文件; 云端用于存放数据,并响应用户的读写请求。
【文档编号】G06F17/30GK104036050SQ201410316970
【公开日】2014年9月10日 申请日期:2014年7月4日 优先权日:2014年7月4日
【发明者】陈兰香 申请人:福建师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1