CN109815723A - 一种基于后缀树的可搜索加密系统及方法 - Google Patents
一种基于后缀树的可搜索加密系统及方法 Download PDFInfo
- Publication number
- CN109815723A CN109815723A CN201910151513.5A CN201910151513A CN109815723A CN 109815723 A CN109815723 A CN 109815723A CN 201910151513 A CN201910151513 A CN 201910151513A CN 109815723 A CN109815723 A CN 109815723A
- Authority
- CN
- China
- Prior art keywords
- search
- key
- client
- value
- suffix tree
- 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
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000010276 construction Methods 0.000 claims description 12
- 238000003491 array Methods 0.000 claims description 9
- 101100517651 Caenorhabditis elegans num-1 gene Proteins 0.000 claims description 3
- 230000002452 interceptive effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000009958 sewing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于后缀树的可搜索加密系统及方法,涉及互联网技术领域。该系统包括用于构建加密密钥和后缀树的初始化模块,用于构建索引及索引加密的安全索引构建模块,用于构建搜索令牌和搜索的子字符串搜索模块及用于解密和验证的验证解密模块;该方法首先对给定字符串构建后缀树及加密索引,并将加密索引上传至服务器;当客户端进行字符串搜索时,生成搜索令牌发送至服务器,服务器根据搜索令牌进行搜索,并将搜索结果发送到客户端,完成搜索。本发明的基于后缀树的可搜索加密系统及方法,实现对任意字符串的高效搜索,解决了密文数据的子字符串搜索问题,让用户可以不使用关键字对密文数据进行查询。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种基于后缀树的可搜索加密系统及方法。
背景技术
随着互联网技术的高速发展,计算机网络技术已经惠及家家户户。2018年全球数字报告显示,互联网用户数已经突破40亿大关。用户数量的不断增加导致数据信息激增,为了节省本地存储空间,并为已有数据做一个备份,云计算将虚拟化技术与网络相结合,把数据存储在远程服务器,并由服务器处理数据。但是云存储服务带来便利的同时,也使得数据存储和处理的安全问题日渐凸显。第三方服务器往往是不可信的,用户不可避免的要面对信息泄露的风险。因此,保护个人和企业数据的安全性与可用性已经成为计算机互联网技术革新的实际需求。
针对不可信云,加密再上传成为企业和个人的一个好的选择,特别是对于敏感数据,加密可以保证数据本身的安全性,即使被泄漏也不会带来严重的安全隐私问题。但加密操作影响了数据的可用性:云服务器很难对加密的数据进行操作,包括计算、搜索等。因此在保证用户数据安全性的前提下,确保密文数据的可用性,就成为了云计算、密码学等领域的重要研究内容。
可搜索加密针对用户的文件等信息,设置关键词对应文件,并对文件加密,将关键词构造成相应索引并加密,将密文和索引上传到云服务器;搜索文件时,将通过关键词计算出的搜索令牌发送给服务器,让服务器进行与索引的匹配,匹配成功服务器返回匹配的密文文件信息。
但是针对关键字进行处理的搜索加密方案,其搜索格式较为固定。文件的关键字是经过预先设定的,无法满足多种多样的用户需求。例如,电子医疗领域里的基因数据,其结构简单、相似性较大,很难定义其关键字。如何解决上述问题,是当前可搜索加密领域的研究热点。
发明内容
本发明要解决的技术问题是针对上述现有技术的不足,提供一种基于后缀树的可搜索加密系统及方法,利用后缀树结构实现任意子字符串的高效搜索。
为解决上述技术问题,本发明所采取的技术方案是:一方面,本发明提供一种基于后缀树的可搜索加密系统,采用两方实体方案,即客户端与服务器端,包括初始化模块、安全索引构建模块、子字符串搜索模块及验证解密模块;
所述初始化模块用于构建加密密钥和后缀树;
构建加密密钥:由客户端运行,初始化客户端的公私钥及加密所需的密钥;
所述安全索引构建模块用于构建索引以及索引加密;
构建索引:由客户端运行,将待搜索数据构建成后缀树并生成后缀树的索引信息,包括字典结构,密文结构和叶子数组结构;
索引加密:运行于客户端,负责对关键字索引即字典结构、密文数组结构和叶子数组结构进行加密操作,并将加密后的安全索引,包括密文,上传至云服务器,由云服务器进行存储;
所述子字符串搜索模块用于构建搜索令牌和搜索;
构建搜索令牌:运行于客户端,负责对搜索请求计算搜索令牌;
搜索:运行于客户端和服务器端,客户端发送搜索令牌,服务器根据令牌搜索加密的安全索引,并将搜索后的结果返回给客户端;
所述验证解密模块用于解密和验证;
解密:运行于客户端,客户端收到返回的结果后,用自己的私钥对返回的结果进行解密,获取搜索结果明文;
验证:运行于客户端,对解密后的明文进行验证,如果某步验证不通过,则丢弃此明文。
另一方面,本发明还提供一种基于后缀树的可搜索加密方法,包括以下步骤:
步骤1、根据安全参数λ,输出用户的对称密钥K;
随机选择7个比特串其中,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的父亲节点到它本身边上的第一个字符ω;
所述字典结构D的具体构建步骤如下:
(1)、用伪随机函数F为后缀树Ts的每个节点u计算一个key值,key存储作为搜索密钥;
(2)、构造value值的搜索结构;对于节点u的每个孩子节点,计算若节点u的孩子节点个数deg(u)<d,d为叶子节点个数,则添加随机项补足:选择随机序列P:{0,1}λ×[d]→[d],将f2,1(u),...,f2,d(u)的顺序随机化,最终构造value值的搜索结构为f2,P[1](u),...,f2,P[d](u);
(3)、对于后缀树Ts的每个节点u,构造待返回的密文结构,如下公式所示:
Xu=Enc(KD,(indu,leftleafu,numu,lenu,f1(u),f2,P[1](u),...,f2,P[d](u)))
其中,Enc()为加密函数,indu为待搜索子字符串第一次出现时,在字符串s中的位置下标,leftleafu为节点u的最左子后裔的位置,numu为为子串重复出现的次数;
最终构造的value值总体为Valueu=(f2,P[1](u),...,f2,P[d](u),Xu);
(4)、构建字典结构D里的2n-N个虚拟入口;对每个虚拟入口来说,选择随机的存储搜索密钥key=f1(u),键值value=(f2,1(u),...,f2,d(u),Xu=Enc(KD,0));
所述密文数组C的构建方法为:
对给定字符串s中的每个字符使用伪随机置换P:{0,1}λ×[n]→[n]和密钥K3使得 为字符下标,m为给定字符串s中字符个数;
所述叶子数组L的构建方法为:P:{0,1}λ×[n]→[n];
对后缀树Ts的每个叶子节点,使用伪随机置换和密钥K4使得j为叶子结点下标,j=1,...,d,是根节点到第j个叶子节点上的字符串在给定字符串s中第一次出现时的位置下标;
客户端与服务器之间的交互搜索如下:
步骤4、在用户搜索时,选取待搜索字符串p=p1,...pm∈∑s.len,其中,s.len为待搜索字符串长度,并计算搜索令牌上传至服务器;
步骤4-1、获取加密数据结构所需的密钥Kenc={K1,K2};
步骤4-2、计算搜索令牌Tok=T1,...,Tm;对于i′=1,...,m,计算每一个伪随机函数f(i′)的值:
f1(i′)=F(K1,p[1...i′])
f2(i′)=F(K2,p[1...i′])
Ti′=Enc(F(K1,p[1...i′]),F(K2,p[1...i′]))
并将搜索令牌Ti′上传至服务器;
步骤5、服务器接收到搜索令牌Tok后,先找到字典结构的初始入口,即根节点u0的字典项D(F(K1,∈)),其中,∈表示空字符串;
步骤6、对于每个搜索令牌Ti′,使用f2,1(u),...,f2,d(u)对搜索令牌按顺序进行解密,具体方法为:
步骤6-1、设定字母a,b,并令a=1,b=1;
步骤6-2、令i″=a,j″=b,且当1≤i″≤m,1≤j″≤d时,执行如下操作:
Y←Dec(f2,j″,Ti″),将Y与字典结构D的入口key值对比:若Y=f1(u′),则更新数据到字典项D(F(K1,f1(u′))),value值为:f2,P[1](u′),K,f2,P[d](u′),Xu′=Enc(KD,Xu′),并令a=a+1,跳转到步骤3-2;若Y≠f1(u′),则令b=b+1,跳转到步骤6-3;
步骤6-3、服务器将搜索结果X=Enc(KD,(ind,leftleaf,num,len,f1,f2,P[1],...,f2,P[d]))发送给客户端;
步骤7、用户运行解密操作,令W=Dec(KD,Xu),若W=⊥,则解密失败,输出⊥并中止搜索协议,若W≠⊥,将W展开为(ind,leftleaf,num,len,f1,f2,P[1],...,f2,P[d]),检验f1=F(K1,p[1...i″])是否成立,如果等式不成立,则返回值出错,输出⊥并中止搜索协议;如果等式成立,验证在a=i′+1,...,m且b=1,...,d时,Dec(f2,b,Ta)=⊥是否成立,若成立,则表明p[1...i″]是能在字典D中搜索到最长的匹配前缀;解出ind,选取一个随机序列π1:[m]→[m];将ind,...,ind+m-1置换,使用户发送随机序列(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,用户输出Φ作为答案然后结束协议;如果p1,...,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,循环执行步骤12num次,当i″>num时终止搜索;
如果搜索结果为⊥,客户端输出⊥作为答案;
如果搜索结果为(ai″,j″),且j″≠leftleaf+i″-1,则客户端输出⊥作为答案,如果j″=leftleaf+i″-1,则客户端输出A={a1,...anum}作为答案。
采用上述技术方案所产生的有益效果在于:本发明提供的一种基于后缀树的可搜索加密系统及方法,利用后缀树结构中每个非叶子节点至少有2个孩子节点,及每条边的起始字符不相同等特性,构建具有后缀树结构、支持子字符串搜索的安全索引。并结合密码学原语,对构建的安全索引进行保护,保证数据在加密上传和搜索过程中的安全。通过保留后缀树节点和边的特点,模拟遍历后缀树边来有效的在加密索引中执行字符串匹配,同时找到待搜索子字符串在原始数据中的所有位置,实现对任意字符串的高效搜索。解决了密文数据的子字符串搜索问题,让用户可以不使用关键字对密文数据进行查询。还可以保证用户的隐私信息安全存储在云服务器上,并支持高效的子字符串搜索功能。
附图说明
图1为本发明实施例提供的一种基于后缀树的可搜索加密系统的结构框图;
图2为本发明实施例提供的一种基于后缀树的可搜索加密方法的流程图;
图3为本发明实施例提供的构建安全索引的流程图;
图4为本发明实施例提供的客户端与服务器之间进行交互搜索的示意图;
图5为本发明实施例提供的客户端与服务器之间进行交互搜索的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
一种基于后缀树的可搜索加密系统,采用两方实体方案,即客户端与服务器端,如图1所示,包括初始化模块、安全索引构建模块、子字符串搜索模块及验证解密模块;
所述初始化模块用于构建加密密钥和后缀树;
构建加密密钥:由客户端运行,初始化客户端的公私钥及加密所需的密钥;
所述安全索引构建模块用于构建索引以及索引加密;
构建索引:由客户端运行,将待搜索数据构建成后缀树并生成后缀树的索引信息,包括字典结构,密文结构和叶子数组结构;
索引加密:运行于客户端,负责对关键字索引即字典结构、密文数组结构和叶子数组结构进行加密操作,并将加密后的安全索引,包括密文,上传至云服务器,由云服务器进行存储;
所述子字符串搜索模块用于构建搜索令牌和搜索;
构建搜索令牌:运行于客户端,负责对搜索请求计算搜索令牌;
搜索:运行于客户端和服务器端,客户端发送搜索令牌,服务器根据令牌搜索加密的安全索引,并将搜索后的结果返回给客户端;
所述验证解密模块用于解密和验证;
解密:运行于客户端,客户端收到返回的结果后,用自己的私钥对返回的结果进行解密,获取搜索结果明文;
验证:运行于客户端,对解密后的明文进行验证,如果某步验证不通过,则丢弃此明文。
一种基于后缀树的可搜索加密方法,如图2所示,包括以下步骤:
步骤1、根据安全参数λ,输出用户的对称密钥K;
随机选择7个比特串其中,KD为字典结构D的加密密钥,KC为密文数组C的密钥,KL为叶子数组结构L的密钥,K1,K2用于处理字典结构D入口值和对应后缀树节点u的第i个孩子节点child(u,i)的值,以及用于计算搜索令牌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并上传至服务器,具体方法如图3所示,其中CT由字典结构D、密文数组C和叶子数组L组成,表示为CT=(D,C,L);
所述字典结构D对后缀树Ts的每一个节点u建立一条包括key和value的条目,表示为D=(key,value),其中,key存储搜索的入口,键值value由搜索结构和待返回的密文结构组成;找到搜索入口,即能返回对应的value,用户进行解密操作;所述字典结构D采用进行构造,为后缀树的根节点到节点u的父亲节点上所有边上的字符串的连接,再加上节点u的父亲节点到它本身边上的第一个字符ω;
所述字典结构D的具体构建步骤如下:
(1)、用伪随机函数F为后缀树Ts的每个节点u计算一个key值,key存储作为搜索密钥;
(2)、构造value值的搜索结构;对于节点u的每个孩子节点,计算若节点u的孩子节点个数deg(u)<d,d为叶子节点个数,则添加随机项补足:选择随机序列P:{0,1}λ×[d]→[d],将f2,1(u),...,f2,d(u)的顺序随机化,最终构造value值的搜索结构为f2,P[1](u),...,f2,P[d](u);
(3)、对于后缀树Ts的每个节点u,构造待返回的密文结构,如下公式所示:
Xu=Enc(KD,(indu,leftleafu,numu,lenu,f1(u),f2,P[1](u),...,f2,P[d](u)))
其中,Enc()为加密函数,indu为待搜索子字符串第一次出现时,在字符串s中的位置下标,leftleafu为节点u的最左子后裔的位置,numu为为子串重复出现的次数;
最终构造的value值总体为Valueu=(f2,P[1](u),...,f2,P[d](u),Xu);
(4)、构建字典结构D里的2n-N个虚拟入口;对每个虚拟入口来说,选择随机的存储搜索密钥key=f1(u),键值value=(f2,1(u),...,f2,d(u),Xu=Enc(KD,0));
所述密文数组C的构建方法为:
对给定字符串s中的每个字符使用伪随机置换P:{0,1}λ×[n]→[n]和密钥K3使得 为字符下标,m为待搜索字符串中字符个数;
所述叶子数组L的构建方法为:P:{0,1}λ×[n]→[n];
对后缀树Ts的每个叶子节点,使用伪随机置换和密钥K4使得j为叶子结点下标,j=1,…,d,是根节点到第j个叶子节点上的字符串在给定字符串s中第一次出现时的位置下标;
客户端与服务器之间的交互搜索如图4和图5所示,具体为:
步骤4、在用户搜索时,选取待搜索字符串p=p1...pm∈∑s.len,其中,s.len为待搜索字符串长度,并计算搜索令牌上传至服务器;
步骤4-1、获取加密数据结构所需的密钥Kenc={K1,K2};
步骤4-2、计算搜索令牌Tok=T1,...,Tm;对于i′=1,...,m,计算每一个伪随机函数f(i′)的值:
f1(i′)=F(K1,p[1...i′])
f2(i′)=F(K2,p[1...i′])
Ti′=Enc(F(K1,p[1...i′]),F(K2,p[1...i′]))
并将搜索令牌Ti′上传至服务器;
步骤5、服务器接收到搜索令牌Tok后,先找到字典结构的初始入口,即根节点u0的字典项D(F(K1,∈)),其中,∈表示空字符串;
步骤6、对于每个搜索令牌Ti′,使用f2,1(u),...,f2,d(u)对搜索令牌按顺序进行解密,具体方法为:
步骤6-1、设定字母a,b,并令a=1,b=1;
步骤6-2、令i″=a,j″=b,且当1≤i″≤m,1≤j″≤d时,执行如下操作:
Y←Dec(f2,j″,Ti″),将Y与字典结构D的入口key值对比:若Y=f1(u′),则更新数据到字典项D(F(K1,f1(u′))),value值为:f2,P[1](u′),...,f2,P[d](u′),Xu′=Enc(KD,Xu′),并令a=a+1,跳转到步骤3-2;若Y≠f1(u′),则令b=b+1,跳转到步骤6-3;
步骤6-3、服务器将搜索结果X=Enc(KD,(ind,leftleaf,num,len,f1,f2,P[1],...,f2,P[d]))发送给客户端;
步骤7、用户运行解密操作,令W=Dec(KD,Xu),若W=⊥,则解密失败,输出⊥并中止搜索协议,若W≠⊥,将W展开为(ind,leftleaf,num,len,f1,f2,P[1],...,f2,P[d]),检验f1=F(K1,p[1...i″])是否成立,如果等式不成立,则返回值出错,输出⊥并中止搜索协议;如果等式成立,验证在a=i′+1,...,m且b=1,..,d时,Dec(f2,b,Ta)=⊥是否成立,若成立,则表明p[1...i″]是能在字典D中搜索到最长的匹配前缀,解出ind,选取一个随机序列π1:[m]→[m];将ind,...,ind+m-1置换,使用户发送(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}作为答案。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
Claims (7)
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}作为答案。
3.根据权利要求2所述的一种基于后缀树的可搜索加密方法,其特征在于:步骤3所述字典结构D的具体构建方法为:
(1)、用伪随机函数F为后缀树Ts的每个节点u计算一个key值,key存储作为搜索密钥;
(2)、构造value值的搜索结构;对于节点u的每个孩子节点,计算若节点u的孩子节点个数deg(u)<d,d为叶子节点个数,则添加随机项补足:选择随机序列P:{0,1}λ×[d]→[d],将f2,1(u),...,f2,d(u)的顺序随机化,最终构造value值的搜索结构为f2,P[1](u),...,f2,P[d](u);
(3)、对于后缀树Ts的每个节点u,构造待返回的密文结构,如下公式所示:
Xu=Enc(KD,(indu,leftleafu,numu,lenu,f1(u),f2,P[1](u),...,f2,P[d](u)))
其中,Enc()为加密函数,indu为待搜索子字符串第一次出现时,在字符串s中的位置下标,leftleafu为节点u的最左子后裔的位置,numu为为子串重复出现的次数;
最终构造的value值总体为Valueu=(f2,P[1](u),...,f2,P[d](u),Xu);
(4)、构建字典结构D里的2n-N个虚拟入口:对每个虚拟入口来说,选择随机的存储搜索密钥key=f1(u),键值value=(f2,1(u),...,f2,d(u),Xu=Enc(KD,0))。
4.根据权利要求3述的一种基于后缀树的可搜索加密方法,其特征在于:步骤3所述密文数组C的构建方法为:
对给定字符串s中的每个字符使用伪随机置换P:{0,1}λ×[n]→[n]和密钥K3使得 为字符下标,m为给定字符串s中字符个数;
所述叶子数组L的构建方法为:P:{0,1}λ×[n]→[n]
对后缀树Ts的每个叶子节点,使用伪随机置换和密钥K4使得j为叶子结点下标,j=1,…,d,是根节点到第j个叶子节点上的字符串在给定字符串s中第一次出现时的位置下标。
5.根据权利要求4述的一种基于后缀树的可搜索加密方法,其特征在于:所述步骤4的具体方法为:
步骤4-1、获取加密数据结构所需的密钥Kenc={K1,K2};
步骤4-2、计算搜索令牌Tok=T1,...,Tm;对于i′=1,...,m,计算每一个伪随机函数f(i′)的值:
f1(i′)=F(K1,p[1...i′])
f2(i′)=F(K2,p[1...i′])
Ti′=Enc(F(K1,p[1...i′]),F(K2,p[1...i′]))
并将搜索令牌Ti′上传至服务器。
6.根据权利要求5述的一种基于后缀树的可搜索加密方法,其特征在于:所述步骤6的具体方法为:
步骤6-1、设定字母a,b,并令a=1,b=1;
步骤6-2、令i″=a,j″=b,且当1≤i″≤m,1≤j″≤d时,执行如下操作:
Y←Dec(f2,j″,Ti″),将Y与字典结构D的入口key值对比:若Y=f1(u′),则更新数据到字典项D(F(K1,f1(u′))),value值为:f2,P[1](u′),K,f2,P[d](u′),Xu′=Enc(KD,Xu′),并令a=a+1,跳转到步骤3-2;若Y≠f1(u′),则令b=b+1,跳转到步骤6-3;
步骤6-3、服务器将搜索结果X=Enc(KD,(ind,leftleaf,num,len,f1,f2,P[1],...,f2,P[d]))发送给客户端。
7.根据极利要求6述的一种基于后缀树的可搜索加密方法,其特征在于:所述步骤7的具体方法为:
用户运行解密操作,令W=Dec(KD,Xu),若W=⊥,则解密失败,输出⊥并中止搜索协议,若W≠⊥,将W展开为(ind,leftleaf,num,len,f1,f2,P[1],...,f2,P[d]),检验f1=F(K1,p[1...i″])是否成立,如果等式不成立,则返回值出错,输出⊥并中止搜索协议;如果等式成立,验证在a=i′+1,...,m且b=1,...,d时,Dec(f2,b,Ta)=⊥是否成立,若成立,则表明p[1...i″]是能在字典D中搜索到最长的匹配前缀;解出ind,选取一个随机序列π1:[m]→[m];将ind,...,ind+m-1置换,使用户发送(x1,...xm)给服务器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910151513.5A CN109815723A (zh) | 2019-02-28 | 2019-02-28 | 一种基于后缀树的可搜索加密系统及方法 |
PCT/CN2019/076958 WO2020172898A1 (zh) | 2019-02-28 | 2019-03-05 | 一种基于后缀树的可搜索加密系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910151513.5A CN109815723A (zh) | 2019-02-28 | 2019-02-28 | 一种基于后缀树的可搜索加密系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815723A true CN109815723A (zh) | 2019-05-28 |
Family
ID=66607870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910151513.5A Pending CN109815723A (zh) | 2019-02-28 | 2019-02-28 | 一种基于后缀树的可搜索加密系统及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109815723A (zh) |
WO (1) | WO2020172898A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110689349A (zh) * | 2019-10-08 | 2020-01-14 | 深圳前海微众银行股份有限公司 | 一种区块链中的交易哈希值存储和搜索方法及装置 |
CN112765421A (zh) * | 2021-01-13 | 2021-05-07 | 中山大学 | 一种数据检索方法及装置、终端设备 |
CN112800088A (zh) * | 2021-01-19 | 2021-05-14 | 东北大学 | 基于双向安全索引的数据库密文检索系统及方法 |
CN112836222A (zh) * | 2021-01-25 | 2021-05-25 | 北京航空航天大学 | 面向智能推荐场景的安全搜索方法及装置 |
CN115179515A (zh) * | 2022-05-31 | 2022-10-14 | 海天机械(广东)有限公司 | 一种用于注塑机快速切换模具数据的系统及方法 |
CN115758417A (zh) * | 2022-11-22 | 2023-03-07 | 中金金融认证中心有限公司 | 数据处理方法、电子设备及存储介质 |
CN117349894A (zh) * | 2023-12-01 | 2024-01-05 | 山东省计算中心(国家超级计算济南中心) | 一种基于填充字典加密的图结构最短路径查询方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290350A1 (en) * | 2012-04-30 | 2013-10-31 | Abdullah Al Mueen | Similarity Search Initialization |
CN104052740A (zh) * | 2014-05-22 | 2014-09-17 | 西安理工大学 | 云存储中可验证的基于词典的可搜索加密方法 |
WO2018094764A1 (zh) * | 2016-11-23 | 2018-05-31 | 深圳大学 | 一种基于云服务的模式串匹配验证方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607405B (zh) * | 2013-11-27 | 2016-11-23 | 东北大学 | 一种面向云存储的密文搜索认证方法 |
US9971904B2 (en) * | 2015-09-30 | 2018-05-15 | Robert Bosch Gmbh | Method and system for range search on encrypted data |
CN108388807B (zh) * | 2018-02-28 | 2020-05-22 | 华南理工大学 | 一种支持偏好搜索和逻辑搜索的高效可验证的多关键字排序可搜索加密方法 |
-
2019
- 2019-02-28 CN CN201910151513.5A patent/CN109815723A/zh active Pending
- 2019-03-05 WO PCT/CN2019/076958 patent/WO2020172898A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290350A1 (en) * | 2012-04-30 | 2013-10-31 | Abdullah Al Mueen | Similarity Search Initialization |
CN104052740A (zh) * | 2014-05-22 | 2014-09-17 | 西安理工大学 | 云存储中可验证的基于词典的可搜索加密方法 |
WO2018094764A1 (zh) * | 2016-11-23 | 2018-05-31 | 深圳大学 | 一种基于云服务的模式串匹配验证方法及装置 |
Non-Patent Citations (1)
Title |
---|
MELISSA CHASE ET AL.: "Substring-Searchable Symmetric Encryption", 《PROCEEDINGS ON PRIVACY ENHANCING TECHNOLOGIES》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110689349A (zh) * | 2019-10-08 | 2020-01-14 | 深圳前海微众银行股份有限公司 | 一种区块链中的交易哈希值存储和搜索方法及装置 |
CN112765421A (zh) * | 2021-01-13 | 2021-05-07 | 中山大学 | 一种数据检索方法及装置、终端设备 |
CN112765421B (zh) * | 2021-01-13 | 2024-01-02 | 中山大学 | 一种数据检索方法及装置、终端设备 |
CN112800088A (zh) * | 2021-01-19 | 2021-05-14 | 东北大学 | 基于双向安全索引的数据库密文检索系统及方法 |
CN112800088B (zh) * | 2021-01-19 | 2023-09-19 | 东北大学 | 基于双向安全索引的数据库密文检索系统及方法 |
CN112836222A (zh) * | 2021-01-25 | 2021-05-25 | 北京航空航天大学 | 面向智能推荐场景的安全搜索方法及装置 |
CN115179515A (zh) * | 2022-05-31 | 2022-10-14 | 海天机械(广东)有限公司 | 一种用于注塑机快速切换模具数据的系统及方法 |
CN115758417A (zh) * | 2022-11-22 | 2023-03-07 | 中金金融认证中心有限公司 | 数据处理方法、电子设备及存储介质 |
CN117349894A (zh) * | 2023-12-01 | 2024-01-05 | 山东省计算中心(国家超级计算济南中心) | 一种基于填充字典加密的图结构最短路径查询方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020172898A1 (zh) | 2020-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815723A (zh) | 一种基于后缀树的可搜索加密系统及方法 | |
Wallden et al. | Cyber security in the quantum era | |
Pasupuleti et al. | An efficient and secure privacy-preserving approach for outsourced data of resource constrained mobile devices in cloud computing | |
US8429421B2 (en) | Server-side encrypted pattern matching | |
Lien et al. | A novel privacy preserving location-based service protocol with secret circular shift for k-nn search | |
Fu et al. | Smart cloud search services: verifiable keyword-based semantic search over encrypted cloud data | |
CN111930881B (zh) | 基于国密算法的连接关键词认证可搜索加密方法 | |
Guo et al. | Secure multi-keyword ranked search over encrypted cloud data for multiple data owners | |
CN109660555A (zh) | 基于代理重加密的内容安全分享方法和系统 | |
CN104967693B (zh) | 面向云存储的基于全同态密码技术的文档相似度计算方法 | |
JP2014002365A (ja) | プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム | |
CN110135986A (zh) | 一种基于区块链智能合约实现的可搜索加密文件数据方法 | |
CN108400970A (zh) | 云环境中相似数据消息锁定加密去重方法、云存储系统 | |
Chi et al. | An Efficient Searchable Public‐Key Authenticated Encryption for Cloud‐Assisted Medical Internet of Things | |
Hong-Yang et al. | Quantum private query based on stable error correcting code in the case of noise | |
CN114598472A (zh) | 基于区块链的条件隐藏可搜索代理重加密方法及存储介质 | |
Lambregts et al. | VAL: Volume and access pattern leakage-abuse attack with leaked documents | |
WO2018116826A1 (ja) | メッセージ送信システム、通信端末、サーバ装置、メッセージ送信方法、およびプログラム | |
Wei et al. | Efficient multi-party private set intersection protocols for large participants and small sets | |
Jheng et al. | Password-based authenticated key exchange from lattices for client/server model | |
Du et al. | Shielding graph for eXact analytics with SGX | |
Deshpande et al. | Fuzzy keyword search over encrypted data in cloud computing | |
Wang et al. | A multi-keyword searchable encryption sensitive data trusted sharing scheme in multi-user scenario | |
Nie et al. | Dynamic verifiable search over encrypted data in untrusted clouds | |
CN107679408A (zh) | 安全云存储中的正则语言检索系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190528 |