基于短语的可搜索对称加密方法
【技术领域】
[0001] 本发明属于数据加密技术领域,具体涉及到短语的可搜索加密方法。
【背景技术】
[0002] 近年来,随着云计算技术的迅猛发展,大量云服务产品应运而生,并获得广泛 应用。例如云网络存储工具Dropbox、亚马逊简易储存服务(Amazonsimplestorage service)和微软的云计算平台WindowsAzure等。它们在云端服务器上为用户保存数据和 搭设虚拟系统环境,用户可以随时随地通过网络对数据进行操作,使用硬件资源。
[0003] 由于其方便快捷的特性,越来越多的用户选择将本地的数据迀移到云端服务器 中,以此减少本地管理数据的开销。由于数据存储在第三方服务器脱离了用户控制,用户 数据可以被第三方服务器管理员及非法用户访问,容易造成数据泄露,对于一些敏感数据 存在严重的安全隐患。为了避免信息泄漏,保证数据的机密性,用户通常对数据进行必要的 加密,将数据以密文的形式存储在云端服务器。但当用户需要获取包含特定信息的文件时, 如何在密文中检索就成为难以解决的问题。最简单的方法是将所有的密文文件下载到本地 进行解密,在明文中检索,但这种操作会造成大量不必要网络开销。另一种简单方法是密钥 和查询短语发送至云端,在云端进行解密检索操作,这样虽然减少了网络开销,但也无疑破 坏了数据的机密性。
[0004] 为了在保证数据机密性的同时减少不必要的网络开销,可搜索加密应运而生,并 在近几年中得到了研宄者的广泛研宄和发展。
[0005] 2012 年,Y.Tang,D.Gu,N.Ding,andH.Lu在"Phrasesearchoverencrypted datawithsymmetricencryptionscheme"中提出了一种两阶段的可搜索加密方案,第一 阶段获取并返回包含查询短语中关键词的文件标识集合,第二阶段客户端发送查询请求和 文件标识列表,云端服务器根据查询请求在列表中包含文件的索引中进行精确检索,最后 返回包含查询语句的文件密文。其缺点在于客户机与云端服务器需要进行两次交互才能完 成对密文的搜索,增大了网络开销。
【发明内容】
[0006] 本发明所要解决的技术问题在于克服上述数据加密的缺点,提供一种方法简单、 易于操作、保密性好的基于短语的可搜索对称加密方法。
[0007] 解决上述技术问题所采用的技术方案它是由下述步骤组成:
[0008] 1、客户端初始化
[0009] 生成全局密钥X、y、Z;选择三个伪随机置换《、0、P;选择两个伪随机函数g、
[0010] 2、生成关键词索引
[0011] 从待加密文件中抽取关键词及其位置关系建立关键词索引,关键词索引为三级链 表结构,依次为:头节点链表、后继词链表及关键词位置链表;生成关键词索引的方法为: 按关键词在文档集合中出现的先后顺序建立头节点链表,每个关键词仅出现一次,且指向 一个后继词链表,即该关键词是其所指向后继词链表的头节点;头节点和其指向的后继词 链表中的每一个节点组成具有前后继关系的关键词对;将每一个关键词对在文档中出现的 次数及位置记录在关键词位置链表中生成关键词索引,后继词链表中每一个节点是其对应 的每一个关键词位置链表的头节点。
[0012] 3、生成安全索引并上传云端服务器
[0013] 分别对关键词索引的头节点链表、后继词链表、关键词位置链表进行加密生成安 全索引,并将其和用户以自选加密方案加密的文档一起上传至云端服务器。
[0014] 4、生成查询陷门并上传云端服务器
[0015] 客户查询时,客户端将用户的查询短语生成查询陷门并发送给云端服务器;生成 查询陷门的方法为:将查询语句拆分成关键词集合{ Wl,《2, . . .,wn},用密钥x和伪随机函数 少对关键词Wi生成死〇〉),用密钥y和伪随机函数g对关键词Wi生成gy (Wi),用密钥z和伪 随机置换《对关键词&生成《 z(Wi) ;R(w,)、8?、和《z(Wi)组合为一个三元组,所有 三元组组成查询陷门如下:
[0017] 其中n为用户输入的查询语句中关键词个数,并上传至云端服务器。
[0018] 5、云端服务器执行查询并返回结果
[0019] 云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引, 根据查询陷门长度将检索操作分为单关键词查询,双关键词查询和至少3个关键词查询; 单关键词查询查询陷门长度和双关键词查询陷门长度分别为1个三元组和1对三元组,进 行一次查询操作;至少3个关键词查询陷门长度至少为3个三元组,每相邻的两个三元组做 一次双关键词查询操作,对第n次的查询操作的结果集合中的关键词位置1减去n-1,再对 所有结果集合进行交集运算,生成一个最终结果集合;将最终的结果集合中所有的文件标 识id(d)返回至客户端。
[0020] 在本发明的步骤3中,对关键词索引的头节点链表进行加密生成安全索引的方法 为:用密钥x和伪随机函数识对头节点链表中第i个节点的关键字^生成炉、(u:):由密钥 生成算法生成密钥ky和密钥r;用密钥r和伪随机数生成器生成的s1通过伪随机置换0 得到;用全局密钥y和伪随机函数g生成gy(Wi);用gy(Wi)与密钥心。和0?进 行异或运算,将结果与连接组成一个节点的加密结果,即
[0022] 其中1彡i彡头节点链表长度。
[0023] 对关键词索引的后继词链表进行加密生成安全索引的方法为:初始化一个计数器 c从1开始,每加密一个节点,计数器c加1 ;从第一个节点开始加密,节点由头节点链表节 点所指向时,用指向它的头节点链表节点中的吣(Si)作为前缀;节点由后继词链表节点所 指向时,用伪随机置换0和密钥r对计数器c生成0jc)作为前缀。
[0024] 用全局密钥z和伪随机置换《对节点关键字生成《z(Wi,j),其中表示Wi 的第j个后继关键词;由密钥生成算法生成密钥Sy和密钥X;用伪随机数生成器生成m并 由伪随机置换P得到Px(m);由密钥生成算法生成密钥ku和密钥r;用计数器c、密钥r 和伪随机置换0得到t(c+l);将上述五个部分按顺序连接,使用指向该节点的上一个节 点中的密钥kuH作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密 结果与前缀吣(Si)或前缀0Jc)连接组成节点的加密结果,即
[0025] 0 ? | |ekij-JOzOy) ||Si〇| |px(m)||ki;J|| 0r(c+l))或
[0026] 0r(c) | | e ki j_1(a>z(wi j) | |si;0| | P x (m) | |ki;J| | 0 r(c+l))
[0027] 其中1<i<头节点链表长度,1<j<头节点链表节点Wi的后继词链表长度;重 复执行以上操作直至后继词链表结束,完成后继词链表加密。
[0028] 对关键词索引的关键词位置链表进行加密生成安全索引的方法为:初始化一个计 数器t从1开始,每加密一个节点,计数器t加1;从第一个节点开始加密,节点由后继词链 表所指向时,用指向它的后继词链表节点中的Pdm)作为前缀;节点由关键词位置链表节 点所指向时,用伪随机置换P、密钥生成算法生成的密钥A和计数器t生成Px (t)作为 前缀。
[0029] 用密钥生成算法生成密钥Su和密钥A,用伪随机置换p和计数器t生成 P x(t+1),将节点中包含的文件标识信息id(d),关键词对位置信息1与上述密钥Si,j和 P x(t+1)按顺序连接;用指向该节点的上一个节点中的密钥Si#作为加密密钥,用AES加 密算法按照密码分组链接模式进行加密,将加密结果与前缀Px(m)或前缀Px (t)连接组 成一个节点的加密结果,即
[0030]px(m)| |esinacKd) | |1||si;J||Px(t+1))或
[0031] Px(t) | |e^^(icKd) | |1| |si;J| |P,(t+l))〇
[0032] 重复以上操作直至关键词位置链表结束,完成关键词位置链表加密。
[0033] 在本发明的步骤5中,双关键词查询的方法为:
[0034] 查询陷门中1对三元组
遍历安 全索引的操作如下:
[0035] 双关键词查询的查询陷门为
[0036] 用仏(>^)在安全的头节点链表中寻找对应的节点,用gy(Wl)与找到的节点异或 运算获得吣(Si)和密钥ky,获取吣(Si)在安全的后继词链表中寻找对应的节点,用密 钥 解密节点,获取《z(Wi,」)、密钥Si,Q、P,⑴、密钥ki,」、0Jc+1);再比较《>2)与 ?z(Wu)是否相同;若不相同,使用0jc+l)在安全的后继词链表中寻找对应节点,并用密 钥ki:j解密获取新的《z(Wi,j)、新的密钥Si,Q,新的Px(t)、新的密钥ki:j、新的吣(c+1),比 较《z(wi+1)与新的《z(WiJ是否相同,循环以上操作直至匹配成功;若相同,使用Px(t) 在安全的关键词位置链表中寻找对应节点,并用密钥Sy解密,获得文件标识id(d)、关键 词对位置1、新的Px(t)、Su,再用新的Px(t)在安全的关键词位置链表中寻找对应节点, 并用Su解密,循环此操作直至安全的关键词位置链表结束,所有获得的文件标识id(d),
关键词对位置1构成一次查询的结果集合。
[0037] 在本发明的步骤5中,单关键词查询的方法为:
[0038] 单关键查询的查询陷门为
[0039] 用AOn)在安全的头节点链表中寻找对应的节点,用gy(Wl)与找到的节点异或运 算获得0JSi)和密钥ku,获取0JSi)在安全的后继词链表中寻找对应的节点,用密钥ku解密节点,获得《z(Wi,j)、密钥Sy、Px(t)、密钥ki;j、0Jc+1);使用Px (t)在安全的关键 词位置链表中寻找对应节点,并用密钥Su解密,获得文件标识id(d)、关键词对位置1、新 的Px(t)、Siy再用新的Px (t)在安全的关键词位置链表中寻找对应节点,并用Sij解密, 循环此操作直至安全的关键词位置链表结束,再用0jc+l)在安全的后继词链表中寻找对 应的节点,用密钥ku解密,获得新的密钥Sy、新的Px(t)、新的密钥ku、新的吣(c+1), 重复以上操作直至安全的后继词链表结束,所有获得的文件标识id(d),关键词对位置1构 成一次查询的结果集合。
[0040] 在本发明的步骤5中,至少3个关键词查询的方法为:
[0041] 至少3个关键词查询的查询陷门为:
[0043] 进行多次双关键词查询,每次使用查询陷门中的第i个三元组
1和第i+1个三元组,进行一次双关键词查 询,i初始为1,每做一次双关键词查询i加1,每次查询中获得的位置信息1减去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文件中内容为:Wi,w2,w3,w4;待加密文件2文件中内容为: w2,Wpw4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0053] 1、客户端初始化
[0054] 生成全局密钥x、y、z;选择三个伪随机置换《、0、P;选择两个伪随机函数g、 识。三个伪随机置换〇、0、p为:
[0055] ? : l}kX{0, 1}P- {0, 1}p
[0056] 0 : l}kX{0,l}lg(m|A|)- {0, 1} lg(m|A|)
[0058] 两个伪随机函数g、供为:
[0059] g: {0,l}kX{0, 1}P- {0, 1} k+log(m|A|)
[0061] 2、生成关键词索引
[0062] 图1给出了关键词索引结构示意图。在图1中,从待加密文件l(docl)和待加密 文件2 (doc2)中抽取关键词及其位置关系建立关键词索引,待加密文件1文件中内容为: WpWhWy W4;待加密文件2文件中内容为:¥2,¥1,¥ 4,¥3,¥4,¥3。关键词索引为三级链表结构, 从左到右依次为:头节点链表、后继词链表、关键词位置链表。
[0063] 生成关键词索引的方法为:按关键词在文档集合中出现的先后顺序建立头节点链 表,每个关键词仅出现一次,且指向一个后继词链表,即该关键词是其所指向后继词链表的 头节点;头节点和其指向的后继词链表中的每一个节点组成具有前后继关系的关键词对; 将每一个关键词对在文档中出现的次数及位置记录在关键词位置链表中生成关键词索引, 后继词链表中每一个节点是其对应的每一个关键词位置链表的头节点,结构如图1所示。 在图1中,头节点链表中Wi节点指向后继词链表中W2节点,W:和W2组成关键词对;后继词 链表节点w4是头节点链表节点Wi所指向的后继词链表中的节点,W ¥4组成关键词对; 头节点链表中w2节点指向后继词链表中W3节点,W2和W3组成关键词对;后继词链表节点Wi是头节点链表节点w2所指向的后继词链表中的节点,wdPwjl成关键词对;头节点链 表中W3节点指向后继词链表中W4节点,W#P¥4组成关键词对;头节点链表中¥4节点指向 后继词链表中W3节点,W4和W3组成关键词对;关键词对WpW2指向的关键词位置链表节点 (〈docl,1,[1]>)表示该关键词对在带加密文件1中出现了 1次,出现位置为1 ;关键词位置 链表节点(<doc2, 1,[2]>)为关键词对Wl,w4指向的关键词位置链表中的节点表示该关键词 对在待加密文件2中出现了 1次,出现位置为2 ;关键词对《2,w3指向的关键词位置链表节 点(〈docl,1,[2] >)表示该关键词对在带加密文件1中出现了 1次,出现位置为2 ;关键词 位置链表节点(<doc2, 1,[1]>)为关键词对w2,Wl指向的关键词位置链表中的节点表示该关 键词对在待加密文件2中出现了 1次,出现位置为1 ;关键词对《3,w4指向的关键词位置链 表节点(〈docl,1,[3] >)表示该关键词对在带加密文件1中出现了 1次,出现位置为3 ;关 键词位置链表节点(<doc2, 1,[4]>)为关键词对《3,《4指向的关键词位置链表中的节点表示 该关键词对在待加密文件2中出现了 1次,出现位置为4 ;关键词对w4, ¥3指向的关键词位 置链表节点(<doc2, 2, [3, 5] >)表示该关键词对在待加密文件2中出现了 2次,出现位置为 3和5〇
[0064] 3、生成安全索引并上传云端服务器
[0065] 分别对关键词索引的头节点链表、后继词链表、关键词位置链表进行加密生成安 全索引,并将其和用户以自选加密方案加密的文档一起上传至云端服务器。
[0066] 对关键词索引的头节点链表中第一个节点^进行加密生成安全索引的方法为:用 密钥x和伪随机函数p对头节点链表中的关键词^进行生成仍.(4);由密钥生成算法生成 密钥kw和密钥r;用密钥r和伪随机数生成器生成的81通过伪随机置换0得到0JSl); 用全局密钥y和伪随机函数g生成gy(Wl);用gy(Wl)与密钥 和0 ,(Sl)进行异或运算, 将结果与死(叫)连接组成一个节点Wl的加密结果,即
[0068] 头节点链表中第二个节点w2、头节点链表中第三个节点w3、头节点链表中第四个 节点W4的加密方法与头节点链表中第一个节点wJp密方法相同。
[0069] 对关键词索引的后继词链表进行加密生成安全索引的方法为:初始化一个计数器 C从1开始,每加密一个节点,计数器C加1 ;从第一个节点开始加密,节点由头节点链表节 点所指向时,用指向它的头节点链表节点中的吣(Si)作为前缀;节点由后继词链表节点所 指向时,用伪随机置换0和密钥r对计数器c生成0JC)作为前缀。
[0070] 用全局密钥z和伪随机置换《对后继词链表第一个节点的关键词w2生成 ?z(w2),其中第一个节点的关键词w2是头节点链表中第一个节点的关键词^的第一个后 继关键词;由密钥生成算法生成密钥sy和密钥X;用伪随机数生成器生成m并由伪随机 置换P得到P,(m);由密钥生成算法生成密钥和密钥r;用计数器c、密钥r和伪随 机置换0得到0J2);将上述五个部分按顺序连接,使用指向该节点的上一个节点中的密 钥kw作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果与前缀 0JSl)连接组成后继词链表节点第一个节点的加密结果,即
[0072] 后继词链表中第三个节点、后继词链表中第五个节点、后继词链表中第六个节点 加密方法与后继词链表第一个节点的加密方法相同。
[0073] 用全局密钥z和伪随机置换《对后继词链表的第二个节点的关键词《4生成 ?z(w4),其中第二个节点的关键词是头节点链表中第一个节点的关键词^的第二个后 继关键词;由密钥生成算法生成密钥Sy和密钥X;用伪随机数生成器生成m并由伪随机 置换P得到P,(m);由密钥生成算法生成密钥和密钥r;用计数器c、密钥r和伪随 机置换0得到0J3);将上述五个部分按顺序连接,使用指向该节点的上一个节点中的密 钥<i作为加密密钥,用AES加密算法按照密码分组
链接模式进行加密,将加密结果与前缀 0J2)连接组成后继词链表节点第一个节点的加密结果,即
[0075] 后继词链表中第四个节点加密方法与后继词链表中的第二个节点加密方法相同。
[0076] 对关键词索引的关键词位置链表进行加密生成安全索引的方法为:初始化一个计 数器t从1开始,每加密一个节点,计数器t加1;从第一个节点开始加密,节点由后继词链 表所指向时,用指向它的后继词链表节点中的Pdm)作为前缀;节点由关键词位置链表节 点所指向时,用伪随机置换P、密钥生成算法生成的密钥A和计数器t生成Px (t)作为 如缀;
[0077] 在图1中,关键词位置链表第一个节点加密方法为:用密钥生成算法生成密钥 和密钥A,用伪随机置换p和计数器t生成P,(2),将节点中包含的文件标识信息 id(docl),关键词对位置信息1 (1)与上述密钥P x(2)按顺序连接;用指向该节点的 上一个节点中的密钥Sw作为加密密钥,用AES加密算法按照密码分组链接模式进行加密, 将加密结果与指向他的后继词链表节点中的Px(m)连接组成一个节点的加密结果,即
[0079] 关键词位置链表第二个节点、关键词位置链表第三个节点、关键词位置链表第四 个节点、关键词位置链表第五个节点、关键词位置链表第七个节点加密方法与关键词位置 链表第一个节点加密方法相同。
[0080]关键词位置链表第六个节点加密方法为:用密钥生成算法生成密钥s5,2和密钥 入,用伪随机置换P和计数器t生成Px(7),将节点中包含的文件标识信息id(doc2),关 键词对位置信息1(4)与上述密钥\2和P^2)按顺序连接;用指向该节点的上一个节点 中的密钥s5,i作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果 与指向他的关键词位置链表节点中的P^6)连接组成一个节点的加密结果,即
[0082]4、生成查询陷门并上传云端服务器
[0083] 客户查询时,客户端将用户的查询短语生成查询陷门并发送给云端服务器;生成 查询陷门的方法为:将查询语句拆分成关键词集合{Wl,《2,. . .,wn},用密钥x和伪随机函数 少对关键词Wi生成朽(W,),用密钥y和伪随机函数g对关键词Wi生成gy (Wi),用密钥Z和伪 随机置换《对关键词~生成《 z(Wi) gy(Wi)JP?z(Wi)组合为一个三元组,所有 三元组组成查询陷门如下:
[0085] 其中n为用户输入的查询语句中关键词个数,并上传至云端服务器;
[0086] 5、云端服务器执行查询并返回结果
[0087]在图2中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述 安全索引,查询陷门长度为1个三元组,进行单关键词查询。本实施例的单关键词查询短语 为{¥1},生成查询陷门为(? 11),8,.(叫),《__(1411)),单关键词查询的方法为:用%1(叫)在安全 的头节点链表中寻找对应的节点,用gy(Wl)与找到的节点异或运算获得吣(Sl)和密钥kw, 获取0JSl)在安全的后继词链表中寻找对应的节点,用密钥ky解密节点,获得《z(w2)、密 钥Sw、Px(m)、密钥k1:1、0J2);使用Px(m)在安全的关键词位置链表中寻找对应节点, 并用密钥81,(|解密,获得文件标识id(docl)、关键词对位置1(1)、PPx(2)在 安全的关键词位置链表中没有找到对应节点,再用0J2)在安全的后继词链表中寻找对应 的节点,用密钥k1;1解密,获得《 >4)、密钥&、Px(m)、密钥k1;2、0J3);使用Px(m)在 安全的关键词位置链表中寻找对应节点,并用密钥su解密,获得文件标识id(doc2)、关键 词对位置1(2)、Px(3)、sy,用Px(3)在安全的关键词位置链表中没有找到对应节点,再 用0J3)在安全的后继词链表中没有找到对应的节点,查询结束。获得的查询结果中所有 文件标识(id(docl),id(doc2))返回至客户端。
[0088] 以上给出了待加密文件的数量为2以及待加密文件中1的内容为:WpWhWyWad# 加密文件2文件中内容为:¥2,¥1,¥4,¥ 3,¥4,¥3的加密方法。在实际情况中,待加密文件的具 体数量以及待加密文件的内容根据具体情况确定。
[0089] 实施例2
[0090] 以待加密文件1文件中内容为:Wi,w2,w3,w4;待加密文件2文件中内容为: w2,Wpw4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0091] 在图3中,本实施例的步骤1~4与实施例1相同。在云端服务器执行查询并返 回结果步骤5中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安 全索引,查询陷门长度为2个三元组,进行双关键词查询。
[0092] 本实施例的双关键词查询短语为{Wl,w2},生成的查询陷门为 ((A(叫),g,.(叫),《:(叫)),(%.(w2),g,, (w2),?: (w2)))双关键词查询的方法为:用% (叫)在安全 的头节点链表中寻找对应的节点,用gy(Wl)与找到的节点异或运算获得吣(Sl)和密钥kw, 获取0JSl)在安全的后继词链表中寻找对应的节点,用密钥kw解密节点,获得《z(w2)、 密钥Si,。、P;?、密钥k1;1、0J2);查询陷门中第二个三元组中《z(w2)与获得的《z(w2) 匹配相同,使用P,(m)在安全的关键词位置链表中寻找对应节点,并用密钥sw解密,获得 文件标识id(docl)、关键词对位置1(1)、PP^2)在安全的关键词位置链表 中没有找到对应节点,查询结束。获得的查询结果中所有文件标识(id(docl))返回至客户 端。
[0093] 实施例3
[0094] 以待加密文件1文件中内容为:Wi,w2,w3,w4;待加密文件2文件中内容为: w2,Wpw4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0095] 在图4中,本实施例的步骤1~4与实施例1相同。在云端服务器执行查询并返 回结果步骤5中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安 全索引,查询陷门长度为3个三元组,进行3个关键词查询。
[0096] 本实施例的3个关键词查询短语为{Wl,W2,w3},生成的查询陷门为
。3个关键词 查询的方法为:使用查询陷门中的第一个三元组(《A.(W),私,.(% ),&(叫))和第二个三元组
>,进行一次双关键词查询,获得的所有的位置信息1减去0,得到结 果为((id(docl),1(1)));使用查询陷门中的第二个三元组从.(。),《,.(》':.)3>'2))和第三 个三元组⑷、.(%), 1^,1.(":;),%(!1_:;)),进行一次双关键词查询,获得的所有的位置信息1减去 1,得到结果为((id(d〇cl),1(1)));两次结果进行交集运算获得查询结果中所有文件标识 (id(docl))返回至客户端。
[0097] 实施例5
[0098] 以待加密文件1文件中内容为:Wi,w2,w3,w4;待加密文件2文件中内容为: w2,Wpw4,w3,w4,w3为例,基于短语的可搜索对称加密方法由下述步骤组成:
[0099] 本实施例的步骤1~4与实施例1相同。在云端服务器执行查询并返回结果步骤 5中,云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,查询 陷门长度为4个三元组,进行4个关键词查询。
[0100] 本实施例的4个关键词查询短语为{Wl,w4,w3,w4},生成的查询陷门为
4个关键词查询的方法为:使用查询陷门中的第一个三元组(A(叫),心(叫),叫(叫)) 和第二个三元组⑷,.(% ,. (%X& (u'4)),进行一次双关键词查询,获得的所有的位 置信息1减去〇,得到结果为((id(doc2),1(2)));使用查询陷门中的第二个三元组 (A〇4),gv.(w4),咚(w4))和第三个三元组(R(w3),gv(w3),r(w3)),进行一次双关键词 查询,获得的所有的位置信息1减去1,得到结果为((id(doc2),l(2)),(id(doc2) ,1(4)));使用查询陷门中的第三个三元组(%(%),&(%),:(%))和第四个三元组 吆卜'4)^>'4),%(">' 4)),进行一次双关键词查询,获得的所有的位置信息1减去2,得到结 果为((id(d〇cl),l(l)),(id(doc2),l(2)));三次结果进行交集运算获得查询结果中所有 文件标识(id(doc2))返回至客户端。
[0101] 最后应说明的是:以上实施例仅用以说明本发明,而并非限制本发明所描述的技 术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是, 本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换;而一切不脱离 本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
【主权项】
1. 一种基于短语的可搜索对称加密方法,其特征在于它是由下述步骤组成: (1) 客户端初始化 生成全局密钥X、y、Z ;选择三个伪随机置换ω、Θ、P ;选择两个伪随机函数g、 (2) 生成关键词索引 从待加密文件中抽取关键词及其位置关系建立关键词索引,关键词索引为三级链表结 构
,依次为:头节点链表、后继词链表及关键词位置链表;生成关键词索引的方法为:按关 键词在文档集合中出现的先后顺序建立头节点链表,每个关键词仅出现一次,且指向一个 后继词链表,即该关键词是其所指向后继词链表的头节点;头节点和其指向的后继词链表 中的每一个节点组成具有前后继关系的关键词对;将每一个关键词对在文档中出现的次数 及位置记录在关键词位置链表中生成关键词索引,后继词链表中每一个节点是其对应的每 一个关键词位置链表的头节点; (3) 生成安全索引并上传云端服务器 分别对关键词索引的头节点链表、后继词链表、关键词位置链表进行加密生成安全索 弓丨,并将其和用户以自选加密方案加密的文档一起上传至云端服务器; (4) 生成查询陷门并上传云端服务器 客户查询时,客户端将用户的查询短语生成查询陷门并发送给云端服务器;生成查询 陷门的方法为:将查询语句拆分成关键词集合{Wl,w2, ...,wn},用密钥X和伪随机函数,对 关键词&生成A(Wi),用密钥y和伪随机函数g对关键词Wi生成g y (Wi),用密钥Z和伪随机 置换ω对关键词Wi生成ω Z(w) ; A (":.)、gy (Wi)、和Oz(Wi)组合为一个三元组,所有三元 组组成查询陷门如下:其中η为用户输入的查询语句中关键词个数,并上传至云端服务器; (5) 云端服务器执行查询并返回结果 云端服务器接收到查询陷门后,用查询陷门中的三元组集合遍历上述安全索引,根据 查询陷门长度将检索操作分为单关键词查询,双关键词查询和至少3个关键词查询;单关 键词查询查询陷门长度和双关键词查询陷门长度分别为1个三元组和1对三元组,进行一 次查询操作;至少3个关键词查询陷门长度至少为3个三元组,每相邻的两个三元组做一 次双关键词查询操作,对第η次的查询操作的结果集合中的关键词位置1减去η-1,再对所 有结果集合进行交集运算,生成一个最终结果集合;将最终的结果集合中所有的文件标识 id(d)返回至客户端。2. 根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤 (3)中对关键词索引的头节点链表进行加密生成安全索引的方法为:用密钥X和伪随机函 数供对头节点链表中第i个节点的关键字Wi生成;由密钥生成算法生成密钥kw和 密钥r;用密钥r和伪随机数生成器生成的&通过伪随机置换Θ得到Θ JSi);用全局密 钥y和伪随机函数g生成gy(Wi);用士(力)与密钥ki,。和Θ Jsi)进行异或运算,将结果与 A (u:.)连接组成一个节点的加密结果,即其中I< i <头节点链表长度; 对关键词索引的后继词链表进行加密生成安全索引的方法为:初始化一个计数器C从 1开始,每加密一个节点,计数器C加1 ;从第一个节点开始加密,节点由头节点链表节点所 指向时,用指向它的头节点链表节点中的吣(Si)作为前缀;节点由后继词链表节点所指向 时,用伪随机置换Θ和密钥r对计数器C生成L(C)作为前缀; 用全局密钥z和伪随机置换ω对节点关键字Wu生成ω z(Wi,p,其中Wu表示Wi的第 j个后继关键词;由密钥生成算法生成密钥Su和密钥λ ;用伪随机数生成器生成m并由伪 随机置换P得到P λ(πι);由密钥生成算法生成密钥ku和密钥r;用计数器c、密钥r和伪 随机置换Θ得到t(c+l);将上述五个部分按顺序连接,使用指向该节点的上一个节点中 的密钥kij作为加密密钥,用AES加密算法按照密码分组链接模式进行加密,将加密结果 与前缀吣(Si)或前缀L(c)连接组成节点Wi j的加密结果,即 《⑷ 11 % j) 11 h 11 Ai (w) 11 116 (c+W 或 θλ€) Il skui_,Il Il pA(m) Il Kj Il ^rCc+1)) 其中I < I <头节点链表长度,I < j <头节点链表节点Wi的后继词链表长度;重复执 行以上操作直至后继词链表结束,完成后继词链表加密; 对关键词索引的关键词位置链表进行加密生成安全索引的方法为:初始化一个计数器 t从1开始,每加密一个节点,计数器t加1;从第一个节点开始加密,节点由后继词链表所 指向时,用指向它的后继词链表节点中的P λ (m)作为前缀;节点由关键词位置链表节点所 指向时,用伪随机置换P、密钥生成算法生成的密钥λ和计数器t生成P λ (t)作为前缀; 用密钥生成算法生成密钥Su和密钥λ,用伪随机置换p和计数器t生成P λα+ι), 将节点中包含的文件标识信息id(d),关键词对位置信息1与上述密钥Si,jp P λ (t+1)按 顺序连接;用指向该节点的上一个节点中的密钥SiI1作为加密密钥,用AES加密算法按照 密码分组链接模式进行加密,将加密结果与前缀P λ (m)或前缀P λ (t)连接组成一个节点 的加密结果,即 a (w) Il 气问⑷ Il / Ikv/ Il Ai G+切或 重复以上操作直至关键词位置链表结束,完成关键词位置链表加密。3.根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤 (5)中双关键词查询的方法为: 查询陷门中1对三元组.(巧.(>^),&.(1^),叫(1^))和(死.(>^+1),心( 1^+1),叫(1^+1))遍历安全 索引的操作如下: 双关键词查询的查询陷门为:((炉V (ivI Ur(叫),《: (VV1 )),(A (VV2 ),义.(W2 ),叫 用A(W1)在安全的头节点链表中寻找对应的节点,用Sy(W1)与找到的节点异或运算获 得吣(Si)和密钥ku,获取吣(Si)在安全的后继词链表中寻找对应的节点,用密钥kw解 密节点,获取《z(Wi,j)、密钥 Si,。、P λ (t)、密钥 ki,j、Θ Jc+1);再比较 COz(W2)与 COz(Wu)是 否相同;若不相同,使用L(c+1)在安全的后继词链表中寻找对应节点,并用密钥ku解密 获取新的《z(Wi,j)、新的密钥Su,新的P λ (t)、新的密钥ki,j、新的Θ Jc+1),比较C0z(wi+1) 与新的《z(WiJ是否相同,循环以上操作直至匹配成功;若相同,使用p λ (t)在安全的关 键词位置链表中寻找对应节点,并用密钥SiiC1解密,获得文件标识id(d)、关键词对位置1、 新的P x(t)、Su,再用新的P λα)在安全的关键词位置链表中寻找对应节点,并用Siij解 密,循环此操作直至安全的关键词位置链表结束,所有获得的文件标识id (d),关键词对位 置1构成一次查询的结果集合。4. 根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤 (5)中单关键词查询的方法为: 单关键查询的查询陷门为:(M.(u;i),&.(%),叫(Μ)); 用A(W)在安全的头节点链表中寻找对应的节点,用gy(W1)与找到的节点异或运算获 得吣(Si)和密钥ky,获取吣(Si)在安全的后继词链表中寻找对应的节点,用密钥kw解 密节点,获得Wz(Wi j)、密钥Si (l、p λ (t)、密钥ki;j、Θ Jc+1);使用p λ (t)在安全的关键词 位置链表中寻找对应节点,并用密钥Siitl解密,获得文件标识id(d)、关键词对位置1、新的 p λα)、8υ_,再用新的P λα)在安全的关键词位置链表中寻找对应节点,并用Su解密,循 环此操作直至安全的关键词位置链表结束,再用L(c+1)在安全的后继词链表中寻找对应 的节点,用密钥ku解密,获得新的密钥Si^新的P λα)、新的密钥新的吣(c+l),重 复以上操作直至安全的后继词链表结束,所有获得的文件标识id (d),关键词对位置1构成 一次查询的结果集合。5. 根据权利要求1所述的基于短语的可搜索对称加密方法,其特征在于所述的步骤 (5)中至少3个关键词查询的方法为: 至少3个关键词查询的查询陷门为: ((^,·(nI), (HI ), (0Z (VV1)),(VV2), (IV2 ), OJ.( Vt', (φχ(W11 ), g,.(), OX( ))): 进行多次双关键词查询,每次使用查询陷门中的第i个三元组(仍.(叫U%(叫),叫(u))) 和第1+1个三元组%(>^+1),§,.(叫+1),叫(叫+1)),进行一次双关键词查询,1初始为 1,每做一 次双关键词查询i加1,每次查询中获得的位置信息1减去i-Ι,将多次双关键词查询的结 果集合进行交集运算获得最终结果集合,最终结果集合中所有文件标识返回至客户端。
【专利摘要】一种基于短语的可搜索对称加密方法,由客户端初始化、生成关键词索引、生成安全索引并上传云端服务器、生成查询陷门并上传云端服务器、云端服务器执行查询并返回结果步骤组成。云端服务器存储加密后的密文和加密后的安全索引,仅掌握文件编号和陷门信息,在云端的存储和查询操作时,不会泄露用户存储数据的信息和查询语句的信息,保证了用户数据和查询模式的机密性,查询过程只有一轮交互,上传陷门并返回包含查询语句的文件编号,用户根据需要下载特定的文件到本地解密,避免了不必要文件在网络中传输,减少了网络开销。本发明具有保密性好、网络开销少等优点,可适用于低带宽环境中使用。
【IPC分类】G06F21/62, G06F17/30, G06F21/60
【公开号】CN104899517
【申请号】CN201510248964
【发明人】王涛, 杨波, 李晨, 张瑞文
【申请人】陕西师范大学
【公开日】2015年9月9日
【申请日】2015年5月15日