[发明专利]一种基于后缀树的可搜索加密系统及方法在审
申请号: | 201910151513.5 | 申请日: | 2019-02-28 |
公开(公告)号: | CN109815723A | 公开(公告)日: | 2019-05-28 |
发明(设计)人: | 周福才;郭斯栩;葛悦;孙僖泽 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F21/60 | 分类号: | G06F21/60;G06F21/62;G06F16/903;G06F16/901 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 刘晓岚 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 搜索 后缀树 构建 加密系统 服务器 令牌 加密索引 密文数据 子字符串 客户端 字符串 索引 验证 初始化模块 互联网技术 字符串搜索 安全索引 构建模块 加密密钥 解密模块 令牌发送 搜索结果 搜索模块 解密 上传 加密 查询 | ||
1.一种基于后缀树的可搜索加密系统,采用两方实体方案,即客户端与服务器端,其特征在于:包括初始化模块、安全索引构建模块、子字符串搜索模块及验证解密模块;
所述初始化模块用于构建加密密钥和后缀树;
构建加密密钥:由客户端运行,初始化客户端的公私钥及加密所需的密钥;
所述安全索引构建模块用于构建索引以及索引加密;
构建索引:由客户端运行,将待搜索数据构建成后缀树并生成后缀树的索引信息,包括字典结构,密文结构和叶子数组结构;
索引加密:运行于客户端,负责对关键字索引即字典结构、密文数组结构和叶子数组结构进行加密操作,并将加密后的安全索引,包括密文,上传至云服务器,由云服务器进行存储;
所述子字符串搜索模块用于构建搜索令牌和搜索;
构建搜索令牌:运行于客户端,负责对搜索请求计算搜索令牌;
搜索:运行于客户端和服务器端,客户端发送搜索令牌,服务器根据令牌搜索加密的安全索引,并将搜索后的结果返回给客户端;
所述验证解密模块用于解密和验证;
解密:运行于客户端,客户端收到返回的结果后,用自己的私钥对返回的结果进行解密,获取搜索结果明文;
验证:运行于客户端,对解密后的明文进行验证,如果某步验证不通过,则丢弃此明文。
2.一种基于后缀树的可搜索加密方法,其特征在于:包括以下步骤:
步骤1、根据安全参数λ,输出用户的对称密钥K;
随机选择7个比特串KD,KC,KL,K1,K2,K3,其中,KD为字典结构D的加密密钥,KC为密文数组C的密钥,KL为叶子数组结构L的密钥,K1,K2用于处理字典结构D入口值和对应后缀树节点u的第i个孩子节点child(u,j)的值,以及用于计算搜索令牌Tok=T1、...、Tm,K3,K4分别用来对待搜索字符串下标数ind,...,ind+m-1以及叶子的位置leftleaf,...,leftleaf+num-1进行伪随机置换;最后,输出K=(KD,KC,KL,K1,K2,K3,K4)作为用户的密钥,保证每个密钥各不相同;
步骤2、客户端对给定数据构建后缀树Ts;利用UKK算法将给定的字符串s构建成后缀树;
步骤3、客户端根据后缀树Ts建立安全索引CT并上传至服务器,其中CT由字典结构D、密文数组C和叶子数组L组成,表示为CT=(D,C,L);
所述字典结构D对后缀树Ts的每一个节点u建立一条包括key和value的条目,表示为D=(key,value),其中,key存储搜索的入口,键值value由搜索结构和待返回的密文结构组成;找到搜索入口,即能返回对应的value,用户进行解密操作;所述字典结构D采用进行构造,为后缀树的根节点到节点u的父亲节点上所有边上的字符串的连接,再加上节点u的父亲节点到它本身边上的第一个字符ω;
客户端与服务器之间的交互搜索如下:
步骤4、在用户搜索时,选取待搜索字符串p=p1,...pm∈∑s.len,其中,s.len为待搜索字符串长度,并计算搜索令牌上传至服务器;
步骤5、服务器接收到搜索令牌Tok后,先找到字典结构的初始入口,即根节点u0的字典项D(F(K1,∈)),其中,∈表示空字符串;
步骤6、对于每个搜索令牌Ti′,使用伪随机函数f(i′)按搜索令牌顺序进行解密;
步骤7、用户运行解密操作,若解密失败,输出⊥并中止搜索协议,否则验证解密操作是否成立,若不成立,则输出⊥并中止搜索协议;否则,用户发送随机序列(x1,...xm)给服务器;
步骤8、服务器根据(x1,...xm)搜索密文数组C,令Ci″=C[xi′]i″=1,...,m,并发送(C1,...Cm)给用户;
步骤9、客户端执行循环执行步骤7m次,i″初始值为1,每执行一次,i″增加1,当i″>m时,终止协议;
若Y=⊥,输出⊥并中止查询协议,否则,使搜索结果为(pi′,j″),若j″≠ind+i″-1,输出⊥;当j″=ind+i″-1时,如果p′1,…,p′m≠p,用户输出Φ作为答案然后结束协议;如果p′1,...,p′m=p,i″=1,...,num,用户选择随机序列π2:[num]→[num],使用户发送随机序列(y1,...ynum)给服务器;
步骤10、如果i″=m,跳转到步骤8,否则,将i″加1,跳转到步骤7;
步骤11、服务器端设置Li″=L[yi″],i″=1,...,num,并将(L1,...Lnum)发送给客户端;
步骤12、客户端执行i=1,...,num,i″初始值为1,循环执行步骤12num次,当i″>num时终止搜索;
如果搜索结果为⊥,客户端输出⊥作为答案;
如果搜索结果为(ai″,j″),且j″≠leftleaf+i″-1,则客户端输出⊥作为答案,如果j″=leftleaf+i″-1,则客户端输出A={a1,...anum}作为答案。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910151513.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:隐私数据交易方法及装置
- 下一篇:一种基于USB锁的计算机U盘锁定系统