一种分布式存储环境下的加密副本组织方法

文档序号:7744045阅读:160来源:国知局
专利名称:一种分布式存储环境下的加密副本组织方法
技术领域
本发明属于计算机分布式存储安全领域,具体涉及一种分布式存储系统环境下加密副本的组织方法。该方法通过将用户数据以分块的形式分散到多个存储节点,各个块的 数据被分段进行加密,同时为了提高系统的可用性,每个加密的块在多个存储节点中维护 多个副本,从而保证用户数据的高安全性和高可用性,所有的数据组织信息由单独的元数 据服务器负责维护。
背景技术
加密技术通常用来保证用户数据的机密性,将用户的隐私数据通过某种加密算法 进行加密,用户只需保护加密密钥的安全就能保证隐私数据不被泄露,即使恶意攻击者获 得了数据的密文,也无法得知其原始内容。加密技术在单机存储环境下应用已经非常普遍,有基于应用程序级的加密产品, 基于文件系统级的加密产品,基于磁盘块级的数据产品,还有直接集成加密功能的磁盘产 品,但加密技术在分布式存储环境中的应用还没有成熟的实施方法。近年来,有一些关于分布式存储系统安全性的研究,但主要集中在认证,访问控制 方面,一旦攻击者突破了这一关卡,就能获取所有的用户数据。分布式存储系统通常使用数 据块来组织用户文件数据,数据块是指一定长度的文件数据的集合,通常为了减少客户端 与服务器的交互次数,数据块的长度一般较大。一些分布式存储系统以数据块为单位对数 据进行加密,当用户请求的数据属于这个数据块时,这个数据块就需要整块的被加解密,而 很多加密的模式又不利于并行计算,故加解密开销很大,并且当恶意攻击者毁坏某个数据 块时,整个文件的数据也随着被破坏,这种方式不利于系统的扩展,且文件数据的可用性很 低。副本技术指在分布式存储系统多个地理位置分散的位置维护某一数据的完全拷 贝,从而当某一份数据被毁坏时,系统仍然能从数据的其它副本来获取到正确的数据,从而 提高系统的可用性,解决恶意用户破坏某一部分数据就导致整个文件数据不可恢复。一些研究者将加密技术与副本技术进行结合,对系统文件的数据块进行加密,并 将加密的数据备份到近线或离线的备份服务器,这种方法提高了数据的安全性和可用性, 但在系统某些数据遭到破坏时,备份的数据不能立即投入使用,需要从备份服务器进行迁 移,从而导致系统不能保证及时的应用服务。

