CN110019011A - 一种密文检索方法及设备 - Google Patents
一种密文检索方法及设备 Download PDFInfo
- Publication number
- CN110019011A CN110019011A CN201711160966.1A CN201711160966A CN110019011A CN 110019011 A CN110019011 A CN 110019011A CN 201711160966 A CN201711160966 A CN 201711160966A CN 110019011 A CN110019011 A CN 110019011A
- Authority
- CN
- China
- Prior art keywords
- vector
- document
- value
- ciphertext
- keyword
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/144—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种密文检索方法及设备,用于提高检索效率,提高数据的安全性。其中的密文检索方法包括:根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量;根据获得的至少一个文档向量建立索引树,所述索引树;对所述每个明文文档和所述索引树进行加密,生成密文文档和密文索引树,并上传至服务器;接收数据使用者输入的查询语句,对所述查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器;其中,所述密文查询向量用于从所述密文索引树中查找与所述密文查询向量对应的密文文档。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种密文检索方法及设备。
背景技术
目前,越来越多的企业或个人,即数据拥有者会选择将数据存储在云服务器上,以节约存储空间。为了保证数据的安全性,数据拥有者会先给数据进行加密,之后再将加密后的数据上传至云服务器。加密的数据就失去了灵活性,想要从云服务器上大量的加密数据中获取需要的数据,这就需要将全部数据下载后解密,效率非常低。
鉴于此,现有技术中针对加密数据进行检索以获得需要的数据。目前对于密文检索的方式主要是排序检索和基于索引的检索。排序检索主要是通过查询关键词和文档中所有的关键词一一比对,实现匹配。但是排序检索需要对所有的关键词进行扫描,如果数据量较大,那么扫描时间就较长,检索效率较低。基于索引的检索主要是通过查询索引,实现文档的定位查找,检索时间较短。但是索引的建立必须维护数据的安全,否则会因索引泄露数据。目前基于索引的检索都是根据关键词建立索引,这就有可能泄露关键词的分布信息,安全性较低。
可见,目前的密文检索方式要么效率低,要么安全性低,二者不能兼顾。
发明内容
本发明实施例提供一种密文检索方法及设备,用于提高检索效率,提高数据的安全性。
第一方面,提供了一种密文检索方法,该密文检索方法包括:
根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量;
根据获得的至少一个文档向量建立索引树,所述索引树;
对所述每个明文文档和所述索引树进行加密,生成密文文档和密文索引树,并上传至服务器;
接收数据使用者输入的查询语句,对所述查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器;其中,所述密文查询向量用于从所述密文索引树中查找与所述密文查询向量对应的密文文档。
可选的,根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量,包括:
对所述数据拥有者上传的每个明文文档进行分析,获得关键词集合;
为每个所述明文文档建立一个(N+U)维向量,获得所述至少一个文档向量;
其中,N为所述关键词集合中关键词的个数,U为在所述关键词中添加的干扰词的个数;所述(N+U)维向量中N维中的每一维对应所述关键词集合中的一个关键词,每一维的值设置为第一值,所述第一值为每一维对应的关键词在所述明文文档中的出现的频率值;随机选取U个干扰词中的V个干扰词,所述V个干扰词中在(N+U)维向量中的值设置为第二值,其余的U-V个干扰词在(N+U)维向量中的值设置为第三值,所述第二值及所述第三值使得所述关键词集合中的关键词的分布率位于预设范围内,U、V为正整数。
可选的,根据获得的至少一个文档向量建立索引树,包括:
针对所有明文文档中的每个明文文档,生成一个叶子节点,获得多个叶子节点;其中,所述叶子节点用于存储所述明文文档对应的文档向量及所述明文文档的标识符;
根据所述多个叶子节点构建索引树,其中,所述索引树为平衡二叉树,所述多个叶子节点中的任意两个叶子节点生成一个中间结点,所述索引树的每个中间结点存储一个N维向量,用于指示所述中间结点包括的叶子节点是否存在关键词。
可选的,所述中间结点包括左子结点和右子结点;
其中,若所述左子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点包括关键词,或所述右子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点包括关键词,则所述中间结点的向量的第i维的值设置为第四值,所述第四值用于指示所述中间结点包括的叶子节点存在关键词;
若所述左子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点不包括关键词,且所述右子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点不包括关键词,则所述中间结点的向量的第i维的值设置为第五值,所述第五值用于指示所述中间结点包括的叶子节点不存在关键词。
可选的,对所述明文文档进行加密,生成密文文档,包括:
确定一个(N+U)维向量S,其中,所述(N+U)维向量中的每一维的值是随机生成的,为1或0;
计算随机生成的两个(N+U)×(N+U)维向量的可逆矩阵,获得两个可逆矩阵M1和M2;
随机选择两个密钥sk1和sk2;
以所述向量S、所述两个可逆矩阵M1和M2及两个密钥sk1和sk2作为新的密钥,为所述明文文档进行加密,生成密文文档。
可选的,对所述索引树进行加密,生成密文索引树,包括:
针对所述索引树的每个叶子节点的文档向量,通过所述向量S,将所述文档向量分裂成两个向量D1和D2;其中,若所述向量S的第j维的值为0,则设置所述向量D1和D2的第j维的值与所述文档向量的第j维的值相同;所述向量S的第j维的值为1,则随机设置所述向量D1和D2的第j维的值,且所述向量D1和D2的第j维的值之和与所述文档向量的第j维的值相同;
根据所述两个可逆矩阵M1和M2与所述两个向量D1和D2对所述文档向量进行加密,生成密文文档向量;
针对所述索引树的每个中间结点,生成一个静态哈希表,其中,所述静态哈希表的每一项的值通过所述两个密钥sk1和sk2进行加密;
将所述密文文档向量存储在所述索引树的叶子节点和将加密后的静态哈希表存储在所述索引树的中间结点,生成密文索引树。
可选的,接收数据使用者输入的查询语句,对所述查询语句进行向量化,包括:
根据所述查询语句生成一个(N+U)维向量Q,所述(N+U)维向量Q中的N维中每一维对应所述关键词集合中的一个关键词,第N+i维的值设置为一个随机选择的值;
其中,若所述关键词集合中的第i个关键词在所述查询语句中,则将所述N维向量Q中的每i维的值设置为第六值,所述第六值为包括所述第i个关键词的明文文档的数量与所有明文文档的比值;
若所述关键词集合中的第i个关键词不在所述查询语句中,则将所述(N+U)维向量Q中的每i维的值设置为第七值,所述第七值用于指示所述关键词集合中的第i个关键词不在所述查询语句中。
可选的,对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器,包括:
通过所述向量S将所述(N+U)维向量Q分裂成两个向量Q1和Q2,其中,若所述向量S的第j维的值为0,则随机设置所述向量Q1和Q2的第j维的值,且所述向量Q1和Q2的第j维的值之和与所述文档向量的第j维的值相同;所述向量S的第j维的值为1,则设置所述向量Q1和Q2的第j维的值与所述文档向量的第j维的值相同;
根据所述两个可逆矩阵M1和M2与所述两个向量Q1和Q2对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器。
第二方面,提供了一种密文检索方法,该密文检索方法包括:
接收客户端发送的密文查询向量,所述密文查询向量是所述客户端根据接收的查询语句进行向量化并加密获得的;
根据所述密文查询向量从预先存储的密文索引树中查找与所述密文查询向量匹配的密文文档向量;
计算所述密文查询向量与查找到的密文文档向量之间的相似度;
输出所述相似度大于预设阈值的密文文档向量对应的密文文档。
可选的,根据所述密文查询向量从预先存储的密文索引树中查找与所述密文查询向量匹配的密文文档向量,包括:
从所述索引树的根节点开始按照顺序进行查找与所述密文查询向量匹配的密文文档向量;其中,所述根节点为没有父节点的节点;
或,从所述索引树的根节点开始并行进行查找与所述密文查询向量匹配的密文文档向量,其中,从所述索引树的根节点开始查找,在遇到中间结点时,从所述中间结点包括的左子结点开始查找,并同时从所述中间结点包括的右子结点开始查找。
第三方面,提供一种密文检索设备,该密文检索设备包括:
向量化单元,用于根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量;
建立单元,用于根据获得的至少一个文档向量建立索引树;
加密单元,用于对所述每个明文文档和所述索引树进行加密,生成密文文档和密文索引树,并上传至服务器;
处理单元,用于接收数据使用者输入的查询语句,对所述查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器;其中,所述密文查询向量用于从所述密文索引树中查找与所述密文查询向量对应的密文文档。
第四方面,提供一种密文检索设备,该密文检索设备包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如第一方面任一项所述的方法。
第五方面,提供一种密文检索设备,该密文检索设备包括:
接收单元,用于接收客户端发送的密文查询向量,所述密文查询向量是所述客户端根据接收的查询语句进行向量化并加密获得的;
查找单元,用于根据所述密文查询向量从预先存储的密文索引树中查找与所述密文查询向量匹配的密文文档向量;
计算单元,用于计算所述密文查询向量与查找到的密文文档向量之间的相似度;
输出单元,用于输出所述相似度大于预设阈值的密文文档向量对应的密文文档。
第六方面,提供一种密文检索设备,该密文检索设备包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如第二方面任一项所述的方法。
第七方面,提供一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面或第二方面任一项所述的方法。
本发明实施例引入干扰词,根据关键词及干扰词对明文文档进行向量化,使得关键词的分布规律在预设范围内,这样就可以对敏感的词进行保护从而增加了安全性。再者,根据获得的至少一个文档向量建立索引树,在查找阶段,可以搜索索引树就能够查找密文文档,避免了逐个计算查询语句与所有文档的相关度来查找,在保证数据安全的同时有效的提高了检索效率。
附图说明
图1是本发明实施例提供的进行密文检索所涉及的网元之间的关系图;
图2是本发明实施例提供的一种密文检索方法的流程图;
图3为本发明实施例提供的一种密文检索方法的流程图;
图4为本发明实施例提供的密文检索设备的一种结构示意图;
图5为本发明实施例提供的密文检索设备的一种结构示意图;
图6为本发明实施例提供的密文检索设备的一种结构示意图;
图7为本发明实施例提供的密文检索设备的一种结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例中,密文检索是指对加密的文档进行检索,没有加密的文档称为明文文档,加密的文档称为密文文档。请参见图1,图1所示为进行密文检索所涉及的网元之间的关系图。图1包括客户端A、服务器和客户端B,客户端A也就是数据拥有者,数据拥有者对明文文档具有控制权。客户端B可以是数据访问者,客户端A和客户端B可以是同一个客户端,也可以是不同的客户端,其都可以是电脑。图1以客户端B和客户端A不是同一个客户端为例。服务器可以是云服务器。
明文文档在上传服务器之前,数据拥有者可以通过客户端A可以对明文文档进行加密,将加密后的文档上传至服务器。同时,客户端A也可以根据明文文档生成索引,并对索引进行加密,将加密后的索引上传至服务器。当数据访问者需要访问服务器上存储的密文文档时,可以通过客户端B向服务器发送查询请求,服务器可以根据接收端的查询请求根据存储的加密索引进行检索,检索出密文文档,可以将密文文档反馈给客户端B。其中,数据访问者可以就是数据拥有者,客户端B可以就是客户端A,如果数据访问者不是数据拥有者,那么数据拥有者可以授权给数据访问者,使得数据访问者具有访问数据拥有者的权限。
现有技术中针对加密数据进行检索的方式要么效率低,要么精确度不高,要么安全性较低。鉴于此,本发明实施例引入干扰词,根据关键词及干扰词对明文文档进行向量化,使得关键词的分布规律在预设范围内,这样就可以对敏感的词进行保护从而增加了安全性。再者,根据获得的至少一个文档向量建立索引树,在查找阶段,可以搜索索引树就能够查找密文文档,避免了逐个计算查询语句与所有文档的相关度来查找,在保证数据安全的同时有效的提高了检索效率。
本发明实施例中出现的符号及符号表示的意思见表1。
表1符号列表
下面结合说明书附图介绍本发明实施例提供的技术方案。
请参见图2,本发明实施例提供一种密文检索方法,该密文检索方法可以由客户端A执行。该密文检索方法的流程描述如下:
S201:根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量;
S202:根据获得的至少一个文档向量建立索引树;
S203:对每个明文文档和索引树进行加密,生成密文文档和密文索引树,并上传至服务器;
S204:接收数据使用者输入的查询语句,对查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给服务器;其中,密文查询向量用于从密文索引树中查找与密文查询向量对应的密文文档。
密文检索最终是由如图1所示的服务器进行检索,因此,请参见图3,对应的本发明实施例还提供一种密文检索方法,该密文检索方法可以由服务器执行。该密文检索方法的流程描述如下:
S301:接收客户端发送的密文查询向量,密文查询向量是客户端根据接收的查询语句进行向量化并加密获得的;
S302:根据密文查询向量从预先存储的密文索引树中查找与密文查询向量匹配的密文文档向量;
S303:计算密文查询向量与查找到的密文文档向量之间的相似度;
S304:输出相似度大于预设阈值的密文文档向量对应的密文文档。
数据拥有者可以通过客户端A对明文文档进行加密后上传至服务器,并根据明文文档建立查询索引,并对建立的查询索引加密,也上传至服务器。下面介绍客户端A如何根据明文文档建立查询索引。
首先,客户端A可以对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量,再根据获得的至少一个文档向量建立索引树。
可能的实施方式中,客户端A可以根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量。
具体地,客户端A可以对所有的明文文档进行语句分析,从所有的明文文档中提取多个关键词,形成关键词集合W。可能的实施方式中,对于从明文文档集中每个明文文档提取的关键词,可以获取其每个关键词的TF值以及每个关键词的IDF值。这里“TF”可以表示某一给定词语在一个文档中出现的频率,即词频。“IDF”可以表示使用包含某一给定词语的文件数目,即文档频率DF,与明文文档集中所有明文文档数目的比值,即反文档词频。针对每个明文文档,计算其每个关键词的TF×IDF权值,并将关键词按权值大小进行降序排列。根据需要选择权值最大的几个关键词,通常选取5-10个作为对应明文文档文件的关键词。将所有不相同的明文文档的关键词进行组合,形成关键词词典W。
客户端A根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量。干扰词的添加可以使得关键词集合中的关键词的分布率位于预设范围内,也就是关键词的分布率变化不大,这样对于有些敏感的关键词由于分布率变化不大,导致了即使是敏感的关键词,也不容易被识别,安全性增强,保证了数据的安全性。
可能的实施方式中,针对每个明文文档,为每个明文文档建立一个(N+U)维向量Dd,获得至少一个文档向量。其中,N为关键词集合中关键词的个数,U为在关键词中添加的干扰词的个数。(N+U)维向量中N维中的每一维对应关键词集合中的一个关键词,即Dd[i]对应于W中的关键词wi(i为关键词wi在W中的顺序)。将向量Dd每一维的值可以设置为第一值。第一值为每一维对应的关键词在明文文档中的出现的频率值TF。如果明文文档中不包括相应的关键词,则将向量Dd对应维的值设置为0,示意不包括关键词。
本发明实施例中,客户端A可以随机选取U个干扰词中的V个干扰词,将V个干扰词中在(N+U)维向量中的值设置为第二值,其余的U-V个干扰词在(N+U)维向量中的值设置为第三值,第二值及第三值使得关键词集合中的关键词的分布率位于预设范围内,U、V为正整数。可能的实施方式中,将V个干扰词中在(N+U)维向量中的值设置为1,其余的U-V个干扰词在(N+U)维向量中的值设置为0,可以得到文档向量。。
客户端A获得了至少一个文档向量后,可以根据获得的至少一个文档向量建立索引树。本发明实施例中,索引树可以是平衡二叉树,可以知道,假如索引树中共有m个叶子节点,索引树的每一个叶子节点对应于一个文档向量,索引树可以由叶子节点开始构建。
可能的实施方式中,针对所有明文文档中的每个明文文档,可以生成一个叶子节点,获得多个叶子节点。其中,叶子节点用于存储明文文档对应的文档向量及明文文档的标识符。该标识符可以是为明文文档事先编的一个序号用于指示明文文档。根据多个叶子节点中的任意两个叶子节点生成一个中间结点,索引树的每个中间结点存储一个N维向量,用于指示中间结点包括的叶子节点是否存在关键词。例如,对于索引树中的每一个中间结点u,其中存放一个N维向量Du,如果Du[i]=1,则表示至少存在一条从节点u至某一包含关键词wi的叶子节点,即叶子节点对应的文档包含关键词wi的路径。
下面介绍如何生成每一个中间结点u中存放的向量Du。每个中间结点包括左子结点和右子结点,如果左子结点对应的向量的第i维的值指示左子结点包括的叶子节点包括关键词,或右子结点对应的向量的第i维的值指示左子结点包括的叶子节点包括关键词,则中间结点的向量的第i维的值设置为第四值,第四值用于指示中间结点包括的叶子节点存在关键词。如果左子结点对应的向量的第i维的值指示左子结点包括的叶子节点不包括关键词,且右子结点对应的向量的第i维的值指示左子结点包括的叶子节点不包括关键词,则中间结点的向量的第i维的值设置为第五值,第五值用于指示中间结点包括的叶子节点不存在关键词。
例如,假设v和w分别是结点u的左子结点和右子结点,如果Dv[i]≠0或者Dw[i]≠0,则Du[i]=1,即第四值。如果Dv[i]=0且Dw[i]=0,则Du[i]=0,即第五值。需要说明的是,当中间结点v(w)是叶子节点且存放文件标识j时,Dv=Ddj(Dw=Ddj)。
客户端A建立了索引树之后,可以分别对明文文档和索引树进行加密,并将加密后的明文文档和索引树上传至服务器。
本发明实施例中,客户端A可以通过一个五元组的密钥对明文文档进行加密,生成密文文档。具体地,客户端可以确定一个(N+U)维向量S,其中,(N+U)维向量中的每一维的值是随机生成的,为1或0。计算随机生成的两个(N+U)×(N+U)维向量的可逆矩阵,获得两个可逆矩阵M1和M2。随机选择两个密钥sk1和sk2。以向量S、两个可逆矩阵M1和M2及两个密钥sk1和sk2作为新的密钥SK,因此,密钥SK是一个五元组,表示为{S,M1,M2,sk1,sk2},通过密钥SK为明文文档进行加密,生成密文文档。
下面介绍客户端A如何对索引树进行加密,生成密文索引树。
可能的实施方式中,针对索引树的每个叶子节点的文档向量,客户端A可以通过向量S,将文档向量分裂成两个向量D1和D2,其中,若向量S的第j维的值为0,则设置向量D1和D2的第j维的值与文档向量的第j维的值相同;向量S的第j维的值为1,则随机设置向量D1和D2的第j维的值,且向量D1和D2的第j维的值之和与文档向量的第j维的值相同。根据两个可逆矩阵M1和M2与两个向量D1和D2对文档向量进行加密,生成密文文档向量。
例如,客户端A可以通过向量S,将文档向量Dd分裂成两个随机向量{D′d,D″d}。分裂程序具体如下:使用S作为分裂指示器,如果S的第j维的值为0,则将D′d[j]和D″d[j]的值设置为与Dd[j]相同;如果S的第j维的值为1,则随机设置D′d[j]和D″d[j]的值,但要保证两者之和等于Dd[j]。加密后的文档向量可以表示为将存储在存放向量Dd的叶子节点中,并删除原始的Dd,实现索引树叶子节点上文档向量的加密。
针对索引树的每个中间结点,客户端A可以生成一个静态哈希表,其中,静态哈希表的每一项的值通过两个密钥sk1和sk2进行加密。将密文文档向量存储在索引树的叶子节点和将加密后的静态哈希表存储在索引树的中间结点,生成密文索引树。例如,哈希表λ中有n项二元组(key,value),第i(i∈{1,2,...,n})项的值可以设置为λu[f(sk1,wi)]=Enc(g(sk2,wi),Du[i])。将λu存储在中间结点u中并且删除Du,实现索引树的中间结点的加密,得到加密后的索引树。
客户端A可以将密文文档和密文索引树上传至服务器。当有数据访问者对服务器上的密文文档进行访问时,可以通过客户端B或者客户端A向服务器发送查询请求,以请求访问密文文档。
如果数据访问者就是数据拥有者,那么数据访问者可以通过客户端A发送查询请求。如果数据访问者不是数据拥有者,那么数据访问者可以经过数据拥有者的授权通过客户端B向服务器发送查询请求。本发明实施例中,以数据访问者通过客户端A发送查询请求为例。
客户端A可以接收数据使用者或者数据访问者输入的查询语句,对查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给服务器,其中,密文查询向量用于从密文索引树中查找与密文查询向量对应的密文文档,以使得服务器可以根据密文查询向量从密文索引树中查找与密文查询向量对应的密文文档,实现密文的检索。
客户端A实现对输入的查询语句进行向量化,具体地可以:根据查询语句生成一个(N+U)维向量Q,(N+U)维向量Q中的N维中每一维对应关键词集合W中的一个关键词wi,第N+i维的值设置为一个随机选择的值εi。其中,若关键词集合W中的第i个关键词wi在查询语句中,则将N维向量Q中的每i维的值设置为第六值,第六值为包括第i个关键词wi的明文文档的数量与所有明文文档的比值,即IDF值。如果关键词集合W中的第i个关键词wi不在查询语句中,则将(N+U)维向量Q中的每i维的值设置为第七值,第七值用于指示关键词集合W中的第i个关键词wi不在查询语句中,例如第七值可以设置为0。
客户端A可以对向量化的查询语句进行加密,生成密文查询向量发送给服务器。具体地,客户端A可以通过向量S将(N+U)维向量Q分裂成两个向量Q′和Q″,其中,若向量S的第j维的值为0,则随机设置向量Q1和Q2的第j维的值,且向量Q′和Q″的第j维的值之和与文档向量的第j维的值相同。如果向量S的第j维的值为1,则设置向量Q′和Q″的第j维的值与文档向量的第j维的值相同。再根据两个可逆矩阵M1和M2与两个向量Q′和Q″对向量化的查询语句进行加密,生成密文查询向量可以表示为{M1 -1Q′,M2 -1Q″},将密文查询向量发送给服务器。
进一步地,客户端A还可以构建查询门限,通过加密查询语句中的每一个关键词,根据可以得到查询门限,使得服务器可以根据查询门限可以更为精确度地查找密文文档。其中,该查询门限可以表示为其中,最后,客户端A将查询门限发送至服务器。
服务器在接收客户端A发送的密文查询向量{M1 -1Q′,M2 -1Q″},可以根据密文查询向量{M1 -1Q′,M2 -1Q″}从预先存储的密文索引树中查找与密文查询向量{M1 -1Q′,M2 -1Q″}匹配的密文文档向量。计算密文查询向量{M1 -1Q′,M2 -1Q″}与查找到的密文文档向量之间的相似度,输出相似度大于预设阈值的密文文档向量对应的密文文档,检索完成。
服务器根据密文查询向量{M1 -1Q′,M2 -1Q″}从预先存储的密文索引树中查找与密文查询向量匹配的密文文档向量可以通过以下两种方式实现。
第一种方式:
服务器可以从索引树的根节点开始按照顺序进行查找与密文查询向量匹配的密文文档向量。其中,根节点为没有父节点的节点。
当查询到达索引树的一个中间结点u时,如果查询语句中至少存在一个关键词wi使得Du[i]=1,则继续往下查询结点u的所有子树,否则停止在结点u处的查询,即不沿着u的子树继续查询,因为以结点u为根节点的子树中没有符合查询语句的叶子节点。当查询到达一个叶子节点时,就计算密文查询向量和叶子节点中存放的密文文档向量之间的相似度,输出相似度大于预设阈值的密文文档向量对应的密文文档,检索完成。
这种方式,由于查询时遍历从根节点至叶子节点的多条路径,因此查询比较耗时。例如,当查询到达一个叶子节点时,计算文档集中满足查询语句的文件数目,即文档集中包含查询关键词wi的文件数目表示为r,则使用这种方式查询时,将遍历从根节点至叶子节点的r条路径。
本发明实施例中,对于查询门限中的中的每一项,at=λu[f(sk1,wt)],如果在结点u处至少有一个at满足Dec(g(sk2,wt),at)=1,则继续查询结点u的左右子节点。当查询到达一个叶子节点时,获取叶子节点中存放的密文文档向量并使用如下公式(1)计算密文文档向量和密文查询向量的相似度。
在公式(1)中,对于文档d,其文档向量Dd表示为:
Dd=(wd,1,wd,2,...,wd,i,...,wd,n) (2)
对于一个查询语句其查询向量Q表示为:
Q=(wq,1,wq,2,...,wq,i,...,wq,n) (3)
对于文档向量Dd和查询向量Q,如果文件d中不包含关键词wi,或查询语句中不包含关键词wi,则wd,i=0,或wq.i=0。
使用如下相似度计算函数:
将公式(4)带入公式(1)即可计算出相似度。为了方便相似度的计算,需要对文档向量和查询向量进行标准化处理。由公式(4)可知每个关键词wi的标准化TF权值和标准化IDF权值分别为和使用关键词的标准化TF和IDF权值分别对应作为文档向量和查询向量每一维的值,则文档向量Dd和查询向量Q都转化为单位向量,这样在进行相似度计算时直接进行向量间点乘运算即可。
本发明实施例中,由于引入了U个干扰词,每个文档的相似度等于这里Dd为N维的文档向量,Q为N维的查询向量,表示被选择的V个关键词wi的集合。
其中,公式(1)-(4)的符号的表示意思如表2所示。
表2符号列表
第二种方式:
服务器可以索引树的根节点开始并行进行查找与密文查询向量匹配的密文文档向量,其中,从索引树的根节点开始查找,在遇到中间结点时,从中间结点包括的左子结点开始查找,并同时从中间结点包括的右子结点开始查找。
具体地,例如假设服务器有P个处理器是可用的,将这些处理器编号为1,2,...p。让处理器1从索引树的根节点处开始查询。当处理器1到达一个中间结点u,u的左、右子节点分别为v和w,如果经过判断需要继续查询u的两个子树Tv和Tw,则让处理器1继续查询子树Tv,并分配新的处理器2查询子树Tw。如果当到达一个中间结点u且需要继续往下查询时,没有新的处理器可以分配,则当前处理器选择当前节点的一个子节点进行处理,并将当前节点的另一子节点存储在一个的栈ST中。当P个处理器进行完一轮查询,P个包含查询关键词wi的密文文件将被输出。然后,每个处理器从ST中获取一个节点并将该节点从ST中删除,接着按照上述过程进行查询直到ST为空为止。经过第二轮处理,同样会输出P个文件。经过r/P轮查询后所有包含查询关键词wi的密文文档都将被输出。因此,当P个处理器可用时,使用并行查询可以提高查询效率。
当然,第二种方式下,也可以由一个处理器进行并行查询。当由一个处理器进行并行查询时,可能的实施方式中,这个处理器可以同时开启几个进程,每个进程可以充当子处理器分别查询。
本发明实施例中,引入干扰词保护关键词隐私,为了使得对于同一个查询语句,不同文档的拥有不同的值,可以设置即从U个里面选取V个后必须大于或等于n。其中,n是文档集中文档的个数。对于相同的文档向量Dd来说,每次查询时是不同的,这是因为每次生成查询向量时εi值是随机生成的。最终的相似度受这些干扰词的影响。并且如果服务器不知道这些干扰词确切的值,这种影响就不能被其消除。而且,每个εi值服从相同的均匀分布M(μ′-c,μ′+c),可知该分布的平均值为μ′,方差σ′2为c2/3。根据中心极限定理,服从正态分布N(μ,σ2),分布的平均值μ为Vμ′,方差σ2为Vc2/3。因此,可以使用μ/V作为μ′、作为c构成均匀分布M来生成εi。一方面,通过实验可知σ越大,相似度的值的分布就越接近正态分布,服务器就越难获得原始相似度的值的统计信息,但对查询结果精确性影响越大;另一方面,σ越小,最终的相似度的值受到的影响就越小,精确性就越高,但统计信息安全性就越低。因此,σ的值是查询精确性和安全性之间的一个权衡。本发明实施例中,设置使得σ的值能够兼顾查询精确性和安全性。
本发明实施例中,服务器可以向客户端输出相似度大于预设阈值的密文文档向量对应的密文文档。因为相似度较小,可能不是数据访问者想要访问的文档,如果服务器将检索到的全部密文文档都输出,那么对于数据访问者来说也是一种负担。
进一步地,本发明实施例中,服务器可以根据计算的相似度值进行排序,将相似度高的排在前,相似度低的排在后面。然后输出前几个密文文档对应的标识符。通常情况下,服务器可以输出前5-10个密文文档的标识符。客户端A可以根据这前5-10个密文文档的标识符,找到对应的密文文档,完成检索。
综上所述,本发明实施例引入干扰词,根据关键词及干扰词对明文文档进行向量化,使得关键词的分布规律在预设范围内,这样就可以对敏感的词进行保护从而增加了安全性。再者,根据获得的至少一个文档向量建立索引树,在查找阶段,可以搜索索引树就能够查找密文文档,避免了逐个计算查询语句与所有文档的相关度来查找,在保证数据安全的同时有效的提高了检索效率。还有通过向量空间模型和余弦度量来确定查询向量与文档向量之间的相似度,从而代替不能区分的查询结果,提高了查询结果的精确度。
下面结合附图介绍本发明实施例提供的设备。
请参见图4,基于同一发明构思,本发明一实施例提供一种密文检索设备,该密文检索设备可以是客户端,该密文检索设备可以包括:向量化单元401、建立单元402、加密单元403和处理单元404。
其中,向量化单元401可以用于根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量。建立单元402可以用于根据获得的至少一个文档向量建立索引树,索引树。加密单元403可以用于对每个明文文档和索引树进行加密,生成密文文档和密文索引树,并上传至服务器。处理单元404用于接收数据使用者输入的查询语句,对查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给服务器;其中,密文查询向量用于从密文索引树中查找与密文查询向量对应的密文文档。
可选的,向量化单元401具体用于:
对数据拥有者上传的每个明文文档进行分析,获得关键词集合;
为每个明文文档建立一个(N+U)维向量,获得至少一个文档向量;
其中,N为关键词集合中关键词的个数,U为在关键词中添加的干扰词的个数;(N+U)维向量中N维中的每一维对应关键词集合中的一个关键词,每一维的值设置为第一值,第一值为每一维对应的关键词在明文文档中的出现的频率值;随机选取U个干扰词中的V个干扰词,V个干扰词中在(N+U)维向量中的值设置为第二值,其余的U-V个干扰词在(N+U)维向量中的值设置为第三值,第二值及第三值使得关键词集合中的关键词的分布率位于预设范围内,U、V为正整数。
可选的,建立单元402具体用于:
针对所有明文文档中的每个明文文档,生成一个叶子节点,获得多个叶子节点;其中,叶子节点用于存储明文文档对应的文档向量及明文文档的标识符;
根据多个叶子节点构建索引树,其中,索引树为平衡二叉树,多个叶子节点中的任意两个叶子节点生成一个中间结点,索引树的每个中间结点存储一个N维向量,用于指示中间结点包括的叶子节点是否存在关键词。
可选的,中间结点包括左子结点和右子结点;
其中,若左子结点对应的向量的第i维的值指示左子结点包括的叶子节点包括关键词,或右子结点对应的向量的第i维的值指示左子结点包括的叶子节点包括关键词,则中间结点的向量的第i维的值设置为第四值,第四值用于指示中间结点包括的叶子节点存在关键词;
若左子结点对应的向量的第i维的值指示左子结点包括的叶子节点不包括关键词,且右子结点对应的向量的第i维的值指示左子结点包括的叶子节点不包括关键词,则中间结点的向量的第i维的值设置为第五值,第五值用于指示中间结点包括的叶子节点不存在关键词。
可选的,加密单元403具体用于:
确定一个(N+U)维向量S,其中,(N+U)维向量中的每一维的值是随机生成的,为1或0;
计算随机生成的两个(N+U)×(N+U)维向量的可逆矩阵,获得两个可逆矩阵M1和M2;
随机选择两个密钥sk1和sk2;
以向量S、两个可逆矩阵M1和M2及两个密钥sk1和sk2作为新的密钥,为明文文档进行加密,生成密文文档。
可选的,加密单元403具体用于:
针对索引树的每个叶子节点的文档向量,通过向量S,将文档向量分裂成两个向量D1和D2;其中,若向量S的第j维的值为0,则设置向量D1和D2的第j维的值与文档向量的第j维的值相同;向量S的第j维的值为1,则随机设置向量D1和D2的第j维的值,且向量D1和D2的第j维的值之和与文档向量的第j维的值相同;
根据两个可逆矩阵M1和M2与两个向量D1和D2对文档向量进行加密,生成密文文档向量;
针对索引树的每个中间结点,生成一个静态哈希表,其中,静态哈希表的每一项的值通过两个密钥sk1和sk2进行加密;
将密文文档向量存储在索引树的叶子节点和将加密后的静态哈希表存储在索引树的中间结点,生成密文索引树。
可选的,处理单元404具体用于:
根据查询语句生成一个(N+U)维向量Q,(N+U)维向量Q中的N维中每一维对应关键词集合中的一个关键词,第N+i维的值设置为一个随机选择的值;
其中,若关键词集合中的第i个关键词在查询语句中,则将N维向量Q中的每i维的值设置为第六值,第六值为包括第i个关键词的明文文档的数量与所有明文文档的比值;
若关键词集合中的第i个关键词不在查询语句中,则将(N+U)维向量Q中的每i维的值设置为第七值,第七值用于指示关键词集合中的第i个关键词不在查询语句中。
可选的,处理单元404具体用于:
通过向量S将(N+U)维向量Q分裂成两个向量Q1和Q2,其中,若向量S的第j维的值为0,则随机设置向量Q1和Q2的第j维的值,且向量Q1和Q2的第j维的值之和与文档向量的第j维的值相同;向量S的第j维的值为1,则设置向量Q1和Q2的第j维的值与文档向量的第j维的值相同;
根据两个可逆矩阵M1和M2与两个向量Q1和Q2对向量化的查询语句进行加密,生成密文查询向量发送给服务器。
请参见图5,基于同一发明构思,本发明一实施例提供一种密文检索设备,该密文检索设备可以是客户端,该密文检索设备可以包括:至少一个处理器501,处理器501用于执行存储器中存储的计算机程序时实现本发明实施例提供的如图2所示的密文检索方法的步骤。
可选的,处理器501具体可以是中央处理器、特定应用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),可以是一个或多个用于控制程序执行的集成电路。
可选的,该密文检索设备还包括与至少一个处理器连接的存储器502,存储器502可以包括只读存储器(英文:Read Only Memory,简称:ROM)、随机存取存储器(英文:RandomAccess Memory,简称:RAM)和磁盘存储器。存储器502用于存储处理器501运行时所需的数据,即存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,执行如图2所示的方法。其中,存储器502的数量为一个或多个。其中,存储器502在图5中一并示出,但需要知道的是存储器502不是必选的功能模块,因此在图5中以虚线示出。
其中,向量化单元401、建立单元402、加密单元403和处理单元404所对应的实体设备均可以是前述的处理器501。该密文检索设备可以用于执行图2所示的实施例所提供的方法。因此关于该设备中各功能模块所能够实现的功能,可参考图2所示的实施例中的相应描述,不多赘述。
请参见图6,基于同一发明构思,本发明一实施例提供一种密文检索设备,该密文检索设备可以是云服务器,该密文检索设备可以包括:接收单元601、查找单元602、计算单元603和输出单元604。
其中,接收单元601可以用于接收客户端发送的密文查询向量,密文查询向量是客户端根据接收的查询语句进行向量化并加密获得的。查找单元602可以用于根据密文查询向量从预先存储的密文索引树中查找与密文查询向量匹配的密文文档向量。计算单元603可以用于计算密文查询向量与查找到的密文文档向量之间的相似度。输出单元604可以用于输出相似度大于预设阈值的密文文档向量对应的密文文档。
可选的,查找单元603具体用于:
从索引树的根节点开始按照顺序进行查找与密文查询向量匹配的密文文档向量;其中,根节点为没有父节点的节点;
或,从索引树的根节点开始并行进行查找与密文查询向量匹配的密文文档向量,其中,从索引树的根节点开始查找,在遇到中间结点时,从中间结点包括的左子结点开始查找,并同时从中间结点包括的右子结点开始查找。
请参见图7,基于同一发明构思,本发明一实施例提供一种密文检索设备,该密文检索设备包括:至少一个处理器701,处理器701用于执行存储器中存储的计算机程序时实现本发明实施例提供的如图3所示的密文检索方法的步骤。
可选的,处理器701具体可以是中央处理器、特定应用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),可以是一个或多个用于控制程序执行的集成电路。
可选的,该密文检索设备还包括与至少一个处理器连接的存储器702,存储器702可以包括只读存储器(英文:Read Only Memory,简称:ROM)、随机存取存储器(英文:RandomAccess Memory,简称:RAM)和磁盘存储器。存储器702用于存储处理器701运行时所需的数据,即存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,执行如图3所示的方法。其中,存储器702的数量为一个或多个。其中,存储器702在图7中一并示出,但需要知道的是存储器702不是必选的功能模块,因此在图7中以虚线示出。
其中,接收单元601、查找单元602、计算单元603和输出单元604所对应的实体设备均可以是前述的处理器701。该密文检索设备可以用于执行图3所示的实施例所提供的方法。因此关于该设备中各功能模块所能够实现的功能,可参考图3所示的实施例中的相应描述,不多赘述。
本发明实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行如图1所述的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash disk)、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (15)
1.一种密文检索方法,包括:
根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量;
根据获得的至少一个文档向量建立索引树;
对所述每个明文文档和所述索引树进行加密,生成密文文档和密文索引树,并上传至服务器;
接收数据使用者输入的查询语句,对所述查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器;其中,所述密文查询向量用于从所述密文索引树中查找与所述密文查询向量对应的密文文档。
2.如权利要求1所述的方法,其特征在于,根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量,包括:
对所述数据拥有者上传的每个明文文档进行分析,获得关键词集合;
为每个所述明文文档建立一个(N+U)维向量,获得所述至少一个文档向量;
其中,N为所述关键词集合中关键词的个数,U为在所述关键词中添加的干扰词的个数;所述(N+U)维向量中N维中的每一维对应所述关键词集合中的一个关键词,每一维的值设置为第一值,所述第一值为每一维对应的关键词在所述明文文档中的出现的频率值;随机选取U个干扰词中的V个干扰词,所述V个干扰词中在(N+U)维向量中的值设置为第二值,其余的U-V个干扰词在(N+U)维向量中的值设置为第三值,所述第二值及所述第三值使得所述关键词集合中的关键词的分布率位于预设范围内,U、V为正整数。
3.如权利要求2所述的方法,其特征在于,根据获得的至少一个文档向量建立索引树,包括:
针对所有明文文档中的每个明文文档,生成一个叶子节点,获得多个叶子节点;其中,所述叶子节点用于存储所述明文文档对应的文档向量及所述明文文档的标识符;
根据所述多个叶子节点构建索引树,其中,所述索引树为平衡二叉树,所述多个叶子节点中的任意两个叶子节点生成一个中间结点,所述索引树的每个中间结点存储一个N维向量,用于指示所述中间结点包括的叶子节点是否存在关键词。
4.如权利要求3所述的方法,其特征在于,所述中间结点包括左子结点和右子结点;
其中,若所述左子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点包括关键词,或所述右子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点包括关键词,则所述中间结点的向量的第i维的值设置为第四值,所述第四值用于指示所述中间结点包括的叶子节点存在关键词;
若所述左子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点不包括关键词,且所述右子结点对应的向量的第i维的值指示所述左子结点包括的叶子节点不包括关键词,则所述中间结点的向量的第i维的值设置为第五值,所述第五值用于指示所述中间结点包括的叶子节点不存在关键词。
5.如权利要求4所述的方法,其特征在于,对所述明文文档进行加密,生成密文文档,包括:
确定一个(N+U)维向量S,其中,所述(N+U)维向量中的每一维的值是随机生成的,为1或0;
计算随机生成的两个(N+U)×(N+U)维向量的可逆矩阵,获得两个可逆矩阵M1和M2;
随机选择两个密钥sk1和sk2;
以所述向量S、所述两个可逆矩阵M1和M2及两个密钥sk1和sk2作为新的密钥,为所述明文文档进行加密,生成密文文档。
6.如权利要求5所述的方法,其特征在于,对所述索引树进行加密,生成密文索引树,包括:
针对所述索引树的每个叶子节点的文档向量,通过所述向量S,将所述文档向量分裂成两个向量D1和D2;其中,若所述向量S的第j维的值为0,则设置所述向量D1和D2的第j维的值与所述文档向量的第j维的值相同;所述向量S的第j维的值为1,则随机设置所述向量D1和D2的第j维的值,且所述向量D1和D2的第j维的值之和与所述文档向量的第j维的值相同;
根据所述两个可逆矩阵M1和M2与所述两个向量D1和D2对所述文档向量进行加密,生成密文文档向量;
针对所述索引树的每个中间结点,生成一个静态哈希表,其中,所述静态哈希表的每一项的值通过所述两个密钥sk1和sk2进行加密;
将所述密文文档向量存储在所述索引树的叶子节点和将加密后的静态哈希表存储在所述索引树的中间结点,生成密文索引树。
7.如权利要求5所述的方法,其特征在于,接收数据使用者输入的查询语句,对所述查询语句进行向量化,包括:
根据所述查询语句生成一个(N+U)维向量Q,所述(N+U)维向量Q中的N维中每一维对应所述关键词集合中的一个关键词,第N+i维的值设置为一个随机选择的值;
其中,若所述关键词集合中的第i个关键词在所述查询语句中,则将所述N维向量Q中的每i维的值设置为第六值,所述第六值为包括所述第i个关键词的明文文档的数量与所有明文文档的比值;
若所述关键词集合中的第i个关键词不在所述查询语句中,则将所述(N+U)维向量Q中的每i维的值设置为第七值,所述第七值用于指示所述关键词集合中的第i个关键词不在所述查询语句中。
8.如权利要求7所述的方法,其特征在于,对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器,包括:
通过所述向量S将所述(N+U)维向量Q分裂成两个向量Q1和Q2,其中,若所述向量S的第j维的值为0,则随机设置所述向量Q1和Q2的第j维的值,且所述向量Q1和Q2的第j维的值之和与所述文档向量的第j维的值相同;所述向量S的第j维的值为1,则设置所述向量Q1和Q2的第j维的值与所述文档向量的第j维的值相同;
根据所述两个可逆矩阵M1和M2与所述两个向量Q1和Q2对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器。
9.一种密文检索方法,其特征在于,包括:
接收客户端发送的密文查询向量,所述密文查询向量是所述客户端根据接收的查询语句进行向量化并加密获得的;
根据所述密文查询向量从预先存储的密文索引树中查找与所述密文查询向量匹配的密文文档向量;
计算所述密文查询向量与查找到的密文文档向量之间的相似度;
输出所述相似度大于预设阈值的密文文档向量对应的密文文档。
10.如权利要求9所述的方法,其特征在于,根据所述密文查询向量从预先存储的密文索引树中查找与所述密文查询向量匹配的密文文档向量,包括:
从所述索引树的根节点开始按照顺序进行查找与所述密文查询向量匹配的密文文档向量;其中,所述根节点为没有父节点的节点;
或,从所述索引树的根节点开始并行进行查找与所述密文查询向量匹配的密文文档向量,其中,从所述索引树的根节点开始查找,在遇到中间结点时,从所述中间结点包括的左子结点开始查找,并同时从所述中间结点包括的右子结点开始查找。
11.一种密文检索设备,其特征在于,包括:
向量化单元,用于根据关键词及干扰词,对数据拥有者上传的每个明文文档进行向量化,获得至少一个文档向量;
建立单元,用于根据获得的至少一个文档向量建立索引树;
加密单元,用于对所述每个明文文档和所述索引树进行加密,生成密文文档和密文索引树,并上传至服务器;
处理单元,用于接收数据使用者输入的查询语句,对所述查询语句进行向量化,并对向量化的查询语句进行加密,生成密文查询向量发送给所述服务器;其中,所述密文查询向量用于从所述密文索引树中查找与所述密文查询向量对应的密文文档。
12.一种密文检索设备,其特征在于,包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如权利要求1-8任一项所述的方法。
13.一种密文检索设备,其特征在于,包括:
接收单元,用于接收客户端发送的密文查询向量,所述密文查询向量是所述客户端根据接收的查询语句进行向量化并加密获得的;
查找单元,用于根据所述密文查询向量从预先存储的密文索引树中查找与所述密文查询向量匹配的密文文档向量;
计算单元,用于计算所述密文查询向量与查找到的密文文档向量之间的相似度;
输出单元,用于输出所述相似度大于预设阈值的密文文档向量对应的密文文档。
14.一种密文检索设备,其特征在于,包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如权利要求9-10任一项所述的方法。
15.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8或9-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711160966.1A CN110019011A (zh) | 2017-11-20 | 2017-11-20 | 一种密文检索方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711160966.1A CN110019011A (zh) | 2017-11-20 | 2017-11-20 | 一种密文检索方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110019011A true CN110019011A (zh) | 2019-07-16 |
Family
ID=67185911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711160966.1A Pending CN110019011A (zh) | 2017-11-20 | 2017-11-20 | 一种密文检索方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019011A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061783A (zh) * | 2019-10-10 | 2020-04-24 | 华控清交信息科技(北京)有限公司 | 数据查询方法、相关装置和介质 |
CN112817916A (zh) * | 2021-02-07 | 2021-05-18 | 中国科学院新疆理化技术研究所 | 基于ipfs的数据获取方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345526A (zh) * | 2013-07-22 | 2013-10-09 | 武汉大学 | 一种云环境下高效的隐私保护密文查询方法 |
CN103593476A (zh) * | 2013-11-28 | 2014-02-19 | 中国科学院信息工程研究所 | 一种面向云存储的多关键词明密文检索方法和系统 |
CN103927340A (zh) * | 2014-03-27 | 2014-07-16 | 中国科学院信息工程研究所 | 一种密文检索方法 |
US20170279605A1 (en) * | 2016-03-25 | 2017-09-28 | Samsung Electronics Co., Ltd. | Apparatus for encryption and search and method thereof |
-
2017
- 2017-11-20 CN CN201711160966.1A patent/CN110019011A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345526A (zh) * | 2013-07-22 | 2013-10-09 | 武汉大学 | 一种云环境下高效的隐私保护密文查询方法 |
CN103593476A (zh) * | 2013-11-28 | 2014-02-19 | 中国科学院信息工程研究所 | 一种面向云存储的多关键词明密文检索方法和系统 |
CN103927340A (zh) * | 2014-03-27 | 2014-07-16 | 中国科学院信息工程研究所 | 一种密文检索方法 |
US20170279605A1 (en) * | 2016-03-25 | 2017-09-28 | Samsung Electronics Co., Ltd. | Apparatus for encryption and search and method thereof |
Non-Patent Citations (1)
Title |
---|
周璐: "云环境中基于语义特征的加密文档检索方案研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061783A (zh) * | 2019-10-10 | 2020-04-24 | 华控清交信息科技(北京)有限公司 | 数据查询方法、相关装置和介质 |
CN111061783B (zh) * | 2019-10-10 | 2024-05-31 | 华控清交信息科技(北京)有限公司 | 数据查询方法、相关装置和介质 |
CN112817916A (zh) * | 2021-02-07 | 2021-05-18 | 中国科学院新疆理化技术研究所 | 基于ipfs的数据获取方法及系统 |
CN112817916B (zh) * | 2021-02-07 | 2023-03-31 | 中国科学院新疆理化技术研究所 | 基于ipfs的数据获取方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109493017B (zh) | 基于区块链的可信外包存储方法 | |
CN111026788B (zh) | 一种混合云中基于同态加密的多关键词密文排序检索方法 | |
CN109063509A (zh) | 一种基于关键词语义排序的可搜索加密方法 | |
CN104765848A (zh) | 混合云存储中支持结果高效排序的对称可搜索加密方法 | |
CN108062485A (zh) | 一种面向多服务器多用户的模糊关键字搜索方法 | |
Chen et al. | EliMFS: achieving efficient, leakage-resilient, and multi-keyword fuzzy search on encrypted cloud data | |
CN110134718B (zh) | 一种基于属性加密的支持多关键字的模糊搜索方法 | |
CN109471964A (zh) | 一种基于同义词集的模糊多关键词可搜索加密方法 | |
CN104468121B (zh) | 基于指定服务器的支持多密钥加密的公钥可搜索加密方法 | |
CN104036050A (zh) | 一种密文云数据复杂查询方法 | |
US11829503B2 (en) | Term-based encrypted retrieval privacy | |
CN109739945A (zh) | 一种基于混合索引的多关键词密文排序检索方法 | |
CN107885705A (zh) | 一种高效可扩展的安全的文档相似性计算方法和装置 | |
CN110069944A (zh) | 一种可搜索加密的数据检索方法及系统 | |
CN108390760A (zh) | 一种云数据传输中端到端的公钥关键字可搜索加密方法 | |
CN107086917B (zh) | 一种并行化和结构化公钥可搜索的加密方法 | |
CN110727951B (zh) | 具有隐私保护的轻量级外包文件多关键词检索方法及系统 | |
CN110019011A (zh) | 一种密文检索方法及设备 | |
Yao et al. | Secure index for resource-constraint mobile devices in cloud computing | |
CN106874379B (zh) | 一种面向密文云存储的多维区间检索方法与系统 | |
Wang et al. | Public key encryption with fuzzy matching | |
Bu et al. | SEF: a secure, efficient, and flexible range query scheme in two-tiered sensor networks | |
Guo et al. | Privacy preserving weighted similarity search scheme for encrypted data | |
Handa et al. | Keyword binning-based efficient search on encrypted cloud data | |
Manasrah et al. | A privacy-preserving multi-keyword search approach in cloud computing |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190716 |
|
RJ01 | Rejection of invention patent application after publication |