数据加密方法、数据查询方法、装置、设备及存储介质转让专利

申请号 : CN201810239555.X

文献号 : CN108632248B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王翼

申请人 : 平安科技(深圳)有限公司

摘要 :

本发明公开一种数据加密方法、数据查询方法、装置、设备及存储介质。该数据加密方法包括:获取明文文件的明文关键词,基于所述明文关键词采用局部敏感哈希函数建立所述明文文件的文件索引;获取秘钥管理中心发送的第一随机用户秘钥;采用第一随机用户秘钥分别加密所述明文文件和所述文件索引,获取加密文件和加密索引;将所述加密文件和所述加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对所述加密文件进行加密,形成密文文件;其中,所述第一随机用户秘钥和所述第一随机服务器端秘钥相关联。该数据加密方法降低了系统存储压力,并提高了数据的安全性。

权利要求 :

1.一种数据加密方法,其特征在于,包括数据拥有端执行的如下步骤:获取明文文件的明文关键词,基于所述明文关键词采用局部敏感哈希函数建立所述明文文件的文件索引;

获取秘钥管理中心发送的第一随机用户秘钥;

基于第一随机用户秘钥,采用ElGamal算法加密所述明文文件,获取加密文件;

基于第一随机用户秘钥,采用哈希映射函数对所述第一随机用户秘钥进行处理,产生密钥KI;

将文件索引ID按如下规则划分为两个索引向量{I′,I″}:对于每个元素ij∈ID,如果Sj∈S且Sj等于1,则设置ij′=ij″=ij;否则,ij′=1/2·ij+r,ij″=1/2·ij-r,其中,r为一随机数,S∈{0,1}m;

基于密钥KI和两个索引向量{I′,I″}加密文件索引,获取加密索引:EncSK(ID)={M1T·T m*mI′,M2·I″,Enc(KI,fidi)},其中,fidi为明文文件的文件ID,M1,M2∈R 为可逆矩阵;

将所述加密文件和所述加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对所述加密文件进行加密,形成密文文件;

其中,所述第一随机用户秘钥和所述第一随机服务器端秘钥相关联。

2.如权利要求1所述的数据加密方法,其特征在于,所述获取明文文件的明文关键词,基于所述明文关键词采用局部敏感哈希函数建立所述明文文件的文件索引,包括:从明文文件中提取明文关键词,将所述明文关键词转化成明文关键词向量;

采用p-stable局部敏感哈希函数将每一明文关键词向量进行转换,获取对应的明文哈希值;

将每一所述明文哈希值插入到布隆过滤器进行过滤,得到文件索引。

3.一种数据查询方法,其特征在于,包括服务器端执行的如下步骤:获取查询关键词,采用局部敏感哈希函数对所述查询关键词进行处理,以形成查询陷门;

基于所述查询关键词和所述查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引;

基于目标加密索引,将与所述目标加密索引相对应的密文文件确定为目标密文文件;

其中,所述密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的,所述加密文件是采用权利要求1或2所述的数据加密方法得到的;

获取秘钥管理中心发送的第二随机服务器端秘钥;

基于所述第二随机服务器端秘钥,对目标密文文件进行解密,获取目标加密文件;

将所述目标加密文件发送至授权用户端,以指示所述授权用户端采用由秘钥管理中心发送的第二随机用户秘钥对所述目标加密文件进行解密,获取对应的明文文件;

其中,所述第二随机用户秘钥和所述第二随机服务器端秘钥相关联。

4.如权利要求3所述的数据查询方法,其特征在于,所述获取查询关键词,采用局部敏感哈希函数对所述查询关键词进行处理,以形成查询陷门,具体包括:获取查询关键词,将查询关键词转换为查询关键词向量;

采用p-stable局部敏感哈希函数将每一查询关键词向量进行转换,获取对应的查询哈希值;

将每一所述查询哈希值插入到布隆过滤器进行过滤,获取查询关键值Q;

将查询关键值Q按照以下规则划分为两个查询向量{Q′,Q″},对于查询关键值Q中的一个元素qj∈Q,如果Sj∈S且Sj等于1,则设置qj′=qj″=qj;否则,qj′=1/2·qj+r′,qj″=1/

2·qj-r′,其中,r′为一随机数,S∈{0,1}m;

基于两个查询向量{Q′,Q″}加密查询关键值Q,获取查询陷门:EncSK(Q)={M1-1·Q′,M2-1·Q″},其中,M1,M2∈Rm*m为可逆矩阵。

5.如权利要求3所述的数据查询方法,其特征在于,所述基于所述查询关键词和所述查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引,具体包括:获取所述查询陷门与每一所述加密索引的内积值,作为查询内积值;

获取所述查询关键词与每一文件索引的内积值,作为数据内积值;

获取查询内积值和数据内积值的差值,若查询内积值和数据内积值的差值在预设范围内,则查询陷门和所述加密索引匹配成功,将所述加密索引作为目标加密索引。

6.一种数据加密装置,其特征在于,包括:

文件索引建立模块,用于获取明文文件的明文关键词,基于所述明文关键词采用局部敏感哈希函数建立所述明文文件的文件索引;

第一随机用户秘钥获取模块,用于获取秘钥管理中心发送的第一随机用户秘钥;

加密文件和加密索引获取模块,用于采用第一随机用户秘钥分别加密所述明文文件和所述文件索引,获取加密文件和加密索引;

加密文件和加密索引发送模块,用于将所述加密文件和所述加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对所述加密文件进行加密,形成密文文件,其中第一随机用户秘钥和第一随机服务器端秘钥相关联;

其中,加密文件和加密索引获取模块包括加密文件获取单元、密钥产生单元、索引向量划分单元和加密索引获取单元;

加密文件获取单元,用于基于第一随机用户秘钥,采用ElGamal算法加密明文文件,获取加密文件;

密钥产生单元,用于基于第一随机用户秘钥,采用哈希映射函数对第一随机用户秘钥进行处理,产生密钥KI;

索引向量划分单元,用于将文件索引ID按如下规则划分为两个索引向量{I′,I″}:对于每个元素ij∈ID,如果Sj∈S且Sj等于1,则设置ij′=ij″=ij;否则,ij′=1/2·ij+r,ij″=1/

