CN108171071A - 一种面向云计算的多关键字可排序密文检索方法 - Google Patents

一种面向云计算的多关键字可排序密文检索方法 Download PDF

Info

Publication number
CN108171071A
CN108171071A CN201711247475.0A CN201711247475A CN108171071A CN 108171071 A CN108171071 A CN 108171071A CN 201711247475 A CN201711247475 A CN 201711247475A CN 108171071 A CN108171071 A CN 108171071A
Authority
CN
China
Prior art keywords
data
document
inf
key
keyword
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.)
Granted
Application number
CN201711247475.0A
Other languages
English (en)
Other versions
CN108171071B (zh
Inventor
许建
黄新宇
杨庚
陈燕俐
陈蕾
朱玉昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jilin Foreign Enterprise Service Co., Ltd
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201711247475.0A priority Critical patent/CN108171071B/zh
Publication of CN108171071A publication Critical patent/CN108171071A/zh
Application granted granted Critical
Publication of CN108171071B publication Critical patent/CN108171071B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种面向云计算的多关键字可排序密文检索方法,通过分组法对文档关键字集进行分组,对每组逆关键字集文档向量集合构建相应的B+索引树,采用基于改进的KNN查询算法进行加密后上传至云,并在上传查询陷门后通过TF‑IDF模型对检索结果集合进行排序,返回给用户相关性分数最高的前k个文档。本发明的特点在于相对于其他结构树而言B+树的高度要低一些,由于检索效率和高度成正比增加,这种效率差异会随着文档集和关键字集的增加而愈发明显,采用分组构建B+树结构索引的方法可以大大提高检索速度。并且通过相关性分数比较,在结果集满足需求数量的前提下,提前判定是否继续检索当前树节点的后续节点,从而对检索效率进行进一步的提升。

Description

一种面向云计算的多关键字可排序密文检索方法
技术领域
本发明涉及计算机应用技术领域,特别是一种面向云计算的多关键字可排序密文检索方法。
背景技术
随着云计算的发展与普及,为了减少本地存储和使用方便,更多的个人或公司会把数据上传至云服务中去,以达到随时随地可以操作其数据的目的。但是云服务给用户带来极大便利的同时,由于用户将数据上传到不受信任的第三方,会带来极大的数据隐私泄露的安全隐患。
针对这一问题,许多用户会在上传之前对其数据进行加密以避免数据遭到非法使用,但是这种做法导致基于明文的许多方法不在适用,使数据更加难以操作。目前国内外很多学者对密文检索这一方法进行研究,并获得了很大进展。由于对数据加密后导致数据结构更加复杂,目前在索引大小和检索效率上,密文检索还不能与明文检索相比。
发明内容
本发明所要解决的技术问题是克服现有技术的不足而提供一种面向云计算的多关键字可排序密文检索方法,该方法可以降低索引内存,并有效提高检索效率。
本发明为解决上述技术问题采用以下技术方案:
根据本发明提出的一种面向云计算的多关键字可排序密文检索方法,包括以下步骤:
步骤1、根据数据集构建分组索引数据;
步骤2、利用B+树对步骤1中的每组数据进行索引构建并加密,并和加密后的文档集一起上传到云服务器中;
步骤3、根据用户输入的查询关键字,创建对应的查询向量后,对查询向量进行加密后形成陷门,将陷门上传至云服务器;
步骤4、在云服务器中利用步骤3中的陷门在步骤2中的索引进行查询计算,返回给用户相关性最高的前k个加密文档。
作为本发明所述的一种面向云计算的多关键字可排序密文检索方法进一步优化方案,
所述步骤1具体步骤如下:
步骤1-1:根据数据集构建明文文档向量集F,并提取关键字集W,其中 W={w1,w2,…,wn},n为关键字集大小,wj表示第j个关键字,j=1,2,…n;F={f1,f2,…,fm},m为数据集数量,fi为数据集中第i个文档对应的文档向量,fi的长度和W的长度一致,存储的为关键字集W中的关键字在fi所代表的文档中的词频 TF值,如果关键字没有出现在fi所代表的文档中,则fi中与该关键字所对应的位置存储0;其中,i=1,2,…m;
步骤1-2:根据W创建逆关键字文档向量集O,其中 O={op(w1),op(w2),…,op(wn)},op(wj)表示包含wj的TF值最高的前c×k个文档向量集,c是正整数;
步骤1-3:对W进行分组得到分组后的关键字集WG,其中 WG={WG1,WG2,…,WGb},WGl为第l组的关键字集,WGl包含d个关键字,b为 WG的组数且根据步骤1-2所得到的O对O中的向量进行相同的分组,得到分组后的逆关键字文档向量集OG,OG={OG1,OG2,…,OGb},OGl表示包含 WGl的文档向量集,OG即为分组索引数据,其中,l=1,2,…,b。
作为本发明所述的一种面向云计算的多关键字可排序密文检索方法进一步优化方案,步骤二中,索引构建和加密的步骤如下:
步骤2-1:构建的索引I由两部分组成,即I={IQ,IF},IQ为B+树索引集,IF为文档数据集,通过步骤1-3得到OG后构建IQ={IQ1,IQ2,…,IQb},IQl为WGl对应的B +树索引,其构建所需要的文档向量由OGl提供;用Nl表示IQl的一个节点,其存储的关键字结构为<fid,children[m],inf>,fid为文档标识符,children[m]为指向Nl的第m个孩子节点的指针,m为B+树的阶数,inf是存储TF值的d维数据向量;如果Nl为叶节点,则fid和文档标识一致,inf存储WGl在fid对应文档中的TF值;否则fid为空,用key[v]表示节点Nl存储的第v个关键字信息,则第v个关键字的inf的第c维存储的数据,也就是key[v].inf[c]由如下公式计算:
key[v].inf[c]=
max{Nl.children[v].key[1].inf[c],…,Nl·children[v].key[m].inf[c]}+
|R|%max{Nl.children[v]·key[1].inf[c],…,Nl.children[v].key[m].inf[c]};
其中R为随机产生的数值,Nl.children[v].key[v].inf[c]表示Nl的第v个孩子节点存储的第v个关键字内inf的第c维的数据;其中,v=1,2,…,m,c=1,2,…,d;
步骤2-2:根据F构建IF={IF1,IF2,…,IFm},其中IFi基于fi构建,是fi的一种向量表达形式,IFi=<fid,inf1,inf2,…,infb>,其中infl是长度为d的向量,代表第l组的关键字在fi中的TF值,第l组的第c个关键字在fi中的TF值用infl[c]表示;
步骤2-3:遍历步骤2-1得到的IQ,将IQl每个节点存储关键字的inf的每维增加α+1位,α为随机正整数,每维的第d+p位随机存储0或1,第d+α+1位存储 1,p=1,2,…α;遍历步骤2-2得到的IF,将IFi每维增加β位,β为随机正整数,再增加一维,其位数为β+α+1,每维的扩展位随机存储0或1,前b维的所有d+g位存储的值相同,第(b+1)维的β+α+1位值为1,g=1,2,…β;
步骤2-4:构造秘钥ek1和ek2,ek1={E1,Z1,Z2},ek2={E2,Z3,Z4},E1为b维向量,其中E1中的第l维数据为d+α+1位,每位随机存储0或1;Z1和Z2一样,包含b个(d+α+1)×(d+α+1)阶可逆矩阵;E2为(b+1)维的向量, 为E2中的第l维数据,其中E2的前b维为d+β位,第b+1维为α+β+1位,每位随机存储0或1;Z3和Z4一样,包含b个(d+β)×(d+β)阶可逆矩阵和一个(β+α+1)×(β+α 1)阶可逆矩阵;
步骤2-5:根据步骤2-4得到的秘钥ek1对IQ加密后变换为新的数据IQ′和IQ″,也就是将每个IQl分为IQ′l和IQ″l两个新的数据,用E1,l[s]表示E1第l维的第s位存储的数据,s=1,2,…,d+α+1,IQl[s]以及IQ′l[s]和IQ″l[s]分别表示原数据的第l维的第 s位和加密后得到的两个新数据的第l维的第s位存储的数据;如果E1,l[s]=0, IQ′l[s]=IQ″l[s]=IQl[s];如果E1,l[s]=1,IQ′l[s]+IQ″l[s]=IQl[s];则加密后的I 为EIQ,EIQ用下式表达:
其中表示Z1和Z2的第l个矩阵的转置,用ek2对IF进行加密,得到加密后的IF为EIF,ek2对IF进行加密的过程同IQ加密;最后将加密后的IF和IQ,也就是EIF和 EIQ上传至云服务器。
作为本发明所述的一种面向云计算的多关键字可排序密文检索方法进一步优化方案,步骤3具体步骤如下:
步骤3-1:根据用户输入的查询关键字,创建对应的查询向量,查询向量Q由两部分组成,即Q={QQ,QF},其中QQ为b维向量集,用于在IQ上进行检索,QF同样为b维向量集,并且用于和IF计算求得文档向量和查询向量最终的相关性分数;首先构建QQ={QQ1,QQ2,…,QQb},QQl代表在QQ中第l维存储的向量数据,QQl[c] 表示第l维的第c位存储的数据,QQl[c]与WGl,c相对应,如果WGl,c在查询关键字集Wq中存在,则QQl[c]存储WGl,c的逆文档频率IDF值,否则存储0;如果QQl的所有位存储的都为0,则将QQl设置为空;QF和QQ相等;
步骤3-2:将QQ每维数据扩展α+1位,前α位存储随机数γl,p,第α+1位存储另一个随机数δl;将每维的前d+α位放大ε倍;将QF增加长度为β+α+1位的一维, QF的前b维每维增加β位,限制条件为QFl[d+g]表示QF的第l维的第d+g位存储的数据,QFb+1[g]表示QF的第b+1维的第g位存储的数据;QF的第b+1维的β+p位的值为随机数γp,第β+α+1的值为随机正数δ; QF的第b+1维除最后一位每位放大ε倍;
步骤3-3:通过步骤2-4得到的ek1对Q进行加密,将QQ加密后得到新的数据QQ′和QQ″,用QQ′l[s]和QQ″l[s]表示两个新数据QQ′和QQ″第l维的第s位存储的数据, QQl[s]表示数据QQ第l维的第s位存储的数据;如果E1,l[s]=0,则QQ′l[s]+QQ″l[s]= QQl[s];如果E1,l[s]=1,则QQ′l[s]=QQ″l[s]=QQl[s];最后,加密后的QQ为EQQ, EQQ如下:
其中QQ′l和QQ″l表示QQ′和QQ″第l维的数据,表示Z1和Z2的第l个矩阵的逆,QQl!=null表示QQ第l维的数据不为空,对QF的加密和QQ的步骤过程一样,加密后的QF为EQF,最后将加密后的QQ和QF,也就是EQQ和EQF都上传至云服务器。
作为本发明所述的一种面向云计算的多关键字可排序密文检索方法进一步优化方案,步骤4具体如下:
通过EIQ和EQQ之间的运算,获得每组相关性最高的前h个加密文档,形成返回结果集;通过EIF和EQF运算获得两者之间的相关性分数,然后将返回结果集进行二次排序,最终返回相关性最高的前k个加密文档给用户。
作为本发明所述的一种面向云计算的多关键字可排序密文检索方法进一步优化方案,步骤4具体如下:
步骤4-1:当云服务器接收到EQQ后,用EQQ在EIQ上进行计算并返回具有b组结果的结果集Rlist,Rlist={Rlist1,Rlist2,…Rlistb,},其中Rlistl为第l组索引检索后所返回的结果,每组结果包含h个文档向量,用表示QQ和IQ第l维的加密数据,则节点中第v个关键字的相关性分数用如下公式计算:
其中Nl·key[v]表示节点Nl存储的第v个关键字,Nl·key[v]·inf′和 Nl.key[v].inf″表示对关键字的inf加密后形成的两个新的向量, Score(QQl,Nl·key[v])表示QQl和Nl·key[v]之间的相关性分数;采用深度遍历将遍历到的叶子节点存储的关键字信息放入Rlistl中,如果Rlistl的信息数量超过h,则对后面要遍历的节点进行分数判断,如果节点关键字分数大于Rlistl中最低分,继续遍历,否则这个关键字所对应的孩子节点不予遍历;
步骤4-2:将步骤4-1中得到的Rlist进行去除重复元素操作,利用EQF对结果集Rlist中的数据进行相关性分数计算,其中表示为IFi加密后的形式,计算公式如下:
表示对IFi的第l维向量加密后获得的两个新向量,表示对QF的第l维向量加密后获得的两个新向量,Score(QF,IFi)表示QF和IFi的相关性分数,表示EQF的第l维不为空,通过上述公式得到分数后,返回给用户分数最高的前k个文档。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
本发明在分组关键字集的基础上,首先获得每组逆关键字文档集并进行索引数据创建;同时对创建的索引数据构建具有B+树结构的索引并对其进行加密,和加密后的文档集一起上传到云服务器中;然后根据查询关键字创建相应的查询向量,加密形成查询陷门后上传至云服务进行查询;最后在云中通过查询陷门在加密索引组的运算后返回给用户想要的结果。通过该方法可以降低索引内存,并有效提高检索效率。
附图说明
图1是面向云计算的多关键字可排序密文检索方法的模型示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
如图1是面向云计算的多关键字可排序密文检索方法的模型示意图;本发明提出了一种面向云计算的多关键字可排序密文检索方法,具体包括以下步骤:
步骤1、根据数据集构建分组索引数据;
步骤1-1:根据数据集构建明文文档向量集F,并提取关键字集W,其中 W={w1,w2,…,wn},n为关键字集大小,wj表示第j个关键字,j=1,2,…n; F={f1,f2,…,fm},m为数据集数量,fi为数据集中第i个文档对应的文档向量,fi的长度和W的长度一致,存储的为关键字集W中的关键字在fi所代表的文档中的词频 TF值,如果关键字没有出现在fi所代表的文档中,则fi中与该关键字所对应的位置存储0;其中,i=1,2,…m;
步骤1-2:根据W创建逆关键字文档向量集O,其中 O={op(w1),op(w2),…,op(wn)},op(wj)表示包含wj的TF值最高的前c×k个文档向量集,c是正整数;
步骤1-3:对W进行分组得到分组后的关键字集WG,其中 WG={WG1,WG2,…,WGb},WGl为第l组的关键字集,WGl包含d个关键字,b为 WG的组数且根据步骤1-2所得到的O对O中的向量进行相同的分组,得到分组后的逆关键字文档向量集OG,OG={OG1,OG2,…,OGb},OGl表示包含 WGl的文档向量集,OG即为分组索引数据,其中,l=1,2,…,b。
步骤2、利用B+树对步骤1中的每组数据进行索引构建并加密,并和加密后的文档集一起上传到云服务器中;
索引构建和加密的步骤如下:
步骤2-1:构建的索引I由两部分组成,即I={IQ,IF},IQ为B+树索引集,IF为文档数据集,通过步骤1-3得到OG后构建IQ={IQ1,IQ2,…,IQb},IQl为WGl对应的B +树索引,其构建所需要的文档向量由OGl提供;用Nl表示IQl的一个节点,其存储的关键字结构为<fid,children[m],inf>,fid为文档标识符,children[m]为指向Nl的第m个孩子节点的指针,m为B+树的阶数,inf是存储TF值的d维数据向量;如果Nl为叶节点,则fid和文档标识一致,inf存储WGl在fid对应文档中的TF值;否则fid为空,用key[v]表示节点Nl存储的第v个关键字信息,则第v个关键字的inf的第c维存储的数据,也就是key[v].inf[c]由如下公式计算:
key[v].inf[c]=
max{Nl.children[v].key[1].inf[c],…,Nl.children[v].key[m].inf[c]}+
|R|%max{Nl.children[v].key[1].inf[c],…,Nl.children[v].key[m].inf[c]};
其中R为随机产生的数值,Nl.children[v].key[v].inf[c]表示Nl的第v个孩子节点存储的第v个关键字内inf的第c维的数据;其中,v=1,2,…,m,c=1,2,…,d;
步骤2-2:根据F构建IF={IF1,IF2,…,IFm},其中IFi基于fi构建,是fi的一种向量表达形式,IFi=<fid,inf1,inf2,…,infb>,其中infl是长度为d的向量,代表第l组的关键字在fi中的TF值,第l组的第c个关键字在fi中的TF值用infl[c]表示;
步骤2-3:遍历步骤2-1得到的IQ,将IQl每个节点存储关键字的inf的每维增加α+1位,α为随机正整数,每维的第d+p位随机存储0或1,第d+α+1位存储 1,p=1,2,…α;遍历步骤2-2得到的IF,将IFi每维增加β位,β为随机正整数,再增加一维,其位数为β+α+1,每维的扩展位随机存储0或1,前b维的所有d+g位存储的值相同,第(b+1)维的β+α+1位值为1,g=1,2,…β;
步骤2-4:构造秘钥ek1和ek2,ek1={E1,Z1,Z2},ek2={E2,Z3,Z4},E1为b维向量,其中E1中的第l维数据为d+α+1位,每位随机存储0或1;Z1和Z2一样,包含b个(d+α+1)×(d+α+1)阶可逆矩阵;E2为(b+1)维的向量, 为E2中的第l维数据,其中E2的前b维为d+β位,第b+1维为α+β+1位,每位随机存储0或1;Z3和Z4一样,包含b个(d+β)×(d+β)阶可逆矩阵和一个(β+α+1)×(β+α 1)阶可逆矩阵;
步骤2-5:根据步骤2-4得到的秘钥ek1对IQ加密后变换为新的数据IQ′和IQ",也就是将每个IQl分为IQ′l和IQ″l两个新的数据,用E1,l[s]表示E1第l维的第s位存储的数据,s=1,2,…,d+α+1,IQl[s]以及IQ′l[s]和IQ″l[s]分别表示原数据的第l维的第 s位和加密后得到的两个新数据的第l维的第s位存储的数据;如果E1,l[s]=0, IQ′l[s]=IQ"l[s]=IQl[s];如果E1,l[s]=1,IQ′l[s]+IQ″l[s]=IQl[s];则加密后的IQ 为EIQ,EIQ用下式表达:
其中表示Z1和Z2的第l个矩阵的转置,用ek2对IF进行加密,得到加密后的IF为EIF,ek2对IF进行加密的过程同IQ加密;最后将加密后的IF和IQ,也就是EIF和 EIQ上传至云服务器。
步骤3、根据用户输入的查询关键字,创建对应的查询向量后,对查询向量进行加密后形成陷门,将陷门上传至云服务器;
步骤3-1:根据用户输入的查询关键字,创建对应的查询向量,查询向量Q由两部分组成,即Q={QQ,QF},其中QQ为b维向量集,用于在IQ上进行检索,QF同样为b维向量集,并且用于和IF计算求得文档向量和查询向量最终的相关性分数;首先构建QQ={QQ1,QQ2,…,QQb},QQl代表在QQ中第l维存储的向量数据,QQl[c] 表示第l维的第c位存储的数据,QQl[c]与WGl,c相对应,如果WGl,c在查询关键字集Wq中存在,则QQl[c]存储WGl,c的逆文档频率IDF值,否则存储0;如果QQl的所有位存储的都为0,则将QQl设置为空;QF和QQ相等;
步骤3-2:将QQ每维数据扩展α+1位,前α位存储随机数γl,p,第α+1位存储另一个随机数δl;将每维的前d+α位放大ε倍;将QF增加长度为β+α+1位的一维, QF的前b维每维增加β位,限制条件为QFl[d+g]表示QF的第l维的第d+g位存储的数据,QFb+1[g]表示QF的第b+1维的第g位存储的数据;QF的第b+1维的β+p位的值为随机数γp,第β+α+1的值为随机正数δ; QF的第b+1维除最后一位每位放大ε倍;
步骤3-3:通过步骤2-4得到的ek1对Q进行加密,将QQ加密后得到新的数据QQ′和QQ″,用QQ′l[s]和QQ″l[s]表示两个新数据QQ′和QQ″第l维的第s位存储的数据, QQl[s]表示数据QQ第l维的第s位存储的数据;如果E1,l[s]=0,则QQ′l[s]+QQ″l[s]=QQl[s];如果E1,l[s]=1,则QQ′l[s]=QQ″l[s]=QQl[s];最后,加密后的QQ为EQQ, EQQ如下:
其中QQ′l和QQ″l表示QQ′和QQ″第l维的数据,表示Z1和Z2的第l个矩阵的逆,QQl!=null表示QQ第l维的数据不为空,对QF的加密和QQ的步骤过程一样,加密后的QF为EQF,最后将加密后的QQ和QF,也就是EQQ和EQF都上传至云服务器。
步骤4、在云服务器中利用步骤3中的陷门在步骤2中的索引进行查询计算,返回给用户相关性最高的前k个加密文档;
步骤4具体如下:
通过EIQ和EQQ之间的运算,获得每组相关性最高的前h个加密文档,形成返回结果集;通过EIF和EQF运算获得两者之间的相关性分数,然后将返回结果集进行二次排序,最终返回相关性最高的前k个加密文档给用户。
步骤4-1:当云服务器接收到EQQ后,用EQQ在EIQ上进行计算并返回具有b组结果的结果集Rlist,Rlist={Rlist1,Rlist2,…Rlistb,},其中Rlistl为第l组索引检索后所返回的结果,每组结果包含h个文档向量,用表示QQ和IQ第l维的加密数据,则节点中第v个关键字的相关性分数用如下公式计算:
其中Nl.key[v]表示节点Nl存储的第v个关键字,Nl.key[v].inf′和 Nl.key[v].inf″表示对关键字的inf加密后形成的两个新的向量, Score(QQl,Nl.key[v])表示QQl和Nl·key[v]之间的相关性分数;采用深度遍历将遍历到的叶子节点存储的关键字信息放入Rlistl中,如果Rlistl的信息数量超过h,则对后面要遍历的节点进行分数判断,如果节点关键字分数大于Rlistl中最低分,继续遍历,否则这个关键字所对应的孩子节点不予遍历;
步骤4-2:将步骤4-1中得到的Rlist进行去除重复元素操作,利用EQF对结果集Rlist中的数据进行相关性分数计算,其中表示为IFi加密后的形式,计算公式如下:
表示对IFi的第l维向量加密后获得的两个新向量,表示对QF的第l维向量加密后获得的两个新向量,Score(QF,IFi)表示QF和IFi的相关性分数,表示EQF的第l维不为空,通过上述公式得到分数后,返回给用户分数最高的前k个文档。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。

Claims (6)

1.一种面向云计算的多关键字可排序密文检索方法,其特征在于,包括以下步骤:
步骤1、根据数据集构建分组索引数据;
步骤2、利用B+树对步骤1中的每组数据进行索引构建并加密,并和加密后的文档集一起上传到云服务器中;
步骤3、根据用户输入的查询关键字,创建对应的查询向量后,对查询向量进行加密后形成陷门,将陷门上传至云服务器;
步骤4、在云服务器中利用步骤3中的陷门在步骤2中的索引进行查询计算,返回给用户相关性最高的前k个加密文档。
2.根据权利要求1所述的一种面向云计算的多关键字可排序密文检索方法,其特征在于,
所述步骤1具体步骤如下:
步骤1-1:根据数据集构建明文文档向量集F,并提取关键字集W,其中W={w1,w2,…,wn},n为关键字集大小,wj表示第j个关键字,j=1,2,…n;F={f1,f2,…,fm},m为数据集数量,fi为数据集中第i个文档对应的文档向量,fi的长度和W的长度一致,存储的为关键字集W中的关键字在fi所代表的文档中的词频TF值,如果关键字没有出现在fi所代表的文档中,则fi中与该关键字所对应的位置存储0;其中,i=1,2,…m;
步骤1-2:根据W创建逆关键字文档向量集O,其中O={op(w1),op(w2),…,op(wn)},op(wj)表示包含wj的TF值最高的前c×k个文档向量集,c是正整数;
步骤1-3:对W进行分组得到分组后的关键字集WG,其中WG={WG1,WG2,…,WGb},WGl为第l组的关键字集,WGl包含d个关键字,b为WG的组数且根据步骤1-2所得到的O对O中的向量进行相同的分组,得到分组后的逆关键字文档向量集OG,OG={OG1,OG2,…,OGb},OGl表示包含WGl的文档向量集,OG即为分组索引数据,其中,l=1,2,…,b。
3.根据权利要求2所述的一种面向云计算的多关键字可排序密文检索方法,其特征在于,步骤二中,索引构建和加密的步骤如下:
步骤2-1:构建的索引I由两部分组成,即I={IQ,IF},IQ为B+树索引集,IF为文档数据集,通过步骤1-3得到OG后构建IQ={IQ1,IQ2,…,IQb},IQl为WGl对应的B +树索引,其构建所需要的文档向量由OGl提供;用Nl表示IQl的一个节点,其存储的关键字结构为<fid,children[m],inf>,fid为文档标识符,children[m]为指向Nl的第m个孩子节点的指针,m为B+树的阶数,inf是存储TF值的d维数据向量;如果Nl为叶节点,则fid和文档标识一致,inf存储WGl在fid对应文档中的TF值;否则fid为空,用key[v]表示节点Nl存储的第v个关键字信息,则第v个关键字的inf的第c维存储的数据,也就是key[v].inf[c]由如下公式计算:
key[v].inf[c]=
max{Nl.children[v].key[1].inf[c],…,Nl.children[v].key[m].inf[c]}+
|R|%max{Nl.children[v].key[1].inf[c],…,Nl.children[v].key[m].inf[c]};
其中R为随机产生的数值,Nl.children[v].key[v].inf[c]表示Nl的第v个孩子节点存储的第v个关键字内inf的第c维的数据;其中,v=1,2,…,m,c=1,2,…,d;
步骤2-2:根据F构建IF={IF1,IF2,…,IFm},其中IFi基于fi构建,是fi的一种向量表达形式,IFi=<fid,inf1,inf2,…,infb>,其中infl是长度为d的向量,代表第l组的关键字在fi中的TF值,第l组的第c个关键字在fi中的TF值用infl[c]表示;
步骤2-3:遍历步骤2-1得到的IQ,将IQl每个节点存储关键字的inf的每维增加α+1位,α为随机正整数,每维的第d+p位随机存储0或1,第d+α+1位存储1,p=1,2,…α;遍历步骤2-2得到的IF,将IFi每维增加β位,β为随机正整数,再增加一维,其位数为β+α+1,每维的扩展位随机存储0或1,前b维的所有d+g位存储的值相同,第(b+1)维的β+α+1位值为1,g=1,2,…β;
步骤2-4:构造秘钥ek1和ek2,ek1={E1,Z1,Z2},ek2={E2,Z3,Z4},E1为b维向量,其中E1中的第l维数据为d+α+1位,每位随机存储0或1;Z1和Z2一样,包含b个(d+α+1)×(d+α+1)阶可逆矩阵;E2为(b+1)维的向量, 为E2中的第l维数据,其中E2的前b维为d+β位,第b+1维为α+β+1位,每位随机存储0或1;Z3和Z4一样,包含b个(d+β)×(d+β)阶可逆矩阵和一个(β+α+1)×(β+α+1)阶可逆矩阵;
步骤2-5:根据步骤2-4得到的秘钥ek1对IQ加密后变换为新的数据IQ′和IQ″,也就是将每个IQl分为IQ′l和IQ″l两个新的数据,用E1,l[s]表示E1第l维的第s位存储的数据,s=1,2,…,d+α+1,IQl[s]以及IQ′l[s]和IQ″l[s]分别表示原数据的第l维的第s位和加密后得到的两个新数据的第l维的第s位存储的数据;如果E1,l[s]=0,IQ′l[s]=IQ″l[s]=IQl[s];如果E1,l[s]=1,IQ′l[s]+IQ″l[s]=IQl[s];则加密后的IQ为EIQ,EIQ用下式表达:
其中表示Z1和Z2的第l个矩阵的转置,用ek2对IF进行加密,得到加密后的IF为EIF,ek2对IF进行加密的过程同IQ加密;最后将加密后的IF和IQ,也就是EIF和EIQ上传至云服务器。
4.根据权利要求3所述的一种面向云计算的多关键字可排序密文检索方法,其特征在于,步骤3具体步骤如下:
步骤3-1:根据用户输入的查询关键字,创建对应的查询向量,查询向量Q由两部分组成,即Q={QQ,QF},其中QQ为b维向量集,用于在IQ上进行检索,QF同样为b维向量集,并且用于和IF计算求得文档向量和查询向量最终的相关性分数;首先构建QQ={QQ1,QQ2,…,QQb},QQl代表在QQ中第l维存储的向量数据,QQl[c]表示第l维的第c位存储的数据,QQl[c]与WGl,c相对应,如果WGl,c在查询关键字集Wq中存在,则QQl[c]存储WGl,c的逆文档频率IDF值,否则存储0;如果QQl的所有位存储的都为0,则将QQl设置为空;QF和QQ相等;
步骤3-2:将QQ每维数据扩展α+1位,前α位存储随机数γl,p,第α+1位存储另一个随机数δl;将每维的前d+α位放大ε倍;将QF增加长度为β+α+1位的一维,QF的前b维每维增加β位,限制条件为QFl[d+g]表示QF的第l维的第d+g位存储的数据,QFb+1[g]表示QF的第b+1维的第g位存储的数据;QF的第b+1维的β+p位的值为随机数γp,第β+α+1的值为随机正数δ;QF的第b+1维除最后一位每位放大ε倍;
步骤3-3:通过步骤2-4得到的ek1对Q进行加密,将QQ加密后得到新的数据QQ′和QQ″,用QQ′l[s]和QQ″l[s]表示两个新数据QQ′和QQ″第l维的第s位存储的数据,QQl[s]表示数据QQ第l维的第s位存储的数据;如果E1,l[s]=0,则QQ′l[s]+QQ″l[s]=QQl[s];如果E1,l[s]=1,则QQ′l[s]=QQ″l[s]=QQl[s];最后,加密后的QQ为EQQ,EQQ如下:
其中QQ′l和QQ″l表示QQ′和QQ″第l维的数据,表示Z1和Z2的第l个矩阵的逆,QQl!=null表示QQ第l维的数据不为空,对QF的加密和QQ的步骤过程一样,加密后的QF为EQF,最后将加密后的QQ和QF,也就是EQQ和EQF都上传至云服务器。
5.根据权利要求4所述的一种面向云计算的多关键字可排序密文检索方法,其特征在于,步骤4具体如下:
通过EIQ和EQQ之间的运算,获得每组相关性最高的前h个加密文档,形成返回结果集;通过EIF和EQF运算获得两者之间的相关性分数,然后将返回结果集进行二次排序,最终返回相关性最高的前k个加密文档给用户。
6.根据权利要求4所述的一种面向云计算的多关键字可排序密文检索方法,其特征在于,步骤4具体如下:
步骤4-1:当云服务器接收到EQQ后,用EQQ在EIQ上进行计算并返回具有b组结果的结果集Rlist,Rlist={Rlist1,Rlist2,…Rlistb,},其中Rlistl为第l组索引检索后所返回的结果,每组结果包含h个文档向量,用表示QQ和IQ第l维的加密数据,则节点中第v个关键字的相关性分数用如下公式计算:
其中Nl.key[v]表示节点Nl存储的第v个关键字,Nl.key[v].inf′和Nl.key[v].inf″表示对关键字的inf加密后形成的两个新的向量,Score(QQl,Nl.key[v])表示QQl和Nl.key[v]之间的相关性分数;采用深度遍历将遍历到的叶子节点存储的关键字信息放入Rlistl中,如果Rlistl的信息数量超过h,则对后面要遍历的节点进行分数判断,如果节点关键字分数大于Rlistl中最低分,继续遍历,否则这个关键字所对应的孩子节点不予遍历;
步骤4-2:将步骤4-1中得到的Rlist进行去除重复元素操作,利用EQF对结果集Rlist中的数据进行相关性分数计算,其中表示为IFi加密后的形式,计算公式如下:
表示对IFi的第l维向量加密后获得的两个新向量,表示对QF的第l维向量加密后获得的两个新向量,Score(QF,IFi)表示QF和IFi的相关性分数,表示EQF的第l维不为空,通过上述公式得到分数后,返回给用户分数最高的前k个文档。
CN201711247475.0A 2017-12-01 2017-12-01 一种面向云计算的多关键字可排序密文检索方法 Active CN108171071B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711247475.0A CN108171071B (zh) 2017-12-01 2017-12-01 一种面向云计算的多关键字可排序密文检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711247475.0A CN108171071B (zh) 2017-12-01 2017-12-01 一种面向云计算的多关键字可排序密文检索方法

Publications (2)

Publication Number Publication Date
CN108171071A true CN108171071A (zh) 2018-06-15
CN108171071B CN108171071B (zh) 2020-02-07

Family

ID=62524998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711247475.0A Active CN108171071B (zh) 2017-12-01 2017-12-01 一种面向云计算的多关键字可排序密文检索方法

Country Status (1)

Country Link
CN (1) CN108171071B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063509A (zh) * 2018-08-07 2018-12-21 上海海事大学 一种基于关键词语义排序的可搜索加密方法
CN109165520A (zh) * 2018-07-16 2019-01-08 哈尔滨工业大学(深圳) 数据加密方法及其装置、数据加密检索系统
CN109902143A (zh) * 2019-03-04 2019-06-18 南京邮电大学 一种基于密文的多关键字扩展检索方法
CN110069944A (zh) * 2019-04-03 2019-07-30 南方电网科学研究院有限责任公司 一种可搜索加密的数据检索方法及系统
CN111680062A (zh) * 2020-05-15 2020-09-18 江西师范大学 一种安全多目标数据对象查询方法及存储介质
CN114840568A (zh) * 2022-07-04 2022-08-02 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095733A (zh) * 2013-03-04 2013-05-08 淮阴工学院 一种面向云存储的关键字密文检索方法
CN104615692A (zh) * 2015-01-23 2015-05-13 重庆邮电大学 一种支持动态更新及多关键字安全排序的可搜索加密方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095733A (zh) * 2013-03-04 2013-05-08 淮阴工学院 一种面向云存储的关键字密文检索方法
CN104615692A (zh) * 2015-01-23 2015-05-13 重庆邮电大学 一种支持动态更新及多关键字安全排序的可搜索加密方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109165520A (zh) * 2018-07-16 2019-01-08 哈尔滨工业大学(深圳) 数据加密方法及其装置、数据加密检索系统
CN109165520B (zh) * 2018-07-16 2020-08-11 哈尔滨工业大学(深圳) 数据加密方法及其装置、数据加密检索系统
CN109063509A (zh) * 2018-08-07 2018-12-21 上海海事大学 一种基于关键词语义排序的可搜索加密方法
CN109902143A (zh) * 2019-03-04 2019-06-18 南京邮电大学 一种基于密文的多关键字扩展检索方法
CN109902143B (zh) * 2019-03-04 2022-09-23 南京邮电大学 一种基于密文的多关键字扩展检索方法
CN110069944A (zh) * 2019-04-03 2019-07-30 南方电网科学研究院有限责任公司 一种可搜索加密的数据检索方法及系统
CN111680062A (zh) * 2020-05-15 2020-09-18 江西师范大学 一种安全多目标数据对象查询方法及存储介质
CN114840568A (zh) * 2022-07-04 2022-08-02 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置
CN114840568B (zh) * 2022-07-04 2022-09-20 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置

Also Published As

Publication number Publication date
CN108171071B (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
CN108171071A (zh) 一种面向云计算的多关键字可排序密文检索方法
CN106951411B (zh) 一种云计算中保护数据隐私的快速多关键词语义排序搜索方法
CN104765848B (zh) 混合云存储中支持结果高效排序的对称可搜索加密方法
CN109885640B (zh) 一种基于α叉索引树的多关键词密文排序检索方法
CN104615692B (zh) 一种支持动态更新及多关键字安全排序的可搜索加密方法
CN108156140A (zh) 一种支持数值属性比较的多关键字可搜索加密方法
CN111026788B (zh) 一种混合云中基于同态加密的多关键词密文排序检索方法
CN109145079B (zh) 基于个人兴趣用户模型的云端可搜索加密方法
CN109063509A (zh) 一种基于关键词语义排序的可搜索加密方法
CN105574054B (zh) 一种分布式缓存范围查询方法、装置及系统
CN109471905A (zh) 一种支持时间范围和属性范围复合查询的区块链索引方法
CN108228849A (zh) 云网络中基于类别分组索引的密文排序搜索方法
CN109902143B (zh) 一种基于密文的多关键字扩展检索方法
CN109885650B (zh) 一种外包云环境隐私保护密文排序检索方法
CN104915388B (zh) 一种基于谱聚类和众包技术的图书标签推荐方法
CN109213731A (zh) 云环境中基于迭代加密的多关键词密文检索方法
CN107908779A (zh) 云环境下基于mat树的动态多属性连接关键词的搜索方法
CN107273529A (zh) 基于哈希函数的高效层级索引构建及检索方法
CN108549701A (zh) 云环境加密外包数据语义扩展搜索方法及系统
CN108768651A (zh) 支持多维区间范围查询的可搜索公钥加密方法
Xue et al. Cuckoo-filter based privacy-aware search over encrypted cloud data
Ganti et al. MP-trie: Fast spatial queries on moving objects
He et al. An efficient ciphertext retrieval scheme based on homomorphic encryption for multiple data owners in hybrid cloud
Gampala et al. An efficient Multi-Keyword Synonym Ranked Query over Encrypted Cloud Data using BMS Tree
Wardani et al. Semantic mapping relational to a directed property hypergraph model

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TA01 Transfer of patent application right

Effective date of registration: 20200114

Address after: 130021 15 / F, Zhaofeng international, 4111 Renmin Street, Changchun City, Jilin Province

Applicant after: Jilin Foreign Enterprise Service Co., Ltd

Address before: 210023 Jiangsu city of Nanjing province Ya Dong new Yuen Road No. 9

Applicant before: Nanjing Post & Telecommunication Univ.

TA01 Transfer of patent application right