基于属性加密的密文索引构造方法及其查询方法与流程

文档序号:12034740阅读:646来源:国知局
基于属性加密的密文索引构造方法及其查询方法与流程

本发明涉及计算机技术中的信息安全领域,尤其涉及一种基于属性加密的密文索引构造方法及其查询方法。



背景技术:

倒排索引技术作为目前应用最为广泛的全文索引技术,其索引结构类似于书本的目录结构,整个索引以“单词-指针”对的形式来进行构建,索引由“单词”和“指针”两部分组成,“单词”包括了被索引文档里的所有单词,“指针”则包括了包含该单词的文档以及在单词文档中出现的位置。用户通过单词进行目标文档的查找,通过单词对应的指针获取目标文档。

倒排索引结构并未对索引进行任何的安全处理,信息容易被泄露,获取索引文件或者在网络上截取到了查询信息,整个索引中的信息就会暴露。因此,普通的倒排索引无法适用于高安全应用的场景。在有安全需求的场景下,通常对索引文件加密或者对索引的内容加密来保护索引信息。

在中国发明专利说明书cn200910063738.1中公开了一种基于分块组织的密文索引结构及其管理方法、cn200910061325.x中公开了一种基于密文的安全全文索引和检索系统、cn201310616577.0公开了一种面向云存储的密文搜索认证方法、cn201510964712.x中公开了一种面向云存储并基于全同态密码的密文全文检索方法及系统.。上述专利涉及了倒排文档的密文索引结构,但它们的安全性有待提高。

索引信息加密后,为了能够进行安全检索,在用户发起查询请求时,需要对查询关键词进行加密后再进行搜索,上述的发明专利和现有的技术虽然对索引进行了加密,在进行查询时也对查询关键词进行了加密,但由于采用了相同的密钥,同一关键词在任何时间都加密成了相同的密文,这导致无法抵抗统计分析。

属性加密在加密时把与本次加密相关的加密用户的身份或者加密内容的属性与要加密的文本一起进行加密,这样可以做到同一关键词在不同是时间或者对不同的用户其加密结果是不同的,从而能够保证密文索引的安全。



技术实现要素:

本发明的目的旨在解决上述倒排索引结构安全性差无法适合高安全场景的问题,从而提供一种基于属性加密的密文索引构造方法及其查询方法。

为实现上述目的,在第一方面,本发提供了一种基于属性加密的密文索引构造方法,该方法包括以下步骤:

1)将每个待归档文档划分成不同的域;

2)对每个域建立密文索引,具体包括:

2.1)将当前要建立索引的域进行token化,然后对每一个token化的token关键词进行属性加密,该步骤具体包括如下:

2.1.1)利用密钥生成公式subkeygenerate(w,kpriv,pw_fld)生成加密密钥ksub,其中w为被加密的token文本,kpriv为索引加密主密钥,pw_fld为w的属性集合,pw_fld包含多个与当前文档相关属性,包括文档拥有者、文档标题、文档生成时间、和文档访问列表;

2.1.2)使用加密密钥ksub和属性集合pw_fld,利用可配置的加密算法把token关键词加密以获得关键词密文ekey;

2.2)加密当前域的长度、域地址、文档地址以生成密文域信息efield;

2.3)把密文域信息efield和当前域的所有关键词密文ekey合并成密文e后插入密文索引文件;

3)采用可配置的加密算法对文档内容加密;

4)把密文索引中文档地址与密文文档关联以构造密文倒排文档索引;

5)把密文索引和加密后的密文保存在云服务器上。

进一步地,所述步骤1)中的待归档文档的格式为txt、doc、docx、pdf、wps、xml、html、rtf、ppt、或pptx。

第二方面,本发明还提供了一种还提供了一种基于属性加密的密文索引查询方法。该方法包括以下步骤:

1)对用户输入的查询语句进行语法和语言处理,获取关键词列表和token流;

2)根据获取的关键词列表生成查询树,所述查询树具有key1op1key2op2…keyn形式,其中op可以是and或者or,keyi为第i个查询关键词;

