著录项信息
专利名称 | 一种面向云存储的多关键词明密文检索方法和系统 |
申请号 | CN201310626958.7 | 申请日期 | 2013-11-28 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2014-02-19 | 公开/公告号 | CN103593476A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0;;;H;0;4;L;9;/;0;8查看分类表>
|
申请人 | 中国科学院信息工程研究所 | 申请人地址 | 北京市海淀区闵庄路甲89号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国科学院信息工程研究所 | 当前权利人 | 中国科学院信息工程研究所 |
发明人 | 陈驰;申培松;于晶;朱晓杰;黄超麟;刘华骏;田雪;杨腾飞;王朝刚 |
代理机构 | 北京君尚知识产权代理事务所(普通合伙) | 代理人 | 余长江 |
摘要
本发明涉及一种面向云存储的多关键词明密文检索方法及系统,涉及信息安全领域,步骤为:1)客户端根据查询语句进行词法分析并生成明文关键词;2)根据与用户身份绑定的主密钥得到对应的用户索引加密密钥,并使用该索引加密密钥的加密算法对明文关键词进行加密并生成密文关键词;3)在云存储服务器根据客户端生成的查询树对密文索引进行多关键词密文检索,将检索到的数据元信息和相关度分数进行查询结果合并排序;5)在云存储服务器按照同样的方法进行查询结果合并排序;6)将统一排序结果传给客户端并将查询结果显示给用户。本发明提供了安全程度更高的密钥管理方案,能够支持明密文联合检索和提供多关键词检索。
1.一种面向云存储的多关键词明密文检索方法,客户端与云存储服务器连接,所述客户端向云存储服务器上传、下载或更新明密文数据;其步骤包括:
1)在所述客户端接收用户输入的查询语句,根据所述查询语句进行词法分析并生成明文关键词;
2)根据与用户身份绑定的主密钥得到对应的用户索引加密密钥,并使用该索引加密密钥及其对应的加密算法对所述明文关键词进行加密并生成密文关键词;
3)对所述查询语句进行语法分析生成查询树,所述查询树的叶子节点存放明文关键词和对明文关键词进行加密生成的密文关键词;
4)在所述云存储服务器根据所述查询树对密文索引进行多关键词密文检索,将检索到的数据元信息和相关度分数进行查询结果排序;根据所述查询树对密文索引进行多关键词密文检索的方法如下:
4-1)通过查询树得到要检索的密文关键词集合,遍历密文索引的关键词标识,找到每一个关键词标识对应的文件索引链表;
4-2)遍历所述文件索引链表,对于每一个文件索引项,计算密文关键词在该文件中的权重系数并将其存放在权重数据表中;
4-3)从查询树的叶子节点向上回溯,判断遇到的内部节点对应的逻辑关系,若是逻辑与,则对不同关键词所对应的文件索引链表求交集,若是逻辑或,则关键词所对应的文件索引链表求并集,若是逻辑非,则对关键词所对应的文件索引链表求补集;按照如上流程沿着查询树不断回溯,直到树根停止,最后得到所有满足查询条件的文件集合;
4-4)对结果集合中的每个文件,从权重二维表中取出该文件对应的列向量,对列向量中的所有权重取其期望值并计算方差;其中,期望值作为该文件与查询语句的相关度分数,方差作为当期望值相同时排序评判的标准;
4-5)根据每个文件与查询的相关度分数进行排序,按照排序后的顺序,返回符合查询条件的文件元信息以及其对应的相关度分数;
5)在所述云存储服务器根据所述查询树对明文索引进行多关键词明文检索,将检索到的数据元信息和相关度分数进行查询结果排序;
6)根据数据的相关度分数对明文数据和密文数据进行统一合并排序,并将排序后的结果传给客户端将查询结果显示给用户,完成检索。
2.如权利要求1所述的面向云存储的多关键词明密文检索方法,其特征在于,在所述客户端接收用户输入的查询语句前对数据明密文进行如下处理:
1)对客户端上的数据增设是否加密上传属性,若是加密上传,则对数据执行密文上传;
若不是加密上传,则对数据执行明文上传;
2)在客户端根据密文上传数据中关键词及其位置信息生成密文索引,在云存储服务器根据明文上传数据中关键词及其位置信息生成明文索引。
3.如权利要求2所述的面向云存储的多关键词明密文检索方法,其特征在于,若是加密上传,则对数据执行密文上传的具体步骤如下:
1)将不同类型的文件转化为统一格式的文本数据,并对所述文本数据进行词条化分析,得到明文关键词及该些关键词在数据中的位置信息;
2)使用索引加密密钥对得到的明文关键词进行加密,根据密文关键词及其位置信息生成密文索引,所述密文索引包括关键词标识和文件索引链表两部分;
3)根据数据元信息或者数据元信息的单向哈希变换值得到对应的数据加解密密钥,然后使用此密钥对该数据加密;
4)上传密文数据和密文索引到服务器端,同时更新客户端文件元信息;在服务器端接收上传的文件,更新用户文件计数器和云存储服务器端文件元信息;
5)云存储服务器端将密文索引和密文索引合并,同时清理密文索引缓存。
4.如权利要求2所述的面向云存储的多关键词明密文检索方法,其特征在于,若不是加密上传,则对数据执行明文上传的具体步骤如下:
1)将明文数据直接传给云端服务器,同时在客户端删除明文数据;
2)云存储服务器端接收上传的数据,更新用户文件计数器,将明文数据存储在数据存储装置中;
3)在云存储服务器端将不同类型的文件转化为统一格式的文本文件,将所述文本文件进行词条化分析,得到明文关键词;
4)云存储服务器端对上传的明文文件建立明文索引,并存放在明文索引缓存装置中;
所述云存储服务器端将明文索引和明文索引合并,同时清理明文索引缓存。
5.如权利要求3或4所述的面向云存储的多关键词明密文检索方法,其特征在于,所述索引合并过程按照如下流程进行操作:
按照字典序分别遍历两个明/密文索引的关键词;
对于两个明/密文索引均包含的密文关键词,分别遍历两个明/密文索引中该关键词对应的文件索引链表,按照文档ID的顺序分别将两者的文档索引项加入到新的文档索引链表中,遍历完毕之后将生成的新文档索引链表加入到新密文索引中,同时将两者的文档频率相加存放在新的关键词标识中;
对于只有一个明/密文索引包含的密文关键词,则将其文件索引链表加入到新的明/密文索引中。
6.如权利要求1所述的面向云存储的多关键词明密文检索方法,其特征在于,所述权重数据表是一个二维表,它的行对应密文关键字,列对应文件;其中权重系数的计算方法为:
1)遍历该关键词对应的文件索引链表,对于链表中的每一个文件索引项,得到其中的关键词频率信息;
2)访问用户文件计数器并得到用户文件总个数,并对关键词标识中的文档频率和用户总文件个数做除法运算,得到的商再取对数;
3)将前两步得到的处理结果相乘,得到关键词在文件中的权重系数。
7.如权利要求3所述的面向云存储的多关键词明密文检索方法,其特征在于,使用两级密钥系统管理明密文数据,
所述主密钥根据用户的生物特征得到,每次进行采集和计算在云存储服务器端和客户端都不保存其副本;
根据所述主密钥加密后的加解密密钥和索引加解密密钥存储在客户端,同时在服务器端保存备份;所述数据加解密密钥配置选项为一个密钥对应一个文件和/或一个密钥对应多个文件。
8.如权利要求1所述的面向云存储的多关键词明密文检索方法,其特征在于,所述加密算法包括:DES、AES、RSA、RC4、BLOWFISH加密算法。
9.一种采用权利要求1所述方法的面向云存储的多关键词明密文检索系统,包括与云存储服务器连接的客户端,所述客户端向云存储服务器上传、下载或更新明密文数据;以及由多个服务器集群组成的云存储服务器,其特征在于,
所述客户端包括用于维护用户和密钥的用户管理组件和密钥管理组件、加解密组件、用于管理数据元信息的客户端元信息管理组件、用于创建密文数据索引的客户端密文索引创建组件、客户端明密文查询组件、文件预处理组件和分词组件:所述元信息包括:文件名,文件路径,文件大小,创建时间,修改时间,文件属主以及判断文件是否加密;
所述云存储服务器端包括用于创建明文数据索引的明文索引创建组件、索引维护组件、索引存储组件、明密文查询处理组件、服务器端文件元信息管理组件、文件预处理组件和分词组件,在所述云存储服务器根据所述查询树对明/密文索引进行多关键词明/密文检索,将检索到的数据元信息和相关度分数进行查询结果合并排序并将排序后的结果发给客户端;所述服务器端文件元信息管理组件提供用户文件元信息管理的功能;所述索引维护组件提供索引维护功能,包括明文索引维护子组件,密文索引维护子组件;所述索引存储组件提供明密文索引的存储和备份功能,包括明/密文索引存储装置,明/密文索引缓存装置;
所述明密文查询处理组件提供对用户查询请求处理的功能,包括明/密文查询处理子组和查询结果合并排序子组件;
所述文件预处理组件用于将不同类型的文件转化为统一格式的文本文件,其中,支持的文件类型包括:txt、html、doc、pdf、ppt、php;
所述分词组件使用分词器对文本预处理组件输出的文本文件进行词条化分析,得到明文关键词。
一种面向云存储的多关键词明密文检索方法和系统\n技术领域\n[0001] 本发明涉及信息安全领域,具体地说,涉及一种云存储环境下的用户密文数据检索方法和系统。\n背景技术\n[0002] 随着智能手机的出现网络接入设备日益多元化,这些接入网络的智能终端往往也具备一定的数据获取、存储和处理能力,用户需要在不同的终端上维护统一的用户视图。与此同时,云计算的日渐普及为用户接入云存储提供了便利,例如:百度云盘为用户提供1T的免费在线存储空间;亚马逊的云服务则同时提供存储空间和计算能力,用户仅需要支付很低的费用即可获取大量的计算和存储资源。\n[0003] 这些云计算方案在一定程度上解决了用户备份文件的需求,但在安全性方面存在着显著的缺陷。由于云模式的特点,数据所有者不再维护存储数据的载体,用户不管选择哪家云服务提供商都必须对其完全信任。但在现实中,用户的数据,尤其是使用智能终端采集的数据(例如:个人照片、通信记录等)往往与隐私相关,用户并不希望将其完全的托付给存储服务商。缺乏有效的数据安全防护手段已成为阻碍云服务推广的最重要原因之一。\n[0004] 解决这一问题的有效手段是:先在客户端将用户的数据先加密之后再上传至云端,这样云服务的提供商也无法获知用户的数据。例如,在涉及云存储的以下三篇专利中,均采用了这种技术方案:\n[0005] 中国发明专利申请,公开号:CN201010595149.0中公开了一种面向密文云存储的文档检索方法与系统,该文档检索方法利用用户导入的主密钥为用户生成一个索引密钥,并采用主密钥对该用户的索引密钥加密后保存在服务器端,其中,服务器端保存一个索引表,用于存储用户用其索引密钥加密所上传文档的属性元信息所得到的密文;在检索时,客户端先从服务器端得到用户索引密钥的密文,然后利用用户的主密钥进行解密,然后用得到的索引密钥对属性元信息加密并将属性元信息密文发送到服务器端,服务器端利用该属性元信息密文对索引表进行检索,从而得到满足条件的文档记录并返回给客户端。\n[0006] 中国发明专利申请,公开号:CN201110029138.0中公开了一种云计算数据安全支撑平台,该平台包括了云存储系统、云数据安全服务系统和安全云客户端,其中云客户端将数据元信息加密后发送给云数据安全服务系统,将数据加密后发送给云存储系统,云数据安全服务系统用于存储加密后的数据元信息和密钥信息,提供文件访问支持、密文检索和数据验证服务支持。\n[0007] 中国发明专利申请,公开号:CN201010603413.0中公开了一种面向云存储的可信存储验证方法和系统,该可信存储验证方法在文件上传到云服务器端之前利用用户持有的密钥和其他相关验证参数生成一系列随机位置,读取文件中随机位置的内容,为文件生成多个验证标签;需要检验文件存储状态时,用户依据相关参数,发起与云存储系统的交互过程,云存储系统则按照本次验证对应的参数重新生成新的验证标签发给用户,用户最终得到文件的存储状态。\n[0008] 然而,这些技术方案还面临一些挑战,还存在一些缺陷:\n[0009] 1)执行效率低。现有技术方案在加密时将用户的全部数据加密,但实际上大多数用户都只有少数文件是敏感需要加密的,其它文件只有同步和备份的需求。\n[0010] 2)密文查询效率低。数据一旦加密就破坏了数据原有的顺序关系,使原有的索引机制不再可用,用户检索时只好将所有密文取回,解密后再判断是否是自己所需要的数据,这样会返回大量无用信息,执行效率也很低。\n[0011] 3)明密文无法联合检索。需要针对明文文件和密文文件分别进行检索,无法通过统一的检索接口形成完整的数据视图。\n[0012] 4)无法进行多关键字检索。需要进行多次单关键字检索才能达到检索目的,这样会增加数据传输和服务器负担,同时降低用户体验。\n[0013] 5)密钥管理方案不安全。现有技术方案在密钥管理方面一般采用两级密钥策略,同时每个用户只拥有一对文件加解密密钥,并在服务器端保存密文备份,一旦该密钥被破解,用户所有文件就会被窃取。\n[0014] 综上,一种可以有效地提升用户的数据安全防护和隐私保护能力,提升密文存储的效率,对于推动云计算的发展、增加信息系统的使用效率的明密文检索方法有待提出。\n发明内容\n[0015] 针对上述问题,本发明提出一种新型的多关键词明密文检索方法和系统,为用户提供了较为完备的密文检索技术方案。\n[0016] 本发明提出了一种面向云存储的多关键词明密文检索方法,客户端与云存储服务器连接,所述客户端向云存储服务器上传、下载或更新明密文数据;其步骤包括:\n[0017] 1)在所述客户端接收用户输入的查询语句,根据所述查询语句进行词法分析并生成明文关键词;\n[0018] 2)根据与用户身份绑定的主密钥得到对应的用户索引加密密钥,并使用该索引加密密钥及其对应的加密算法对所述明文关键词进行加密并生成密文关键词;\n[0019] 3)对所述查询语句进行语法分析生成查询树同时将所述密文关键词存放在查询树中相应的叶子节点中;\n[0020] 4)在所述云存储服务器根据所述查询树对密文索引进行多关键词密文检索,将检索到的数据元信息和相关度分数进行查询结果排序;\n[0021] 5)在所述云存储服务器根据所述查询树对明文索引进行多关键词明文检索,将检索到的数据元信息和相关度分数进行查询结果排序;\n[0022] 6)根据数据的相关度分数对明文数据和密文数据进行统一合并排序,并将排序后的结果传给客户端将查询结果显示给用户,完成检索。\n[0023] 更进一步,在所述客户端接收用户输入的查询语句前对数据明密文进行如下处理:\n[0024] 1)对客户端上的数据增设是否加密上传属性,若是加密上传,则对数据执行密文上传;若不是加密上传,则对数据执行明文上传;\n[0025] 2)在客户端根据密文上传数据中关键词及其位置信息生成密文索引,在云存储服务器根据明文上传数据中关键词及其位置信息生成明文索引。\n[0026] 更进一步,若是加密上传,则对数据执行密文上传的具体步骤如下:\n[0027] 1)将不同类型的文件转化为统一格式的文本数据,并对所述文本数据进行词条化分析,得到明文关键词及该些关键词在数据中的位置信息;\n[0028] 2)使用索引加密密钥对得到的明文关键词进行加密,根据密文关键词及其位置信息生成密文索引,所述密文索引包括关键词标识和文件索引链表两部分;\n[0029] 3)根据数据元信息或者数据元信息的单向哈希变换值得到对应的数据加解密密钥,然后使用此密钥对该数据加密;\n[0030] 4)上传密文数据和密文索引到服务器端,同时更新客户端文件元信息;在服务器端接收上传的文件,更新用户文件计数器和云存储服务器端文件元信息;\n[0031] 5)云存储服务器端将密文索引和密文索引合并,同时清理密文索引缓存。\n[0032] 更进一步,若不是加密上传,则对数据执行明文上传的具体步骤如下:\n[0033] 1)将明文数据直接传给云端服务器,同时在客户端删除明文数据;\n[0034] 2)云存储服务器端接收上传的数据,更新用户文件计数器,将明文数据存储在数据存储装置中;\n[0035] 3)在云存储服务器端将不同类型的文件转化为统一格式的文本文件,将所述文本文件进行词条化分析,得到明文关键词;\n[0036] 4)云存储服务器端对上传的明文文件建立明文索引,并存放在明文索引缓存装置中;所述云存储服务器端将明文索引和明文索引合并,同时清理明文索引缓存。\n[0037] 更进一步,所述索引合并过程按照如下流程进行操作:\n[0038] 按照字典序分别遍历两个明/密文索引的关键词;\n[0039] 对于两个明/密文索引均包含的密文关键词,分别遍历两个明/密文索引中该关键词对应的文件索引链表,按照文档ID的顺序分别将两者的文档索引项加入到新的文档索引链表中,遍历完毕之后将生成的新文档索引链表加入到新密文索引中,同时将两者的文档频率相加存放在新的关键词标识中;\n[0040] 对于只有一个明/密文索引包含的密文关键词,则将其文件索引链表加入到新的明/密文索引中。\n[0041] 更进一步,所述查询树的叶子节点存放明文关键词和对明文关键词进行加密生成的密文关键词,根据所述查询树对密文索引进行多关键词密文检索的方法如下:\n[0042] 1)通过查询树得到要检索的密文关键词集合,遍历密文索引的关键词标识,找到每一个关键词标识对应的文件索引链表;\n[0043] 2)遍历所述文件索引链表,对于每一个文件索引项,计算密文关键词在该文件中的权重系数并将其存放在权重数据表中;\n[0044] 3)从查询树的叶子节点向上回溯,判断遇到的内部节点对应的逻辑关系,若是逻辑与,则对不同关键词所对应的文件索引链表求交集,若是逻辑或,则关键词所对应的文件索引链表求并集,若是逻辑非,则对关键词所对应的文件索引链表求补集;按照如上流程沿着查询树不断回溯,直到树根停止,最后得到所有满足查询条件的文件集合;\n[0045] 4)对结果集合中的每个文件,从权重二维表中取出该文件对应的列向量,对列向量中的所有权重取其期望值并计算方差;其中,期望值作为该文件与查询语句的相关度分数,方差作为当期望值相同时排序评判的标准;\n[0046] 5)根据每个文件与查询的相关度分数进行排序,按照排序后的顺序,返回符合查询条件的文件元信息以及其对应的相关度分数。\n[0047] 更进一步,所述权重数据表是一个二维表,它的行对应密文关键字,列对应文件;\n其中权重系数的计算方法为:\n[0048] 1)遍历该关键词对应的文件索引链表,对于链表中的每一个文件索引项,得到其中的关键词频率信息;\n[0049] 2)访问用户文件计数器并得到用户文件总个数,并对关键词标识中的文档频率和用户总文件个数做除法运算,得到的商再取对数;\n[0050] 3)将前两步得到的处理结果相乘,得到关键词在文件中的权重系数。\n[0051] 更进一步,使用两级密钥系统管理明密文数据,\n[0052] 所述主密钥根据用户的生物特征得到,每次进行采集和计算在云存储服务器端和客户端都不保存其副本;\n[0053] 根据所述主密钥加密后的加解密密钥和索引加解密密钥存储在客户端,同时在服务器端保存备份;所述数据加解密密钥配置选项为一个密钥对应一个文件和/或一个密钥对应多个文件。\n[0054] 更进一步,所述加密算法包括:DES、AES、RSA、RC4、BLOWFISH加密算法。\n[0055] 本发明还提出一种面向云存储的多关键词明密文检索系统,包括与云存储服务器连接的客户端,所述客户端向云存储服务器上传、下载或更新明密文数据;以及由多个服务器集群组成的云存储服务器,其特征在于,\n[0056] 所述客户端包括用于维护用户和密钥的用户管理组件和密钥管理组件、加解密组件、用于管理数据元信息的客户端元信息管理组件、用于创建密文数据索引的客户端密文索引创建组件、客户端明密文查询组件、文件预处理组件和分词组件:所述元信息包括:文件名,文件路径,文件大小,创建时间,修改时间,文件属主以及判断文件是否加密;\n[0057] 所述云存储服务器端包括用于创建明文数据索引的明文索引创建组件、索引维护组件、索引存储组件、明密文查询处理组件、服务器端文件元信息管理组件、文件预处理组件和分词组件,在所述云存储服务器根据所述查询树对明/密文索引进行多关键词明/密文检索,将检索到的数据元信息和相关度分数进行查询结果合并排序并将排序后的结果发给客户端;所述服务器端文件元信息管理组件提供用户文件元信息管理的功能;所述索引维护组件提供索引维护功能,包括明文索引维护子组件,密文索引维护子组件;所述索引存储组件提供明密文索引的存储和备份功能,包括明/密文索引存储装置,明/密文索引缓存装置;\n[0058] 所述明密文查询处理组件提供对用户查询请求处理的功能,包括明/密文查询处理子组和查询结果合并排序子组件;\n[0059] 所述文件预处理组件用于将不同类型的文件转化为统一格式的文本文件,其中,支持的文件类型包括:txt、html、doc、pdf、ppt、php;\n[0060] 所述分词组件使用分词器对文本预处理组件输出的文本文件进行词条化分析,得到明文关键词。\n[0061] 通过本发明公开的方法和系统,完善的解决了背景技术中提到的,现有技术方案的缺陷和风险,有益效果主要体现在:\n[0062] 1)同时支持明文和密文文件的备份。用户可以根据需求将敏感的数据进行加密后再上传。\n[0063] 2)提供密文索引。针对密文文件建立索引树,用户检索时仅返回与关键词相关的文件列表,大幅消减通信量。\n[0064] 3)支持明密文联合检索。提供统一的检索接口,同时对接明文和密文索引,为用户提供完整的数据视图。\n[0065] 4)提供多关键词检索。使得系统的检索效率和准确率更高,同时也增加了用户体验。\n[0066] 5)提供了安全程度更高的密钥管理方案。使用用户的生物特征作为主密钥,保证了主密钥的唯一性,同时增加文件加解密密钥降低了单个密钥泄露引起的用户所有文件被破解的风险。\n附图说明\n[0067] 图1是本发明多关键字明密文检索系统的结构图;\n[0068] 图2是本发明多关键字明密文检索方法中的文件上传方法的流程图;\n[0069] 图3是本发明多关键字明密文检索方法中的文件检索方法的流程图。\n具体实施方式\n[0070] 下面结合附图和具体实施例对本发明做进一步详细的说明,但不以任何方式限制本发明的范围。\n[0071] 在本发明的一实施例中是一种面向云存储的多关键词明密文检索系统,该系统包括:一个云存储服务器和若干客户端,所述客户端通过网络与所述云存储服务器进行连接;\n可以通过传统互联网和移动互联网进行连接,也可以通过局域网方式和广域网方式进行连接;\n[0072] 客户端包括用户管理组件、加解密组件、密钥管理组件、客户端元信息管理组件、客户端密文索引创建组件、客户端明密文查询组件、文件预处理组件和分词组件,其中各组件的功能描述如下:\n[0073] 1)用户管理组件提供用户注册、登陆检查、信息管理等功能;\n[0074] 2)加解密组件使用加密算法对文件和索引进行加密、解密操作,其中,使用的加密算法包括但不限于DES,AES,RSA,RC4,BLOWFISH等加密算法;\n[0075] 3)密钥管理组件提供对用户的主密钥、文件加解密密钥和索引加解密密钥的管理功能;\n[0076] 4)客户端元信息管理组件用于管理文件的元信息,元信息包括但不限于:文件名,文件路径,文件大小,创建时间,修改时间,以及判断文件是否加密,文件属主等;\n[0077] 5)客户端密文索引组件用于创建密文文件的索引;\n[0078] 6)客户端明密文查询组件是用户进行多关键词明密文查询的统一接口,它包括查询处理子组件,查询通讯子组件、查询结果显示子组件;\n[0079] 7)文件预处理组件用于将不同类型的文件转化为统一格式的文本文件,其中,支持的文件类型包括但不限于txt、html、doc、pdf、ppt、php;\n[0080] 8)分词组件使用分词器对文本预处理组件输出的文本文件进行词条化分析,得到明文关键词。\n[0081] 云存储服务器端包括明文索引创建组件、索引维护组件、索引存储组件、明密文查询处理组件、服务器端文件元信息管理组件、文件预处理组件和分词组件,其中各组件的功能描述如下:\n[0082] 1)所述明文索引创建组件用于创建明文文件的索引;\n[0083] 2)所述索引维护组件提供索引维护功能,包括明文索引维护子组件,密文索引维护子组件;其中,明文索引维护子组件提供明文索引的合并、更新、删除等功能,密文索引维护子组件提供密文索引的合并、更新、删除等功能;\n[0084] 3)所述索引存储组件提供明密文索引的存储和备份功能,包括明文索引存储装置,密文索引存储装置,明文索引缓存装置,密文索引缓存装置;\n[0085] 4)所述明密文查询处理组件提供对用户查询请求处理的功能,包括明文查询处理子组件、密文查询处理子组件、查询结果合并排序子组件;\n[0086] 5)所述服务器端文件元信息管理组件提供用户文件元信息管理的功能;\n[0087] 6)所述文件预处理组件用于将不同类型的文件转化为统一格式的文本文件,其中,支持的文件类型包括但不限于txt、html、doc、pdf、ppt、php;\n[0088] 7)所述分词组件使用分词器对文本预处理组件输出的文本文件进行词条化分析,得到明文关键词。\n[0089] 本发明的另一实施例中是一种面向云存储的多关键词明密文检索方法,其中包括:文件上传方法及文件检索方法。\n[0090] 文件上传方法按照如下步骤操作:\n[0091] 1)用户对存在于客户端的一个或多个文件设置是否加密上传的属性;\n[0092] 2)若是加密上传,则对文件执行加密上传流程,具体步骤如下:\n[0093] a)文件预处理组件将不同类型的文件转化为统一格式(txt)的文本文件;\n[0094] b)分词组件将文本预处理组件输出的文本文件进行词条化分析,得到明文关键词及该些关键词在文档中的位置信息;\n[0095] c)加解密组件使用索引加密密钥对得到的明文关键词进行加密;\n[0096] d)根据密文关键词及其位置信息生成密文索引,其中,密文索引包括关键词标识和文件索引链表两部分,关键词标识包括但不限于密文关键词字符串、文档频率、文档索引链表定位器,文件索引链表包含一个或多个文件索引项,每个文件索引项存储的信息包括但不限于该文件的id,关键词在这篇文件中出现的频率次数,以及关键词在这篇文件中出现的位置信息;\n[0097] e)加解密组件或者根据文件元信息,或者根据文件元信息的单向哈希变换值得到对应的文件加解密密钥,然后使用此密钥对该文件加密;\n[0098] f)上传密文文件和密文索引到服务器端,同时更新客户端文件元信息;\n[0099] g)服务器端接收上传的文件,更新用户文件计数器和服务器端文件元信息,将密文文件存储在文件存储装置中,将密文索引存放在索引存储组件中的密文索引缓冲装置中;\n[0100] h)服务器端的密文索引维护子组件将密文索引缓存装置中的密文索引和密文索引存储装置中的密文索引合并,合并后的密文索引继续存放在密文索引存储装置中,同时清理密文索引缓存装置。其中,索引合并过程按照如下流程进行操作:\n[0101] 按照字典序分别遍历两个密文索引的关键词;\n[0102] 对于两个密文索引均包含的密文关键词,分别遍历两个密文索引中该关键词对应的文件索引链表,按照文档ID的顺序分别将两者的文档索引项加入到新的文档索引链表中,遍历完毕之后将生成的新文档索引链表加入到新密文索引中,同时将两者的文档频率相加存放在新的关键词标识中;\n[0103] 对于只有一个密文索引包含的密文关键词,则将其文件索引链表加入到新的密文索引中;\n[0104] 3)若不是加密上传,则对文件执行明文上传流程,具体步骤如下:\n[0105] i)将明文文件直接传给云端服务器,同时在客户端删除明文文件;\n[0106] j)云服务器端接收上传的文件,更新用户文件计数器,将明文文件存储在文件存储装置中;\n[0107] k)在云服务器端的文件预处理组件将不同类型的文件转化为统一格式的文本文件;\n[0108] l)在云服务器端的分词组件将文本预处理组件输出的文本文件进行词条化分析,得到明文关键词。\n[0109] m)云服务器端的明文索引创建子组件对上传的明文文件建立明文索引,并存放在明文索引缓存装置中;\n[0110] n)云服务器端的明文索引维护子组件将明文索引缓存装置中的明文索引和明文索引存储装置中的明文索引合并,合并后的明文索引继续存放在明文索引存储装置中,同时清理明文索引缓存装置;\n[0111] 文件联合检索方法按照如下流程执行:\n[0112] 4)客户端接收用户输入的查询语句;\n[0113] 5)分词组件对查询语句进行词法分析并生成明文关键词;\n[0114] 6)加解密组件得到用户的索引加密密钥,使用生成密文索引时用到的加密方法对关键词进行加密并生成密文关键词;\n[0115] 7)客户端的查询处理子组件对查询语句进行语法分析,生成查询树并将其发给服务器端的明密文查询处理组件,其中,查询树是一个具有特殊结构的二叉树,树根和内部节点都是逻辑关系,包括逻辑与,逻辑或,逻辑非;查询树的叶子节点存放明文关键词和对明文关键词进行加密生成的密文关键词;\n[0116] 8)密文查询处理子组件根据查询树对密文索引进行多关键词密文检索,将检索到的文件元信息和相关度分数传给查询结果合并排序子组件,其中,根据查询树对密文索引进行多关键词密文检索的方法,按如下流程进行操作:\n[0117] a)通过查询树得到要检索的密文关键词集合,遍历密文索引的关键词标识,找到每一个关键词标识对应的文件索引链表;\n[0118] b)遍历文件索引链表,对于每一个文件索引项,计算密文关键词在该文件中的权重系数并将其存放在权重数据表中,其中权重数据表是一个二维表,它的行对应密文关键字,列对应文件;其中权重系数按照如下方法计算:\n[0119] 首先,遍历该关键词对应的文件索引链表,对于链表中的每一个文件索引项,得到其中的关键词频率信息;\n[0120] 然后,访问用户文件计数器并得到用户文件总个数,并对关键词标识中的文档频率和用户总文件个数做除法运算,得到的商再取对数;\n[0121] 最后,将前两步得到的处理结果相乘,得到关键词在文件中的权重系数。\n[0122] c)从查询树的叶子节点向上回溯,判断遇到的内部节点对应的逻辑关系,若是逻辑与,则对不同关键词所对应的文件索引链表求交集,若是逻辑或,则关键词所对应的文件索引链表求并集,若是逻辑非,则对关键词所对应的文件索引链表求补集;按照如上流程沿着查询树不断回溯,直到树根停止,最后得到所有满足查询条件的文件集合;\n[0123] d)对结果集合中的每个文件,从权重二维表中取出该文件对应的列向量,对列向量中的所有权重取其期望值,并计算方差,其中,期望值作为该文件与查询语句的相关度分数,方差作为当期望值相同时排序评判的标准;\n[0124] e)根据每个文件与查询的相关度分数进行排序;\n[0125] f)按照排序后的顺序,返回符合查询条件的文件元信息以及其对应的相关度分数。\n[0126] 9)明文查询处理子组件根据查询树对明文索引进行多关键词明文检索,将检索到的文件元信息和相关度分数传给查询结果合并排序子组件;\n[0127] 10)查询结果合并排序子组件根据文件的相关度分数对明文文件和密文文件进行统一排序,并将排序后的结果传给客户端的查询结果显示子组件;\n[0128] 11)查询结果显示子组件将查询结果显示给用户。\n[0129] 此外本发明还公开了一种适用于面向云存储的多关键词明密文检索系统的密钥管理方法,该方法使用两级密钥系统,其中:\n[0130] 主密钥根据用户的生物特征,使用单向函数计算得出,每次系统启动时进行采集和计算,服务器端和客户端都不保存其副本;\n[0131] 文件加解密密钥和索引加解密密钥经主密钥加密后存储在客户端,同时在服务器端保存备份;\n[0132] 文件加解密密钥并不唯一,配置选项有一个密钥对应一个文件和一个密钥对应多个文件,具体的,当一个文件对应多个文件时,可以按照文件创建时间、文件类型等元信息划分文件,也可以按照文件创建时间、文件类型的单向哈希变换值划分文件。\n[0133] 以下结合附图对本发明的实施方式进行具体的说明:\n[0134] 本实施例采用附图1所示的明密文多关键字检索系统结构,其中,设定系统有一个用户tom。本实施例展示如何使用本发明实现明密文多关键字检索系统的各项功能。\n[0135] 在本实施例中,采用声纹作为用户生物特征,采用AES算法作为索引加密算法,采用DES作为文档加解密算法,采用文件创建时间的单向哈希值来划分文件,设定用户tom已经有10个文件存放在系统中。\n[0136] 当用户tom需要登陆系统时,系统的用户管理组件验证tom的用户名和密码,同时密钥管理组件采集tom的声纹样本,并通过主密钥生成算法计算得出tom的主密钥MASTER_KEYtom,并暂时存放在密钥管理组件中。\n[0137] 当tom需要加密上传文档encrypt.doc时,本实施例采用如附图2所示的方法,具体步骤如下:\n[0138] 1)客户端的文本预处理组件对encrypt.doc进行处理,得到文本文档encrypt_tmp.txt;\n[0139] 2)客户端的分词组件对encrypt_tmp.txt进行处理,得到一系列明文关键词,设定为“china”,“皇马”,“胜”,“曼联”等等;\n[0140] 3)客户端的加解密组件采用AES算法,使用用户对应的索引加密密钥INDEX_KEYtom对明文关键词加密,例如,明文关键词“皇马”加密后变为一个长度是20字节的字符串Enc_Char皇马;\n[0141] 4)客户端的密文索引组件得到密文关键词及其在文档中的位置信息,生成该文档的密文索引Enc_Index,其中,密文索引结构由关键词标识Locator和文档索引链表Index_Chain组成,关键词标识Locator包括密文关键词字符串、文档频率File_Frequency、文档索引链表定位器Pointer,文档索引链表Index_Chain由文档索引项Doc_Index组成,文档索引项包含该文档的ID、关键词频率Term_Frequency、关键词位置数组Term_position;\n[0142] 5)客户端的加解密组件计算文档encrypt.doc的创建时间的单向哈希值Hashencrypt.doc,通过判断Hashencrypt.doc所在的区间来决定加密encrypt.doc所采用的文件加解密密钥,例如,Hashencrypt.doc=41,则文件encrypt.doc对应的文件加密密钥为FILE_Key5:\n[0143]\n哈希值 1-10 11-20 21-30 31-40 41-50\n文件加密密钥 FILE_KEY1 FILE_KEY2 FILE_KEY3 FILE_KEY4 FILE_KEY5\n[0144] 此处设定系统的哈希函数的值域为1-50,对该值域分为5个区间,每个区间对应一个文件加密密钥;\n[0145] 6)客户端的加解密组件使用文件加解密密钥FILE_KEYtom-5,采用DES算法对encrypt.doc进行加密,生成的密文文档替换原来的明文文档encrypt.doc;\n[0146] 7)客户端将密文文档encrypt.doc和密文索引Enc_Index上传到服务器端,并更新元信息管理组件,向其中添加encrypt.doc的元信息,其中元信息包括但不限于:文件名,文件路径,文件大小,创建时间,修改时间,文件是否加密,文件属主等;\n[0147] 8)服务器端接收密文文档encrypt.doc和密文索引Enc_Index,更新用户文件个数,将用户文件计数器设为11(之前已设定用户tom已有10个文件),同时更新服务器端元信息管理组件,加入encrypt.doc的元信息,并将该密文文档encrypt.doc存放在文件存储装置中,将密文索引Enc_Index存储在密文索引缓冲装置中;\n[0148] 9)服务器端的密文索引维护子组件将密文索引缓存装置中的密文索引Enc_Index_Tmp和密文索引存储装置中的密文索引Enc_Index_Old进行合并,合并后的密文索引Enc_Index_New继续存放在密文索引存储装置中,其中,密文索引合并的步骤如下:\n[0149] a)同时遍历密文索引Enc_Index_Tmp和密文索引Enc_Index_Old的关键词标识部分并按照字典序对关键词标识重新排序;\n[0150] b)对于每一个关键词标识,设定此关键词标识代表字符串“皇马”加密后的Enc_Char皇马,若两个索引中均含有此关键词标识,则同时遍历这两个关键词标识指示的文档索引链表Index_Chaintmp和Index_Chainold,将两者的文档索引项Term_Index均直接添加到新的文档索引链表Index_Chainnew中,合并后的Index_Chainnew如下:\n[0151]\n[0152] 其中,设定用户tom已有的10个文件中docID为1-7的七个文件是密文文件,docID为8-10的三个文件为明文文件,同时设定文档2、3、5、6在加密前也包含了字符串“皇马”;\n[0153] c)对于只有一个密文索引包含的关键词标识,例如只有密文索引Enc_Index_Tmp包含密文关键词Enc_Char曼联,则新密文索引Enc_Index_New中该关键词标识对应的文档索引链表Index_Chainnew直接由密文索引Enc_Index_Tmp中该关键词标识对应的文档索引链表Index_Chaintmp复制所得;\n[0154] 经过以上步骤,密文索引Enc_Index_Tmp和Enc_Index_Old合并成为密文索引Enc_Index_New;\n[0155] 当tom需要明文上传文档plain.doc时,本实施例采用如附图2所示的方法,具体步骤如下:\n[0156] 1)客户端直接将plain.doc传给服务器端,同时更新客户端元信息管理组件,向其中添加plain.doc的元信息,其中元信息包括但不限于:文件名,文件路径,文件大小,创建时间,修改时间,文件是否加密,文件属主等;\n[0157] 2)服务器端接收文件plain.doc并将该文件存放在用户tom对应的文件存储装置中,同时更新tom的文件个数为12,然后更新服务器端的元信息管理组件,加入文档plain.doc的元信息;\n[0158] 3)服务器端的文本预处理组件对plain.doc进行处理,得到文本文档plain_tmp.txt;\n[0159] 4)服务器端的分词组件对plain_tmp.txt进行处理,得到一系列明文关键词,设定为“china”,“皇马”,“胜”,“曼联”等等;\n[0160] 5)服务器端的明文索引创建子组件得到明文关键词,依据明文关键词生成明文索引Plain_Index并将其存储在明文索引缓存装置中,其中,明文索引结构由关键词标识Locator和文档索引链表Index_Chain组成,关键词标识Locator包括明文关键词字符串、文档频率File_Frequency、文档索引链表定位器Pointer,文档索引链表Index_Chain由文档索引项Doc_Index组成,文档索引项包含该文档的ID、关键词频率Term_Frequency、关键词位置数组Term_position;\n[0161] 6)服务器端的明文索引维护子组件将将明文索引缓存装置中的明文索引Plain_Index_Tmp和明文索引存储装置中的明文索引Plain_Index_Old进行合并,合并后的明文索引Plain_Index_New继续存放在明文索引存储装置中,其中,明文索引合并和密文索引合并的步骤完全一样,在此不再赘述;\n[0162] 当用户tom需要检索时,本实施例采用如附图3所示的多关键字明密文检索方法,具体步骤如下:\n[0163] 1)客户端接收用户tom输入的查询语句,设定tom输入了“皇马胜曼联”;\n[0164] 2)客户端的分词组件对查询语句进行词法分析,得到多个明文关键词,分别为“皇马”、“胜”、“曼联”;\n[0165] 3)客户端的加解密组件通过密钥管理组件取得用户的索引加密密钥的密文形式,并通过主密钥MASTER_KEYtom对其解密,得到用户tom的索引加密密钥INDEX_KEYtom,然后采用AES算法,使用INDEX_KEYtom作为密钥对明文关键词进行加密,生成的密文关键词再存放在查询树中相应的叶子节点中,例如,字符串“曼联”加密后为Enc_Char曼联;\n[0166] 4)客户端的查询处理子组件对此查询语句进行语法分析并生成查询树,其中,查询树的树根节点R是一个逻辑与关系,它的子节点C1是逻辑与关系,子节点C2是一个叶子节点,存储字符串“曼联”及其密文形式Enc_Char曼联,节点C1的两个子节点L1和L2都是叶子节点,分别存储字符串“皇马”及其密文形式Enc_Char皇马、字符串“胜”及其密文形式Enc_Char胜;\n[0167] 5)客户端将查询树发给服务器端的明密文查询处理组件;\n[0168] 6)密文查询子组件取出密文索引,根据查询树进行多关键字密文检索,将检索到的文件元信息和相关度分数传给查询结果合并排序子组件,其中,密文检索的步骤包括:\n[0169] a)取出查询树中三个叶子节点L1、L2、C2对应的密文关键词Enc_Char皇马、Enc_Char胜、Enc_Char曼联;\n[0170] b)对于每一个密文关键词,不妨设定为Enc_Char皇马,从密文索引中找到其对应的关键词标识,并得到其文档索引链表;\n[0171] c)遍历Enc_Char皇马的文档索引链表,对于文档索引链表中的每一个文档索引项,不妨设定该文档是encrypt.doc,其docID是11,计算密文关键词Enc_Char皇马在该文件中的权重系数Coefficient皇马-11,并将其存放在权重数据表中,其中权重数据表是一个二维表TableCoefficient,它的列对应关键字,行对应文档ID,其中,计算权重系数的方法如下:\n[0172] 取出关键词标识中的文档频率File_Frequency皇马和文档索引项中的关键词频率Term_Frequency皇马-11,并访问用户文件计数器并得到用户文件总个数File_Sumtom,然后按照如下公式计算得出权重系数Coefficient皇马-11:\n[0173]\n[0174] d)遍历完三个密文关键词对应的文档索引链表之后,得到的权重数据表如下:\n[0175]\ndocID 文件名 Enc_Char皇马 Enc_Char胜 Enc_Char曼联\n1 a.doc \n2 b.pdf Coefficient皇马-2 Coefficient胜-2 \n3 c.txt Coefficient皇马-3 Coefficient曼联-3\n4 d.doc \n5 e.pdf Coefficient皇马-5 Coefficient胜-5 Coefficient曼联-5\n6 f.txt Coefficient皇马-6 Coefficient胜-6 Coefficient曼联-6\n7 g.doc \n11 encrypt.doc Coefficient皇马-11 Coefficient胜-11 Coefficient曼联-11[0176] 此处设定文档2、3、5、6在加密前也包含了关键词“皇马”,文档2、5、6在加密前也包含了关键词“胜”,文档3、5、6在加密前也包含了关键词“曼联”;\n[0177] e)沿着查询树的叶子节点L1和L2向上回溯,判断遇到的内部节点C1对应的逻辑关系是逻辑与,则对关键词Enc_Char皇马和Enc_Char胜所对应的文件索引链表求交集,根据步骤d)中设定的关键词分布情况,可以得出交集后的文档索引链表Chain皇马and胜中有四个文档索引项(其docID分别为2、5、6、11);\n[0178] f)继续沿着查询树向上回溯,就到了树根节点R,其对应逻辑关系与,因此求出Chain皇马and胜和密文关键词Enc_Char曼联对应的文档索引链表的交集,根据步骤d)中设定的关键词分布情况,可以得出交集后的文档索引链表Chain皇马and胜and曼联中有三个文档索引项(其docID分别为5、6、11);\n[0179] g)最后得到满足查询条件的文档集合,此集合包含了三个文档,其docID分别为5、\n6、11;\n[0180] h)对结果集合中的每个文档,从权重二维表中取出该文件对应的列向量,对列向量中的所有权重系数取期望值并计算方差,例如文档encrypt.doc,其对应的列向量为[Coefficient皇马-11,Coefficient胜-11,Coefficient曼联-11],计算得出的期望值是Expectation11,方差是Variance11;\n[0181] i)根据每个文件与查询的相关度分数,即期望值进行排序,此处设定Expectation11>Expectation5并且Expectation5=Expectation6并且Variance6>Variance5,对于期望值相等的文档,方差小的排在前面,因此排序结果如下:\n[0182] j)按照排序后的结果传递给查询结果合并排序子组件;\n[0183]\n排名 文档ID 文件名 期望值 方差\n1 11 encrypt.doc Expectation11 Variance11\n2 5 e.pdf Expectation5 Variance5\n3 6 f.txt Expectation6 Variance6\n[0184] 7)明文查询子组件取出明文索引,根据查询树进行多关键字明文检索,将检索到的文件元信息和相关度分数传给查询结果合并排序子组件,此处设定只有文档plain.doc满足查询条件,其文档元信息和期望值Expectation12、方差Variance12均传递给了查询结果合并排序子组件,由于明文检索的流程与步骤5)中的密文检索流程类似,此处不再赘述;\n[0185] 8)服务器端的查询结果合并排序子组件将得到的明文检索结果和密文检索结果合并,按照相关度分数(也即期望值)进行排序,最后将结果返回给客户端的查询结果显示子组件,此处设定Expectation12>Expectation11,则返回结果如下:\n[0186]\n[0187] 此处设定用户tom上传的所有文档都在根目录下;\n[0188] 9)客户端的查询结果显示子组件将查询结果显示给用户;\n[0189] 当用户tom注销时,自动销毁tom的主密钥,只保留文件加解密密钥和索引加解密密钥的密文形式。\n[0190] 从本实施例可以看出,本系统提供了明文和密文文件的统一备份、检索功能,同时提供了明密文检索的统一接口,为用户提供了简洁一致的数据视图。
法律信息
- 2019-11-15
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 201310626958.7
申请日: 2013.11.28
授权公告日: 2017.01.25
- 2017-01-25
- 2014-03-19
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201310626958.7
申请日: 2013.11.28
- 2014-02-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-05-08
|
2013-03-04
| | |
2
| |
2013-05-15
|
2013-02-06
| | |
3
| |
2011-04-20
|
2010-12-10
| | |
4
| | 暂无 |
2010-03-31
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |