基于短语的可搜索对称加密方法转让专利

申请号 : CN201510248964.2

文献号 : CN104899517B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王涛杨波李晨张瑞文

申请人 : 陕西师范大学

摘要 :

一种基于短语的可搜索对称加密方法,由客户端初始化、生成关键词索引、生成安全索引并上传云端服务器、生成查询陷门并上传云端服务器、云端服务器执行查询并返回结果步骤组成。云端服务器存储加密后的密文和加密后的安全索引,仅掌握文件编号和陷门信息,在云端的存储和查询操作时,不会泄露用户存储数据的信息和查询语句的信息,保证了用户数据和查询模式的机密性,查询过程只有一轮交互,上传陷门并返回包含查询语句的文件编号,用户根据需要下载特定的文件到本地解密,避免了不必要文件在网络中传输,减少了网络开销。本发明具有保密性好、网络开销少等优点,可适用于低带宽环境中使用。

权利要求 :

1.一种基于短语的可搜索对称加密方法,其特征在于它是由下述步骤组成:

(1)客户端初始化

生成全局密钥x、y、z;选择三个伪随机置换ω、θ、ρ;选择两个伪随机函数g、 三个伪随机置换ω、θ、ρ为:ω:{0,1}k×{0,1}p→{0,1}p

θ:{0,1}k×{0,1}lg(m|Δ|)→{0,1}lg(m|Δ|)

ρ:

两个伪随机函数g、 为:

g:{0,1}k×{0,1}p→{0,1}k+log(m|Δ|)

:{0,1}k×{0,1}p→{0,1}lg|Δ|;

(2)生成关键词索引

从待加密文件中抽取关键词及其位置关系建立关键词索引,关键词索引为三级链表结构,依次为:头节点链表、后继词链表及关键词位置链表;生成关键词索引的方法为:按关键词在文档集合中出现的先后顺序建立头节点链表,每个关键词仅出现一次,且指向一个后继词链表,即该关键词是其所指向后继词链表的头节点;头节点和其指向的后继词链表中的每一个节点组成具有前后继关系的关键词对;将每一个关键词对在文档中出现的次数及位置记录在关键词位置链表中生成关键词索引,后继词链表中每一个节点是其对应的每一个关键词位置链表的头节点;

(3)生成安全索引并上传云端服务器

分别对关键词索引的头节点链表、后继词链表、关键词位置链表进行加密生成安全索引,并将其和用户以自选加密方案加密的文档一起上传至云端服务器;

(4)生成查询陷门并上传云端服务器

客户查询时,客户端将用户的查询短语生成查询陷门并发送给云端服务器;生成查询陷门的方法为:将查询语句拆分成关键词集合{w1,w2,...,wn},用密钥x和伪随机函数 对关键词wi生成 用密钥y和伪随机函数g对关键词wi生成gy(wi),用密钥z和伪随机置换ω对关键词wi生成ωz(wi); gy(wi)、和ωz(wi)组合为一个三元组,所有三元组组成查询陷门如下:其中n为用户输入的查询语句中关键词个数,并上传至云端服务器;

(5)云端服务器执行查询并返回结果

云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,根据查询陷门长度将检索操作分为单关键词查询,双关键词查询和至少3个关键词查询;单关键词查询查询陷门长度和双关键词查询陷门长度分别为1个三元组和1对三元组,进行一次查询操作;至少3个关键词查询陷门长度至少为3个三元组,每相邻的两个三元组做一次双关键词查询操作,对第n次的查询操作的结果集合中的关键词位置l减去n-1,再对所有结果集合进行交集运算,生成一个最终结果集合;将最终的结果集合中所有的文件标识id(d)返回至客户端。

2.根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤(3)中对关键词索引的头节点链表进行加密生成安全索引的方法为:用密钥x和伪随机函数对头节点链表中第i个节点的关键字wi生成 由密钥生成算法生成密钥ki,0和密钥r;

用密钥r和伪随机数生成器生成的si通过伪随机置换θ得到θr(si);用全局密钥y和伪随机函数g生成gy(wi);用gy(wi)与密钥ki,0和θr(si)进行异或运算,将结果与 连接组成一个节点的加密结果,即其中1≤i≤头节点链表长度;

对关键词索引的后继词链表进行加密生成安全索引的方法为:初始化一个计数器c从1开始,每加密一个节点,计数器c加1;从第一个节点开始加密,节点由头节点链表节点所指向时,用指向它的头节点链表节点中的θr(si)作为前缀;节点由后继词链表节点所指向时,用伪随机置换θ和密钥r对计数器c生成θr(c)作为前缀;