3)对token流中的每一个token进行处理,其步骤如下:

3.1)构造所有关键词的全集字典向量集合s,并设定初始化属性表达式v,所述初始化属性表达式子v为空,其维数比s维数多1;

3.2)对每一个token进行关键词keyi的查询,如果查询keyi在集合s中,则把属性表达式v中与集合s相对应的位置置1;

3.3)判断关键词后面的关系运算符,如果为and,则把属性表达式v最后一维置1,如果为or,则把属性表达式v最后一维置0;

4)利用密钥生成公式subkeygenerate(w,kpriv,pw_fld)生成加密密钥ksub,其中w为被加密的token文本,kpriv为索引加密主密钥,pw_fld为w的属性集合,pw_fld包含多个与当前文档相关属性,包括文档拥有者、文档标题、文档生成时间、文档访问列表等。

5)利用ksub加密属性表达式v,获取当前查询的馅门tq。

6)服务器对每一个密文索引中的数据e据公式dec(e,ksub,tq)进行计算,其中dec的加密方法为:使用加密密钥ksub和馅门tq,利用可配置的加密算法把密文索引e进行反向加密。

7)返回计算结果为1的加密文档集合。

进一步地,所述步骤7)中返回查询结果为1的加密文档集合按照打分高低进行排序,所述打分高低与查询的相关性和域所设置的权值相关。

进一步地,所述步骤1)对用户输入的查询语句进行语法和语言处理具体包括:对查询语句进行文本分词、合并同义词和去除停用词。

进一步地,所述步骤7)返回的加密文档格式为txt、doc、docx、pdf、wps、xml、html、rtf、ppt或pptx。

本发明的有益效果:采用倒排文档索引与属性的加密方法进行有机结合构造了一个具有安全性的密文索引结构。对文档提取关键词后进行属性加密,再把加密后的关键词存入密文倒排文档索引,用户查询文档时,根据用户属性信息和用户提供的关键词信息构造陷门,服务器端根据陷门进行计算,查询出与当前查询属性和关键词相关的文档。

属性加密在加密时把与本次加密相关的加密用户的身份或者加密内容的属性与要加密的文本一起进行加密,这样可以做到同一关键词在不同是时间或者对不同的用户其加密结果是不同的,从而能够保证密文索引的安全。

附图说明

图1是本发明实施例的索引构造和查询的应用系统的结构框图;

图2是本发明实施例的密文索引的构造方法;

图3是本发明实施例的密文索引的查询方法。

具体实施方式

为了使本技术领域的人员更好的理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1是本发明实施例的索引构造和查询的应用系统的结构框图。

如图1所示,本发明实施例的索引构造和查询的应用系统如图1所示,其中索引构造过程(虚线部分)由以下四个部分组成。

1)提供被索引文本文件,包括txt、doc、docx、pdf、wps、xml、html、rtf、ppt、pptx等。被索引文件中的文本被提取出来之后将交给文本分析器进行分析及预处理。

2)被索引文本经过词法分析和语言处理形成一系列的关键词。处理过程包括文本分词,合并同义词,去除停用词等。形成的词将首先被加密,然后将密文交给索引创建器进行索引创建。

3)经过索引创建形成词典及反向索引表。所有由步骤2)处理后形成的词都将加入到词典中,并更新反向索引表。

4)通过索引存储将索引写入磁盘。为了提高检索的效率,步骤3)所形成的词典和反向表会先存储在内存中,当退出索引或者调用写入方法时才会把索引从内存中写入磁盘。

而搜索过程(实线部分)主要由以下7个部分组成:

1)用户输入查询语句。接口一般是以输入框的形式提供给用户,如搜索引擎网站。

2)对户输入查询语句经过语法和语言处理,得到一系列的关键词列表。这一步与索引过程的第2)步是一样的,都是对文本进行预处理,得到下一步需要的数据。