2·ij-r,其中,r为一随机数,S∈{0,1}m;

加密索引获取单元,用于基于密钥KI和两个索引向量{I′,I″}加密文件索引,获取加密T T索引:EncSK(ID)={M1·I′,M2·I″,Enc(KI,fidi)},其中,fidi为明文文件的文件ID,M1,M2∈Rm*m为可逆矩阵。

7.一种数据查询装置,其特征在于,包括:

查询陷门获取模块,用于获取查询关键词,采用局部敏感哈希函数对所述查询关键词进行处理,以形成查询陷门;

目标加密索引获取模块,用于基于所述查询关键词和所述查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引;

目标密文文件获取模块,用于基于目标加密索引,将与所述目标加密索引相对应的密文文件确定为目标密文文件;其中,所述密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的,所述加密文件是采用权利要求1或2所述的数据加密方法得到的;

第二随机服务器端秘钥获取模块,用于获取秘钥管理中心发送的第二随机服务器端秘钥;

目标加密文件获取模块,用于基于所述第二随机服务器端秘钥,对目标密文文件进行解密,获取目标加密文件;

目标加密文件发送模块,用于将所述目标加密文件发送至授权用户端,以指示所述授权用户端采用由秘钥管理中心发送的第二随机用户秘钥对所述目标加密文件进行解密,获取对应的明文文件,其中,所述第二随机用户秘钥和所述第二随机服务器端秘钥相关联。

8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至

2任一项所述数据加密方法的步骤,或者所述处理器执行所述计算机程序时实现如权利要求3至5任一项所述数据查询方法的步骤。

9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至2任一项所述数据加密方法的步骤,或者所述计算机程序被处理器执行时实现如权利要求3至5任一项所述数据查询方法的步骤。

说明书 :

数据加密方法、数据查询方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及数据处理领域,尤其涉及一种数据加密方法、数据查询方法、装置、设备及存储介质。

背景技术

[0002] 随着云计算技术的发展,越来越多的企业和个人选择将数据借助云服务器端进行存储和管理。基于安全考虑,在上传到云服务器端之前,用户会选择对数据进行加密处理。然而,加密后的数据会给数据的检索带来困难,使得数据查询过程效率不高。当前云服务器端主要采用模糊搜索算法对存储在云服务器端的数据进行查询,这种模糊搜索算法主要依赖于建立一个可以扩展的关键词集作为索引,该关键词集包含了所有用户可能拼写错误的关键词,这就不可避免地使文件索引的大小变得非常巨大,增加了系统的存储开销。

发明内容

[0003] 本发明实施例提供一种数据加密方法、装置、设备及储存介质,以解决在数据加密中占据过多系统存储空间的问题。
[0004] 本发明实施例提供一种数据查询方法、装置、设备及储存介质,以解决数据查询效率不高的问题。
[0005] 第一方面,本发明实施例提供一种数据加密方法,包括数据拥有端执行的如下步骤:
[0006] 获取明文文件的明文关键词,基于所述明文关键词采用局部敏感哈希函数建立所述明文文件的文件索引;
[0007] 获取秘钥管理中心发送的第一随机用户秘钥;
[0008] 采用第一随机用户秘钥分别加密所述明文文件和所述文件索引,获取加密文件和加密索引;
[0009] 将所述加密文件和所述加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对所述加密文件进行加密,形成密文文件;
[0010] 其中,所述第一随机用户秘钥和所述第一随机服务器端秘钥相关联。
[0011] 第二方面,本发明实施例提供一种数据加密装置,包括:
[0012] 文件索引建立模块,用于获取明文文件的明文关键词,基于所述明文关键词采用局部敏感哈希函数建立所述明文文件的文件索引;
[0013] 第一随机用户秘钥获取模块,用于获取秘钥管理中心发送的第一随机用户秘钥;
[0014] 加密文件和加密索引获取模块,用于采用第一随机用户秘钥分别加密所述明文文件和所述文件索引,获取加密文件和加密索引;
[0015] 加密文件和加密索引发送模块,用于将所述加密文件和所述加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对所述加密文件进行加密,形成密文文件,其中第一随机用户秘钥和第一随机服务器端秘钥相关联。
[0016] 第三方面,本发明实施例提供一种数据查询方法,包括服务器端执行的如下步骤:
[0017] 获取查询关键词,采用局部敏感哈希函数对所述查询关键词进行处理,以形成查询陷门;
[0018] 基于所述查询关键词和所述查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引;
[0019] 基于目标加密索引,将与所述目标加密索引相对应的密文文件确定为目标密文文件;其中,所述密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的;
[0020] 获取秘钥管理中心发送的第二随机服务器端秘钥;
[0021] 基于所述第二随机服务器端秘钥,对目标密文文件进行解密,获取目标加密文件;
[0022] 将所述目标加密文件发送至授权用户端,以指示所述授权用户端采用由秘钥管理中心发送的第二随机用户秘钥对所述目标加密文件进行解密,获取对应的明文文件;
[0023] 其中,所述第二随机用户秘钥和所述第二随机服务器端秘钥相关联。
[0024] 第四方面,本发明实施例提供一种数据查询装置,包括:
[0025] 查询陷门获取模块,用于获取查询关键词,采用局部敏感哈希函数对所述查询关键词进行处理,以形成查询陷门;
[0026] 目标加密索引获取模块,用于基于所述查询关键词和所述查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引;
[0027] 目标密文文件获取模块,用于基于目标加密索引,将与所述目标加密索引相对应的密文文件确定为目标密文文件;其中,所述密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的;
[0028] 第二随机服务器端秘钥获取模块,用于获取秘钥管理中心发送的第二随机服务器端秘钥;
[0029] 目标加密文件获取模块,用于基于所述第二随机服务器端秘钥,对目标密文文件进行解密,获取目标加密文件;
[0030] 目标加密文件发送模块,用于将所述目标加密文件发送至授权用户端,以指示所述授权用户端采用由秘钥管理中心发送的第二随机用户秘钥对所述目标加密文件进行解密,获取对应的明文文件,其中,所述第二随机用户秘钥和所述第二随机服务器端秘钥相关联。
[0031] 本发明第五方面提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明第一方面所述数据加密方法的步骤;或者,所述处理器执行所述计算机程序时实现如本发明第三方面所述数据查询方法的步骤。
[0032] 本发明第六方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述数据加密方法的步骤;或者,所述计算机程序被处理器执行时实现如本发明第三方面所述数据查询方法的步骤。
[0033] 本发明实施例提供的数据加密方法、装置、设备及储存介质中,对明文文件的明文关键词通过局部敏感哈希进行哈希转换,形成文件索引,不需要扩展索引文件的大小,也不需要预先构建模糊关键词集,降低了系统存储压力以及后续查询的复杂性。并且明文文件在发送至服务器端时预先进行了加密,提高了数据的安全性。
[0034] 本发明实施例提供的数据查询方法、装置、设备及储存介质中,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门。并基于查询关键词和所述查询陷门得到对应的目标加密索引以定位到对应的目标密文文件,提高了数据查询的效率,降低了数据查询的复杂度。而且,通过服务器端和授权用户端对目标密文文件二次解密才可以获得对应的明文文件,提高了数据的安全性。