用全局密钥z和伪随机置换ω对节点关键字wi,j生成ωz(wi,j),其中wi,j表示wi的第j个后继关键词;由密钥生成算法生成密钥si,0和密钥λ;用伪随机数生成器生成m并由伪随机置换ρ得到ρλ(m);由密钥生成算法生成密钥ki,j和密钥r;用计数器c、密钥r和伪随机置换θ得到θr(c+1);将上述五个部分按顺序连接,使用指向该节点的上一个节点中的密钥ki,j-1作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀θr(si)或前缀θr(c)连接组成节点wi,j的加密结果,即或

其中1≤I≤头节点链表长度,1≤j≤头节点链表节点wi的后继词链表长度;重复执行以上操作直至后继词链表结束,完成后继词链表加密;

对关键词索引的关键词位置链表进行加密生成安全索引的方法为:初始化一个计数器t从1开始,每加密一个节点,计数器t加1;从第一个节点开始加密,节点由后继词链表所指向时,用指向它的后继词链表节点中的ρλ(m)作为前缀;节点由关键词位置链表节点所指向时,用伪随机置换ρ、密钥生成算法生成的密钥λ和计数器t生成ρλ(t)作为前缀;

用密钥生成算法生成密钥si,j和密钥λ,用伪随机置换ρ和计数器t生成ρλ(t+1),将节点中包含的文件标识信息id(d),关键词对位置信息l与上述密钥si,j和ρλ(t+1)按顺序连接;

用指向该节点的上一个节点中的密钥si,j-1作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀ρλ(m)或前缀ρλ(t)连接组成一个节点的加密结果,即或重复以上操作直至关键词位置链表结束,完成关键词位置链表加密。

3.根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤(5)中双关键词查询的方法为:查询陷门中1对三元组 和 遍历安全索

引的操作如下:

双关键词查询的查询陷门为:

用 在安全的头节点链表中寻找对应的节点,用gy(w1)与找到的节点异或运算获得θr(si)和密钥ki,0,获取θr(si)在安全的后继词链表中寻找对应的节点,用密钥ki,0解密节点,获取ωz(wi,j)、密钥si,0、ρλ(t)、密钥ki,j、θr(c+1);再比较ωz(w2)与ωz(wi,j)是否相同;

若不相同,使用θr(c+1)在安全的后继词链表中寻找对应节点,并用密钥ki,j解密获取新的ωz(wi,j)、新的密钥si,0,新的ρλ(t)、新的密钥ki,j、新的θr(c+1),比较ωz(wi+1)与新的ωz(wi,j)是否相同,循环以上操作直至匹配成功;若相同,使用ρλ(t)在安全的关键词位置链表中寻找对应节点,并用密钥si,0解密,获得文件标识id(d)、关键词对位置l、新的ρλ(t)、si,j,再用新的ρλ(t)在安全的关键词位置链表中寻找对应节点,并用si,j解密,循环此操作直至安全的关键词位置链表结束,所有获得的文件标识id(d),关键词对位置l构成一次查询的结果集合。

4.根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤(5)中单关键词查询的方法为:单关键查询的查询陷门为:

用 在安全的头节点链表中寻找对应的节点,用gy(w1)与找到的节点异或运算获得θr(si)和密钥ki,0,获取θr(si)在安全的后继词链表中寻找对应的节点,用密钥ki,0解密节点,获得ωz(wi,j)、密钥si,0、ρλ(t)、密钥ki,j、θr(c+1);使用ρλ(t)在安全的关键词位置链表中寻找对应节点,并用密钥si,0解密,获得文件标识id(d)、关键词对位置l、新的ρλ(t)、si,j,再用新的ρλ(t)在安全的关键词位置链表中寻找对应节点,并用si,j解密,循环此操作直至安全的关键词位置链表结束,再用θr(c+1)在安全的后继词链表中寻找对应的节点,用密钥ki,j解密,获得新的密钥si,0、新的ρλ(t)、新的密钥ki,j、新的θr(c+1),重复以上操作直至安全的后继词链表结束,所有获得的文件标识id(d),关键词对位置l构成一次查询的结果集合。

5.根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤(5)中至少3个关键词查询的方法为:至少3个关键词查询的查询陷门为:

进行多次双关键词查询,每次使用查询陷门中的第i个三元组 和

第i+1个三元组 进行一次双关键词查询,i初始为1,每做一次双

关键词查询i加1,每次查询中获得的位置信息l减去i-1,将多次双关键词查询的结果集合进行交集运算获得最终结果集合,最终结果集合中所有文件标识返回至客户端。

说明书 :

基于短语的可搜索对称加密方法

技术领域

[0001] 本发明属于数据加密技术领域,具体涉及到短语的可搜索加密方法。

背景技术

[0002] 近年来,随着云计算技术的迅猛发展,大量云服务产品应运而生,并获得广泛应用。例如云网络存储工具Dropbox、亚马逊简易储存服务(Amazon simple storage service)和微软的云计算平台Windows Azure等。它们在云端服务器上为用户保存数据和搭设虚拟系统环境,用户可以随时随地通过网络对数据进行操作,使用硬件资源。
[0003] 由于其方便快捷的特性,越来越多的用户选择将本地的数据迁移到云端服务器中,以此减少本地管理数据的开销。由于数据存储在第三方服务器脱离了用户控制,用户数据可以被第三方服务器管理员及非法用户访问,容易造成数据泄露,对于一些敏感数据存在严重的安全隐患。为了避免信息泄漏,保证数据的机密性,用户通常对数据进行必要的加密,将数据以密文的形式存储在云端服务器。但当用户需要获取包含特定信息的文件时,如何在密文中检索就成为难以解决的问题。最简单的方法是将所有的密文文件下载到本地进行解密,在明文中检索,但这种操作会造成大量不必要网络开销。另一种简单方法是密钥和查询短语发送至云端,在云端进行解密检索操作,这样虽然减少了网络开销,但也无疑破坏了数据的机密性。
[0004] 为了在保证数据机密性的同时减少不必要的网络开销,可搜索加密应运而生,并在近几年中得到了研究者的广泛研究和发展。
[0005] 2012年,Y.Tang,D.Gu,N.Ding,and H.Lu在“Phrase search over encrypted data with symmetric encryption scheme”中提出了一种两阶段的可搜索加密方案,第一阶段获取并返回包含查询短语中关键词的文件标识集合,第二阶段客户端发送查询请求和文件标识列表,云端服务器根据查询请求在列表中包含文件的索引中进行精确检索,最后返回包含查询语句的文件密文。其缺点在于客户机与云端服务器需要进行两次交互才能完成对密文的搜索,增大了网络开销。

发明内容

