一种适用于备份系统的安全数据去重方法和系统的制作方法

文档序号:8002457阅读:325来源:国知局
一种适用于备份系统的安全数据去重方法和系统的制作方法
【专利摘要】本发明公开了一种适用于备份系统的安全数据去重方法,包括:接收用户提交的备份请求,对需要备份的每个文件进行分块,以得到多个不同大小的数据块,使用哈希算法计算每个数据块的哈希值F1来作为数据块的加密密钥,再次使用哈希算法计算每个数据块哈希值F1的哈希值F2作为该数据块的指纹来识别重复数据块,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E(F1)来保护数据块的加密密钥。将所有数据块指纹F2等顺序打包成指纹段发送传输到存储服务器。本发明中所有通信过程采用安全套接层协议。本发明通过采用该安全数据去重方法,能够保证在数据去重率不变的基础上,防止数据丢失、篡改等存储安全问题。
【专利说明】一种适用于备份系统的安全数据去重方法和系统
【技术领域】
[0001]本发明属于计算机存储领域,更具体地,涉及一种适用于备份系统的安全数据去重方法和系统。
【背景技术】
[0002]近年来,随着计算机技术和网络的发展普及,全球的数据信息存储量呈爆炸式增长的趋势。全球范围内个人电脑、智能手机等设备的普及,和新兴市场内不断增长的互联网访问量,以及监控摄像机或智能电表等设备产生的数据爆增,使数字宇宙的规模在最近两年翻了一番,达到惊人的2.8ZB。IDC预计,到2020年,数字宇宙规模将超出预期,达到40ZB。在线数字内容的增长导致了硬件、人力维护在内的存储系统成本的增加,减少传输、存储管理过程中的数据量变得极其重要。在海量的数据中存在大量的重复数据和相似数据,如同样的文件为确保安全存储了多份,在计算机系统通常存储和操作同一数据的若干副本,这些冗余数据占用了大量的存储空间。数据去重技术是一种通过大规模消除冗余数据,降低存储成本的重要技术。简单举例说明:若有一个IOMB大小的文件,将其拷贝给100个用户,需要使用IGB的存储空间;若每周对100个用户的数据进行备份,则每周需要额外增加IGB的存储空间;一年之后,总共需要浪费52GB的存储空间;而进行数据去重之后,仅需要IOMB大小的空间即可存储。
[0003]随着容灾备份系统和数据去重技术的发展,隐私数据的丢失与篡改等存储安全问题日渐突出,例如:对于现有的备份系统,在存储服务过程中,存储系统错误配置、管理员操作失误、敌手通过抓包获取等有可能将用户的明文数据直接暴露给他人;即使敌手无法获取明文,也可能通过破坏传输文件,篡改数据、暴力攻击等方式获取和破坏用户和企业的重要数据。因此,如何在数据备份过程中建立一个安全的数据去重系统成为了工业界和学术界研究的热点。
[0004]数据安全在现在存储系统中逐渐引起企业和学术界的重视,在很大程度上,数据去重和加密在逻辑上是完全相反和矛盾的。数据去重利用了数据的相似性,相反密码学的目标是使得密文分布更接近于理论上的随机性。假如按照经典数据去重算法,不同用户对于共享的数据块加密,由于密文的随机性将得到不同的密文,产生不同的指纹,导致数据去重的效率大大降低。假如采用不同的用户对共享的数据块明文计算处理得到相同的指纹,再使用不同的密钥加密数据块得到不同的密文,导致其他用户无法解密。同时在数据去重技术中增加加密、身份认证等安全技术势必会增加备份系统的负担,降低备份系统的性能。

【发明内容】

[0005]针对现有技术的以上缺陷或改进需求,本发明提供了一种适用于备份系统的安全数据去重方法和系统,其目的在于保证在数据去重率不变的基础上,防止数据丢失、篡改等存储安全问题。
[0006]为实现上述目的,按照本发明的一个方面,提供了一种适用于备份系统的安全数据去重方法,包括:
[0007]—、备份阶段,其包括以下步骤:
[0008](I)接收用户提交的备份请求;
[0009](2)对需要备份的每个文件进行分块,以得到多个不同大小的数据块;
[0010](3)使用哈希算法计算每个数据块的哈希值F1来作为数据块加密密钥。
[0011](4)再次使用哈希算法计算每个数据块哈希值F1的哈希值F2,并将哈希值F2作为该数据块的指纹,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E (F1);
[0012](5)将文件的数据块个数nChunkNum,所有数据块指纹F2等打包成指纹段并记录,顺序将所有指纹段以指纹流的形式发送传输到存储服务器,并发送校验流到存储服务器;
[0013](6)在存储服务器的内存中建立用于记录该文件的数据块是否重复的单链表;
[0014](7)根据指纹段和文件数据块个数nChunkNum在存储服务器端进行数据去重的操作过程;
[0015](8)在客户端准备备份非重复的数据块,设置计数器j=l,并判断j是否大于nChunkNum,如果是则转步骤(12),否则转步骤(9);
[0016](9)对于第j个数据块,如果其是重复的数据块,则不予发送;如果其是新的数据块,采用文件压缩算法压缩,并以数据块哈希值F1作为第j个数据块的数据块加密密钥,并使用该数据块加密密钥和经典加密算法对第j个数据块加密,得到的密文数据块;
[0017](10)将加密后的密文数据块和数据块哈希值F1的密文E (F1)以数据流的形式发送至存储服务器,并发送校验流到存储服务器,设置j=j+l ;
[0018](11)根据第j个数据块在存储服务器中的存储位置,保存数据块密文,然后返回步骤(8);
[0019](12)将该单链表发送回客户端,并将所有数据块的数据哈希值F1的密文E (F1)写入到存储服务器的文件谱中;
[0020](13)释放内存中单链表的数据结构,备份过程结束;
[0021]二、恢复阶段,其包括以下步骤:
[0022](14)接收用户提交的恢复请求;具体而言,该等信息,由备份服务器根据文件这些信息等查找到该文件指定的存储服务器。
[0023](15)从存储服务器中查找该恢复文件对应的文件谱,将文件谱中的所有内容包括所有数据块哈希值F1的密文E (F1)、文件名、文件路径等信息读出,并以指纹流的形式发送回客户端;
[0024](16)通过使用LockBox机制取出用户的私有密钥,并对接收到的数据块哈希值F1的密文(E (F1))使用用户的私有密钥进行解密,并将解密得到的数据块哈希值Fl以单链表结构保存在内存中;
[0025](17)对数据块哈希值F1使用备份过程中相同的哈希算法再次求取哈希值,以得到数据块指纹F2,并将其发送回存储服务器;具体而言,本发明采用的是SHA-1算法计算哈希值;
[0026]( 18)根据数据块指纹F2找到数据块,并将数据块发送回客户端;
[0027]( 19)对接收到的数据块进行解密和解压缩处理,并写入文件;[0028](20)释放内存中保存的数据块哈希值F1的单链表数据结构,恢复过程结束。
[0029]优选地,备份请求包括需要备份的文件名、文件的路径、文件的大小、文件的备份时间,恢复请求包括恢复文件对象、恢复文件名、恢复路径。
[0030]优选地,其特征在于,哈希算法采用的是SHA-1方法,经典加密算法采用的是AES算法,用户的私有密钥是通过Lockbox机制进行保护。
[0031]优选地,步骤(7)包括以下子步骤:
[0032](7-1)设置计数器i=l,判断i是否大于nChunkNum。如果是则转入步骤(8),否则转入步骤(7-2);
[0033](7-2)对需要备份的文件的指纹段中的内容进行解析,以得到第i个数据块的数据块指纹F2、数据哈希值F1的密文E (Fl )、数据块长度等信息;
[0034](7-3)在存储服务器的指纹库中判断是否可查找到数据块指纹F2,如果可查找到,则表明第i个数据块为重复块,以指纹F2为索引条件直接指向已存在的数据块;反之,则表明第i个数据块是新数据块,根据指纹F2为索引条件设置该新数据块在存储服务器中的存储位置
[0035](7-4)设置计数器i=i+l,建立新结点,将第i个数据块是否重复的信息写入该结点,并将单链表的尾指针指向该结点,并且尾指针后移一位,然后返回步骤(7-1)。
[0036]优选地,步骤(9)中数据块哈希值F1作为加密密钥采用PBE的加密策略对安全性进行处理,并对密钥长度进行调整。
[0037]优选地,步骤(18)具体为,根据数据块指纹F2读取恢复文件对应的相似性容器,遍历文件谱中的指纹链表,以找到所有数据块对应的容器的ID,读出容器中相应的密文数据块,并将密文数据块和数据块个数nChunkNum以数据流的形式传输回客户端,并发送校验流到客户端,
[0038]优选地,步骤(19)包括以下子步骤:
[0039](19-1)设置计数器k=0,判断k是否大于nChunkNum,如果是转步骤(20),否则转步骤(19-2);
[0040](19-2)根据文件谱中包含的文件名、文件路径等信息找到本地磁盘位置创建新文件;
[0041](19-3)调用在内存中保存的数据块哈希值F1,以数据块哈希值F1为数据块解密密钥对第k个数据块进行解密,采用文件压缩算法压缩(GNUzip,简称gzip),并将该明文数据块内容写入到文件中,置k=k+l,转步骤(19-1)。
[0042]按照本发明的另一方面,提供了一种适用于备份系统的安全数据去重系统,包括:
[0043]第一模块,用于接收用户提交的备份请求;
[0044]第二模块,用于对需要备份的每个文件进行分块,以得到多个不同大小的数据块;
[0045]第三模块,用于使用哈希算法计算每个数据块的哈希值F1 ;
[0046]第四模块,用于再次使用哈希算法计算每个数据块哈希值F1的哈希值F2,并将哈希值F2作为该数据块的指纹,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E (F1);[0047]第五模块,用于将文件的数据块个数nChunkNum,所有数据块指纹F2等打包成指纹段并记录,顺序将所有指纹段以指纹流的形式发送传输到存储服务器,并发送校验流到存储服务器;
[0048]第六模块,用于在存储服务器的内存中建立用于记录该文件的数据块是否重复的单链表;
[0049]第七模块,用于根据指纹段和文件数据块个数nChunkNum在存储服务器端进行数据去重的操作过程;
[0050]第八模块,用于在客户端准备备份非重复的数据块,设置计数器j=l,并判断j是否大于nChunkNum,如果是则转步骤(12),否则转步骤(9);
[0051]第九模块,用于对于第j个数据块,如果其是重复的数据块,则不予发送;如果其是新的数据块,采用文件压缩算法压缩,并以数据块哈希值F1作为第j个数据块的数据块加密密钥,并使用该数据块加密密钥和经典加密算法对第j个数据块加密,得到的密文数据块;
[0052]第十模块,用于将加密后的密文数据块和数据块哈希值F1的密文E (F1)以数据流的形式发送至存储服务器,并发送校验流到存储服务器,设置j=j+l ;
[0053]第十一模块,用于根据第j个数据块在存储服务器中的存储位置,保存数据块密文,然后返回步骤(8);
[0054]第十二模块,用于将该单链表发送回客户端,并将所有数据块的数据哈希值F1的密文E (F1)写入到存储服务器的文件谱中;
[0055]第十三模块,用于释放内存中单链表的数据结构,备份过程结束;
[0056]第十四模块,用于接收用户提交的恢复请求;具体而言,该等信息,由备份服务器根据文件这些信息等查找到该文件指定的存储服务器。
[0057]第十五模块,用于从存储服务器中查找该恢复文件对应的文件谱,将文件谱中的所有内容包括所有数据块哈希值F1的密文E (F1)、文件名、文件路径等信息读出,并以指纹流的形式发送回客户端;
[0058]第十六模块,用于通过使用LockBox机制取出用户的私有密钥,并对接收到的数据块哈希值F1的密文(E (F1))使用用户的私有密钥进行解密,并将解密得到的数据块哈希值F1以单链表结构保存在内存中;
[0059]第十七模块,用于对数据块哈希值F1使用备份过程中相同的哈希算法再次求取哈希值,以得到数据块指纹F2,并将其发送回存储服务器;具体而言,本发明采用的是SHA-1算法计算哈希值;
[0060]第十八模块,用于根据数据块指纹F2找到数据块,并将数据块发送回客户端;
[0061]第十九模块,用于对接收到的数据块进行解密和解压缩处理,并写入文件;
[0062]第二十模块,用于释放内存中保存的数据块哈希值F1的单链表数据结构,恢复过程结束。
[0063]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0064]1、本发明采用适用于备份系统的安全数据去重方法,所有的加密解密过程全部在客户端执行,由此,能够有效地减轻备份服务器和存储服务器的负担,提高多用户并发环境下的性能。
[0065]2、本发明中数据块和密钥在传输和存储过程中都以密文的形式存在,确保即使敌手获取了传输内容也无法获取加密密钥和数据块明文,传输过程中通信双方需要身份验证,有效保障了数据和密钥的传输和存储安全性,降低了数据丢失和被篡改的概率。
[0066]3、相对于先加密再去重的方式必须将所有数据块先加密、然后发送到存储服务器进行去重处理而言,本发明通过先进行数据去重再对新数据块加密的方式,只需要对非重复的数据块加密,减少了大量的加密工作,有效降低了客户端的开销和时间延迟。
[0067]4、本发明将数据块加密密钥放在存储服务器端,即使客户端的数据和密钥丢失,都能保证数据正常恢复正常解密;因此,通过减少交互次数,如以文件为单位,一次或几次完成所有的交互信息,减少链表的访问次数,记录上次访问地址,性能会得到很大的提升。
【专利附图】

【附图说明】
[0068]图1是本发明应用的备份系统的架构图。
[0069]图2是本发明适用于备份系统的安全数据去重方法的备份过程原理图。
[0070]图3是本发明适用于备份系统的安全数据去重方法的恢复过程原理图。
[0071]图4是本发明适用于备份系统的安全数据去重方法的备份流程图。
[0072]图5是本发明适用于备份系统的安全数据去重方法的恢复流程图。
【具体实施方式】
[0073]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0074]本发明主要涉及到3个重要的变量:数据块哈希值F1、数据块指纹F2、数据块哈希值F1的密文E(F1)15使用哈希算法计算每个数据块的哈希值F1来作为数据块的加密密钥,再次使用哈希算法计算每个数据块哈希值F1的哈希值F2作为该数据块的指纹来识别重复数据块,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E (F1)来保护数据块的加密密钥。
[0075]本发明适用于备份系统的安全数据去重方法的基本思路在于,在客户端将待备份数据流分块、求取数据块哈希值F1之后,对数据块哈希值F1再次求取哈希值得到F2,并且将哈希值F2作为该数据块的指纹进行数据去重操作过程。该方法采用的是先去重后加密的策略,客户端将所有数据块指纹F2发送到存储服务器的指纹库中进行查找比对,如果存在说明是重复数据块;如果不存在说明是新数据块,将指纹写入到数据库中。所有数据块指纹对比完毕后,将是否重复的信息记录并发回客户端。客户端根据该信息,对于重复数据块不予发送;对于新的数据块,使用数据块本身的哈希值F1经过处理之后作为密钥,采用高级加密标准(Advanced Encryption Standard,简称AES)算法等经典加密算法对数据块加密,将密文块发送到存储服务器储存。
[0076]为了进行密钥保护,客户端将数据块的哈希值F1 (即数据块加密密钥)使用用户私有的对称密钥加密得到E (F1),将E (F1)发送到存储服务器的文件谱中存储,而用户的私有密钥通过Lockbox机制进行保护,确保密钥的安全性。
[0077]在进行文件恢复时,客户端首先会请求由存储服务器将文件谱从磁盘中读出发送回客户端,客户端接收文件谱,从LockBox中取出用户的私有密钥,对文件谱中的E (F1)解密得到数据块加密密钥F1暂时保存在内存中;同时对解密得到的数据块哈希值F1再次求取哈希值得到数据块指纹F2,将数据块指纹F2发送到存储服务器根据索引查找数据块,将数据块发送到客户端,客户端使用密钥F1对密文块解密,将数据块明文写入文件中,整理后恢复过程结束。
[0078]如图1所示,使用本发明方法的备份系统,主要包含三个部分,即客户端、备份服务器和存储服务器。
[0079]备份服务器主要负责资源调度和元数据管理。资源调度主要是监听备份代理和存储服务器的各项请求,并对收到的请求完成对应的功能,主要包括验证备份代理身份,响应备份代理的服务请求,对备份和恢复文件进行调度,协调存储服务器与备份代理完成文件任务,存储空间分配;元数据管理主要对用户和存储服务器提供的元数据进行组织和管理,如用户名,登录时间,用户备份的索引信息等。
[0080]存储服务器主要完成数据存储和组织。主要是接收客户端传送的指纹,进行指纹匹配完成去重功能并返回查找信息,接收并存储数据块密文和文件谱信息等。如图1所示,存储服务器完成了密钥的存储和管理。
[0081]客户端主要完成备份和恢复申请,备份数据的分块、求哈希、求指纹和数据块加密解密等功能。如图1所示,客户端与存储服务器之间的数据通信采用安全套接层协议(Secure Socket Layer/Transport Layer Security,简称 SSL/TLS)。
[0082]本发明适用于备份系统的安全数据去重方法包括:
[0083]一、备份阶段,如图2和图4所示,其包括以下步骤:
[0084](I)接收用户提交的备份请求,该备份请求包括需要备份的文件名、文件的路径、文件的大小、文件的备份时间等;
[0085](2)对需要备份的每个文件进行分块,以得到多个不同大小的数据块;在本实施方式中,分块采用的是基于Rabin指纹的滑动窗口分块算法;
[0086](3)使用哈希算法计算每个数据块的哈希值F1 ;具体而言,本发明采用的是SHA-1算法计算哈希值,该哈希值用来作为数据块的加密密钥;
[0087](4)再次使用哈希算法计算每个数据块哈希值F1的哈希值F2,并将哈希值F2作为该数据块的指纹来识别重复数据块,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E (F1),从而保护数据块加密密钥F1 ;具体而言,哈希算法采用的是SHA-1方法,经典加密算法采用的是高级加密标准(AdvancedEncryption Standard,简称AES)算法,用户的私有密钥是通过Lockbox机制进行保护;
[0088]本步骤的优点在于,经过两次哈希计算,能快速地获取数据块指纹,加快了数据去重的速度。并且通过Lockbox机制有效地保护用户的私有密钥。
[0089](5)将文件的数据块个数nChunkNum,所有数据块指纹F2等打包成指纹段并记录,顺序将所有指纹段以指纹流的形式发送传输到存储服务器,并发送校验流到存储服务器;具体而言,在传输过程中采用安全套接层协议(Secure Socket Layer/Transport LayerSecurity,简称SSL/TLS),客户端与服务器数据通信包含3种流类型:指纹流,数据流和校验流。
[0090](6)在存储服务器的内存中建立用于记录该文件的数据块是否重复的单链表;
[0091](7)根据指纹段和文件数据块个数nChunkNum在存储服务器端进行数据去重的操作过程;本步骤包括以下子步骤:
[0092](7-1)设置计数器i=l,判断i是否大于nChunkNum。如果是则转入步骤(8),否则转入步骤(7-2);
[0093](7-2)对需要备份的文件的指纹段中的内容进行解析,以得到第i个数据块的数据块指纹F2、数据哈希值F1的密文E (F1)、数据块长度等信息;
[0094](7-3)在存储服务器的指纹库中判断是否可查找到数据块指纹F2,如果可查找到,则表明第i个数据块为重复块,以指纹F2为索引条件直接指向已存在的数据块;反之,则表明第i个数据块是新数据块,根据指纹F2为索引条件设置该新数据块在存储服务器中的存储位置;具体而言,本发明中提到的索引用于数据块的存储和查找。
[0095](7-4)设置计数器i=i+l,建立新结点,将第i个数据块是否重复的信息写入该结点,并将单链表的尾指针指向该结点,并且尾指针后移一位,然后返回步骤(7-1);
[0096](8)在客户端准备备份非重复的数据块,设置计数器j=l,并判断j是否大于nChunkNum,如果是则转步骤(12),否则转步骤(9);
[0097](9)对于第j个数据块,如果其是重复的数据块,则不予发送;如果其是新的数据块,采用文件压缩算法压缩(GNUzip,简称gzip),并以数据块哈希值F1作为第j个数据块的数据块加密密钥,并使用该数据块加密密钥和经典加密算法对第j个数据块加密,得到的密文数据块;具体而言,数据块哈希值F1作为加密密钥需要采用基于口令加密(Passwordbased encryption,简称PBE)的加密策略对安全性进行处理,并对密钥长度进行调整。
[0098]本步骤的优点在于,所有的加密解密过程全部在客户端执行,由此,能够有效地减轻备份服务器和存储服务器的负担。并且只对新的数据块加密,减少了重复加密的负担。
[0099](10)将加密后的密文数据块和数据块哈希值F1的密文E (F1)以数据流的形式发送至存储服务器,并发送校验流到存储服务器,设置j=j+l ;具体而言,在传输过程中采用安全套接层协议(Secure Socket Layer/Transport Layer Security,简称 SSL/TLS)。
[0100]本步骤的优点在于数据和密钥在传输和存储过程中都以密文的形式存在,确保即使敌手获取了传输内容也无法获取加密密钥和数据块明文,传输过程中通信双方需要身份验证,有效保障了数据和密钥的传输和存储安全性,降低了数据丢失和被篡改的概率。
[0101](11)根据步骤(7-3)中指纹F2设置的第j个数据块在存储服务器中的存储位置,保存数据块密文,然后返回步骤(8);
[0102](12)将该单链表发送回客户端,并将所有数据块的数据哈希值F1的密文E (F1)写入到存储服务器的文件谱中;具体而言,文件谱是用于数据恢复时的文件。
[0103](13)释放内存中单链表的数据结构,备份过程结束;
[0104]二、恢复阶段,如图3和图5所示,其包括以下步骤:
[0105](14)接收用户提交的恢复请求;具体而言,该恢复请求包括恢复文件对象、恢复文件名、以及恢复路径等信息,由备份服务器根据文件这些信息等查找到该文件指定的存储服务器。
[0106](15)从存储服务器中查找该恢复文件对应的文件谱,将文件谱中的所有内容包括所有数据块哈希值F1的密文E (F1)、文件名、文件路径等信息读出,并以指纹流的形式发送回客户端;
[0107](16)通过使用LockBox机制取出用户的私有密钥,并对接收到的数据块哈希值F1的密文(E (F1))使用用户的私有密钥进行解密,并将解密得到的数据块哈希值F1以单链表结构保存在内存中;
[0108](17)对数据块哈希值F1使用备份过程中相同的哈希算法再次求取哈希值,以得到数据块指纹F2,并将其发送回存储服务器;具体而言,本发明采用的是SHA-1算法计算哈希值;
[0109](18)根据数据块指纹F2找到数据块,并将数据块发送回客户端;具体而言,根据数据块指纹F2读取恢复文件对应的相似性容器,遍历文件谱中的指纹链表,以找到所有数据块对应的容器的ID,读出容器中相应的密文数据块,并将密文数据块和数据块个数nChunkNum以数据流的形式传输回客户端,并发送校验流到客户端,本发明传输过程采用安全套接层协议(Secure Socket Layer/Transport Layer Security,简称SSL/TLS),相似性容器设置于存储服务器,用于快速查找数据块;
[0110](19)对接收到的数据块进行解密和解压缩处理,并写入文件;本步骤具体包括以下子步骤:
[0111](19-1)设置计数器k=0,判断k是否大于nChunkNum,如果是转步骤(20),否则转步骤(19-2)
[0112](19-2)根据文件谱中包含的文件名、文件路径等信息找到本地磁盘位置创建新文件;
[0113](19-3)调用在内存中保存的数据块哈希值F1,以数据块哈希值F1为数据块解密密钥对第k个数据块进行解密,采用文件压缩算法压缩(GNUz ip,简称gz ip),并将该明文数据块内容写入到文件中,置k=k+l,转步骤(19-1);具体而言,数据块哈希值F1作为加密密钥需要采用基于口令加密(Password Based Encryption,简称PBE)的加密策略对安全性进行处理,并对密钥长度进行调整。
[0114](20)释放内存中保存的数据块哈希值F1的单链表数据结构,恢复过程结束。
[0115]本发明适用于备份系统的安全数据去重系统,是应用在一种备份系统中,该备份系统包括客户端、备份服务器和存储服务器,该安全数据去重系统包括:
[0116]第一模块,其设置于备份服务器中,用于接收用户提交的备份请求;
[0117]第二模块,其设置于客户端中,用于对需要备份的每个文件进行分块,以得到多个不同大小的数据块;
[0118]第三模块,其设置于客户端中,用于使用哈希算法计算每个数据块的哈希值F1来作为数据块的加密密钥;
[0119]第四模块,其设置于客户端中,用于再次使用哈希算法计算每个数据块哈希值F1的哈希值F2,并将哈希值F2作为该数据块的指纹,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E(F0,从而保护数据块加密密钥F1 ;
[0120]第五模块,其设置于客户端中,用于将文件的数据块个数nChunkNum,所有数据块指纹F2等打包成指纹段并记录,顺序将所有指纹段以指纹流的形式发送传输到存储服务器,并发送校验流到存储服务器;
[0121]第六模块,其设置于存储服务器中,用于在存储服务器的内存中建立用于记录该文件的数据块是否重复的单链表;
[0122]第七模块,其设置于存储服务器中,用于根据指纹段和文件数据块个数nChunkNum在存储服务器端进行数据去重的操作过程;
[0123]第八模块,其设置于存储服务器中,用于在客户端准备备份非重复的数据块,设置计数器j=l,并判断j是否大于nChunkNum,如果是则转第十二模块,否则转第九模块;
[0124]第九模块,其设置于存储服务器中,用于对于第j个数据块,如果其是重复的数据块,则不予发送;如果其是新的数据块,采用文件压缩算法压缩,并以数据块哈希值F1作为第j个数据块的数据块加密密钥,并使用该数据块加密密钥和经典加密算法对第j个数据块加密,得到的密文数据块;
[0125]第十模块,其设置于客户端中,用于将加密后的密文数据块和数据块哈希值F1的密文E (F1)以数据流的形式发送至存储服务器,并发送校验流到存储服务器,设置j=j+l ;
[0126]第十一模块,其设置于存储服务器中,用于根据第j个数据块在存储服务器中的存储位置,保存数据块密文,然后返回第八模块;
[0127]第十二模块,其设置于存储服务器中,用于将该单链表发送回客户端,并将所有数据块的数据哈希值F1的密文E (F1)写入到存储服务器的文件谱中;
[0128]第十三模块,其设置于存储服务器中,用于释放内存中单链表的数据结构,备份过程结束;
[0129]第十四模块,其设置于备份服务器中,用于接收用户提交的恢复请求;具体而言,该等信息,由备份服务器根据文件这些信息等查找到该文件指定的存储服务器。
[0130]第十五模块,其设置于存储服务器中,用于从存储服务器中查找该恢复文件对应的文件谱,将文件谱中的所有内容包括所有数据块哈希值Fl的密文E (F1)、文件名、文件路径等信息读出,并以指纹流的形式发送回客户端;
[0131]第十六模块,其设置于客户端中,用于通过使用LockBox机制取出用户的私有密钥,并对接收到的数据块哈希值F1的密文(E (F1))使用用户的私有密钥进行解密,并将解密得到的数据块哈希值F1以单链表结构保存在内存中;
[0132]第十七模块,其设置于客户端中,用于对数据块哈希值F1使用备份过程中相同的哈希算法再次求取哈希值,以得到数据块指纹F2,并将其发送回存储服务器;具体而言,本发明采用的是SHA-1算法计算哈希值;
[0133]第十八模块,其设置于存储服务器中,用于根据数据块指纹F2找到数据块,并将数据块发送回客户端;
[0134]第十九模块,其设置于客户端中,用于对接收到的数据块进行解密和解压缩处理,并与入文件;
[0135]第二十模块,其设置于客户端中,用于释放内存中保存的数据块哈希值F1的单链表数据结构,恢复过程结束。
[0136]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种适用于备份系统的安全数据去重方法,其特征在于,包括: 一、备份阶段,其包括以下步骤: (1)接收用户提交的备份请求; (2)对需要备份的每个文件进行分块,以得到多个不同大小的数据块; (3)使用哈希算法计算每个数据块的哈希值F1来作为数据块加密密钥。 (4)再次使用哈希算法计算每个数据块哈希值F1的哈希值F2,并将哈希值F2作为该数据块的指纹来识别重复数据块,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E (F1),从而保护数据块加密密钥F1 ; (5)将文件的数据块个数nChunkNum,所有数据块指纹F2等打包成指纹段并记录,顺序将所有指纹段以指纹流的形式发送传输到存储服务器,并发送校验流到存储服务器; (6)在存储服务器的内存中建立用于记录该文件的数据块是否重复的单链表; (7)根据指纹段和文件数据块个数nChunkNum在存储服务器端进行数据去重的操作过程; (8)在客户端准备备份非重复的数据块,设置计数器j=l,并判断j是否大于nChunkNum,如果是则转步骤(12),否则转步骤(9); (9)对于第j个数据块,如果其是重复的数据块,则不予发送;如果其是新的数据块,采用文件压缩算法压缩,并以数据块哈希值F1作为第j个数据块的数据块加密密钥,并使用该数据块加密密钥和经典加密算法对第j个数据块加密,得到的密文数据块; (10)将加密后的密文数据块和数据块哈希值F1的密文E(F1)以数据流的形式发送至存储服务器,并发送校验流到存储服务器,设置j=j+l ; (11)根据第j个数据块在存储服务器中的存储位置,保存数据块密文,然后返回步骤(8); (12)将该单链表发送回客户端,并将所有数据块的数据哈希值F1的密文E(F1)写入到存储服务器的文件谱中; (13)释放内存中单链表的数据结构,备份过程结束; 二、恢复阶段,其包括以下步骤: (14)接收用户提交的恢复请求;具体而言,该等信息,由备份服务器根据文件这些信息等查找到该文件指定的存储服务器。 (15)从存储服务器中查找该恢复文件对应的文件谱,将文件谱中的所有内容包括所有数据块哈希值F1的密文E (F1)、文件名、文件路径等信息读出,并以指纹流的形式发送回客户端; (16)通过使用LockBox机制取出用户的私有密钥,并对接收到的数据块哈希值F1的密文(E (F1))使用用户的私有密钥进行解密,并将解密得到的数据块哈希值F1以单链表结构保存在内存中; (17)对数据块哈希值F1使用备份过程中相同的哈希算法再次求取哈希值,以得到数据块指纹F2,并将其发送回存储服务器;具体而言,本发明采用的是SHA-1算法计算哈希值; (18)根据数据块指纹F2找到数据块,并将数据块发送回客户端; (19)对接收到的数据块进行解密和解压缩处理,并写入文件; (20)释放内存中保存的数据块哈希值F1的单链表数据结构,恢复过程结束。
2.根据权利要求1所述的安全数据去重方法,其特征在于,备份请求包括需要备份的文件名、文件的路径、文件的大小、文件的备份时间,恢复请求包括恢复文件对象、恢复文件名、恢复路径。
3.根据权利要求1所述的安全数据去重方法,其特征在于, 哈希算法采用的是SHA-1方法; 经典加密算法采用的是AES算法; 用户的私有密钥是通过Lockbox机制进行保护。
4.根据权利要求1所述的安全数据去重方法,其特征在于,步骤(7)包括以下子步骤: (7-1)设置计数器i=l,判断i是否大于nChunkNum。如果是则转入步骤(8),否则转入步骤(7-2); (7-2)对需要备份的文件的指纹段中的内容进行解析,以得到第i个数据块的数据块指纹F2、数据块长度等信息; (7-3)在存储服务器的指纹库中判断是否可查找到数据块指纹F2,如果可查找到,则表明第i个数据块为重复块,以指纹F2为索引条件直接指向已存在的数据块;反之,则表明第i个数据块是新数据块,根据指纹F2为索引条件设置该新数据块在存储服务器中的存储位置 (7-4)设置计数器i=i+l,建立新结点,将第i个数据块是否重复的信息写入该结点,并将单链表的尾指针指向该结点,并且尾指针后移一位,然后返回步骤(7-1)。
5.根据权利要求1所述的安全数据去重方法,其特征在于,步骤(9)中数据块哈希值F1作为加密密钥采用PBE的加密策略对安全性进行处理,并对密钥长度进行调整。
6.根据权利要求1所述的安全数据去重方法,其特征在于,步骤(18)具体为,根据数据块指纹F2读取恢复文件对应的相似性容器,遍历文件谱中的指纹链表,以找到所有数据块对应的容器的ID,读出容器中相应的密文数据块,并将密文数据块和数据块个数nChunkNum以数据流的形式传输回客户端,并发送校验流到客户端。
7.根据权利要求1所述的安全数据去重方法,其特征在于,步骤(19)包括以下子步骤: (19-1)设置计数器k=0,判断k是否大于nChunkNum,如果是转步骤(20),否则转步骤(19-2); (19-2)根据文件谱中包含的文件名、文件路径等信息找到本地磁盘位置创建新文件;(19-3)调用在内存中保存的数据块哈希值F1,以数据块哈希值F1为数据块解密密钥对第k个数据块进行解密,采用文件压缩算法压缩(GNUzip,简称gzip),并将该明文数据块内容写入到文件中,置k=k+l,转步骤(19-1 )。
8.一种适用于备份系统的安全数据去重系统,其特征在于,包括: 第一模块,用于接收用户提交的备份请求; 第二模块,用于对需要备份的每个文件进行分块,以得到多个不同大小的数据块; 第三模块,用于使用哈希算法计算每个数据块的哈希值F1 ; 第四模块,用于再 次使用哈希算法计算每个数据块哈希值F1的哈希值F2,并将哈希值F2作为该数据块的指纹,并采用经典加密算法使用用户的私钥对数据块的哈希值F1进行加密以得到数据哈希值F1的密文E (F1);第五模块,用于将文件的数据块个数nChunkNum,所有数据块指纹F2等打包成指纹段并记录,顺序将所有指纹段以指纹流的形式发送传输到存储服务器,并发送校验流到存储服务器; 第六模块,用于在存储服务器的内存中建立用于记录该文件的数据块是否重复的单链表; 第七模块,用于根据指纹段和文件数据块个数nChunkNum在存储服务器端进行数据去重的操作过程; 第八模块,用于在客户端准备备份非重复的数据块,设置计数器j=l,并判断j是否大于nChunkNum,如果是则转第十二模块,否则转第九模块; 第九模块,用于对于第j个数据块,如果其是重复的数据块,则不予发送;如果其是新的数据块,采用文件压缩算法压缩,并以数据块哈希值F1作为第j个数据块的数据块加密密钥,并使用该数据块加密密钥和经典加密算法对第j个数据块加密,得到的密文数据块; 第十模块,用于将加密后的密文数据块和数据块哈希值F1的密文E (F1)以数据流的形式发送至存储服务器,并发送校验流到存储服务器,设置j=j+l ; 第十一模块,用于根据第j个数据块在存储服务器中的存储位置,保存数据块密文,然后返回第八模块; 第十二模块,用于将该单链表发送回客户端,并将所有数据块的数据哈希值F1的密文E(F1)写入到存储服务器的文件谱中;` 第十三模块,用于释放内存中单链表的数据结构,备份过程结束; 第十四模块,用于接收用户提交的恢复请求;具体而言,该等信息,由备份服务器根据文件这些信息等查找到该文件指定的存储服务器。 第十五模块,用于从存储服务器中查找该恢复文件对应的文件谱,将文件谱中的所有内容包括所有数据块哈希值F1的密文E (F1)、文件名、文件路径等信息读出,并以指纹流的形式发送回客户端; 第十六模块,用于通过使用LockBox机制取出用户的私有密钥,并对接收到的数据块哈希值F1的密文(E (F1))使用用户的私有密钥进行解密,并将解密得到的数据块哈希值F1以单链表结构保存在内存中; 第十七模块,用于对数据块哈希值F1使用备份过程中相同的哈希算法再次求取哈希值,以得到数据块指纹F2,并将其发送回存储服务器;具体而言,本发明采用的是SHA-1算法计算哈希值; 第十八模块,用于根据数据块指纹F2找到数据块,并将数据块发送回客户端; 第十九模块,用于对接收到的数据块进行解密和解压缩处理,并写入文件; 第二十模块,用于释放内存中保存的数据块哈希值F1的单链表数据结构,恢复过程结束。
【文档编号】H04L9/32GK103530201SQ201310301670
【公开日】2014年1月22日 申请日期:2013年7月17日 优先权日:2013年7月17日
【发明者】冯丹, 周玉坤, 夏文, 付忞, 黄方亭 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1