附图说明

[0035] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0036] 图1是本发明实施例中应用场景的一示意图;
[0037] 图2是本发明实施例1中的数据加密方法的一流程图;
[0038] 图3是图2中步骤S11的一具体实施方式的一流程图;
[0039] 图4是图2中步骤S13的一具体实施方式的一流程图;
[0040] 图5是本发明实施例2中的数据加密装置的一示意图;
[0041] 图6是本发明实施例3中的数据查询方法的一流程图;
[0042] 图7是图6中步骤S21的一具体实施方式的一流程图;
[0043] 图8是图6中步骤S22的一具体实施方式的一流程图;
[0044] 图9是本发明实施例4中的数据查询装置的一示意图;
[0045] 图10是本发明实施例6中的计算机设备的示意图。

具体实施方式

[0046] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047] 本发明实施例1-实施例6应用在图1所示的应用场景中,该应用场景包括数据拥有端、秘钥管理中心、服务器端和授权用户端四个终端。其中数据拥有端是指拥有明文文件的终端。授权用户端是指获得授权可以在服务器端中进行数据查询的终端。密钥管理中心(KMC,Key Management Center)是公钥基础设施中的一个重要组成部分,负责为认证中心(CA,Certification Authority)系统提供密钥的生成、保存、备份、更新、恢复或查询等密钥服务,以解决分布式企业应用环境中大规模密码技术应用所带来的密钥管理问题。服务器端主要用于存储数据以及对数据进行加密和解密操作,以便与客户端进行信息交互,以使客户端可从服务器端获取相应的数据,该客户端包括但不限于与服务器端通信相连的PC机、智能手机等终端。
[0048] 其中,数据拥有端、秘钥管理中心、服务器端和授权用户端间均可以进行数据交互。具体地,数据拥有端、秘钥管理中心、服务器端和数据授权端可以通过蓝牙、网络或本地连接的方式进行数据交互。
[0049] 实施例1
[0050] 图2示出本实施例中数据加密方法的流程图。该数据加密方法应用在各种终端中,以解决数据加密过程中占据过多系统存储空间的问题。如图2所示,该数据加密方法包括数据拥有端执行的如下步骤:
[0051] S11:获取明文文件的明文关键词,基于明文关键词采用局部敏感哈希函数建立明文文件的文件索引。
[0052] 其中,明文文件是指未经加密的原始文件。局部敏感哈希(LSH,Locality Sensitive Hashing)函数是近似最近邻(ANN,Approximate Nearest Neighbor)搜索中的一种,用于衡量文本相似度。局部敏感哈希函数可以从海量的数据中挖掘出相似的数据,具体可以应用到文本相似度检测、网页搜索等领域。
[0053] 数据拥有端中预先存储有需要上传给服务器端的明文文件,在数据拥有端将该明文文件上传给服务器端之前,需从明文文件中获取明文关键词,再基于明文关键词采用局部敏感哈希函数建立明文文件的文件索引。
[0054] 在一个具体实施方式中,获取明文文件的明文关键词,基于明文关键词采用局部敏感哈希函数建立明文文件的文件索引,如图3所示,具体包括以下步骤:
[0055] S111:从明文文件中提取明文关键词,将明文关键词转化成明文关键词向量。
[0056] 从明文文件中提取明文关键词可以采用textrank算法、rake算法、topic-model算法或TF-IDF算法来实现。具体地,数据拥有端从明文文件File={file1,file2,…,filen}中提取出明文关键词,并将明文关键词转化成明文关键词向量WD={w1,w2,…,wn},其中,File是指明文文件集合,filen是指明文文件集合中的每一明文文件元素,WD是明文关键词向量集合,wn是明文关键词向量集合中的每一明文关键词向量元素,而且,wi∈{0,1}26*26。具体地,将明文关键词转换成一个二元集合,由关键词中相邻的2个字符组成,例如关键词“network”的二元集合为{ne,et,tw,wo,or,rk}。我们使用一个长为26*26位的向量wi∈{0,1}26*26来表示所有可能的二元集合。每一个向量元素表示26*26个可能的2个字母组合中的一个。如果对应的元素值设置为1,表示相应的字母组合存在给定的关键词中。这种基于向量的关键词表示降低了拼写错位和字母拼错的敏感度。例如,采用“netword”、“nedwork”或者“netwosk”这些拼写方式对应的向量表示与原来“network”的向量只有2个元素的不同。
使用这种表示,即使一个关键词可能会被误拼成很多形式,但是它们的向量表示都会很接近正确的那个,这个相似性可以使用欧氏距离来度量。可选地,也可以采用3或4个字母组合来表示关键词向量,主要取决于实际的模糊程度。
[0057] S112:采用p-stable局部敏感哈希函数将每一明文关键词向量进行哈希转换,获取对应的明文哈希值。
[0058] 其中,p-stable局部敏感哈希函数是指应用到p-稳定分布(p-stable distribution)中的局部敏感哈希函数。在这个步骤中,从p-stable局部敏感哈希函数群H
26*26 m
={h:{0,1} —>{0,1}}}中选取l个独立的p-stable局部敏感哈希函数hi,l为一随机数。使用p-stable局部敏感哈希函数hi∈H将每一个明文关键词向量进行哈希转换,得到对应的明文哈希值。具体地,p-stable局部敏感哈希函数hi可以为: 其中a是
一个m维的向量,b∈[0,c]是一个实数,c是一个固定值,并且l与c的取值可以根据实际的m而确定。例如,当m=8000时,可以取l=30,c=4,通过该p-stable局部敏感哈希函数hi将每一明文关键词向量wi进行哈希转换,得到对应的明文哈希值。
[0059] S113:将每一明文哈希值插入到布隆过滤器进行过滤,得到文件索引。
[0060] 其中,布隆过滤器(Bloom Filter)是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。具体地,为每一明文文件构造一个n位的布隆过滤器,并将布隆过滤器中的每一位初始化为0。将步骤S112中得到的明文哈希值插入到对应的布隆过滤器中,即可得到文件索引。
[0061] 在这个实施方式中,先将明文关键词转换为明文关键词向量,再通过p-stable局部敏感哈希函数对明文关键词向量进行哈希转换再经布隆过滤器进行过滤,直接形成文件索引,不需要扩展索引文件的大小,也不需要预先构建模糊关键词集,降低了系统存储压力以及后续基于文件索引进行查询的复杂性,以提高数据查询的效率。
[0062] S12:获取秘钥管理中心发送的第一随机用户秘钥。
[0063] 在该步骤中,数据拥有端获取从秘钥管理中心获取其发送的第一随机用户秘钥,以供后续对相关数据(明文文件和文件索引)进行加密。其中,第一随机用户秘钥是由密钥管理中心基于私钥生成并发送给数据拥有端的密钥。
[0064] 在一个具体实施方式中,秘钥管理中心发送的第一随机用户秘钥在秘钥管理中心的初始化过程中生成。其中,秘钥管理中心的初始化包括以下步骤:
[0065] (1)数据拥有端发送安全参数k到秘钥管理中心,秘钥管理中心将安全参数k作为输入,输出一个循环群G、一个素数q和一个哈希映射函数f,其中,循环群G包括一个生成元g。
[0066] 其中,循环群G是指:如果一个群G可以由元素g生成,即对任意b∈G,都存在a∈Z,使得b=ga,则称G=是一个循环群,而g是循环群G的一个生成元。其中,Z表示全体素数q的所有剩余类构成的集合,该集合在素数q的加法下构成阶为q的交换群。安全参数k属于正整数,基于安全参数k,秘钥管理中心会选择一个k比特的素数q。此外,秘钥管理中心还会选择一个哈希映射函数f,该哈希映射函数f以任意长的比特串为输入,以循环群G上的元素为输出,即f:{0,1}*→G。
[0067] (2)从Zq*中选取一个随机数x,并计算h=gx,获取公钥PK=(G,g,q,h,f),私钥MSK=x。
[0068] 其中,Zq*表示Zq中与q互素的剩余类构成的集合,即Zq*中的元素在同余意义下都是小于q且与q互素的正整数,因此,Zq*可以写作集合Zq*={1,2,…,q-1}。
[0069] 该步骤中,通过从Zq*中选取一个随机数x作为私钥MSK=x,并在计算出h=gx之后,形成对应的公钥PK=(G,g,q,h,f)。
[0070] (3)对于数据拥有端i,秘钥管理中心从Zq*中随机选择一个数xi1,并计算xi2=x-xi1。
[0071] (4)将xi1作为输入参数,获取SK=(M1,M2,S),其中M1,M2∈Rm*m为可逆矩阵,S∈{0,1}m为一个向量,其中xi1=m;由此得到第一随机用户秘钥Kui=(xi1,SK)和第一随机服务器端秘钥Ksi=(i,xi2)。
[0072] (5)秘钥管理中心将第一随机用户秘钥Kui=(xi1,SK)发送给数据拥有端i,将第一随机服务器端秘钥Ksi=(i,xi2)发送给服务器端。服务器端接收到Ksi=(i,xi2)后,就更新存储在服务器端中的第一随机用户-密钥映射关系Ks=Ks∪(i,xi2)。
[0073] 在这个实施方式中,通过密钥管理中心初始化生成对应的密钥,提高了密钥生成的便利性,也保证了密钥的安全。
[0074] S13:采用第一随机用户秘钥分别加密明文文件和文件索引,获取加密文件和加密索引。
[0075] 数据拥有端在获取到第一随机用户秘钥Kui之后,采用该第一随机用户秘钥Kui分别加密明文文件和文件索引,获取对应的加密文件和加密索引。
[0076] 在一个具体实施方式中,采用第一随机用户秘钥分别加密明文文件和文件索引,获取加密文件和加密索引,如图4所示,步骤S13具体包括以下步骤:
[0077] S131:基于第一随机用户秘钥,采用ElGamal算法加密明文文件,获取加密文件。
[0078] 其中,ElGamal算法是一种非对称加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系,ElGamal算法既能用于数据加密,也能用于数字签名。
[0079] 在该步骤中,数据拥有端基于第一随机用户秘钥Kui=(xi1,SK),采用ElGamal代理加密算法加密明文文件,获取加密文件:C(filei)=(gx,grxi1filei),其中,filei为数据拥有端i的明文文件。
[0080] S132:基于第一随机用户秘钥,采用哈希映射函数对第一随机用户秘钥进行处理,产生密钥KI。
[0081] 其中,哈希映射函数是秘钥管理中心生成的公钥中的哈希映射函数f,基于第一随机用户秘钥,采用哈希映射函数f产生密钥KI=f(xi1)。
[0082] S133:将文件索引ID按如下规则划分为两个索引向量{I′,I″}:对于每个元素ij∈ID,如果Sj∈S且Sj等于1,则设置ij′=ij″=ij;否则,ij′=1/2·ij+r,ij″=1/2·ij-r,其中,r为一随机数,S∈{0,1}m。
[0083] 在该步骤中,通过秘钥管理中心中的SK=(M1,M2,S)将文件索引ID划分为两个索引向量{I′,I″}。具体地,对于文件索引ID中的一个元素ij∈ID,先从S中获取对应的向量Sj,若Sj等于1,则划分元素ij为{ij′,ij″}。若Sj不等于1,则划分元素ij为{1/2·ij+r,1/2·ij-r},其中,r为一随机数,S∈{0,1}m。
[0084] S134:基于密钥KI和两个索引向量{I′,I″}加密文件索引,获取加密索引:EncSK(ID)={M1T·I′,M2T·I″,Enc(KI,fidi)},其中,fidi为明文文件的文件ID,M1,M2∈Rm*m为可逆矩阵。
[0085] 在将索引文件划分为两个索引向量之后,基于密钥KI和两个索引向量{I′,I″}加密文件索引,得到加密索引:EncSK(ID)={M1T·I′,M2T·I″,Enc(KI,fidi)}。
[0086] 在一个实施方式中,Enc可以通过AES或者DES实现。其中,AES是指高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。而DES为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。
[0087] 在一个具体实施方式中,采用第一随机用户秘钥分别加密明文文件和文件索引,获取加密文件和加密索引(步骤S13)的步骤也可以在服务器端执行,即数据拥有端将索引文件发送至服务器端。此时,服务器从秘钥管理中心获取的第一随机服务器端秘钥为Ksi=(i,xi2,SK)。服务器端将文件索引ID按如下规则划分为两个索引向量{I′,I″}:对于每个元素ij∈ID,如果Sj∈S且Sj等于1,则设置ij′=ij″=ij;否则ij′=1/2·ij+r,ij″=1/2·ij-r,其中,r为一随机数,S∈{0,1}m。再对索引向量进行加密,获取加密索引:EncSK(ID)={M1T·I′,M2T·I″}。
[0088] 在这个实施方式中,通过第一随机用户秘钥对明文文件和文件索引进行加密,提高了数据的安全性。
[0089] S14:将加密文件和加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对加密文件进行加密,形成密文文件,其中,第一随机用户秘钥和第一随机服务器端秘钥相关联。
[0090] 数据拥有端在获取到加密文件和加密索引后,将加密文件和加密索引发送至服务器端。如此,即使服务器端中的数据遭到窃取,由于服务器端缺少加密文件对应的解密秘钥,因此是没办法对该加密文件进行解密以得到对应的明文文件的,充分保证了数据的安全。在一个具体实施方式中,该步骤还包括将索引文件发送至服务器端。
[0091] 服务器端在接收到数据拥有端发送的加密文件之后,会采用由秘钥管理中心发送的第一随机服务器端秘钥Ksi=(i,xi2)对加密文件进行加密,形成密文文件。具体地,服务器端先找到与数据拥有端i对应的第一随机服务器端密钥Ksi=(i,xi2),再基于xi2采用ElGamal算法对加密文件进行加密:
[0092] C*(filei)=(gx,(gr)xi2·grxi1·filei)=(gx,(gr)xi2+xi1·filei)=(gx,grx·filei);
[0093] 因此,最终获得密文文件C*(filei)=(gx,grxfilei),其中,filei∈File。
[0094] 在这个实施方式中,第一随机用户秘钥和第一随机服务器端秘钥是相关联的。具体地,第一随机用户秘钥Kui=(xi1,SK)中的xi1和第一随机服务器端秘钥Ksi=(i,xi2)中的xi2是通过私钥MSK=x相关联的:xi2=x-xi1。
[0095] 本实施例提供的数据加密方法中,先将明文文件的明文关键词转换成明文关键词向量,再通过局部敏感哈希对明文关键词向量进行哈希转换,形成文件索引,不需要扩展索引文件的大小,也不需要预先构建模糊关键词集,降低了系统存储压力以及后续的查询的复杂性。而且,明文文件在发送至服务器端时预先进行了加密,提高了数据的安全性。
[0096] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0097] 实施例2
[0098] 图5示出与实施例1中数据加密方法一一对应的数据加密装置的原理框图。如图2所示,该数据加密装置包括文件索引建立模块11、第一随机用户秘钥获取模块12、加密文件和加密索引获取模块13和加密文件和加密索引发送模块14。其中,文件索引建立模块11、第一随机用户秘钥获取模块12、加密文件和加密索引获取模块13和加密文件和加密索引发送模块14的实现功能与实施例1中数据加密方法对应的步骤一一对应,为避免赘述,本实施例不一一详述。
[0099] 文件索引建立模块11,用于获取明文文件的明文关键词,基于明文关键词采用局部敏感哈希算法建立明文文件的文件索引。
[0100] 第一随机用户秘钥获取模块12,用于获取秘钥管理中心发送的第一随机用户秘钥。
[0101] 加密文件和加密索引获取模块13,用于采用第一随机用户秘钥分别加密明文文件和文件索引,获取加密文件和加密索引。
[0102] 加密文件和加密索引发送模块14,用于将加密文件和加密索引发送至服务器端,以指示服务器端采用由秘钥管理中心发送的第一随机服务器端秘钥对加密文件进行加密,形成密文文件,其中第一随机用户秘钥和第一随机服务器端秘钥相关联。
[0103] 优选地,文件索引建立模块11包括明文关键词获取单元111、哈希转换单元112和文件索引获取单元113。
[0104] 明文关键词获取单元111,用于从明文文件中提取明文关键词,将明文关键词转化成明文关键词向量。
[0105] 哈希转换单元112,用于采用p-stable局部敏感哈希函数将每一明文关键词向量进行哈希转换,获取对应的明文哈希值。
[0106] 文件索引获取单元113,用于将每一明文哈希值插入到布隆过滤器进行过滤,得到文件索引。
[0107] 优选地,加密文件和加密索引获取模块13包括加密文件获取单元131、密钥KI产生单元132、索引向量划分单元133和加密索引获取单元134。
[0108] 加密文件获取单元131,用于基于第一随机用户秘钥,采用ElGamal算法加密明文文件,获取加密文件。
[0109] 密钥KI产生单元132,用于基于第一随机用户秘钥,采用哈希映射函数对第一随机用户秘钥进行处理,产生密钥KI。
[0110] 索引向量划分单元133,用于将文件索引ID按如下规则划分为两个索引向量{I′,I″}:对于每个元素ij∈ID,如果Sj∈S且Sj等于1,则设置ij′=ij″=ij;否则,ij′=1/2·ij+r,ij″=1/2·ij-r,其中,r为一随机数,S∈{0,1}m。
[0111] 加密索引获取单元134,用于基于密钥KI和两个索引向量{I′,I″}加密文件索引,获取加密索引:EncSK(ID)={M1T·I′,M2T·I″,Enc(KI,fidi)},其中,fidi为明文文件的文件ID,M1,M2∈Rm*m为可逆矩阵。
[0112] 实施例3
[0113] 图6示出本实施例中数据查询方法的流程图。该数据查询方法应用在各种终端中,以解决数据查询效率不高的问题。如图6所示,该数据查询方法包括服务器端执行的如下步骤:
[0114] S21:获取查询关键词,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门。
[0115] 其中,查询关键词是指用于对明文文件进行查询的关键词。查询关键词由授权用户端发送到服务器端中。服务器端从授权用户端获取查询关键词,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门。其中,陷门是在某个系统或某个文件中设置的"机关",使得在提供特定的输入数据时,允许违反安全策略。例如,一个登录处理子系统允许处理一个特定的用户识别码,以绕过通常的口令检查。
[0116] 在一个具体实施方式中,获取查询关键词,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门,如图7所示,包括以下步骤:
[0117] S211:获取查询关键词,将查询关键词转换成查询关键词向量。
[0118] 服务器端从授权用户端j获取查询关键词之后,将查询关键词转换成查询关键词向量,具体的转换过程和步骤S111相似,在此不再赘述。
[0119] S212:采用p-stable局部敏感哈希函数将每一查询关键词向量进行转换,获取对应的查询哈希值。
[0120] 服务器端获取授权用户端j发送的查询关键词。从p-stable局部敏感哈希函数群H={h:{0,1}26*26—>{0,1}m}}中选取l个独立的p-stable局部敏感哈希函数hj,l为一随机数。对于每一查询关键词,使用p-stable局部敏感哈希函数hj∈H将每一个查询关键词向量进行哈希转换,得到对应的查询哈希值。具体的哈希转换过程和步骤S112相似,在此不再赘述。
[0121] S213:将每一查询哈希值插入到布隆过滤器进行过滤,获取查询关键值Q。
[0122] 具体地,为每一明文文件构造一n位的布隆过滤器,并将布隆过滤器中的每一位初始化为0。将步骤S211中得到的对应的查询哈希值插入到对应的布隆过滤器中,得到查询关键值Q。
[0123] S214:将查询关键值Q按照以下规则划分为两个查询向量{Q′,Q″},对于查询关键值Q中的一个元素qj∈Q,如果Sj∈S且Sj等于1,则设置qj′=qj″=qj;否则,qj′=1/2·qj+r′,qj″=1/2·qj-r′,其中,r′为一随机数,S∈{0,1}m。
[0124] 在该步骤中,通过秘钥管理中心中的SK=(M1,M2,S)将查询关键值Q划分为两个查询向量{Q′,Q″}。具体地,对于查询关键值Q中的一个元素qj∈Q,先从S中获取对应的向量Sj,若Sj等于1,则划分元素qj为{qj',qj″}。若Sj不等于1,则划分元素qj为{1/2·qj+r′,1/2·qj-r′},其中,r′为一随机数,S∈{0,1}m。
[0125] S215:基于两个查询向量{Q′,Q″}加密查询关键值Q,获取查询陷门:EncSK(Q)={M1-1·Q′,M2-1·Q″},其中,M1,M2∈Rm*m为可逆矩阵。
[0126] 在将查询关键值Q划分为两个查询向量{Q′,Q″}之后,基于两个查询向量{Q′,Q″}加密查询关键值Q,得到查询陷门:EncSK(Q)={M1-1·Q′,M2-1·Q″}。
[0127] 在一个实施方式中,Enc可以通过AES或者DES实现。其中,AES是指高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。而DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。
[0128] 在这个实施方式中,采用局部敏感哈希函数对查询关键词进行处理,得到查询陷门,以提高数据查询的效率,降低数据查询中的复杂度。
[0129] 在一个具体实施方式中,获取查询关键词,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门的步骤(即步骤S21)也可以在授权用户端完成,即授权用户端获取到查询陷门之后,再将查询陷门发送到服务器端,以减轻服务器端的查询负担,提高查询效率。
[0130] S22:基于查询关键词和查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引。
[0131] 服务器端获取到查询陷门后,基于查询陷门查询加密索引,将与查询陷门匹配成功的加密索引作为目标加密索引。
[0132] 在一个具体实施方式中,基于查询关键词和查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引,如图8所示,具体包括以下步骤:
[0133] S221:获取查询陷门与每一加密索引的内积值,作为查询内积值。
[0134] 其中,内积是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。而内积值则是通过内积运算得到的结果值。具体地,两个向量a=[a1,a2,…,an]和b=[b1,b2,…,bn]的内积值的计算方式为:a·b=a1b1+a2b2+……+anbn。
[0135] 在这个实施方式中,通过计算查询陷门EncSK(Q)与每一加密索引EncSK(ID)的内积值,即得到查询内积值:M1TI′·M1-1Q′+M2TI″·M2-1Q″。
[0136] S222:获取查询关键词与每一文件索引的内积值,作为数据内积值。
[0137] 通过计算查询关键词与每一文件索引的内积值,得到数据内积值:IT·Q=I′T·Q′+I″T·Q″。
[0138] S223:获取查询内积值和数据内积值的差值,若查询内积值和数据内积值的差值在预设范围内,则查询陷门和加密索引匹配成功,将加密索引作为目标加密索引。
[0139] 在获取到查询内积值和数据内积值之后,计算查询内积值和数据内积值的差值,若查询查询内积值和数据内积值的差值在预设范围内,则查询陷门和对应的加密索引匹配成功,将该加密索引作为目标加密索引。其中,预设范围可以是一个预设区间,通过实际需要设置。优选地,该预设范围也可为0,即当查询查询内积值和数据内积值的差值为0时,则查询陷门和对应的加密索引匹配成功。
[0140] 在这个实施方式中,服务器端基于查询关键词和查询陷门,获取查询内积值和数据内积值的差值,若查询内积值和数据内积值的差值在预设范围内,则将对应的加密索引作为目标加密索引。通过这个方式可以在数据查询中快速定位到目标加密索引,进一步地提高了数据查询效率。
[0141] S23:基于目标加密索引,将与目标加密索引相对应的密文文件确定为目标密文文件;其中,密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的。
[0142] 确定目标加密索引之后,根据该目标加密索引定位到对应的密文文件,将该密文文件确定为目标密文文件。具体地,可以对目标加密索引进行解密,以得到明文文件的文件ID:fidi。基于明文文件的文件ID即可定位到对应的密文文件。其中,密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的。服务器端在接收到数据拥有端发送的加密文件之后,会采用由秘钥管理中心发送的第一随机服务器端秘钥Ksi=(i,xi2)对加密文件进行加密,形成密文文件。具体地,服务器端先找到与数据拥有端对应的第一服务器端密钥Ksi=(i,xi2),再基于xi2采用ElGamal算法对加密文件进行加密:
[0143] C*(filei)=(gx,(gr)xi2·grxi1·filei)=(gx,(gr)xi2+xi1·filei)=(gx,grx·filei);
[0144] 因此,最终获得密文文件C*(filei)=(gx,grxfilei),filei∈File。
[0145] S24:获取秘钥管理中心发送的第二随机服务器端秘钥。
[0146] 在该步骤中,服务器端获取从秘钥管理中心发送的第二随机服务器端秘钥,以供后续对相关数据(明文文件和文件索引)进行加密。
[0147] 在一个具体实施方式中,秘钥管理中心发送的第二随机服务器端秘钥在秘钥管理中心的初始化过程中生成。其中,秘钥管理中心的初始化包括以下步骤:
[0148] (1)数据拥有端发送安全参数k到秘钥管理中心,秘钥管理中心将安全参数k作为输入,输出一个循环群G、一个素数q和一个哈希映射函数f,其中,循环群G包括一个生成元g。
[0149] 其中,循环群G是指:如果一个群G可以由元素g生成,即对任意b∈G,都存在a∈Z,使得b=ga,则称G=是一个循环群,g是循环群G的一个生成元。其中,Z表示全体素数q的所有剩余类构成的集合,该集合在素数q的加法下构成阶为q的交换群。安全参数k属于正整数,基于安全参数k,秘钥管理中心会选择一个k比特的素数q。此外,秘钥管理中心还会选择一个哈希映射函数f,该哈希映射函数f以任意长的比特串为输入,以循环群G上的元素为输出的哈希函数f,即f:{0,1}*→G。
[0150] (2)从Zq*中选取一个随机数x,计算出h=gx,获取公钥PK=(G,g,q,h,f),私钥MSK=x。
[0151] 其中,Zq*表示Zq中与q互素的剩余类构成的集合,即Zq*中的元素在同余意义下都是小于q且与q互素的正整数,因此,Zq*可以写作集合Zq*={1,2,…,q-1}。
[0152] 该步骤中,通过从Zq*中选取一个随机数x作为私钥MSK=x,并在计算出h=gx之后,形成对应的公钥PK=(G,g,q,h,f)。
[0153] (3)对于授权用户端j,秘钥管理中心从Zq*中随机选择一个数xj1,并计算xj2=x-xj1。形成授权用户端j对应的服务器端秘钥Ksj=xj2和用户秘钥Kuj=xj1。密钥管理中心将第二随机用户密钥Kuj=(xj1,SK)发送给授权用户端j,将第二随机服务器端密钥Ksj=(j,xj2)发送给服务器端。服务器端接收到Ksj后,就更新存储在它上面的第二随机用户-密钥映射关系Ks=Ks∪(j,xj2)。
[0154] 可选地,这个实施方式中秘钥管理中心的初始化可以和实施例1中的秘钥管理中心的初始化同时进行。在另一个实施方式中,密钥管理中心在实施例1中完成初始化之后,在本实施方式中仅执行上述步骤(3),步骤(1)和(2)已在实施例1中完成。
[0155] 进一步地,为每一授权用户端分配第二随机用户密钥时,还生成一授权用户端ID,该授权用户端ID和该授权用户端的第二随机用户密钥一一对应。在授权用户端进行数据查询时,服务器端根据授权用户端ID选择对应的第二随机服务器端密钥进行解密。
[0156] 优选地,还可以为授权用户端配置和授权用户端ID对应的密码。如此,可以更好地保证数据的安全性,即使该授权用户端的第二随机用户密钥被盗取,如果没有该授权用户端对应的授权用户端ID和密码,也无法成功地利用手中的第二随机用户密钥从服务器端获取到数据。
[0157] 在这个实施方式中,针对不同授权用户端,生成和分配和该授权用户端对应的第二随机服务器端密钥和第二随机用户密钥,如此可以在增加了文件的安全性的同时也可实现多个授权用户端共享文件的目的。
[0158] S25:基于第二随机服务器端秘钥,对目标密文文件进行解密,获取目标加密文件。
[0159] 服务器端获取存储在其上的授权用户端对应的第二随机服务器端秘钥Ksj=xj2,利用xj2对目标密文文件C*(filei)进行解密,得到目标加密文件。具体地,目标加密文件C’(filei)为:
[0160] C’(filei)=(gr,grxfilei·(gr)-xj2)=(gr,g(x-xj2)rfilei)=grxj1filei。
[0161] S26:将目标加密文件发送至授权用户端,以指示授权用户端采用由秘钥管理中心发送的第二随机用户秘钥对目标加密文件进行解密,获取对应的明文文件。
[0162] 服务器端将获取到的目标加密文件发送至对应的授权用户端j,以指示授权用户端j采用由秘钥管理中心发送的第二随机用户秘钥对目标加密文件进行解密,获取对应的明文文件。具体地,授权用户端j收到服务器端发送的目标加密文件后,利用第二随机用户秘钥xj1对目标加密文件进行解密,获取对应的明文文件:grxj1filei·(gr)-xj1=filei,以解密该加密文件,得到最终的明文文件。
[0163] 在这个实施方式中,第二随机用户秘钥和第二随机服务器端秘钥是相关联的。具体地,第二随机用户秘钥xj1和第二随机服务器端秘钥xj2是通过私钥MSK=x相关联的:xj2=x-xj1。
[0164] 本实施例提供的数据查询方法中,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门。并基于查询关键词和查询陷门得到对应的目标加密索引以定位到对应的目标密文文件,提高了数据查询的效率,降低了数据查询的复杂度。而且,通过服务器端和授权用户端对目标密文文件二次解密才可以获得对应的明文文件,提高了数据的安全性。
[0165] 实施例4
[0166] 图9示出与实施例1中数据查询方法一一对应的数据查询装置的原理框图。如图9所示,该数据查询装置包括查询陷门获取模块21、目标加密索引获取模块22、目标密文文件获取模块23、第二随机服务器端秘钥获取模块24、目标加密文件获取模块25和目标加密文件发送模块26。其中,查询陷门获取模块21、目标加密索引获取模块22、目标密文文件获取模块23、第二随机服务器端秘钥获取模块24、目标加密文件获取模块25和目标加密文件发送模块26的实现功能与实施例3中数据查询方法对应的步骤一一对应,为避免赘述,本实施例不一一详述。
[0167] 查询陷门获取模块21,用于获取查询关键词,采用局部敏感哈希函数对查询关键词进行处理,以形成查询陷门。
[0168] 目标加密索引获取模块22,用于基于查询关键词和查询陷门,将与查询陷门匹配成功的加密索引作为目标加密索引。
[0169] 目标密文文件获取模块23,用于基于目标加密索引,将与目标加密索引相对应的密文文件确定为目标密文文件;其中,密文文件是采用秘钥管理中心发送的第一随机服务器端秘钥对数据拥有端发送的加密文件进行加密后形成的。
[0170] 第二随机服务器端秘钥获取模块24,用于获取秘钥管理中心发送的第二随机服务器端秘钥。
[0171] 目标加密文件获取模块25,用于基于第二随机服务器端秘钥,对目标密文文件进行解密,获取目标加密文件。
[0172] 目标加密文件发送模块26,用于将目标加密文件发送至授权用户端,以指示授权用户端采用由秘钥管理中心发送的第二随机用户秘钥对目标加密文件进行解密,获取对应的明文文件,其中,第二随机用户秘钥和第二随机服务器端秘钥相关联。
[0173] 优选地,查询陷门获取模块21包括查询关键词向量转换单元211、查询哈希值获取单元212、查询关键值Q获取单元213、查询向量划分单元214和查询陷门获取单元215。
[0174] 查询关键词向量转换单元211,用于获取查询关键词,将查询关键词转换成查询关键词向量。
[0175] 查询哈希值获取单元212,用于采用p-stable局部敏感哈希函数将每一查询关键词向量进行转换,获取对应的查询哈希值。
[0176] 查询关键值Q获取单元213,用于将每一查询哈希值插入到布隆过滤器进行过滤,获取查询关键值Q。
[0177] 查询向量划分单元214,用于将查询关键值Q按照以下规则划分为两个查询向量{Q′,Q″},对于查询关键值Q中的一个元素qj∈Q,如果Sj∈S且Sj等于1,则设置qj′=qj″=qj;否则,qj′=1/2·qj+r′,qj″=1/2·qj-r′,其中,r′为一随机数,S∈{0,1}m。
[0178] 查询陷门获取单元215,用于基于两个查询向量{Q′,Q″}加密查询关键值Q,获取查询陷门:EncSK(Q)={M1-1·Q′,M2-1·Q″},其中,M1,M2∈Rm*m为可逆矩阵。
[0179] 优选地,目标加密索引获取模块22包括查询内积值获取单元221、数据内积值获取单元222和目标加密索引获取单元223。
[0180] 查询内积值获取单元221,用于获取查询陷门与每一加密索引的内积值,作为查询内积值。
[0181] 数据内积值获取单元222,用于获取查询关键词与每一文件索引的内积值,作为数据内积值。
[0182] 目标加密索引获取单元223,用于获取查询内积值和数据内积值的差值,若查询内积值和数据内积值的差值在预设范围内,则查询陷门和加密索引匹配成功,将加密索引作为目标加密索引。
[0183] 实施例5
[0184] 本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例1中数据加密方法,或者实现实施例3中数据查询方法,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现实施例2中数据加密装置中各模块/单元的功能,或者实现实施例4中数据查询装置中各模块/单元的功能,为避免重复,这里不再赘述。
[0185] 可以理解地,所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号和电信信号等。
[0186] 实施例6
[0187] 图10是本发明一实施例提供的计算机设备的示意图。如图10所示,该实施例的计算机设备60包括:处理器61、存储器62以及存储在存储器62中并可在处理器61上运行的计算机程序63。处理器61执行计算机程序63时实现上述实施例1中数据加密方法的步骤,例如图2所示的步骤S11至S14。或者,处理器61执行计算机程序63时实现实施例2中数据加密装置中各模块/单元的功能,例如图5所示文件索引建立模块11、第一随机用户秘钥获取模块12、加密文件和加密索引获取模块13和加密文件和加密索引发送模块14的功能。或者,处理器61执行计算机程序63时实现上述实施例3中数据查询方法的步骤,例如图6所示的步骤S21至S26。或者,处理器61执行计算机程序63时实现实施例4中数据查询装置中各模块/单元的功能,例如图9所示包括查询陷门获取模块21、目标加密索引获取模块22、目标密文文件获取模块23、第二随机服务器端秘钥获取模块24、目标加密文件获取模块25和目标加密文件发送模块26的功能。
[0188] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0189] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。