3)通过语法分析得到一个查询树。输入查询语句通常可以看作是一个查询表达式,其中包含“或”、“与”、“非”三种逻辑关系,通过对查询表达式的解析可以得到一个用于查询的查询树。由于是进行密文检索,因此查询的关键词会通过索引建立时一样的加密过程来进行加密,在后来的过程中都将以密文形态进行查询。

4)通过索引存储将索引读入到内存。

5)利用查询数构造馅门搜索索引,从而得到每个词的文档链表,对文档链表进行交、差或并操作,得到结果文档。对文档链表进行的操作由查询树决定。

6)将搜索到的结果文档解密并按照打分高低进行排序。解密需要用户提供解密密钥,结果文档的得分高低由多种因素决定,比如与查询的相关性,域所设置的权值等,具体的打分规则后面会详细介绍。

7)返回结果给用户。

其中密文索引的构造流程,详细由图2所示,具体描述如下。

对每一个要归档的文档,依据自然段落把文档划分成多个域,针对每一域分别建立索引,每一个域建立索引的过程如下:首先对每一个域进行分词处理,即将域内文本token化,然后对每个token化的关键词进行属性加密,生成关键词密文ekey,加密密钥ksub由主密钥根据子密钥生成方法subkeygenerate(w,kpriv,pw_fld)生成,其中w为被加密的token文本,kpriv为索引加密主密钥,pw_fld为w的属性集合,pw_fld包含多个与当前文档相关属性,包括文档拥有者、文档标题、文档生成时间、文档访问控制列表。采取此策略后,对于不同的token,将会以不同的密钥进行加密,这样就可以做到一词一密,有利于索引信息的保护。当加密完域内所有token化的关键词后,采用可配置的加密算法对当前域的基本信息进行加密,包括域地址、域的长度、文档的地址,加密后生成密文域信息efield。然后把密文域信息efield和当前域的所有关键词密文ekey一起插入到密文索引中(最初密文索引是空的)。按照上述方法处理文档的每一个域;所有的域处理完成后,再采用可配置的加密算法加密整个文本内容,并给加密后的文档分配存储地址;同时把文档地址与每个域中的文档地址进行关联,关联后密文索引即构造成功。最后把加密后的文档和密文索引分别进行保存。

当用户发起密文搜索请求后,其搜索流程如图3所示,具体描述如下。

查询过程首先对查询语句进行预处理,对于查询语句的处理与索引过程中对文本的处理过程基本一致,主要是进行分词、去重、去除停用词等几个步骤,然后根据查询语法生成一颗查询树用作结果处理,支持交和并两种处理方式。得到查询语句的token流之后,对流中的每一个token进行处理。首先判断token是否为空,如果为空,则根据查询树整理的查询结果,得到最终结果集并返回给用户。如果不为空,则首先判断该查询token所在的域是否被加密,若被加密则需要对token进行加密处理,其过程是采用属性加密通过构造馅门的方式来进行,其方法如下:1)首先造所有关键词的全集字典向量集合s,并设定初始化属性表达式v,所述初始化属性表达式子v为空,其维数比s维数多1;2)对每一个token进行关键词keyi的查询,如果查询keyi在集合s中,则把属性表达式v中与集合s相对应的位置置1;3)判断关键词后面的关系运算符,如果为and,则把属性表达式v最后一维置1,如果为or,则把属性表达式v最后一维置0。4)然后通过一个子密钥生成函数,生成一个token的加密子密钥,即馅门tq,tq中包含了查询的属性信息。再用此子密钥对token和馅门tq进行反向加密,即进行查询,查询结果为1的文档即为符合用户查询要求的文档。

本发明采用的这种安全索引方法可以很好的保持倒排文档的特性,即便是加密后的索引信息,查询时可以通过普通的倒排文档查询方式来进行查询,即类似于查字典的过程,通过二级或者是多级索引快速地定位到密文所在位置并得到文档链表。这样的处理方式可以保证即使在数据量比较大的时候也可以有着比较高的查询效率及准确率。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1