[0006] 本发明所要解决的技术问题在于克服上述数据加密的缺点,提供一种方法简单、易于操作、保密性好的基于短语的可搜索对称加密方法。
[0007] 解决上述技术问题所采用的技术方案它是由下述步骤组成:
[0008] 1、客户端初始化
[0009] 生成全局密钥x、y、z;选择三个伪随机置换ω、θ、ρ;选择两个伪随机函数g、[0010] 2、生成关键词索引
[0011] 从待加密文件中抽取关键词及其位置关系建立关键词索引,关键词索引为三级链表结构,依次为:头节点链表、后继词链表及关键词位置链表;生成关键词索引的方法为:按关键词在文档集合中出现的先后顺序建立头节点链表,每个关键词仅出现一次,且指向一个后继词链表,即该关键词是其所指向后继词链表的头节点;头节点和其指向的后继词链表中的每一个节点组成具有前后继关系的关键词对;将每一个关键词对在文档中出现的次数及位置记录在关键词位置链表中生成关键词索引,后继词链表中每一个节点是其对应的每一个关键词位置链表的头节点。
[0012] 3、生成安全索引并上传云端服务器
[0013] 分别对关键词索引的头节点链表、后继词链表、关键词位置链表进行加密生成安全索引,并将其和用户以自选加密方案加密的文档一起上传至云端服务器。
[0014] 4、生成查询陷门并上传云端服务器
[0015] 客户查询时,客户端将用户的查询短语生成查询陷门并发送给云端服务器;生成查询陷门的方法为:将查询语句拆分成关键词集合{w1,w2,...,wn},用密钥x和伪随机函数对关键词wi生成 用密钥y和伪随机函数g对关键词wi生成gy(wi),用密钥z和伪随机置换ω对关键词wi生成ωz(wi); gy(wi)、和ωz(wi)组合为一个三元组,所有三元组组成查询陷门如下:
[0016]
[0017] 其中n为用户输入的查询语句中关键词个数,并上传至云端服务器。
[0018] 5、云端服务器执行查询并返回结果
[0019] 云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,根据查询陷门长度将检索操作分为单关键词查询,双关键词查询和至少3个关键词查询;单关键词查询查询陷门长度和双关键词查询陷门长度分别为1个三元组和1对三元组,进行一次查询操作;至少3个关键词查询陷门长度至少为3个三元组,每相邻的两个三元组做一次双关键词查询操作,对第n次的查询操作的结果集合中的关键词位置l减去n-1,再对所有结果集合进行交集运算,生成一个最终结果集合;将最终的结果集合中所有的文件标识id(d)返回至客户端。
[0020] 在本发明的步骤3中,对关键词索引的头节点链表进行加密生成安全索引的方法为:用密钥x和伪随机函数 对头节点链表中第i个节点的关键字wi生成 由密钥生成算法生成密钥ki,0和密钥r;用密钥r和伪随机数生成器生成的si通过伪随机置换θ得到θr(si);用全局密钥y和伪随机函数g生成gy(wi);用gy(wi)与密钥ki,0和θr(si)进行异或运算,将结果与 连接组成一个节点的加密结果,即
[0021]
[0022] 其中1≤i≤头节点链表长度。
[0023] 对关键词索引的后继词链表进行加密生成安全索引的方法为:初始化一个计数器c从1开始,每加密一个节点,计数器c加1;从第一个节点开始加密,节点由头节点链表节点所指向时,用指向它的头节点链表节点中的θr(si)作为前缀;节点由后继词链表节点所指向时,用伪随机置换θ和密钥r对计数器c生成θr(c)作为前缀。
[0024] 用全局密钥z和伪随机置换ω对节点关键字wi,j生成ωz(wi,j),其中wi,j表示wi的第j个后继关键词;由密钥生成算法生成密钥si,0和密钥λ;用伪随机数生成器生成m并由伪随机置换ρ得到ρλ(m);由密钥生成算法生成密钥ki,j和密钥r;用计数器c、密钥r和伪随机置换θ得到θr(c+1);将上述五个部分按顺序连接,使用指向该节点的上一个节点中的密钥ki,j-1作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀θr(si)或前缀θr(c)连接组成节点wi,j的加密结果,即
[0025] θr(si)||εki,j-1(ωz(wi,j)||si,0||ρλ(m)||ki,j||θr(c+1))或
[0026] θr(c)||εki,j-1(ωz(wi,j)||si,0||ρλ(m)||ki,j||θr(c+1))
[0027] 其中1≤i≤头节点链表长度,1≤j≤头节点链表节点wi的后继词链表长度;重复执行以上操作直至后继词链表结束,完成后继词链表加密。
[0028] 对关键词索引的关键词位置链表进行加密生成安全索引的方法为:初始化一个计数器t从1开始,每加密一个节点,计数器t加1;从第一个节点开始加密,节点由后继词链表所指向时,用指向它的后继词链表节点中的ρλ(m)作为前缀;节点由关键词位置链表节点所指向时,用伪随机置换ρ、密钥生成算法生成的密钥λ和计数器t生成ρλ(t)作为前缀。
[0029] 用密钥生成算法生成密钥si,j和密钥λ,用伪随机置换ρ和计数器t生成ρλ(t+1),将节点中包含的文件标识信息id(d),关键词对位置信息l与上述密钥si,j和ρλ(t+1)按顺序连接;用指向该节点的上一个节点中的密钥si,j-1作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀ρλ(m)或前缀ρλ(t)连接组成一个节点的加密结果,即[0030] ρλ(m)||εsi,j-1(id(d)||l||si,j||ρλ(t+1))或
[0031] ρλ(t)||εsi,j-1(id(d)||l||si,j||ρλ(t+1))。
[0032] 重复以上操作直至关键词位置链表结束,完成关键词位置链表加密。
[0033] 在本发明的步骤5中,双关键词查询的方法为:
[0034] 查询陷门中1对三元组 和 遍历安全索引的操作如下:
[0035] 双关键词查询的查询陷门为:
[0036] 用 在安全的头节点链表中寻找对应的节点,用gy(w1)与找到的节点异或运算获得θr(si)和密钥ki,0,获取θr(si)在安全的后继词链表中寻找对应的节点,用密钥ki,0解密节点,获取ωz(wi,j)、密钥si,0、ρλ(t)、密钥ki,j、θr(c+1);再比较ωz(w2)与ωz(wi,j)是否相同;若不相同,使用θr(c+1)在安全的后继词链表中寻找对应节点,并用密钥ki,j解密获取新的ωz(wi,j)、新的密钥si,0,新的ρλ(t)、新的密钥ki,j、新的θr(c+1),比较ωz(wi+1)与新的ωz(wi,j)是否相同,循环以上操作直至匹配成功;若相同,使用ρλ(t)在安全的关键词位置链表中寻找对应节点,并用密钥si,0解密,获得文件标识id(d)、关键词对位置l、新的ρλ(t)、si,j,再用新的ρλ(t)在安全的关键词位置链表中寻找对应节点,并用si,j解密,循环此操作直至安全的关键词位置链表结束,所有获得的文件标识id(d),关键词对位置l构成一次查询的结果集合。
[0037] 在本发明的步骤5中,单关键词查询的方法为:
[0038] 单关键查询的查询陷门为:
[0039] 用 在安全的头节点链表中寻找对应的节点,用gy(w1)与找到的节点异或运算获得θr(si)和密钥ki,0,获取θr(si)在安全的后继词链表中寻找对应的节点,用密钥ki,0解密节点,获得ωz(wi,j)、密钥si,0、ρλ(t)、密钥ki,j、θr(c+1);使用ρλ(t)在安全的关键词位置链表中寻找对应节点,并用密钥si,0解密,获得文件标识id(d)、关键词对位置l、新的ρλ(t)、si,j,再用新的ρλ(t)在安全的关键词位置链表中寻找对应节点,并用si,j解密,循环此操作直至安全的关键词位置链表结束,再用θr(c+1)在安全的后继词链表中寻找对应的节点,用密钥ki,j解密,获得新的密钥si,0、新的ρλ(t)、新的密钥ki,j、新的θr(c+1),重复以上操作直至安全的后继词链表结束,所有获得的文件标识id(d),关键词对位置l构成一次查询的结果集合。
[0040] 在本发明的步骤5中,至少3个关键词查询的方法为:
[0041] 至少3个关键词查询的查询陷门为:
[0042]
[0043] 进行多次双关键 词查 询,每次使用查询陷门中的第i个三 元组和第i+1个三元组 进行一次双关键词查
询,i初始为1,每做一次双关键词查询i加1,每次查询中获得的位置信息l减去i-1,将多次双关键词查询的结果集合进行交集运算获得最终结果集合,最终结果集合中所有文件标识返回至客户端。
[0044] 本发明从所有明文中提取出单词集合,按照单词对所在文件的文件编号和在明文中的前后位置关系建立关键词索引,利用其位置信息建立索引,生成三个密钥,用三个密钥对关键词索引进行加密,生成安全索引并与用户加密的密文文件一同上传至云端服务器,查询时将短语拆分成单词集合,采用三个密钥对短语中所含单词进行加密生成陷门,用陷门按照特定的规则在安全索引文件中查询并返回查询结果。
[0045] 本发明的云端服务器仅存储加密后的密文和加密后的安全索引,仅掌握文件编号和陷门信息,在云端的存储和查询操作时,不会泄露用户存储数据的信息,也不会泄露查询语句的信息,保证了用户数据和查询模式的机密性,查询过程只有一轮交互,上传陷门并返回包含查询语句的文件编号,用户根据需要下载特定的文件到本地解密,避免了不必要文件在网络中传输,减少了网络开销。本发明与现有技术相比,减少了对本地存储资源的浪费,具有保密性好、网络开销少等优点,可适用于低带宽环境中使用。