发明内容
为了弥补现有分布式存储系统中数据安全性保护的不足,本发明提出一种分布式 存储系统中加密副本的组织方法,该方法可以避免小数据量的读写就对整个块的数据进行 加解密带来的巨大开销,同时也可提高大数据量的读请求的效率。本发明提供的一种分布式存储环境下的加密副本组织方法,其特征在于,该方法 包括写请求中组织副本的过程(Al) (A7)
(Al)元数据服务器收客户端的写请求,包含文件名、写请求的起始位置0和写请 求长度L;(A2)令M为(0+L)和原始文件的长度中的较大值,检查原始文件已有存储空间是否大于等于M,如果是,将已有存储空间用于存储待写入的数据,否则,元数据服务器读取管 理员的配置信息或使用默认值,确定文件副本个数R、分块大小B、分段大小S和加密算法类 型;元数据服务器根据存储节点总负载,选取R个负载最小的存储节点作为新的存储空间, 将已有存储空间用于存储待写入的数据的前一部分,新的存储空间用于存储写入的数据的 剩余数据,共计R个存储节点;将写请求需要的相关的数据包括分块大小B,分段大小S,加密算法类型以安全的 方式返回给客户端;(A3)客户端计算出写请求起始位置所在的块号0/B,计算出写请求在数据块内起 始位置Pl及结束位置P2;(A4)判断起始位置Pl和结束位置P2是否在段的边界,如果是,转入步骤(A5),否 贝U,起始位置Pl或结束位置P2在某个段的中间,则读取该段原来的信息,并解密,进入步骤 (A5);(A5)将该块内待写的数据进行分段加密,并写入到R个存储节点;(A6)如果是第一次执行到该步骤,并且写请求结束位置与起始位置不在同一个块 内,则计算出写请求在第二个块内的起始位置Pl和结束位置P2,然后转到步骤(A4);否则, 转到步骤(A7);(A7)客户端向元数据服务器发送写请求完成反馈信息,元数据服务器根据系统配 置信息以及文件请求信息填充文件元数据信息。读取上述过程中所形成的加密副本(Bi)元数据服务器接收客户端的读请求,包含文件名,读请求起始位置0,读请求 长度L;(B2)令W为待读文件长度,检查0是否超过待读文件的大小,如果超过,则转入步 骤(B8),否则进入步骤(B3);(B3)检查0+L是否超过待读文件的大小,如果是,令L = ff-Ο,将读请求的结束位 置修改为待读文件的位置,否则,将0+L作为读请求的结束位置;元数据服务器根据待读文件的元数据信息,将读请求需要的相关的数据包括文件 基本属性、分块大小B,分段大小S,加密算法类型以安全的方式返回给客户端;(B4)客户端计算出起始位置所在的块号0/B,计算出读请求在数据块内起始位置 P3及结束位置P4 ;(B5)客户端首先将需要读取的段分成R个组,每个组包含的段数尽量相等;然后 客户端向R个维护该块副本的存储节点同时发送请求,并行读取R个组的数据;(B6)客户端获取所有需要段的数据后,对这些段的数据进行分别解密,并将P3, P4范围之外的数据丢弃,即得到所要读取的实际数据;(B7)如果第一次执行到该步骤,并且读请求结束位置与起始位置不在一个块内, 则计算出读请求在第二个块内的起始位置P3和结束位置P4,然后转到步骤(B5);否则,转 到步骤(B8);
(B8)客户端向元数据服务器发送读请求完成或者请求超出范围的反馈信息。本发明方法提出一种新的加密副本组织方法,将系统数据的管理单位数据块分成 多个大小相等数据段,系统仍以块为单位进行管理,客户端以段为单位对数据进行加密,这 样就能对数据块提供更细粒度的控制,且避免了小量的读写就对整个数据块进行加解密带 来的巨大开销;对大的读请求,可将读请求进行分组,将不同的分组请求并行的发送到维护 着请求文件数据块副本的各个存储节点,并行读取各个分组,从而极大的提高读数据的效 率。


