发明内容
本发明目的在于提供一种基于可信用户前端的可信云存储服务平台及工作方法,以解决云存储服务平台的可信性技术问题。
为实现上述目的,本发明提供了一种基于可信用户前端的可信云存储服务平台,包括可信前端和公有云端两部分,其中,所述可信前端包括:
文件处理上传单元,用于将文件本身加密,并提取出文件中可供检索的信息进行分词加密,并将密文文件和密文分词信息提交至云端;
检索单元,用于处理查询请求,构建密文查询条件提交至云端;
文件操作单元,用于处理文件操作请求,将文件操作请求生成密文路径后提交至云端;
文件查询接收单元,用于解析、解密从云端获得的密文查询结果集;
文件下载单元,用于解密从云端下载的密文文件;
所述公有云端包括:
后台调度单元,利用Web服务器接收文件处理上传单元发送的密文文件和密文分词信息,密文文件经文件归档管理单元构建Hadoop分布式文件系统,密文分词信息经索引管理单元构建可信密文索引单元;
可信密文索引单元,用于接收检索单元的密文查询条件,并发送密文查询结果集;
Hadoop分布式文件系统(HDFS),用于接收文件操作单元的文件访问管理,并向文件下载单元发送密文文件。
上述服务平台的工作方法,具体步骤如下:
S1.前端进行文件处理上传,加密生成密文文件和密文分词信息,一并提交至云端,实现上传,构建可信密文索引单元和Hadoop分布式文件系统,目录树操作维护,进入步骤S2或S3;
S2.前端向云端发送检索请求,加密后以密文查询条件提交至可信密文索引单元,云端反馈密文查询结果集给前端,实现查询,进入步骤S4;
S3.前端向云端发送文件操作请求,加密后以加密路径提交至Hadoop分布式文件系统,云端反馈密文文件,实现下载文件,以供前端文件下载,进入步骤S5;
S4.对密文查询结果集进行解析、解密;
S5.密文文件解密。
作为优选的技术方案之一,加密采用多个密钥组成的组密钥(组密钥中的每个密钥均单独生成,之间没有必然联系),每个组密钥包含:
一个文件名密钥(filename-key),用于对文件名进行加密,有效隐藏文件名信息;
一个分词密钥(token-key),用于对文件中提取的分词进行加密,使用密文分词建立索引,在极小影响检索效率的前提下,隐藏分词中包含的文件内容信息;
多个文件内容密钥(content-key),用于对原文件进行加密,并使用加密后的文件名上传文件。
作为优选的技术方案之一,采用XML文件来存放密钥,存取密钥时只需对各个XML标签进行操作,操作过程简单,易于管理。
作为优选的技术方案之一,根据文件名的MD5值来选择不同编号的密钥,具体方法是:首先计算文件名的MD5值,然后将MD5字符串各位的值(范围在00H~0FH的十六进制)均匀映射到(十进制1~10,此处默认文件内容密钥数为10)编号区域,对映射后的字符串各位字符求平均值即为所得编号,取得对应编号的密钥即为用来加密或解密文件的密钥。
解密操作只要对加密过程逆向操作即可。
作为优选的技术方案之一,所述可信密文索引单元采用倒排索引,由词汇表和倒排表两部分组成,在词汇表中,每个索引项包含密文索引词和加密指针两个信息,所述倒排表记录文档地址的序列,每条记录包含有记录ID、包含有该密文索引词的文档地址结合。
作为优选的技术方案之一,采用公式1对解密后的检索结果进行评分后排序,排序结果用于反映索引词与文档的语义匹配程度:
其中length_t表示每个检索分词的词长,length_q表示每个查询单元的词长,length_t/length_q表示较长的检索子单元q可以获得较多的权重,weight_of_domain则用来衡量不同内容域的检索结果的权重,Q为查询请求,Score(di)表示针对查询请求Q文档di的评分,N表示全文检索系统中文档的数量,df表示关键词出现的文档总数。
作为优选的技术方案之一,利用分词词典过ICTCLAS分词系统过滤分词结果,然后将分词结果进行词条组合,最后对重复词条进行过滤。
作为进一步优选的技术方案之一,所述分词词典包含停用词(比如“的”、“了”、“啊”之类的字或词以及一些标点符号)。
作为进一步优选的技术方案之一,所述词条组合的具体方法是:输出的全部分词区间的词条和组词单字,在各分词区间内以阈值k(4≤k≤8)为最大词长限制进行组词。根据汉语词汇特点,k取为5的组词方法可以让词条覆盖率和组词效率之间得到很好的平衡。
作为进一步优选的技术方案之一,所述过滤是指:出于安全考虑,词条的位置信息和频率信息在密文索引里都必须被屏蔽掉,将重复词条在分词阶段就过滤掉,可以提高密文索引构建的效率,避免重复构建。
作为优选的技术方案之一,Hadoop分布式文件系统采用自适应文件冗余度控制算法,其核心是文件等级的划分,具体方法是:首先对云端所有文件进行打分,然后通过评分和用户标记与否根据系统设定的全局不同文件等级比例对系统进行评级操作,最后根据文件等级以及文件属主的用户等级来确定文件最终的冗余度。
作为进一步优选的技术方案之一,在计算出每个文件的得分以后,对所有的文件得分进行按得分从大到小排序,然后根据系统设定不同等级文件的文件比例来进行等级划分,在分类边界范围,按用户标记优先的原则划分;至此云端所有文件的文件等级就已经评定,然后根据不同等级用户的不同冗余策略来实际设置Hadoop中文件的冗余度。
作为进一步优选的技术方案之一,评分是以公式2文件的平均访问密度作为文件的得分:
其中,αi为不同时间段的权值,Ni为相应时间段的访问次数,t为时间段大小(需要记录每个固定时间段的访问量,如按天记录),n为时间段个数,G为得出的文件加权平均访问密度即文件得分。
作为优选的技术方案之一,文件处理上传的具体方法是:
(1)提交文件上传请求,同时进入步骤(2)和步骤(3);
(2)调用内容提取模块提取文本信息,调用分词模块将提取的文本信息进行分词,再调用分词加密模块对分词进行加密,得到密文的分词信息,进入步骤(4);
(3)对原始文件进行加密,得到密文文件,进入步骤(4);
(4)将密文文件和密文分词信息提交至云端;
(5)云端返回是否成功上传,是则返回上传成功,否则返回上传失败,询问是否重试。
作为优选的技术方案之一,检索的具体方法是:
(1)提交查询请求,利用查询词解析模块对查询条件进行预处理;
(2)调用分词模块对查询字符串进行分词操作;
(3)调用分词加密模块对分词进行加密处理,然后构建密文查询条件通过通信模块提交至云端;
(4)待云端处理后获取从云端返回的密文查询结果;
(5)调用文件列表解密模块将密文查询结果解密为明文返回给用户,结束。
作为优选的技术方案之一,文件操作(指除上传、下载外需要传输文件以外的所有文件操作)的具体方法是:从云端获取的密文文件列表中获取密文文件加密路径,然后通过通信模块将操作请求提交到云端,返回操作结果。
作为优选的技术方案之一,文件下载的具体方法是:从云端获取的文件列表中获取密文文件路径,然后将下载请求提交到云端,判断文件是否成功接收,是则对文件进行解密操作,通知用户下载成功,否则通知用户下载失败,询问是否重试。
作为优选的技术方案之一,步骤S1中,上传的具体方法是:公有云端的后台调度单元调用文件归档管理单元对用户提交的密文文件在目录树中新建文件,并按返回的文件路径归档到HDFS中;同时,调度程序调用索引管理单元将用户提交的密文分词信息进行构建索引操作,归并到原有索引中;倘若未出现异常,则返回用户上传成功。
作为优选的技术方案之一,步骤S1中,目录树操作的具体方法是:包括获取文件属性、新建目录、删除目录、获取文件列表、修改文件标记,这些操作只需要文件访问管理模块根据用户提交的请求,通过用户目录树维护模块对目录树进行操作即可。
作为进一步优选的技术方案之一,目录树操作包括删除文件,具体方法是:后台调度单元通过用户目录树维护模块对指定的文件节点获取其HDFS路径,然后将其从HDFS中删除,再将该文件节点从目录树中删除,同时将可信密文索引单元中该文件的索引信息删除。
作为进一步优选的技术方案之一,目录树操作包括移动文件,具体方法是:由后台调度单元通过用户目录树维护模块将指定的文件节点移动到指定位置,同时通过索引管理单元修改可信密文索引单元中该文件的位置信息。
作为优选的技术方案之一,步骤S2中,查询的具体方法是:利用查询模块对用户提交的密文查询条件进行解析,然后通过解析后的密文查询条件在密文索引中进行检索,最后将查询结果返回给用户。
作为优选的技术方案之一,步骤S3中,下载文件的具体方法是:由文件访问管理模块通过用户目录树维护模块获取指定文件的HDFS路径,然后根据此路径将文件从HDFS中提取出来发送给用户。
本发明具有以下有益效果:
本发明提供了一种基于可信用户前端的可信云存储服务平台,包括可信前端和公有云端两部分,可信前端用于保护用户隐私,在用户数据提交至公有云端之前对明文数据进行加密;公有云端用于对用户提交的密文文件进行归档管理。本发明利用可信用户前端将用户隐私数据隔离在云存储平台之外,使得云存储平台只包含加密处理后的用户隐私数据,从而保障用户隐私数据的安全性。
本发明研究了适用于云存储应用的加密隐私数据查询方法。提出了一种支持密文全文检索的安全索引结构,基于该索引结构对云端海量加密信息构建全文索引,从而提供高效的全文检索功能,实现云存储应用环境下的加密隐私数据高效查询。同时为提高云存储平台用户数据的访问效率和可靠性,本发明设计了面向云存储应用的自适应热点文件冗余调整机制,通过分析量化用户隐私数据的访问密度,调整云端数据分布,提高用户对于热点文件的访问体验,优化云存储平台的整体服务性能。
本发明实现了用户隐私数据安全性和可操作性两者兼顾。在保证用户隐私数据安全的前提下尽量提高用户的易用性,包括提供密文索引搜索服务、合理的用户界面等。保证客户端明文环境与云端密文环境完全隔离,通过可信的前端完成明文和密文的转换,使系统呈现给用户的是一个完全的明文环境,而存储到云端的则全部是密文信息。由于云端的纯密文环境,所以要为用户提供更为优质的服务,云端就必须具有处理密文数据的能力,如建立和管理密文索引、密文查询等。
为了保证云端的纯密文环境,我们使用密文分词来构建索引,并且搜索时对查询语句在客户端进行预处理和加密后再传输到云端进行查询。所有的涉及加解密的操作均在客户端完成,云端所能获得的只有密文信息,这就保证了云端密文环境和客户端明文环境的完全隔离。
首先,关于加解密操作引入了一种基于XML文件格式的密钥管理方案。该文件存放在客户端,里面包括了用来加密文件名的文件名密钥(filename-key)、用来加密索引分词的分词密钥(token-key)、用来加密文件本身的文件内容密钥(content-key)。在加密文件之前,先对明文文件进行预处理和提取分词,然后对每个分词通过分词密钥(token-key)进行加密后生成密文分词文件。将密文分词文件上传至云端,在云端提取出密文分词,接着使用密文分词按照3.2节中介绍的安全索引结构建立密文索引。在搜索时,先对查询字符串进行分词处理,然后同样使用分词密钥(token-key)对各分词进行加密处理,再将加密过的查询密文检索词传送到云端进行搜索操作。再在云端的密文索引中查询到该密文分词所对应的加密文档地址集合,并将地址集合返回给客户端。在客户端使用文件名密钥(filename-key)解密这些文档地址集合,即得到所要搜索结果。采用此方案,既可以保证正常的查询搜索功能,同时也能确保云端的信息环境是纯密文态的。
使用本发明的密钥管理方法,虽然不能做到“一次一密”,但是,其安全性在原有的一个固定密钥策略下有显著地提高,同时又避免了“一次一密”中到最后密钥“超载”的问题。密钥组形式的密钥管理机制在尽量保证安全性的前提下,控制了密钥的数量,方便日后对密钥进行管理,同时有效控制了密钥文件的体积,检索取得密钥的效率更高,加快了加解密的速度。同时,密钥组中文件内容密钥的数量可以自定,密钥数量越多,由于使用各密钥几乎是等概率的,加密文件时使用密钥的不确定性就越高,攻击者猜得密钥的难度就越大,文件信息就越安全。但是也并非就是越多越好,过多的密钥会造成管理上的困难,更多的密钥也就意味着更大的存储空间,因此建议在保证必要的安全性的前提下,适量选择密钥数目。
总之,本发明的创新性主要有以下三个方面:可信云存储平台体系结构,密文检索相关研究,自适应冗余度调整算法。
1、可信云存储平台体系结构
针对目前云存储的安全性问题,本课题提出了一种使用可信前端对用户隐私数据和云端存储数据隔离的可信的云存储平台结构体系。保证云端的用户数据全部经过加密,使云端无任何的用户隐私数据,但对于云端的数据又通过构建密文索引向用户提供密文检索功能。
2、密文检索相关研究
针对传统倒排索引的不适用性,本项目设计出一种基于lucene安全的倒排索引。该安全索引屏蔽了倒排词表明文语义上的顺序、词条的位置信息和频率,更好的防范统计攻击,同时采用特殊分词,保证了搜索的准确性,并且使用密文词条对应的指纹信息代替密文词条,降低词条本身与索引的关联性,进一步隐藏词条信息。
3、自适应冗余度调整算法
对于云端数据全局固定冗余策略的不灵活性,本课题提出了一种动态调整冗余数的策略。通过云端数据的访问记录,计算出访问频率,将高频文件冗余度提升,低频文件冗余度降低,并可对不同用户级别进行提供不同的冗余策略。此算法可以提高云的整体性能,更能合理地利用云端存储资源。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将对本发明作进一步详细的说明。
具体实施方式
以下对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
实施例:
如图1所示的一种基于可信用户前端的可信云存储服务平台,包括可信前端和公有云端两部分,其中,所述可信前端包括:
文件处理上传单元,用于将文件本身加密,并提取出文件中可供检索的信息进行分词加密,并将密文文件和密文分词信息提交至云端;
检索单元,用于处理查询请求,构建密文查询条件提交至云端;
文件操作单元,用于处理文件操作请求,将文件操作请求生成密文路径后提交至云端;
文件查询接收单元,用于解析、解密从云端获得的密文查询结果集;
文件下载单元,用于解密从云端下载的密文文件;
所述公有云端包括:
后台调度单元,利用Web服务器接收文件处理上传单元发送的密文文件和密文分词信息,密文文件经文件归档管理单元构建Hadoop分布式文件系统,密文分词信息经索引管理单元构建可信密文索引单元;
可信密文索引单元,用于接收检索单元的密文查询条件,并发送密文查询结果集;
Hadoop分布式文件系统(HDFS),用于接收文件操作单元的文件访问管理,并向文件下载单元发送密文文件。
上述服务平台的工作方法,具体步骤如下:
S1.前端进行文件处理上传,加密生成密文文件和密文分词信息,一并提交至云端,实现上传,构建可信密文索引单元和Hadoop分布式文件系统,目录树操作维护,进入步骤S2或S3;
S2.前端向云端发送检索请求,加密后以密文查询条件提交至可信密文索引单元,云端反馈密文查询结果集给前端,实现查询,进入步骤S4;
S3.前端向云端发送文件操作请求,加密后以加密路径提交至Hadoop分布式文件系统,云端反馈密文文件,实现下载文件,以供前端文件下载,进入步骤S5;
S4.对密文查询结果集进行解析、解密;
S5.密文文件解密。
其中,加密采用多个密钥组成的组密钥(图2,组密钥中的每个密钥均单独生成,之间没有必然联系),每个组密钥包含:
一个文件名密钥(filename-key),用于对文件名进行加密,有效隐藏文件名信息;
一个分词密钥(token-key),用于对文件中提取的分词进行加密,使用密文分词建立索引,在极小影响检索效率的前提下,隐藏分词中包含的文件内容信息;
多个文件内容密钥(content-key),用于对原文件进行加密,并使用加密后的文件名上传文件。
采用XML文件来存放密钥,格式如下:
存取密钥时只需对各个XML标签进行操作,操作过程简单,易于管理。
如图3所示,根据文件名的MD5值来选择不同编号的密钥,具体方法是:首先计算文件名的MD5值,然后将MD5字符串各位的值(范围在00H~0FH的十六进制)均匀映射到(十进制1~10,此处默认文件内容密钥数为10)编号区域,对映射后的字符串各位字符求平均值即为所得编号,取得对应编号的密钥即为用来加密或解密文件的密钥。
如加密名为a.txt的文件,文件名字符串的MD5值为a5e54d1fd7bb69a228ef0dcd2431367e,过映射求均值后的值为4,所以取编号为4的密钥,为文件加密。文件名使用密钥文件中的文件名密钥(filename-key)加密,文件加密完成。
解密操作只要对加密过程逆向操作即可。假设现有一个密文文件,我们先使用key.xml中的文件名密钥(filename-key)对其文件名解密为a.txt,然后类似加密过程由明文文件名的MD5值映射求值计算得一个编号值4,再取出4号文件内容密钥对密文文件内容解密,至此,密文的内容和文件名都已解密完毕。
可信密文索引单元采用倒排索引(图4),由词汇表和倒排表两部分组成,在词汇表中,每个索引项包含密文索引词和加密指针两个信息,所述倒排表记录文档地址的序列,每条记录包含有记录ID、包含有该密文索引词的文档地址结合。
由于词汇表基于密文索引词构建,在检索过程中没有解密操作,检索基于密文索引词的直接匹配实现。同时,为了加快词汇表中的查词效率,词汇表中的索引词是按词典序排列,这样就可以对词汇表建立索引加快查询速度。在使用lucene检索时,使用二分法查找,每个检索词的检索效率理论上可以达到log2N。
倒排表记录了文档地址的序列,每条记录包含有记录ID、包含有该密文索引词的文档地址结合。在创建倒排表记录项时,系统会随机分配一个唯一的记录ID作为该记录的唯一标识,将记录ID做加密处理后作为指向该记录项的加密指针添加到词汇表中对应的密文索引词后面。在每个倒排表的记录项中,出于保护文件名和文件地址信息,文档地址均作加密处理。
由于索引基于密文索引词构建,因此在检索时,用户端需事先将用户检索请求转换为密文检索词的析取或者合取范式作为请求发出,系统接收请求后,在索引中直接匹配密文检索词,返回命中的加密文档地址集合。用户端在接收到了返回的加密文档地址集合后,解密即得到明文的文档地址集合。
采用公式1对解密后的检索结果进行评分后排序,排序结果用于反映索引词与文档的语义匹配程度:
其中length_t表示每个检索分词的词长,length_q表示每个查询单元的词长,length_t/length_q表示较长的检索子单元q可以获得较多的权重,weight_of_domain则用来衡量不同内容域的检索结果的权重。
利用分词词典过ICTCLAS分词系统过滤分词结果,然后将分词结果进行词条组合,最后对重复词条进行过滤。
分词词典包含停用词(比如“的”、“了”、“啊”之类的字或词以及一些标点符号)。
词条组合的具体方法是:输出的全部分词区间的词条和组词单字,在各分词区间内以阈值k(4≤k≤8)为最大词长限制进行组词。根据汉语词汇特点,k取为5的组词方法可以让词条覆盖率和组词效率之间得到很好的平衡。例如,假设取k为5,对于文本“哈佛大学的计算机学院”,经过ICTCLAS中文分词,得到“哈佛大学的计算机学院”。经过过滤后,得到“哈佛大学计算机学院”。组词时,先从“哈佛”开始,得到“哈佛大学”(因为“哈佛大学计算机”词长为7,大于5,所以不会被组合出来);再从“大学”开始,得到“大学计算机”;再从“计算机”开始,得到“计算机学院”。至此组词结束,我们于是可以得到所有的组词结果“哈佛大学”、“大学计算机”、“计算机学院”。然后汇合该分词区间内组词所得词条和初次分词词条。上述例子中文本“哈佛大学的计算机学院”,经过本阶段处理,即可得到该分词区间内所有词条“哈佛”、“大学”、“计算机”、“学院”、“哈佛大学”、“大学计算机”、“计算机学院”。
过滤是指:出于安全考虑,词条的位置信息和频率信息在密文索引里都必须被屏蔽掉,将重复词条在分词阶段就过滤掉,可以提高密文索引构建的效率,避免重复构建。
Hadoop分布式文件系统采用自适应文件冗余度控制算法,其核心是文件等级的划分,具体方法是:首先对云端所有文件进行打分,然后通过评分和用户标记与否根据系统设定的全局不同文件等级比例对系统进行评级操作,最后根据文件等级以及文件属主的用户等级来确定文件最终的冗余度。
图5示出了文件冗余度的影响因素,在计算出每个文件的得分以后,对所有的文件得分进行按得分从大到小排序,然后根据系统设定不同等级文件的文件比例来进行等级划分,在分类边界范围,按用户标记优先的原则划分;至此云端所有文件的文件等级就已经评定,然后根据不同等级用户的不同冗余策略来实际设置Hadoop中文件的冗余度。
评分是以公式2文件的平均访问密度作为文件的得分:
其中,αi为不同时间段的权值,Ni为相应时间段的访问次数,t为时间段大小(需要记录每个固定时间段的访问量,如按天记录),n为时间段个数,G为得出的文件加权平均访问密度即文件得分。
具体算法描述如下:
如图6所示,文件处理上传的具体方法是:
(1)提交文件上传请求,同时进入步骤(2)和步骤(3);
(2)调用内容提取模块提取文本信息,调用分词模块将提取的文本信息进行分词,再调用分词加密模块对分词进行加密,得到密文的分词信息,进入步骤(4);
(3)对原始文件进行加密,得到密文文件,进入步骤(4);
(4)将密文文件和密文分词信息提交至云端;
(5)云端返回是否成功上传,是则返回上传成功,否则返回上传失败,询问是否重试。
如图7所示,检索的具体方法是:
(1)提交查询请求,利用查询词解析模块对查询条件进行预处理;
(2)调用分词模块对查询字符串进行分词操作;
(3)调用分词加密模块对分词进行加密处理,然后构建密文查询条件通过通信模块提交至云端;
(4)待云端处理后获取从云端返回的密文查询结果;
(5)调用文件列表解密模块将密文查询结果解密为明文返回给用户,结束。
如图8所示,文件操作(指除上传、下载外需要传输文件以外的所有文件操作)的具体方法是:从云端获取的密文文件列表中获取密文文件加密路径,然后通过通信模块将操作请求提交到云端,返回操作结果。
倘若文件操作为获取文件列表操作,在返回操作结果后还需要调用文件列表解密模块将文件列表解密。
如图9所示,文件下载的具体方法是:从云端获取的文件列表中获取密文文件路径,然后将下载请求提交到云端,判断文件是否成功接收,是则对文件进行解密操作,通知用户下载成功,否则通知用户下载失败,询问是否重试。
如图10所示,步骤S1中,上传的具体方法是:公有云端的后台调度单元调用文件归档管理单元对用户提交的密文文件在目录树中新建文件,并按返回的文件路径归档到HDFS中;同时,调度程序调用索引管理单元将用户提交的密文分词信息进行构建索引操作,归并到原有索引中;倘若未出现异常,则返回用户上传成功。
步骤S1中,目录树操作的具体方法是:包括获取文件属性、新建目录、删除目录、获取文件列表、修改文件标记,这些操作只需要文件访问管理模块根据用户提交的请求,通过用户目录树维护模块对目录树进行操作即可。
如图11所示,目录树操作包括删除文件,具体方法是:后台调度单元通过用户目录树维护模块对指定的文件节点获取其HDFS路径,然后将其从HDFS中删除,再将该文件节点从目录树中删除,同时将可信密文索引单元中该文件的索引信息删除。
如图12所示,目录树操作包括移动文件,具体方法是:由后台调度单元通过用户目录树维护模块将指定的文件节点移动到指定位置,同时通过索引管理单元修改可信密文索引单元中该文件的位置信息。
如图13所示,步骤S2中,查询的具体方法是:利用查询模块对用户提交的密文查询条件进行解析,然后通过解析后的密文查询条件在密文索引中进行检索,最后将查询结果返回给用户。
如图14所示,步骤S3中,下载文件的具体方法是:由文件访问管理模块通过用户目录树维护模块获取指定文件的HDFS路径,然后根据此路径将文件从HDFS中提取出来发送给用户。
测试
1、测试目的
通过对本作品中分词、索引、检索、加解密、冗余度控制及文件的归档和提取进行测试,以验证本作品的可行性和实用性。
2、测试环境
实验环境描述如下:
硬件环境:CPU 2.2.GHz
内存2G
硬盘320G
客户端操作系统:windows 7
服务端操作系统:Ubuntu 10.04
云端基础平台:Hadoop
Web应用服务器:Apache Tomcat
全文检索引擎工具包:lucene
分词工具包:ICTCLAS4J
实验数据:中国法律法规大典中选取的100~1000篇文档,共10份不同规模的数据集。
3、测试内容
3.1正向分词的安全性验证
对于中文,传统的lucene采用的是单字分词,这样明显不能满足普通人的要求,并且存在一定的安全隐患,由于高频词的存在,易遭受统计攻击。所以我们采用的是另一种分词方法——正向分词方法。图15是我们进行测试的结果。
我们进行单字分词和正向分词的测试,从数据集中随机选出一百篇文档,分别用单字分词和正向分词进行归档,再使用lucene构建索引,测试结果如图15中所示,从图中可以看出,相较于单字分词,使用正向分词可以有效地降低高频词的数量,同时提高低频词的数量,这样可以有效的防范统计攻击,这是因为使用单字分词索引词数量较小,并且单字词相对于多字词来说更容易命中文档,而正向分词是先通过ICTCLAS中文分词再基于最大词长组合提取索引词,这样使得索引词的数量增大,从而降低高频词的数量,列举正向分词的索引词来看,词条长度合理,并且词条保留基本的语义信息,能够弥补由于位置信息的缺失带来的。
3.2密文索引归档时间效率测试
为了检验密文索引是否会对索引归档时间造成影响,我们对明文和密文构建索引时间分别进行了测试。我们随机从数据集中抽取100-1000篇文档进行测试,此数据集是事先已经处理好的文档,包括明文数据集和密文数据集,我们采用lucene进行索引构建,对构建完成时间进行记录,记录结果如图16所示。
如图16所示,密文索引和明文索引构建时间基本相同,且呈线性增长,主要原因是对于分词和加密是放在服务端来做,索引只是对密文分词进行构建,采用空格解析器进行解析,所以在时间上不会增长太多,主要的时间开销是在分词和加密中。并且在一般情况下,一次性索引构建规模的不会那么大,一般在10篇以下,10篇以下规模文档构建密文和明文索引的速度基本是一样的,所以构建密文索引基本不会影响系统效率。
3.3密文索引的空间性能测试
全文检索系统的检索对象往往是海量的文档数据,全文索引的空间代价对于全文检索系统来说也是非常重要的。我们通过测试100到1000篇文本文档的明文索引存储空间及密文索引存储空间来比较说明密文索引的空间性能。
如图17所示,密文索引相较于明文索引的膨胀率大约是一倍,这是因为一个词条加密后的位数明显比明文词条大得多,比如“负责”加密后是“2801f0ff6dc782fd”,这样即使屏蔽了词条的位置和频率信息,在构建密文索引后的空间占用还是比明文索引大,不过一倍的膨胀率在可承受范围内,而且密文索引占用空间基本呈线性增长,可以有效控制索引空间开销,而如今计算机硬件的廉价性使得在我们有比较大的余地对存储空间进行扩充。
3.4密文检索时间性能测试
搜索时间是一个重要的性能指标,在保障安全性的同时也要兼顾性能,为了检测密文和明文的搜索效率,我们对两个索引结构进行搜索时间测试,并且采用不同长度的词条作为测试样本,每种长度词条取100个不同的词进行测试,并取平均值。
从图18中可以看出,不同词条的平均搜索时间是呈线性增长的,并且时间很短,主要原因一个是构造索引采用的是词典序,搜索采用的是二分法查找,理论上检索的时间复杂度可以达到log2N,另一个原因在于提交到服务端的检索条件是已经处理好的了,不需要服务端进行任何处理。从图中我们也可以看出密文索引的性能相较于明文来说并不会下降。
3.5密文检索准确性测试
全文检索的准确性是一个至关重要的指标,若是查询结果不准确,那么全文检索也就失去了意义,所以我们对密文全文检索做了查询结果准确性测试。对测试数据集中的一些常见词分别在明文索引和密文索引中进行查询,比较它们的查询命中数量(表1)。
表1.明密文索引命中数对比表
关键词 |
密文索引命中数 |
明文索引命中数 |
原文档包含数目 |
黑龙江省人民 |
5 |
5 |
5 |
开展贯彻 |
3 |
3 |
3 |
证券公司 |
7 |
7 |
7 |
食品安全 |
4 |
4 |
4 |
城市维护建设 |
3 |
3 |
3 |
行政主管部门 |
102 |
102 |
104 |
占用耕地 |
2 |
2 |
2 |
进一步加强 |
53 |
53 |
53 |
消费者 |
25 |
25 |
26 |
协会成员 |
67 |
67 |
68 |
针对相同规模的数据集,我们测试了搜索的查全率和查准率,选用10个关键词进行测试,结果密文索引和明文索引对同一个关键词的命中数是一样的,即命中率为100%,并且与包含源文档的基本一样,可见查准率也能有所保障,所以密文索引并不会影响查全率和查准率。
3.6冗余度调整算法功能验证
本发明设计要求存储在云端的数据需要自适应的根据其重要性改变冗余备份数量。本发明中冗余数最高为5,用户等级分为4级,文件等级分为3级,冗余度策略如表2的策略矩阵所示(行表示文件等级,从左到右依次为1到3级,列表示用户等级,从上到下依次为1到4级,矩阵中值为实际的冗余数)。
表2.冗余策略矩阵
本次实验的对象为云端的10个文件,它们与冗余度相关的因子已列在表2中。每个文件最初上传等级均为1,当文件在云端存放一段时间后,经过冗余度算法调整以后,再查看冗余数,就得到了调整以后的冗余数,结果见表2。
表3.冗余度测试结果
表3中数据说明文件访问频率越高,文件等级就越高;而对同一用户,文件等级越高,冗余数越高;而对于同一等级,属主等级越高,冗余数就越高。所以说此结果符合原本的算法设计。
3.7文件归档及提取效率测试
文件归档包括对文件进行预处理、分词、加密、传送到服务端并建立索引,文件的提取包括将文件从服务端下载到本地并解密。归档和提取的效率决定了系统的响应时间,所以我们对文件的归档及提取效率进行了测试。
对于归档性能的测试我们主要分为PDF(txt文件跟PDF相似)和其他文件,如图19中(a)所示的PDF归档性能相较于图19中(b)其他文件归档要慢很多,是因为对PDF我们要提取其文本文件并进行分词,然后加密分词文件及原文件并将加密文件上传到云存储平台,而其他如RAR、MP3等文件我们只需对其进行加密并对文件名进行相应处理即可。
参见图20,文件提取性能主要包括两部分,一部分是将文件下载到本地,另一部分是将文件解密,由于我们采用的是效率较高的DES加密算法,所以从效率上看,本系统的文件提取性能还是比较高的。
3.8加密算法比较测试
本作品采用成熟的加密算法加密数据,因为系统在归档过程中需要加密大量的数据,所以加密算法的效率对归档的性能有很大的影响。我们通过采用不同的加密算法(DES、AES、RSA、ECC)时的时间开销,实验结果如图21所示。
分析图21所示实验结果可以发现,采用非对称加密算法(RSA、ECC)加密时,时间开销明显高于对称加密算法(AES、DES)加密时的时间开销。其时间大约相差1000倍,因此为了提高性能,我们采用对称加密算法加密系统中的数据。
4、测试小结
通过以上对系统的关键性能测试及功能验证,并综合各部分的测试分析,可以发现我们的关键技术能够有效的在系统中得到应用并保证一定的性能,说明了本作品研究内容的可行性与实用性。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。