附图说明

[0046] 图1是实施例1的关键词索引结构示意图。
[0047] 图2是实施例1步骤5中单关键词查询流程图。
[0048] 图3是实施例2步骤5中双关键词查询流程图。
[0049] 图4是实施例3步骤5中3个关键词查询流程图。

具体实施方式

[0050] 下面结合附图和实施例对本发明进一步详细说明,但本发明不限于这些实施例。
[0051] 实施例1
[0052] 以待加密文件1文件中内容为:w1,w2,w3,w4;待加密文件2文件中内容为:w2,w1,w4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0053] 1、客户端初始化
[0054] 生成全局密钥x、y、z;选择三个伪随机置换ω、θ、ρ;选择两个伪随机函数g、 三个伪随机置换ω、θ、ρ为:
[0055] ω:{0,1}k×{0,1}p→{0,1}p
[0056] θ:{0,1}k×{0,1}lg(m|Δ|)→{0,1}lg(m|Δ|)
[0057]
[0058] 两个伪随机函数g、 为:
[0059] g:{0,1}k×{0,1}p→{0,1}k+log(m|Δ|)
[0060]
[0061] 2、生成关键词索引
[0062] 图1给出了关键词索引结构示意图。在图1中,从待加密文件1(doc1)和待加密文件2(doc2)中抽取关键词及其位置关系建立关键词索引,待加密文件1文件中内容为:w1,w2,w3,w4;待加密文件2文件中内容为:w2,w1,w4,w3,w4,w3。关键词索引为三级链表结构,从左到右依次为:头节点链表、后继词链表、关键词位置链表。
[0063] 生成关键词索引的方法为:按关键词在文档集合中出现的先后顺序建立头节点链表,每个关键词仅出现一次,且指向一个后继词链表,即该关键词是其所指向后继词链表的头节点;头节点和其指向的后继词链表中的每一个节点组成具有前后继关系的关键词对;将每一个关键词对在文档中出现的次数及位置记录在关键词位置链表中生成关键词索引,后继词链表中每一个节点是其对应的每一个关键词位置链表的头节点,结构如图1所示。在图1中,头节点链表中w1节点指向后继词链表中w2节点,w1和w2组成关键词对;后继词链表节点w4是头节点链表节点w1所指向的后继词链表中的节点,w1和w4组成关键词对;头节点链表中w2节点指向后继词链表中w3节点,w2和w3组成关键词对;后继词链表节点w1是头节点链表节点w2所指向的后继词链表中的节点,w2和w1组成关键词对;头节点链表中w3节点指向后继词链表中w4节点,w3和w4组成关键词对;头节点链表中w4节点指向后继词链表中w3节点,w4和w3组成关键词对;关键词对w1,w2指向的关键词位置链表节点()表示该关键词对在带加密文件1中出现了1次,出现位置为1;关键词位置链表节点()为关键词对w1,w4指向的关键词位置链表中的节点表示该关键词对在待加密文件2中出现了1次,出现位置为2;关键词对w2,w3指向的关键词位置链表节点()表示该关键词对在带加密文件1中出现了1次,出现位置为2;关键词位置链表节点()为关键词对w2,w1指向的关键词位置链表中的节点表示该关键词对在待加密文件2中出现了1次,出现位置为1;关键词对w3,w4指向的关键词位置链表节点()表示该关键词对在带加密文件1中出现了1次,出现位置为3;关键词位置链表节点()为关键词对w3,w4指向的关键词位置链表中的节点表示该关键词对在待加密文件2中出现了1次,出现位置为
4;关键词对w4,w3指向的关键词位置链表节点()表示该关键词对在待加密文件2中出现了2次,出现位置为3和5。
[0064] 3、生成安全索引并上传云端服务器
[0065] 分别对关键词索引的头节点链表、后继词链表、关键词位置链表进行加密生成安全索引,并将其和用户以自选加密方案加密的文档一起上传至云端服务器。
[0066] 对关键词索引的头节点链表中第一个节点w1进行加密生成安全索引的方法为:用密钥x和伪随机函数 对头节点链表中的关键词w1进行生成 由密钥生成算法生成密钥k1,0和密钥r;用密钥r和伪随机数生成器生成的s1通过伪随机置换θ得到θr(s1);用全局密钥y和伪随机函数g生成gy(w1);用gy(w1)与密钥k1,0和θr(s1)进行异或运算,将结果与连接组成一个节点w1的加密结果,即
[0067]
[0068] 头节点链表中第二个节点w2、头节点链表中第三个节点w3、头节点链表中第四个节点w4的加密方法与头节点链表中第一个节点w1加密方法相同。
[0069] 对关键词索引的后继词链表进行加密生成安全索引的方法为:初始化一个计数器c从1开始,每加密一个节点,计数器c加1;从第一个节点开始加密,节点由头节点链表节点所指向时,用指向它的头节点链表节点中的θr(si)作为前缀;节点由后继词链表节点所指向时,用伪随机置换θ和密钥r对计数器c生成θr(c)作为前缀。
[0070] 用全局密钥z和伪随机置换ω对后继词链表第一个节点的关键词w2生成ωz(w2),其中第一个节点的关键词w2是头节点链表中第一个节点的关键词w1的第一个后继关键词;由密钥生成算法生成密钥s1,0和密钥λ;用伪随机数生成器生成m并由伪随机置换ρ得到ρλ(m);由密钥生成算法生成密钥k1,1和密钥r;用计数器c、密钥r和伪随机置换θ得到θr(2);将上述五个部分按顺序连接,使用指向该节点的上一个节点中的密钥k1,0作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀θr(s1)连接组成后继词链表节点第一个节点的加密结果,即
[0071]
[0072] 后继词链表中第三个节点、后继词链表中第五个节点、后继词链表中第六个节点加密方法与后继词链表第一个节点的加密方法相同。
[0073] 用全局密钥z和伪随机置换ω对后继词链表的第二个节点的关键词w4生成ωz(w4),其中第二个节点的关键词w4是头节点链表中第一个节点的关键词w1的第二个后继关键词;由密钥生成算法生成密钥s2,0和密钥λ;用伪随机数生成器生成m并由伪随机置换ρ得到ρλ(m);由密钥生成算法生成密钥k1,2和密钥r;用计数器c、密钥r和伪随机置换θ得到θr(3);将上述五个部分按顺序连接,使用指向该节点的上一个节点中的密钥k1,1作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀θr(2)连接组成后继词链表节点第一个节点的加密结果,即
[0074]
[0075] 后继词链表中第四个节点加密方法与后继词链表中的第二个节点加密方法相同。
[0076] 对关键词索引的关键词位置链表进行加密生成安全索引的方法为:初始化一个计数器t从1开始,每加密一个节点,计数器t加1;从第一个节点开始加密,节点由后继词链表所指向时,用指向它的后继词链表节点中的ρλ(m)作为前缀;节点由关键词位置链表节点所指向时,用伪随机置换ρ、密钥生成算法生成的密钥λ和计数器t生成ρλ(t)作为前缀;
[0077] 在图1中,关键词位置链表第一个节点加密方法为:用密钥生成算法生成密钥s1,1和密钥λ,用伪随机置换ρ和计数器t生成ρλ(2),将节点中包含的文件标识信息id(doc1),关键词对位置信息l(1)与上述密钥s1,1和ρλ(2)按顺序连接;用指向该节点的上一个节点中的密钥s1,0作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与指向他的后继词链表节点中的ρλ(m)连接组成一个节点的加密结果,即
[0078]
[0079] 关键词位置链表第二个节点、关键词位置链表第三个节点、关键词位置链表第四个节点、关键词位置链表第五个节点、关键词位置链表第七个节点加密方法与关键词位置链表第一个节点加密方法相同。
[0080] 关键词位置链表第六个节点加密方法为:用密钥生成算法生成密钥s5,2和密钥λ,用伪随机置换ρ和计数器t生成ρλ(7),将节点中包含的文件标识信息id(doc2),关键词对位置信息l(4)与上述密钥s5,2和ρλ(2)按顺序连接;用指向该节点的上一个节点中的密钥s5,1作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与指向他的关键词位置链表节点中的ρλ(6)连接组成一个节点的加密结果,即
[0081]
[0082] 4、生成查询陷门并上传云端服务器
[0083] 客户查询时,客户端将用户的查询短语生成查询陷门并发送给云端服务器;生成查询陷门的方法为:将查询语句拆分成关键词集合{w1,w2,...,wn},用密钥x和伪随机函数对关键词wi生成 用密钥y和伪随机函数g对关键词wi生成gy(wi),用密钥z和伪随机置换ω对关键词wi生成ωz(wi); gy(wi)、和ωz(wi)组合为一个三元组,所有三元组组成查询陷门如下:
[0084]
[0085] 其中n为用户输入的查询语句中关键词个数,并上传至云端服务器;
[0086] 5、云端服务器执行查询并返回结果
[0087] 在图2中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,查询陷门长度为1个三元组,进行单关键词查询。本实施例的单关键词查询短语为{w1},生成查询陷门为 单关键词查询的方法为:用 在安全的头节点链表中寻找对应的节点,用gy(w1)与找到的节点异或运算获得θr(s1)和密钥k1,0,获取θr(s1)在安全的后继词链表中寻找对应的节点,用密钥k1,0解密节点,获得ωz(w2)、密钥s1,0、ρλ(m)、密钥k1,1、θr(2);使用ρλ(m)在安全的关键词位置链表中寻找对应节点,并用密钥s1,0解密,获得文件标识id(doc1)、关键词对位置l(1)、ρλ(2)、s1,1,用ρλ(2)在安全的关键词位置链表中没有找到对应节点,再用θr(2)在安全的后继词链表中寻找对应的节点,用密钥k1,1解密,获得ωz(w4)、密钥s2,0、ρλ(m)、密钥k1,2、θr(3);使用ρλ(m)在安全的关键词位置链表中寻找对应节点,并用密钥s2,0解密,获得文件标识id(doc2)、关键词对位置l(2)、ρλ(3)、s2,1,用ρλ(3)在安全的关键词位置链表中没有找到对应节点,再用θr(3)在安全的后继词链表中没有找到对应的节点,查询结束。获得的查询结果中所有文件标识(id(doc1),id(doc2))返回至客户端。
[0088] 以上给出了待加密文件的数量为2以及待加密文件中1的内容为:w1,w2,w3,w4;待加密文件2文件中内容为:w2,w1,w4,w3,w4,w3的加密方法。在实际情况中,待加密文件的具体数量以及待加密文件的内容根据具体情况确定。
[0089] 实施例2
[0090] 以待加密文件1文件中内容为:w1,w2,w3,w4;待加密文件2文件中内容为:w2,w1,w4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0091] 在图3中,本实施例的步骤1~4与实施例1相同。在云端服务器执行查询并返回结果步骤5中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,查询陷门长度为2个三元组,进行双关键词查询。
[0092] 本实施例的双关键词查询短语为 {w1 ,w2} ,生成的查 询陷门为双关键词查询的方法为:用 在安全
的头节点链表中寻找对应的节点,用gy(w1)与找到的节点异或运算获得θr(s1)和密钥k1,0,获取θr(s1)在安全的后继词链表中寻找对应的节点,用密钥k1,0解密节点,获得ωz(w2)、密钥s1,0、ρλ(m)、密钥k1,1、θr(2);查询陷门中第二个三元组中ωz(w2)与获得的ωz(w2)匹配相同,使用ρλ(m)在安全的关键词位置链表中寻找对应节点,并用密钥s1,0解密,获得文件标识id(doc1)、关键词对位置l(1)、ρλ(2)、s1,1,用ρλ(2)在安全的关键词位置链表中没有找到对应节点,查询结束。获得的查询结果中所有文件标识(id(doc1))返回至客户端。
[0093] 实施例3
[0094] 以待加密文件1文件中内容为:w1,w2,w3,w4;待加密文件2文件中内容为:w2,w1,w4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0095] 在图4中,本实施例的步骤1~4与实施例1相同。在云端服务器执行查询并返回结果步骤5中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,查询陷门长度为3个三元组,进行3个关键词查询。
[0096] 本实施例的3个关键词查询短语为{w1,w2,w3},生成的查询陷门为3个关键词查询的
方法为:使用查询陷门中的第一个三元组 和第二个三元组
进行一次双关键词查询,获得的所有的位置信息l减去0,得到结果
为((id(doc1),l(1)));使用查询陷门中的第二个三元组 和第三个
三元组 进行一次双关键词查询,获得的所有的位置信息l减去1,得
到结果为((id(doc1),l(1)));两次结果进行交集运算获得查询结果中所有文件标识(id(doc1))返回至客户端。
[0097] 实施例5
[0098] 以待加密文件1文件中内容为:w1,w2,w3,w4;待加密文件2文件中内容为:w2,w1,w4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0099] 本实施例的步骤1~4与实施例1相同。在云端服务器执行查询并返回结果步骤5中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,查询陷门长度为4个三元组,进行4个关键词查询。
[0100] 本实施例的4个关键词查询短语为{w1,w4,w3,w4},生成的查询陷门为4 个
关键词查询的方法为:使用查询陷门中的第一个三元组 和第二个三
元组 进行一次双关键词查询,获得的所有的位置信息l减去0,得到
结果为((id(doc2),l(2)));使用查询陷门中的第二个三元组 和第
三个三元组 进行一次双关键词查询,获得的所有的位置信息l减去
1,得到结果为((id(doc2),l(2)),(id(doc2),l(4)));使用查询陷门中的第三个三元组和第四个三元组 进行一次双关键词查询,
获得的所有的位置信息l减去2,得到结果为((id(doc1),l(1)),(id(doc2),l(2)));三次结果进行交集运算获得查询结果中所有文件标识(id(doc2))返回至客户端。
[0101] 最后应说明的是:以上实施例仅用以说明本发明,而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。