图1为存储节点管理结构示意图;图2为文件元数据结构示意图;图3为加密副本组织示意图;图4为加密副本的生成过程示意图;图5为加密副本的提取过程示意图;图6为客户端写请求处理流程图;图7为客户端读请求处理流程图。
具体实施例方式在大规模存储系统中,数据量通常是巨大的,大量的数据通过元数据来组织和管 理,元数据是描述其他数据的信息,即数据的数据。本发明的应用环境为典型的分布式存储系统环境,其由客户端,元数据服务器,存 储节点三个部分组成,其中元数据服务器主要负责存储节点的文件元信息管理,用户信息 管理,文件分块信息管理,系统安全信息,副本信息的管理,存储节点负载均衡管理等;存储 节点作为数据的存储仓库,存储系统中文件的实际数据;客户端负责为用户提供一个透明 的存储系统访问接口,以为用户提供系统服务。下面结合附图和实例对本发明作进一步详细的说明。元数据服务器针对客户端的请求,按存储节点的负载情况来分配新的存储节点给 客户端,存储节点通过动态的给元数据服务器发送负载信息以让元数据服务器能及时获知 其负载情况,元数据服务器按照负载由小到大维护一个存储节点信息链,如图1所示,存储 节点信息主要包括以下字段存储节点IP地址,存储节点管理数据块数,存储节点总负载, CPC负载及权值,存储负载及权值,网络负载及权值等信息,其中CPU负载,存储负载,网络 负载所占的权重默认设置为网络负载权重为0. 3,存储负载权重为0. 4,CPU负载权重为 0.3,可由系统管理员根据系统需求进行动态配置,即将权重值写入相应的配置文件,要求 三个权重值都在0 1范围内,并且三者的总和为1,存储节点在计算总负载时读取配置文 件获取这些值。每次客户端需要请求新的数据块进行写操作时,元数据服务器选择存储节点信息 链中链头的多个存储节点即可,随着系统的不断运行,存储节点的负载会动态更新,通过该 方法可有效的实现系统负载均衡。客户端的写请求完成后,元数据服务器对所写的文件会生成如图2所示的文件元数据信息。文件元数据信息包括下述字段文件名、文件名MD5值、文件基本属性、分块数、 分块大小、分段大小、加密算法类型、加密密钥、文件副本个数和副本位置链。其中部分信息 可由系统管理员进行配置,如分块大小,默认设置为8MB,该值根据不同的应用需求应设置 为8-64MB范围内,以保证对于任意读写请求,请求最多涉及到两个数据块,从而简化对客 户端读写请求的处理;分段大小,默认值设置为4KB,应设置在1-16KB范围内;加密算法类 型,默认使用AES算法,可配置的加密算法包括DES,AES, BlowFish算法;文件副本个数,默 认维护3个副本,副本个数应设置在1-5范围内;这些值由管理员在系统启动前写入相应配 置文件,当元数据服务器需要时从配置文件读取。其他的信息包括文件名,文件名MD5值, 文件基本属性,分块数,副本位置链等则是在用户的写请求下生成,并随着文件的改变而动 态变化。当客户端发来读请求时,元数据服务器则根据该结构来提供请求文件的相关信息, 从而满足客户端的请求。本发明对系统的加密副本进行分段组织,并提出在该组织情形下读写的改进方法。加密副本最终在存储节点中的组织形式如图3所示,每个文件的数据按照配置的数据 块的大小分成多个数据块,数据块是元数据管理的单位。对于每个数据块,将其分为多个数 据段,段作为数据加密的单位,客户端对各个数据段分别进行加密,使得各个段之间的数据 不具有相关性,即各个段的数据能并行的加解密,这样有利于并行处理,从而提高系统的效 率。该方式相比传统针对整块数据的加密,仅仅需要额外记录分段的相关信息,不会给元数 据服务器增加很大的负担。加密副本的生成决定于客户端的写请求,下面针对客户端写文件时加密副本的生 成过程作详细的说明。写文件时加密副本的生成及组织主要包括以下步骤(Al)元数据服务器收到客户端的写请求,包含文件名,写请求的起始位置0(新建 文件时起始位置为0),写请求长度L。(A2)令T为(0+L)和文件原始长度中的较大值,检查待写文件已有存储空间是否 大于等于T,如果是,将已有存储空间用于存储待写入的数据,否则,为该文件分配新的存储 空间,将已有存储空间用于存储待写入的数据的前一部分,新的存储空间用于存储写入的 数据的剩余数据;分配新的存储空间时需要寻找新的存储节点,元数据服务器根据存储节点总负 载,选取R个负载最小的存储节点来存储R个副本,其中R代表文件副本个数,是文件元数 据信息的一个字段。元数据服务器根据管理员的配置信息,将写请求需要的相关的数据包括分块大小 B,分段大小S,加密算法类型以安全的方式返回给客户端。(A3)客户端计算出写请求起始位置所在的块号0/B,计算出写请求在数据块内起 始位置Pl及结束位置P2,Pl等于0除以B的余数,P2等于(P1+L)除以B的余数。(A4)P1,P2为写请求在块内的起始和结束位置,首先需要计算Pl,P2是否在段的 边界,可通过使用段大小S去除位置P1,P2,如果能整除,则该说明位置刚好在段的边界,即 该位置所在的段完全覆盖;否则,该位置在某个段的中间,即该段被部分覆盖。因为数据以 段为单位的密文方式存储,故对于被部分覆盖的段,整个段不是完全被新的加密数据覆盖, 故在更新这些段的数据之前,需要读取该段原来的信息,并解密,然后修改部分数据,再重 新加密。Pl/S,P2/S为写请求在块内的起始和结束位置所在的段号。
如图4所示,Pl在段Sl的中间,P2在段S3的中间,则更新Pl与P2之间的数据(对于超过原来文件大小范围的数据,原来的数据被认为是0组成的序列),需要先读取Si, S3两个段的数据。Pl将段Sl分成Sl-I及S1-2两个部分,P2将S3分成S3_l,S3-2两个 部分。客户端需要分配3个段大小的缓冲区来存储新的数据,缓冲区的数据依次包含Sl-I 部分的数据,请求写入的数据,S3-2部分的数据。(A5)客户端对缓冲区进行分段加密,并将加密后的多个密文段写入到相应的R个 存储节点,从而产生该部分数据的R个副本;当Pl和P2都在段的边界时,则不需要读取原 来的数据;当P1,P2有一个位置在某个段的中间,则需要读取该段的数据。即写请求最多需 要读取两个段的数据,相比传统对整个块进行加密的方式效率上有很大的提高。(A6)如果是第一次执行到该步骤,并且写请求结束位置与起始位置不在同一个块 内,则计算出写请求在第二个块内的起始位置Pl和结束位置P2,Pl等于0,P2等于(0+L) 除以B的余数,然后转到(A4);否则,转到(A7)。(A7)客户端的写请求的内容已经写到了各个存储节点,存储节点中各个块的数据 也按照本发明中提出的加密副本组织方式存储,客户端向元数据服务器发送写请求完成反 馈信息,元数据服务器根据系统配置信息以及文件请求信息填充文件元数据信息。客户端的读请求提取加密副本中的数据,因数据存在多个副本,并且是分段加密, 则可将读请求分成多个组,组数等于文件副本数,每个组包含数目尽量相等的段,客户端并 行的到多个存储节点读取各个组,从而提高读请求的效率。客户端读请求的处理主要包括 以下步骤(Bi)元数据服务器接收客户端的读请求,包含文件名,读请求起始位置0,读请求 长度L;(B2)令W为待读文件长度,检查0是否超过待读文件的大小,如果超过,则转入步 骤(B8),否则进入步骤(B3);(B3)检查0+L是否超过待读文件的大小,如果是,令L = ff-Ο,将读请求的结束位 置修改为待读文件的位置,否则,将0+L作为读请求的结束位置;元数据服务器根据待读文件的元数据信息,将读请求需要的相关的数据包括文件 基本属性、分块大小B,分段大小S,加密算法类型以安全的方式返回给客户端;(B4)客户端计算出起始位置所在的块号0/B,计算出读请求在数据块内起始位置 P3及结束位置P4,P3等于0除以B的余数,P4等于(P3+L)除以B的余数;(B5)如图5所示,P3,P4为读请求在块内的起始位置和结束位置,客户端需要读取 P3,P4所跨越的所有段Tl,T2,T3。客户端首先将需要读取的段分成R个组,每个组包含的 段数尽量相等。然后客户端向R个维护该块副本的存储节点同时发送请求,并行读取R个 组的数据,从而提高读的效率;(B6)客户端获取所有需要段的数据后,对这些段的数据进行分别解密,并将P3, P4范围之外的数据丢弃,即得到所要读取的实际数据。(B7)如果第一次执行到该步骤,并且读请求结束位置与起始位置不在一个块内, 则计算出读请求在第二个块内的起始位置P3和结束位置P4,P3等于0,P4等于(0+L)除以 B的余数,然后转到(B5);否则,转到(B7);(B8)客户端向元数据服务器发送读请求完成或者请求超出范围的反馈信息。
本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据实施例和附图公开的内容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
一种分布式存储环境下的加密副本组织方法,其特征在于该方法的写请求中组织副本的过程为(A1)元数据服务器收到客户端的写请求,包含文件名、写请求的起始位置O和写请求长度L;(A2)令T为(O+L)和原始文件的长度中的较大值,检查原始文件已有存储空间是否大于等于T,如果是,将已有存储空间用于存储待写入的数据,否则,元数据服务器读取管理员的配置信息或使用默认值,确定文件副本个数R、分块大小B、分段大小S和加密算法类型;元数据服务器根据存储节点总负载,选取R个负载最小的存储节点作为新的存储空间,将已有存储空间用于存储待写入的数据的前一部分,新的存储空间用于存储写入的数据的剩余数据,共计R个存储节点;将写请求需要的相关的数据包括分块大小B,分段大小S,加密算法类型以安全的方式返回给客户端;(A3)客户端计算出写请求起始位置所在的块号O/B,计算出写请求在数据块内起始位置P1及结束位置P2;(A4)判断起始位置P1和结束位置P2是否在段的边界,如果是,转入步骤(A5),否则,起始位置P1或结束位置P2在某个段的中间,读取该段原来的信息,并解密,进入步骤(A5);(A5)将该块内待写的数据进行分段加密,并写入到R个存储节点;(A6)如果是第一次执行到该步骤,并且写请求结束位置与起始位置不在同一个块内,则计算出写请求在第二个块内的起始位置P1和结束位置P2,然后转到步骤(A4);否则,转到步骤(A7);(A7)客户端向元数据服务器发送写请求完成反馈信息,元数据服务器根据系统配置信息以及文件请求信息填充文件元数据信息。
2.根据权利要求1所述的加密副本组织方法,其特征在于按照下述过程读取所形成 的加密副本(Bi)元数据服务器接收客户端的读请求,包含文件名,读请求起始位置0,读请求长度L;(B2)令W为待读文件长度,检查0是否超过待读文件的大小,如果超过,则转入步骤 (B8),否则进入步骤(B3);(B3)检查0+L是否超过待读文件的大小,如果是,令L = W-0,将读请求的结束位置修 改为待读文件的位置,否则,将0+L作为读请求的结束位置;元数据服务器根据待读文件的元数据信息,将读请求需要的相关的数据包括文件基本 属性、分块大小B,分段大小S,加密算法类型以安全的方式返回给客户端;(B4)客户端计算出起始位置所在的块号0/B,计算出读请求在数据块内起始位置P3及 结束位置P4 ;(B5)客户端首先将需要读取的段分成R个组,每个组包含的段数尽量相等;然后客户 端向R个维护该块副本的存储节点同时发送请求,并行读取R个组的数据;(B6)客户端获取所有需要段的数据后,对这些段的数据进行分别解密,并将P3,P4范 围之外的数据丢弃,即得到所要读取的实际数据;(B7)如果第一次执行到该步骤,并且读请求结束位置与起始位置不在一个块内,则计算出读请求在第二个块内的起始位置P3和结束位置P4,然后转到步骤(B5);否则,转到步 骤(B8);(B8)客户端向元数据服务器发送读请求完成或者请求超出范围的反馈信息。
全文摘要
本发明公开了一种分布式存储环境下的加密副本组织方法,该方法将系统数据的管理单位数据块分成多个大小相等数据段,系统仍以块为单位进行管理,客户端以数据段为单位对数据进行加密,这样就能对数据块提供更细粒度的控制。由于数据块是被分段加密的,故各个密文数据段之间不具有相关性,可以被并行的加解密,避免了小数据量的读写就对整个数据块进行加解密带来的巨大开销;对于大数据量的读,将读请求进行分组,将不同的分组请求并行的发送到维护着被请求文件数据块副本的各个存储节点,并行读取各个分组,提高读数据的效率。本发明实现了在分布式存储环境下应用加密技术和副本技术,所提出的加密副本组织方法极大的提高了读写数据的效率。
文档编号H04L29/06GK101808095SQ201010128240
公开日2010年8月18日 申请日期2010年3月22日 优先权日2010年3月22日
发明者张友东, 方允福, 曹强, 谢长生, 黄建忠 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1