专利名称::一种面向密文云存储的文档检索方法与系统的制作方法
技术领域:
:本发明涉及计算机软件相关领域,具体涉及一种面向密文云存储的文档检索方法与系统。属于信息安全
技术领域:
。
背景技术:
:随着近些年云计算技术的迅猛发展,涌现出以AmazonS3为代表的一批云存储系统。这些云存储系统具有弹性可扩展的特点,并根据具体使用情况收费,使用者可以在很短的时间内获得所需要的巨大存储空间。通过使用云存储系统,用户可以随时随地访问数据,操作更为便利;企业也避免了数据中心搭建代价与维护成本,总体上更为经济廉价。可以预期,在未来一段时期内,云存储将得到更为广泛的应用,会有越来越多的用户及企业选择使用云存储系统。但目前云存储用户面临的一个重要问题是如何实现数据机密性保护。由于数据内容交由云存储服务提供商维护,后者自然就获得的访问用户所有数据的能力。一旦出现系统故障或者内部人员问题,导致用户数据传播,则后果不堪设想。加密是当前公认的实现数据机密性保护的有效手段,可以有效的防范非授权传播。目前已有部分云存储系统支持密文文档,如Zetta等。数据加密带来了密文状态下难以实现文档快速检索与查找的问题。在普通云存储系统中,用户可根据文件名、关键词、修改时间等条件,在海量存储中查找所需文件。而文档在密文状态下,服务器无从获得文档的名字、关键词等信息,存储系统无法为用户进行文档检索,用户需要将所有密态文档先下载、解密,再判断其是否符合检索条件,无论从检索时间还是从网络传输带宽两方面来说,代价都令用户无法承受。因此,如何在密文云存储系统中,实现元信息的安全存储以及高效访问,并最终实现密文文档的快速检索,是当前云存储领域十分迫切的需求。
发明内容针对上述问题,本发明提供了一种面向密文云存储的文档检索方法与系统,该方法充分利用面向列存储的数据库系统,基于用户所提供的自定义密文属性与关键词,构建数据安全索引,实现海量密文文档的安全快速检索。该系统实现密文文档元信息的安全存储以及高效访问,具有相对独立的结构,可以为当前各类云存储系统提供海量密文数据的快速检索支持。该方法包括如下几个关键步骤1.密钥生成本发明采用双层密钥体制。根密钥为用户的主密钥,由用户自行生成,二级密钥为文档加密密钥与索引密钥,均由客户端自动生成。为了最大程度保证文档安全,每个文档具有单独的文档加密密钥,该密钥被用户的主密钥加密保存在服务器端。每个用户具有一个索引密钥,用于加密保护所有属性元信息,该索引密钥被主密钥加密保存在服务器端(即云数据库端)。用户的主密钥由用户自己负责其安全存储,客户端只使用主密钥,不会泄露主密钥,上述若干二级密钥可以根据实际需求定期更换。2密文文档元信息生成密文文档元信息包括两个部分,一部分由用户生成。用户在上传密文文档的同时,为该文档生成用于检索的元信息。该部分元信息包括一组用户自定义的属性集合,由用户索引密钥加密保护。每个属性包括一个属性名称、以及一个或多个属性值。令Ki表示用户Ui的索引密钥。该用户为文档T设定一个属性,其名称为Ax,η个属性值分别为{Vx1,…,Vx11I;那么用户为文档生成的元数据为一个二元组(Eki(Ax),(Eki(Vx1)j…,EKl(Vx11)})前者是利用索引密钥加密后的属性名称,后者是利用索引密钥加密后的属性值。当用户为文档指派多个属性时,生成的元数据为上述二元组集合。密文文档的另一个组成部分是由文档提取的,在上传密文文档的同时,客户端自动对文档进行解析,解析出文档的一些元信息,如读取文档的名字等信息,以及分析文档内容的关键词信息。该部分元信息包含文档的一些属性的集合,也由用户索引密钥加密保护。每个属性也包含一个属性名称以及一个或多个属性值。为密文文档提取的所有的元信息将作为一条完整的索引记录保存在云数据库的索引表中。3密文文档检索当用户需要查找具有某个属性值的密文文档时,提交形如“Αχ=V”查询条件,其中,Ax是属性名称,V是属性值。在发送到服务器端前,客户端将该查询条件翻译成多个子检索条件并采用索引密钥进行加密,形如“Ek(V)e丨EKl(Vx1),…,EKl(Vxn)}”。服务器端在收到检索请求后,在所保存的元信息库中检索,找到所有满足条件的元组后将其返回给用户。用户端可以通过索引密钥解密得到具体的元信息,并根据该密文文档的链接请求访问文档内容。4密文元信息更新为了保证元信息之间的一致性,在密文文档更新、元信息发生改变时,需要用户主动将修改后的元信息加密并重新提交,由服务器更新所对应的元组内容。优选地,步骤1所述的步骤中,用户的主密钥可以由口令加密保护,或者可以保存在U-key等外接设备中。优选地,步骤2所述的步骤中,可以对文档的属性元信息进行处理,在用户上传密文文档时,自动对文档的基本属性(如文档名,大小等)进行提取,作为文档元信息,也对文档的内容进行解析,解析出关键字,作为文档属性元信息。优先地,步骤2所述的步骤中,如果文档的属性元信息的属性名本身不泄漏用户隐私,可以不对属性名加密,而只对属性值加密。优先地,步骤2所述的步骤中,将文档在云存储的存储位置作为该文档属性元信息的标识,作为文档的属性元信息的一部分。优选地,步骤2所述的步骤中,可以针对文档的文件名属性生成作特殊优化,比如对文件名进行分词。文档的文件名对应的索引值不仅包括加密后的文件名字符串,而且包括对文件名进行分词后的子文件名的密文集合,这样可以适用于用户提交的对文件名的部分查询。优选地,步骤2所述密文文档的元信息可以保存在分布式键值数据库中。每个文档的所有元信息表示为一个元组;该元组的各个属性为加密保密后的文档属性名,其属性值为加密保护的属性值。优选地,步骤3所述步骤可以提供对多个检索条件的支持。多个检索条件为由一个或多个操作符(OR或AND)连接的多个基本查询子句。优选地,步骤3所述步骤可以提供对明密文的同时检索,在用户提交检索条件后,将检索拆分成明文检索和密文检索,明文检索过程中不需要加密,最后将明文检索和密文检索结果合并。优选地,步骤3所述步骤可以提供对区间条件检索的支持。通过将文档属性值域划分成不同层次的区域,从而将对该属性的区间检索转化为对上述区域的等值检索。若用户需要为属性A构建支持区间检索的属性元信息,具体步骤为将属性A值域[Fmm,Fmax]分成η个区间[Fmn,Fmax]={[Fmm,F1),[F1,F2),…,[Flri,Fmax]),其中当k>i时,Fk>=F1;选择一个映射函数Map,将每个区间对应于一个不同的取值MapQF^,F1))=V1,其中当i乒j时,F1^Fj眷若元信息属性值a属于区间[Fh,Fk),则其属性值为Vk=Map([Flrf,Fk));当用户对属性A进行区间检索时,检索区间为[a_low,a_high]假定a_lowe[Fw,F1),a_highe[Flrf,Fk),由A的值域划分得,满足检索条件的区间{[Fh,F1),[F1,Fi+1),…,[FH,Fk)};将满足检索的区间通过M印映射得伐,Vw,…,Vk);将这些映射值与检索字段进行组合,构建多个值域区域的检索键值对{(A,V1),(A,V1+1)、…、(A,Vk)},多个检索之间的关系是OR本发明提供的面向密文云存储的文档检索系统,其特征在于该系统包括通过网络连接的一服务器(云存储服务器,即云存储数据库)和若干客户端,其中每一客户端包括安全组件10、索引操作组件20、检索组件30、云数据库访问组件40。其中安全组件10包含了加解密组件11、密钥管理组件12;索引操作组件20包含了文件上传解析组件21、文件操作解析组件22、索引处理组件23;检索组件30包含了检索字段解析组件31、检索条件构建组件32、检索结果解析组件33。加解密组件11主要是对上传的元信息进行加密和服务器返回密态元信息进行解密,加解密使用的密钥是由密钥管理组件12返回的密钥。密钥管理组件12主要是负责接收用户导入主密钥,对于用户的索引密钥的请求,先从服务器获取密态的索引密钥,再使用主密钥对其进行解密,并返回解密结果。在服务器中不存在该用户的索引密钥时,自动为用户生成索引密钥,使用主密钥加密后,上传到服务器。文件上传解析组件21主要是对要上传的文件进行解析,解析出所有需要的元信息,采用安全组件10对所有的元信息进行加密保护。文件操作解析组件22主要根据文件的更新操作,解析出相关的更新元信息,并采用安全组件10对元信息进行加密保护。索引处理组件23主要根据为文件上传解析组件21或文件操作解析组件22中提供的所有密态元信息进行处理,构建完整的索引记录,通过云数据库访问组件40提交给服务器保存。检索字段解析组件31主要对用户输入的元信息中所有的检索字段进行分析,分析出与其相对应的索引库中元信息的一个或多个字段,并对检索值与这些检索字段采用安全组件10进行加密保护。检索条件构建组件32主要是根据检索字段解析组件31提供的密态元信息的检索字段和检索值,结合用户提供的元信息检索字段之间的关系,构建出针对索引库的检索条件,通过云数据库访问组件40提交给服务器进行检索。检索结果解析组件33主要是对服务器通过云数据库访问组件40返回的结果采用安全组件10进行解密,并将结果显示给用户。云数据库访问组件40主要是对云数据库的访问进行封装,封装成普通的数据库访问,如插入、修改、删除、查找等操作。和现有技术相比,本发明具有如下优势1.基于本发明的密文云存储检索系统安全性高。对于密文文档的上传,为其构建的索引均将被用户的索引密钥保护,在用户没有泄漏用户索引密钥的情况下,文档的索引信息不会泄漏文档具体信息。所有的密文检索均是在索引信息的密文状态下进行的,服务器无需了解到索引具体内容,保证了检索系统的安全性。2.基于本发明的密文云存储检索系统检索效率高。对于用户的密文检索的请求,服务器对索引信息进行检索时,是在索引信息的密文状态下进行匹配的,可以直接返回检索结果,而不需要将所有的密文文档返回解密后,分别查看是否是所需要的文档,也不需要在服务器端进行额外的相关计算来判断当前判断的文档是否是所需要的,所以使得密文检索系统的效率比较高。3.基于本发明的密文云存储检索系统弹性可扩展。支持海量数据的存储与访问。用户的文档元信息将被存放在云存储上,云存储容量具有高度的可扩展性,而且所有的访问压力将被分散在各个服务器上,所以密文检索系统对于海量数据的存储和访问具有高度的可扩展性。图1是本发明的系统体系结构图;图2是本发明的属性加解密过程的示意图;图3是本发明的区间匹配的示意图。具体实施例方式下面将详细描述本发明的各个方面的特征和示例性实施例,在下面的详细描述中,提出了许多具体的细节,以便让技术人员对本发明有个更加全面的理解。所以,技术人员在实施本发明时不需要完全按照下面描述的一些具体细节。图1概要地表达出了本发明的体系结构图,其分成了四大组件索引操作组件、检索组件、加解密组件和云数据库访问组件。一共包括了云数据库(即云存储数据服务器)、主密钥、密钥管理组件、索引加解密组件、文件上传解析组件、文件操作解析组件、索引处理组件、检索字段解析组件、检索结果解析组件和检索条件构建组件。云数据库主要是存放云存储数据的索引和用户的索引密钥信息。在实施例中,采用HBase作为云数据库来存储索引和索引密钥的相关信息。HBase是一个key-value数据库,其结构与传统的关系数据库不同,HBase有如下的结构表名(table^ame)、行标识(row_key)、列族(family_name)、列名(column_name),其中行标识类似于在传统数据库中设置的主键,列族和列名的组合类似于传统数据的列,列族是几个列名的集合。key由表名、行标识、列族和列名确定,value就是存放在指定表名、指定行标识、指定列族和指定列名下的值。除了表名和列族需要在创建表时确定,行标识和列名在插入记录时确定,所以HBase支持自定义数据库字段。先假设用户上传两个文件,其中密文上传testCipher.txt,明文上传testPlain.txt,其他属性均一样,文档大小500K,所有者administrator,上传时间为2010-06-02,自定义字段为“项目”,对应的自定义值为“密文检索”,文档的关键字属性为“测试密文检索,其中明文上传的路径是“/”,密文上传的路径是“/”,假设加解密函数分别是EncK()和DeckO,其中k为加解密密钥。1密文文档的元信息安全存储文档的元信息需要存放在云数据库中,所以我们在云数据库中构建索引元信息表,主要是用来存放云存储文档的元信息的。其采用文档在云存储中存放路径(包含文档名)作为元信息行记录的标识。当用户上传文档时,假如用户上传的明文文档testPlain.txt和密文文档testCipher.txt,文件上传解析组件获得文档的自定义字段“项目”,自定义值“密文检索”文件上传解析组件解析出上传文档的文档名testPlain、testCipher,文档大小500k,文档类型txt,文档修改时间2010-06-02,文档所有者administrator文件上传解析组件获得文档在云存储的存储路径“/”,与文档名进行组合,组成“/testPlain.txt”禾Π“/testCipher.txt”,作为元信息的行标识文件上传解析组件对文档解析,解析出关键字属性测试、密文和检索文件上传解析组件对文档名进行解析,testPlain解析出test和Plain两个单词,testCipher解析出test和Cipher两个单词,对文档修改时间进行解析,解析出年、月、日分别是2010、06、02对于testCipher.txt,文件上传解析组件调用安全组件对元信息进行加密索引处理组件为这些获得的和解析的信息构建索引字段,组成索引记录,并将索引记录通过云数据库访问组件上传到索引元信息数据库中所以,两个文件上传完毕,云数据库索引元信息表中增加如下两条记录。具体见表1所示表1索引元信息表权利要求1.一种面向密文云存储的文档检索方法,其步骤为1)客户端利用用户导入的主密钥为该用户生成一索引密钥,并利用主密钥对该用户的索引密钥加密后保存在服务器端;其中,所述服务器端包括一索引表,用于存储每一用户用其索引密钥加密所上传文档的属性元信息所得到的密文;所述属性元信息包含文档的存储路径信息;2)客户端接收某用户输入的待查询文档的属性元信息后,从服务器端获取该用户的索引密钥的密文;3)客户端利用该用户导入的主密钥对该用户的索引密钥密文进行解密,得到该用户的索引密钥;4)客户端利用该用户的索引密钥对待查询文档的属性元信息进行加密,得到属性元信息密文并将其发送到服务器端;5)服务器端根据该属性元信息密文检索所述索引表,将满足条件的索引记录返回给客户端;6)客户端利用该用户的索引密钥解密该索引记录中的属性元信息密文,得到属性元信息对应的文档。2.如权利要求1所述的方法,其特征在于所述属性元信息包括用户自定义的检索属性元信息和文档解析属性元信息;每一所述检索属性元信息包括一属性名称、以及一个或多个属性值;每一文档解析属性元信息包括一个属性名称、以及一个或多个属性值。3.如权利要求2所述的方法,其特征在于所述文档解析属性元信息包括文档名、文档大小、文档类型、文档所有者、文档修改时间、文档关键字。4.如权利要求3所述的方法,其特征在于客户端对文档名进行分词得到子文档名;所述文档名对应的属性值包括加密后的文件名字符串以及对文档名分词后的子文档名的密文集合。5.如权利要求2所述的方法,其特征在于所述步骤4)中,客户端根据待查询文档的属性元信息中的某属性检索区间,选取该属性的值域区间并将其划分为若干子区间,然后将每一子区间映射为一相应的映射值;将每一映射值与该属性构成一检索键值对并建立检索键值对之间的逻辑关系;最后利用索引密钥对其进行加密后发送到服务器端。6.如权利要求1所述的方法,其特征在于所述服务器端采用HBase数据库进行数据存储;所述索引表中将属性元信息中的文档存储路径作为该属性元信息密文在所述索引表中的行标识。7.如权利要求1或2或3或4或5或6所述的方法,其特征在于每一用户用其索引密钥加密所上传文档的属性元信息的方法为1)用户在客户端上传文档时,客户端生成所上传文档的属性元信息,并从服务器端获取该用户的索引密钥的密文;2)客户端利用该用户导入的主密钥对该用户的索引密钥密文进行解密,得到该用户的索引密钥;3)客户端利用该用户的索引密钥对该属性元信息加密后作为一条记录保存在所述索引表中。8.如权利要求7所述的方法,其特征在于每一文档具有一文档密钥,客户端利用所述主密钥对所述文档密钥加密后保存在所述服务器端;所述文档为明文文档或客户端利用所述文档密钥加密后的密文;所述文档密钥和所述索引密钥保存在服务器端的一密钥表中。9.一种面向密文云存储的文档检索系统,其特征在于包括服务器端、若干客户端,所述客户端分别通过网络与所述服务器端连接;其中,每一客户端分别包括一密钥管理组件,用于自动为用户生成索引密钥并使用用户主密钥对其加密后,上传到服务器端;或者用于接收用户导入主密钥,从服务器获取密态的索引密钥并使用主密钥对其解密后,将所得索引密钥返回给所述加解密组件;一加解密组件,用于采用索引密钥对上传的元信息进行加密和对服务器端返回密态元信息进行解密;一文件上传解析组件,用于从上传的文件中解析出元信息;一索引处理组件,用于根据文件的所有密态元信息构建索引记录,并将其保存到服务器端;一检索字段解析组件,用于从用户输入的检索条件中解析出元信息,并将解析出的元信息采用所述加解密组件进行加密后发送给服务器端;一检索结果解析组件,用于对服务器端返回的检索结果采用所述加解密组件进行解密后在客户端显示。10.如权利要求9所述的系统,其特征在于所述客户端还包括一文件操作解析组件,用于文件的更新操作,并解析出更新元信息;一检索条件构建组件,用于根据检索字段解析组件的解析结果结合用户提供的检索元信息构建出检索条件,将其采用所述加解密组件进行加密后发送给服务器端。全文摘要本发明公开了一种面向密文云存储的文档检索方法与系统,属于信息安全
技术领域:
。本方法为1)客户端利用用户导入的主密钥为该用户生成一索引密钥,并利用主密钥对该索引密钥加密后保存在服务器端;2)客户端接收某用户输入的待查询文档的属性元信息后,从服务器端获取该索引密钥的密文并解密得到索引密钥;3)客户端利用该索引密钥对待查询文档的属性元信息进行加密后发送到服务器端;4)服务器端根据该属性元信息密文检索所述索引表,将满足条件的索引记录返回给客户端,得到属性元信息对应的文档。本系统包括服务器端、若干客户端,客户端分别通过网络与服务器端连接。本发明提高了密文检索系统的安全性和检索效率,且可扩展性高。文档编号G06F17/30GK102024054SQ201010595149公开日2011年4月20日申请日期2010年12月10日优先权日2010年12月10日发明者冯登国,张敏,徐震,蔡克,陈驰申请人:中国科学院软件研究所