分级内容可寻址存储系统中的块级客户端侧加密的制作方法

文档序号:6620973阅读:191来源:国知局
分级内容可寻址存储系统中的块级客户端侧加密的制作方法
【专利摘要】本发明涉及分级内容可寻址存储系统中的块级客户端侧加密。提供用于块级客户端侧加密的技术。在内容可寻址存储系统中,多个块被用于实施分级文件系统。该分级文件系统支持加密卷和未加密卷两者。文件夹和文件系统直接调用块系统层,以用于涉及非加密卷的操作。文件夹和文件层调用卷加密层,以用于涉及加密卷的操作。卷加密层通过API接收来自文件夹和文件层的调用,所述API匹配所述块系统层通过其接收来自所述文件夹和文件层的调用的API。
【专利说明】分级内容可寻址存储系统中的块级客户端侧加密
[0001]相关申请的交叉引用
[0002]本申请要求于2013年7月22日提交的申请号为13/947,409的美国专利的优先权,其全部内容结合于此作为参考。

【技术领域】
[0003]本发明涉及存储系统,更具体地,涉及分级内容可寻址存储系统中的块级客户端侧加密的技术。

【背景技术】
[0004]用于访问所存储的数字项目的信息在本文被称为所存储项目的“访问密钥”。在典型的文件系统中,所存储的项目基于(a)所述项目被存储的位置,以及(b)所述项目的名称或识别符而被检索。例如,如果名为“fo0.txt”的文件位于名为“c:\myfiles\text”的目录中,那么应用程序可以利用路径名“c:\myfiles\text\fo0.txt”作为访问密钥以从文件系统检索文件。因为常规的访问密钥是基于被检索项目的位置,所以当所述项目被移动时,访问密钥改变。此外,项目的每个副本具有不同的访问密钥,这是因为每个副本被存储在不同的位置。
[0005]与常规文件系统相比,内容可寻址存储(CAS)系统允许应用程序基于从项目内容生成的散列值从存储器检索项目。因为CAS系统基于为所述项目生成的散列值对所述项目执行存储相关的操作,并且所述散列值是基于项目的内容而不是项目存储在什么位置,请求操作的应用程序可以如此操作,而不需要知道项目存储副本的数量或位置。例如,CAS系统可以在位置A、B和C存储项目X的多个副本。期望检索项目X的应用程序将通过向CAS系统发送基于项目X的内容的散列值来这样做。基于该散列值,CAS系统将向该应用程序提供从位置A、B和C中的一个位置检索的项目X的副本。因此,应用程序将获得项目X,而不需要知道项目X实际存储的位置,存在多少项目X的副本,或实际获得所检索副本的特定位置。
[0006]存储数字项目,例如文件或消息,涉及对“块存储系统”进行一个或多个调用。块存储系统是执行存储操作而不需要理解数字信号自身的格式或内容的存储系统。这样的存储系统被称为块存储系统,是因为该系统处理所有形式的数字项目,好像这些项目仅仅是不透明的数据块。例如,相同的块存储系统可以被文字处理应用程序、图像管理应用程序和日历系统利用,以分别存储文档、图像和约会。不过,从块存储系统方面来说,只有一种项目类型被存储:不透明的数字块。
[0007]块存储系统可以被实施为CAS系统。例如,块存储系统可以通过向该块应用加密散列函数(例如,MD5、SHA-1或SHA2),生成该块的散列值。接着,该块存储可以存储所述块,并保持将散列值与块被存储的位置关联的索引。
[0008]当应用程序随后请求该块的检索时,该应用程序向该存储系统提供散列值。块存储系统利用索引定位与散列值关联的块,并将因此定位的块提供至请求的应用程序。
[0009]块可以用于表示文件系统分级结构,其中,一些块对应于文件系统分级结构的文件夹/目录,而其他块对应于存储在这些文件夹/目录中的文件。对于分级结构内的任何给定的块或属于多个树的块的子树,也是可能的。
[0010]加密用于保护数据和/或元数据。在实施为CAS系统的块存储系统中,一个方案是在块存储服务器上执行加密操作。不过,成功的攻击会暴露存储在块存储服务器中的所有数据。而且,这样的方案会引起潜在地重大的修改和/或开销以配置服务器执行加密和解密操作。
[0011]在该部分中描述的方法是可以实行的方法,但不见得是之前已经构想或实行的方案。因此,除非另有说明,否则不应该认为由于在该部分中描述的任何方法包含在该部分中而作为现有技术。


【发明内容】

[0012]提供了用于块级客户端侧加密的技术。根据本发明的一个方面,提供了一种方法,包括:在内容可寻址存储系统中,利用多个块来实施分级文件系统;支持所述分级文件系统中的加密卷和非加密卷两者;其中,支持加密卷和非加密卷两者包括:使得文件夹和文件层直接调用块系统层,以用于涉及非加密卷的操作;以及使得所述文件夹和文件层调用卷加密层,以用于涉及加密卷的操作,其中,所述卷加密层通过API接收来自所述文件夹和文件层的调用,所述API匹配所述块系统层通过其接收来自所述文件夹和文件层的调用的API。

【专利附图】

【附图说明】
[0013]在附图中:
[0014]图1示出用于分级内容可寻址存储系统中的块级客户端侧加密的系统实施例的框图;
[0015]图2A示出对应于加密卷的散列树的实施例的框图;
[0016]图2B示出卷状态的框图;
[0017]图3示出用于获得块树的根散列以访问加密卷的方法实施例的流程图;
[0018]图4示出获得指定块的获取操作方法的实施例的流程图;
[0019]图5示出将指定块添加到加密卷的存放操作(put operat1n)方法的实施例的流程图;
[0020]图6示出一个或多个实施例可以在其上实施的计算机系统。

【具体实施方式】
[0021]在下列【具体实施方式】中,为了说明的目的,阐述了很多具体细节以便提供对本发明的透彻理解。然而,显而易见的是,本发明可以在没有这些具体细节的情况下被实践。在其他情况下,已知的结构和装置以框图的形式示出,以避免使本发明不必要地晦涩难懂。
[0022]总体概述
[0023]提供了用于块级客户端侧加密的技术。在内容可寻址存储系统中,多个块被用于实施分级文件系统。该分级文件系统可以被配置为支持加密卷和未加密卷两者种。文件夹和文件系统直接调用块系统层,以用于涉及未加密卷的操作。文件夹和文件层调用卷加密层,以用于涉及加密卷的操作。卷加密层通过API接收来自文件夹和文件层的调用,所述API匹配块系统层通过其从文件夹和文件层接收调用的API。
[0024]对于给定的加密卷,数据保护在块级执行。在一个实施例中,加密的卷包括存储在散列树中的多个块。通过利用一个或多个授权和密钥分配方案,可以访问和/或共享加密的卷。
[0025]如本文所利用的,下面的符号指的是:
[0026].E (K, M)-利用密钥K的数据M的加密;
[0027].D (K, N)-利用密钥K的密文数据N的解密;
[0028].h (X)-数据X的单程散列;
[0029].CK-块密钥(用于加密块的密钥);
[0030].VK-卷密钥(用于加密与特定卷相关的数据的密钥);
[0031].ID(VK)-卷密钥VK的识别符;
[0032].VS-卷状态;
[0033].VID-卷识别符;
[0034].KE -与实体E关联的密钥;
[0035].RC -加密卷的根块;以及
[0036].CCT-块C的明文块数据;以及
[0037].CE-块C的加密块数据;CE相当于E (K,CCT),其中,K基于应用于块C的加密方案而确定。
[0038]系统概述
[0039]图1示出用于块级客户端侧加密的系统的实施例的框图。该块级客户端侧加密可以在一个或多个分级内容可寻址存储系统中实施。卷管理系统100被配置为实施一个或多个加密卷的加密、存储和访问。在一个实施例中,卷管理系统100还被配置为实施一个或多个未加密卷的存储和访问。
[0040]卷管理系统100包括一个或多个文件系统客户端102-106、块存储服务器(chunkstore server) 122以及名称表服务器124。卷管理系统100的这些组件中的每个组件将在后文中更详细描述。
[0041]文件系统客户端
[0042]文件系统客户端102-106通常表示被配置为存储和访问利用块存储服务器122实施的文件系统中的文件的实体。因此,文件系统客户端102-106可以对应于个人用户、应用程序、用户组、系统、服务或利用文件系统的任何其他实体类型。当在加密卷上存储文件时,文件系统客户端102-106执行由块存储服务器122存储的块数据的加密和解密。在一个实施例中,文件系统客户端102-106包含在用于一个或多个加密卷的一个或多个密钥管理方案的实施中。
[0043]文件系统客户端102-106中的每个客户在拥有在用于加密卷的密钥关系方案下授权的一个或多个加密密钥时,被授权访问加密卷。对于所有的加密卷,卷管理系统100可以实施相同的密钥管理方案。可供选择地或另外,不同的加密卷可以具有不同的密钥管理方案。
[0044]文件系统客户端102-106被配置为访问由块存储服务器122存储的一个或多个加密卷。用于说明目的,文件系统客户端106的内部功能单元被详细示出。虽然未单独示出,文件系统客户端102和104可以具有相同或类似的组件。
[0045]如图所示,文件系统客户端106包括文件夹和文档层108、卷加密层112、块系统客户端116,以及名称表客户端120。文件系统客户端106可以被配置为访问加密卷和未加密卷两者。在一个实施例中,文件系统客户端106通过文件夹和文档层108访问由块存储服务器122存储的卷。用户和应用程序可以通过文件夹和文档层108访问远端存储的卷。在一个实施例中,文件夹和文档层108表示作为传统分级文件系统中的一组文件夹和文档而从块存储服务器122获得的卷。
[0046]名称表客户端120被配置与名称表服务器124通信。例如,名称表客户段120可以与名称表服务器124通信,以获得加密卷的序列化卷状态的散列。在一个实施例中,名称表客户端120与名称表服务器124通信,以更新序列化卷状态信息。
[0047]卷加密层112可以调用名称表客户端120的接口。在一个实施例中,名称表客户端120是卷加密层112的集成组件。卷加密层112在下文更详细地描述。
[0048]块存储服务器
[0049]块存储服务器122是被配置为存储多个块的内容可寻址存储系统。虽然只示出单个块,块存储服务器122可以包括任何数量的服务器、数据存储器、网络或适合实施数据存储系统的任何其他组件。在一个实施例中,块存储服务器122是云服务器。在一个实施例中,块存储服务器122被配置为通过一个或多个网络126与文件系统客户端106通信。
[0050]块存储服务器122被配置为存储利用基于块内容的访问密钥可访问的块。该访问密钥可以是块数据的散列。例如,h(Cct)是用于访问由块存储服务器122存储的明文块的访问密钥,而h(CE)是用于访问由块存储服务器122存储的加密块的访问密钥。在一个实施例中,散列函数是不可变的散列函数。即,给定块的散列函数的应用程序总是产生相同的访问密钥。可以用于生成访问密钥的散列函数的实例包括但不限于MD5、SHA-1和SHA-2。
[0051]卷加密层
[0052]加密卷中的数据保护可以利用卷加密层112实施。卷加密层112处理加密、解密、密钥管理的潜在一个或多个方面以及与加密卷的安全相关的其他功能。在一个实施例中,卷加密层112被配置为通过块系统客户端116的接口 114访问块存储服务器122。
[0053]卷加密层112可以调用块系统客户端116以与块存储服务器122通信。在这种配置下,为了访问未加密卷,文件夹和文档层108通过接口 114调用块系统客户段116。为了访问加密卷,文件夹和文档层108通过接口 114调用卷加密层112,从而通过接口 114调用块系统客户端116。
[0054]卷加密层112通过接口 114调用块系统客户端116,以与块存储服务器122通信。在卷加密层112与块系统客户端116之间传输的块是加密块。例如,如果卷加密层112执行获取操作,块系统客户端116返回在卷加密层112处解密的加密块。如果卷加密层112执行存放操作,卷加密层112向块系统客户端116传输已加密的块。
[0055]块系统客户端
[0056]块系统客户端Il6被配置为与块存储服务器122通信,以访问由块存储服务器122存储的块数据,所述块数据包括加密块和未加密块。块系统客户端116可以是被配置为访问未加密卷的现有客户。在一个实施例中,块系统客户端116被配置通过一个或多个网络126与块存储服务器122通信。在一个实施例中,块系统客户端116不处理加密、解密、密钥管理或与加密卷的安全相关的其他功能。而是,这些功能由卷加密层112处理。
[0057]名称表服务器
[0058]在一个实施例中,卷管理系统100进一步包括名称表服务器124。名称表服务器124被配置为存储加密卷的卷识别符与卷状态数据之间的映射。该映射可以被序列化和/或作为一个或多个加密块被存储在相同的块存储器中。名称表服务器124在卷管理系统100中作为块概念性地示出,名称表服务器可以部分和/或全部集成到块存储服务器122中。在一个实施例中,名称表服务器124被配置为保持将加密卷的卷识别符映射到其序列化卷状态数据的散列的名称到散列的映射。序列化卷状态数据的散列可以被用于从块存储器获得包含序列化卷状态数据的存储块,其中,所述块存储器可以是与块存储服务器122相同的块存储器或不同的块存储器。在一个实施例中,名称表服务器124被配置为通过一个或多个网络126与文件系统客户端106通信。
[0059]示例性接口
[0060]对于涉及存储在加密卷上的数据的操作,文件夹和文档层108调用卷加密层112的接口 110。对于涉及存储在未加密卷上的数据的操作,文件夹和文档层108调用块系统客户端116的接口 114。
[0061]在一个实施例中,接口 110和接口 104暴露通用的接口,从而允许加密的卷支持对文件夹和文档层108的最小更改。例如,在一个实施例中,块系统层接口 114和卷加密层接口 110支持下列调用:
[0062]获取(卷,访问密钥)-请求检索与指定访问密钥关联的块;
[0063]存放(卷,内容)-请求作为块存储指定内容;
[0064]用于说明的目的,对块系统层接口 114的“获取”调用应被标示为Chunk_St0re_get O调用,而对加密层接口 110的“获取”调用应被标示为encrypted_volume_get()调用。同样,对块系统层接口 114的“存放”调用应被标示为chunk_store_put()调用,而对加密层接口 110的“存放”调用应被标示为encrypted_volume_put()调用。
[0065]这些仅是可以通过块系统层接口 114和/或卷加密层接口 110调用的函数类型的实例。本文所述的技术并不限于具体参数的任何特定函数。
[0066]对于属于未加密卷的数据,文件夹和文档层108直接调用接口 114。对于属于加密卷的数据,卷加密层112用作文件夹和文档层108与块系统客户端116之间的“中间人”。
[0067]例如,对于涉及未加密数据的存放操作,文件夹和文档层108用未加密的块数据调用chunk_store_put。对于涉及加密卷的存放操作,文件夹和文档层108还用未加密的块数据调用encrypted_volume_put。响应于该调用,卷加密层112加密该块数据,接着用加密的块数据调用chunk_store_put。
[0068]对于涉及未加密数据的获取操作,文件夹和文档层108用未加密的块数据的散列调用chunk_store_get。对于涉及加密卷的存放操作,文件夹和文档层108还用未加密的块数据的散列调用encrypted_volume_put。响应于该调用,卷加密层112确定加密块数据的散列,并接着用加密的块数据的散列调用chunk_store_put。
[0069]因此,如这些实例所示,文件夹和文档层108仅需要处理未加密的要素(未加密数据块和未加密数据块的散列),甚至当处理存储在加密卷上的数据时。
[0070]卷散列树
[0071]块可以用于表示卷的文件系统分级结构(file system hierarchy),其中,一些块对应于文件系统分级结构的文件夹/目录,而其他块对应于存储在这些文件夹/目录中的文件。图2A示出对应于加密卷的散列树的实施例的框图。在图2中示出的分级关系没有重叠树。然而,对于分级结构中的任何给定的块或属于多个树的块的子树,也是可能的。本文所述的技术也同样适用于像表示非重叠树的块存储器那样的表示这样的分级结构的块存储器。
[0072]卷200被表示为包括以反映存储在卷200中的文件之间的分级关系的方式设置的块的树。文档212-218由该树内的叶节点表示。例如,在分级结构中,文件B驻留于作为目录“D0CS”的子目录的目录“PPTS”中,目录“D0CS”是目录“JACK”的子目录,目录“JACK”是Jack的账户的根目录。因此,与文件B相对应的块218被示为与目录“PPTS”相对应的块206的子目录。类似地,块206被示为与目录“D0CS”相对应的块204的子目录,以及块204被示为与根目录“JACK”相对应的块202的子目录。块202是对应于卷200的树的根块。
[0073]当块是卷的散列树的非叶块时,该块可以包括识别一个或多个子块的数据。例如,在内容可寻址存储系统中,该非叶块可以包括可用于定位一个或多个子块的内容信息。例如,该非叶块可以包括每个子块的散列,即用于每个子块的h(CCT)。在加密卷中,该子块是加密的块,并且非叶块包括加密子块的散列,即h(CE)或可以用于获得h(CE)的其他信息。在一个实施例中,非叶块包括用于加密子块的h(CCT),其可以由卷加密层112映射到h(CE)。
[0074]尽管树中的块的设置反映了块所对应的文件之间的分级关系,但是块存储器内的块的实际设置可以和分级结构没有关系。例如,块可以被随机分配在几个存储装置中。因此,对应于卷200的树仅便于本文所述技术的理解。
[0075]当文件系统分级结构利用块存储器实施时,单个文件的添加或更改有必要改变在该分级结构中在文件之上的每个文件。具体地,因为文件通过基于内容寻址的块实施,单个文件的更改引起在分级结构中的文件之上的每个文件的新块的产生。
[0076]例如,假设用户更新文件B。因为对文件B的更新改变了块的内容,而块基于内容被寻址,新的块不是被简单地存储在具有文件B的之前版本的块218上。而是,文件B的更改版本构成新的块228,新的块228与块218分开存储。
[0077]因为文件B被存储在新块228中,对应于文件B驻留在其中的目录“PPTS”的块226必须也被更新以指向用于文件B的新的块。用于目录“PPTS”的更新文件被存储为新的块226。类似地,对应于作为“PPTS”的父目录的目录“D0CS”的块204必须也被更新以指向用于“PPTS”目录的新的块。用于“D0CS”的更新文件被存储为新的块224。由于类似的原因,新的块222被存储用于作为“D0CS”的父目录的根目录“JACK”。
[0078]作为对文件B更新的结果,几个块已变成“过时的”。过时的块是数据不再反映文件系统的当前状态的块。在上述给定的实例中,对文件B的更新引起块202、204、206和218变成过时的。执行越多的更新,越多的块变成过时的。
[0079]块加密
[0080]块存储服务器122被配置为将块存储在一个或多个加密卷中。块存储系统也可以存储属于一个或多个未加密卷的块。块可以在被存储在块存储系统之前,由客户端实体利用块密钥(CK)加密。块密钥CK将根据如下面所述的加密卷的加密方案。然而,块密钥CK不能由不拥有加密卷的卷密钥(VK)的实体获得。密钥管理方案被用于控制与存储在块存储系统中的一个或多个加密块关联的明文块数据的访问。
[0081]在一个实施例中,加密通过客户端侧层,例如卷加密层110实施。卷加密层110可以被配置为利用一个或多个加密方案。提供三个合适的加密方案的实例。这些仅是可以在用于分级内容可寻址存储系统的块级客户端侧加密的系统中实施的加密和密钥管理方案的实例。本文所述的技术并不限于任何特定函数或其具体的参数。
[0082].块级随机加密方案
[0083]在块级随机加密方案中,块密钥(CK)是为每个加密块生成的随机密钥。在一个实施例中,随机密钥通过加密该块的实体,例如客户端的卷加密层生成。接着,这个指定块的块密钥用与该块关联的卷的卷密钥VK加密。
[0084]在一个实施例中,该块密钥被存储在将块数据映射到包括块密钥的加密数据的表格中。例如,明文块数据的散列被映射到利用卷密钥加密的块密钥,即H(Cct) — E(VK,CK)。
[0085].卷密钥加密方案
[0086]在卷密钥加密方案中,逻辑存储在卷中的所有块用加密卷的卷密钥VK进行加密。在该加密卷中的所有块的块密钥(CK)是卷密钥VK。在一个实施例中,新的随机初始化向量被选择用于每个块的加密。
[0087].明文散列加密方案
[0088]在明文散列加密方案中,明文块散列h (CCT)被用作块密钥以加密每个块。在一个实施例中,利用强加密散列算法,例如SHA2。在明文散列加密方案中,加密视内容而定。因此,加密相同内容的两个不同装置将产生相同的加密位。在一个实施例中,明文散列加密方案的内容依赖特性用于存储在块服务器中的内容的解重复(de-duplicat1n)。
[0089]加密的卷状态
[0090]卷状态(VS)包括访问加密的卷和管理对加密卷的加密块的访问所必要的数据。图2B示出描述包含在用于加密卷的卷状态中的数据的框图。
[0091].散列-散列映射
[0092]卷状态250可以包括散列-散列映射254。散列-散列映射254是明文块数据的散列h(CeT)与对应的加密块数据的散列h(Ce)之间的映射。这个映射是重要的,这是因为由卷加密层112从文件夹和文档层108接收的调用将利用明文块数据的散列参照块,并且卷加密层112必须通过利用加密块数据的散列访问对应的加密块来响应这些调用。例如,假设块的未加密版本的散列是H1,并且相同块的加密版本的散列是H2。在这些情况下,散列-散列映射254将包含将Hl映射到H2的条目。
[0093]散列-散列映射254可以作为表格被存储。散列-散列映射254可以用于查询加密块(访问密钥被给至相同块的未加密版本所得)的访问密钥,并且反之亦然。在一个实施例中,散列-散列映射254将明文块数据的双散列h (h (Cct))映射到加密块数据的散列h(CE)。在这样的实施例中,散列-散列映射254仍然可以用于查询加密块(将访问密钥给至未加密块所得)的访问密钥,例如h(CCT),但反之则不行。例如,h(h(CCT))可以用于提供下明文散列加密方案下的附加安全。
[0094]在一个实施例中,当散列-散列映射254被存储在卷状态250中时,其用卷密钥VK加密。在一个实施例中,散列-散列映射254将用卷密钥VK E (VK,h (Cct))加密的明文块数据映射到加密块数据的散列h (Ce)。在一个实施例中,散列-散列映射254将用卷密钥E(VK,h(h(CCT)))加密的明文块数据的双散列映射到加密块数据的散列h(Ce)。在这样的实施例中,散列-散列映射254仍然可以用于查询为未加密块给出访问密钥的加密块的访问密钥,例如h(CCT)。其中,明确存储的h(CCT)用像E(VK,h(CCT)) 一样的卷密钥VK加密,可以在任何加密方案下提供附加的安全,以抵御依赖h (Cct))推断加密数据的攻击。
[0095].加密根散列
[0096]卷状态250包括加密根访问数据252。卷状态250要求该根访问数据,这是因为块树的根块包含用于该加密卷的所有子块的访问数据。通常,可以利用作为访问密钥的加密块的散列,即h(CE)来访问加密块。然而,利用包含在散列-散列映射254中的数据,h(CCT)足以访问数据,这是因为访问密钥h(CE)可以利用散列-散列映射254获得。在这种情况下,根访问数据是h(RCCT)。
[0097]在一个实施例中,加密根访问数据252用卷密钥VK加密,以保护该根块的访问数据,即 E (VK,h (RCct))。
[0098]在一个实施例中,通过生成消息认证码(MAC)或通过利用同样能够完整性保护的加密算法,例如EAX、CCM或任何其他认证加密算法,数据完整性也可以被应用。
[0099]?加密的卷密钥E(VK)
[0100]在一个实施例中,卷状态250进一步包括加密的卷密钥256。卷密钥是确定块密钥CK以解密加密卷中的加密块所需要的必不可少的加密密钥。块密钥CK将取决于加密卷的加密方案。然而,块密钥CK不能由不拥有卷密钥VK的实体获得。例如:(a)在块级随机加密方案中,块密钥(CK)是为每个加密块生成的随机密钥,并且每个块密钥CK利用卷密钥VK加密;(b)在卷密钥加密方案中,卷密钥VK被用作用于任何块的块密钥CK ; (c)在明文散列加密方案中,块密钥CK从块树中的父块获得,并且卷密钥被要求获得根块。
[0101]该卷密钥被加密,以便只有授权实体可以利用该卷密钥。在一个实施例中,卷状态VS包括被授权访问加密卷的每个不同实体的一个加密卷密钥。例如,假设两个实体El和E2被授权访问加密的卷。在这些情况下,卷状态可以包括用于实体El的一个加密卷密钥EVKl (利用实体El的实体密钥Kei被加密),以及用于实体E2的另一个加密卷密钥EVK2 (利用实体E2的实体密钥Ke2被加密)。对于特定实体,Ke可以是公共或对称密钥。
[0102]卷密钥ID ID(VK)
[0103]在一个实施例中,卷状态250只包括卷密钥ID且不包括任何形式的实际卷密钥。卷密钥ID可以是唯一识别卷密钥的加密安全随机数。
[0104]在一个实施例中,卷密钥的管理和存储通过外部的密钥管理组件进行。在一个实施例中,当两个实体El和E2被授权访问加密的卷时,密钥管理组件处理卷密钥的安全交换。密钥交换可以通过公共或对称密钥加密或利用不同通道的其他机制促进。因此,加密卷可以在没有更改加密卷的状态的情况下被共享。而且,只有加密的卷密钥被要求防止进一步共享整个卷状态。这可以用于进一步加强加密的卷状态,可以防止依赖加密卷状态被共享给用户的号码或身份的攻击。
[0105]在一个实施例中,卷密钥是向每个单独加密卷分配的对称密钥。可以为每个加密卷随机生成VK,例如当产生加密卷时。卷密钥VK可以用于实施密钥管理方案,以确保存储在加密卷中的数据和向授权实体授权访问该加密卷。在一个实施例中,卷密钥VK只在客户端侧生成,并且服务器从不访问未加密的VK,使得服务器从不解密加密的卷。
[0106].加密算法
[0107]在一个实施例中,卷状态250进一步包括加密算法258。卷状态可以识别用于存储在加密卷中的加密和解密的一个或多个算法。被识别的加密算法也可以用于保护卷的元数据,例如,卷状态的其他要素。在一个实施例中,卷状态被明确存储,但是包括一个或多个加密的组件。
[0108]名称到散列的映射
[0109]在一个实施例中,加密卷的卷状态被序列化并被存储在块存储系统中。例如,卷状态250可以被序列化并作为块被块存储服务器122或分离的块存储服务器存储。在一个或多个密钥管理方案中,序列化卷状态VS可以明文存储,这是因为序列化卷状态的选择组件被加密,使得只有授权实体可以解密访问加密卷的所必需的组件。
[0110]当序列化卷状态VS作为块被存储在块存储系统中时,该序列化卷状态VS可以利用基于块的内容的访问密钥,例如,序列化卷状态的散列,即,h (VS)进行访问。
[0111]在一个实施例中,保持脉冲到散列的映射。名称到散列的映射将加密卷的卷识别符映射到序列化卷状态的散列,即VID — h(VS)。实体可以利用卷识别符和名称到散列的映射获得特定卷的卷状态。该实体可以需要一个或多个加密密钥以解密存储在卷状态中的数据。
[0112]访问加密的卷
[0113]在当文件系统客户端拥有在加密卷的密钥管理方案下授予的一个或多个加密密钥时,可以访问加密卷。在一个实施例中,卷加密层被配置为通过处理块加密和块的块解密来访问加密的卷。卷加密层可以调用被配置为与块存储服务器直接通信的另一个层。例如,卷加密层112被配置为调用块系统客户端116的接口 114,该接口与块存储服务器122直接通信。
[0114]为了访问被加密的目标卷,授权实体E获得用于该目标卷的序列化卷状态250。序列化卷状态250包括与目标卷相关的必不可少的信息,例如目标卷的加密卷密钥256,或对应的卷密钥ID以及加密根块252。序列化卷状态250还包括目标卷的散列-散列映射254,这是定位目标卷的卷树中的子块所需要的。卷密钥VK可以通过利用实体的密钥Ke解密加密的卷密钥而获得。加密卷密钥可以被存储在卷状态250中,或通过利用卷密钥ID从密钥管理组件获得。接着,实体利用卷密钥VK解密卷状态250的加密组件。
[0115]图3示出用于获得块树的根散列以访问加密卷(“目标卷”)的方法的实施例的流程图。该方法适用于任何加密方案,包括但不限于块级随机加密方案、卷密钥加密方案以及明文散列加密方案。
[0116]在步骤302,通过授权实体E获得加密卷的卷识别符(VID)。实体E可以是在密钥管理方案下被授权访问的文件系统客户端106。在一个实施例中,通过更新与目标卷关联的存储的序列化卷状态VS,以包括用授权的实体的密钥编码的卷密钥,即E(KE,VK),实体E被授权访问。通过更新所存储的序列化卷状态VS,例如,卷状态250,任何其他授权实体E’可以授权实体E。在一个实施例中,通过利用密钥管理组件以与授权实体安全地交换卷密钥,实体E被授权访问。卷密钥ID被用来识别可用的密钥。通过相同的机制,任何其他授权实体E’可以授权新的实体E。
[0117]在步骤304,实体E获得目标卷的序列化卷状态的散列(即h(VS))。基于卷识别符VID,利用名称至散列的映射,实体E可以获得序列化卷状态的散列。例如,实体E的卷加密层112可以调用名称表客户端120。该调用包括卷识别符VID。响应于接收调用,名称表客户120定位用于卷识别符VID的条目。该条目将卷识别符VID映射到目标卷的序列化卷状态的散列h (VS)。通过已定位的散列h (VS),名称表客户120将散列h (VS)返回到卷加密层112,作为对该调用的响应。
[0118]在步骤306,实体E利用散列h(VS)获得目标卷的序列化卷状态,例如,卷状态250。在一个实施例中,通过执行获取操作以获得与序列化卷状态的散列h(VS)关联的块,来获得目标卷的序列化状态。例如,通过利用其访问识别符h(VS),通过对块系统客户端116调用存储序列化卷状态的块,实体E的卷加密层112可以执行获取操作。在一个实施例中,目标卷的序列化卷状态250包括目标卷的加密卷密钥256、明文根块的加密散列252以及散列-散列映射254。
[0119]在步骤308,实体E利用实体的密钥&来解密目标卷的加密卷密钥(VK)256。加密的卷密钥256存储在目标卷的序列化卷状态250中。在一个实施例中,加密的卷密钥256用授权实体的密钥加密,即E(Ke,VK)。加密卷密钥256可以被存储在序列化卷状态250中,或利用卷密钥ID从密钥管理组件获得。
[0120]在步骤310,实体E利用解密的卷密钥VK来解密目标卷的加密根访问数据252。加密根访问数据252被存储在目标卷的序列化卷状态250中。加密根访问数据252可以利用用于目标卷的散列-散列映射254的任何加密方案而被加密。在一个实施例中,目标卷的序列化卷状态250包含卷密钥256、明文根块的加密散列252以及散列-散列映射254。在一个实施例中,加密根访问数据252是用目标卷的卷密钥加密的明文根的散列,即E(VK,h(RCCT)))。
[0121]在步骤312,实体E获得根块并利用来自步骤310的未加密根访问数据解密该根块。该未加密根访问数据包括用于该根块的块密钥。在一个实施例中,根访问数据是h (RCct),并且根块通过下面方式获得:(a)利用h (RCct),从散列-散列映射254获得h (RCe);(b)利用h (RCe),执行获取操作,以获得加密的根块RCe;以及(c)根据加密卷的加密方案(例如,块级随机加密方案、卷密钥加密方案、明文散列加密方案或其他合适的加密方案),解密根块RCe。步骤312在图4中更详细描述。
[0122]在可选的步骤314,如果块包括子散列,在加密卷的分级结构中的子块被递归处理,例如,通过递归执行步骤312。在块存储系统中,可以利用表示非叶节点的块和表示叶节点的块表示分级文件系统。表示非叶节点的块包含表示其子节点的块的散列。例如,在图2中,卷200的根块202可以包含子块204和206的散列。在利用明文散列加密方案加密的卷中,子体(descendant)的散列可以用于定位子体块(descendant chunk)以及解密该子体块。在一个实施例中,子散列是子块的明文块数据的散列,即h(CCT)。
[0123]在一个或多个可选实施例中,如果卷识别符VID未被加密,拥有明文卷识别符VID的未授权实体E’不能访问目标卷。即使该未授权实体E’利用其(通过利用名称-散列映射所获得的)散列获得明文序列化卷状态,未授权实体E’也不能解密被加密的序列化卷状态,例如,用授权实体E的密钥加密的卷状态中的关键信息。
[0124]获取操作
[0125]可以利用获取操作从块存储系统中检索加密卷中的块。在一个实施例中,加密块的获取操作在加密卷层中实施,该加密卷层被配置为利用加密卷的卷密钥VK,得到块密钥CK,并且利用块密钥CK,解密加密的块。加密块的获取操作可以调用在块系统层中实施的获取操作,该块系统层被配置为处理基于内容的块数据,而不管该块数据是否被加密。
[0126]为了在卷加密层例如卷加密层112中执行块C的获取操作,需要访问密钥和根密钥CK。访问密钥被用于定位块存储系统中的C。在一个实施例中,访问密钥是加密块Ce的散列。通过解密操作D(K,CE),块密钥CK被用于生成明文块数据CCT。块密钥CK的值取决于卷的加密方案,所述加密方案可以从块级随机加密方案、卷密钥加密方案、明文散列加密方案或其他合适的加密方案中选择。
[0127]图4示出获得指定块的获取操作的方法的实施例的流程图。获取操作可以由授权的实体E执行。
[0128]在步骤402,实体E获得明文块数据的散列。例如,对于目标卷的根块,明文块数据的散列可以从目标卷的序列化卷状态250获得。对于目标卷的块树中的子块,明文块数据的散列可以从父块获得。
[0129]在步骤404,实体E获得加密块的散列。加密块的散列可以利用加密卷的散列-散列映射254,例如,存储在序列化卷状态250中的散列-散列映射254而获得。
[0130]在步骤406,实体E从块存储系统例如块存储服务器122获得加密块。加密块的散列被用于从块存储服务器122获得加密块。在一个实施例中,实体E的卷加密层112调用块系统客户端116,块系统客户端116被配置为从块存储服务器122请求块。
[0131]在步骤408,实体E解密所加密的块数据,从而产生明文块数据。在一个实施例中,实体E的卷加密层112解密由块系统客户端116返回的加密块。可以利用适当的块密钥CK,根据加密卷的加密方案,例如块级随机加密方案、卷密钥加密方案、明文散列加密方案或其他合适的加密方案的适当块密钥CK,来执行解密。
[0132]存放操作
[0133]利用存放操作,块可以被添加到块存储系统中的加密卷中。在一个实施例中,用于加密卷的存放操作在加密卷层中实施,该加密卷层被配置为利用根据密钥管理方案所选择的块密钥CK加密块,接着将所加密的块存放至块存储系统的加密卷中。加密块的存放操作可以调用在块系统层中实施的存放操作,该块系统层被配置为处理基于内容的块数据,而不管该块数据是否被加密。
[0134]为了在加密卷V中执行块C的存放操作,C必须在加密操作(K,CeT)中以适当的加密密钥K加密,以生成Ce,其被存放至根据内容可寻址存储系统的块存储系统中。此外,卷V中的受影响块必须被更新,包括卷根RV。加密密钥K的值取决于卷的加密方案,所述加密方案可以从块级随机加密方案、卷密钥加密方案、明文散列加密方案或其他合适的加密方案中选择。
[0135]图5示出将指定块添加到加密卷的存放操作的方法的实施例的流程图。存放操作可以由授权的实体E执行。
[0136]在步骤502,实体E加密明文块数据。在一个实施例中,明文块数据通过实体E的卷加密层112加密。可以利用所选的块密钥CK根据加密卷的加密方案,例如块级随机加密方案、卷密钥加密方案、明文散列加密方案或其他合适的加密方案,执行加密。
[0137]在步骤504,生成加密块的散列。
[0138]在步骤506,明文块数据的散列被映射到加密块的散列。在一个实施例中,该映射被添加到卷状态的散列-散列映射254中。在一个实施例中,卷状态的散列-散列映射254被保持在存储器中,直到该卷状态的重新序列化被触发,以存储作为块的序列化卷状态250。在块级随机加密方案中,明文块数据的散列被映射到用卷密钥加密的块密钥中,即h(Cct) — E(VK,CK),以安全存储与每个块关联的块密钥。
[0139]在步骤508,加密块被存放至块存储系统中。在一个实施例中,实体E的卷加密层112调用块系统客户端116,块系统客户端116通过与块存储服务器122通信,将加密的块存放至块存储器中。
[0140]更新散列树
[0141]在加密卷的存放操作或其他数据变化后,数据散列树可以被更改,以触发一个或多个非叶块的更新和对卷状态的更新。对卷状态的更新需要卷状态的重新序列化,这包括存储对应于新的序列化卷状态的新块和更新在名称-散列表格中的新序列化卷状态的散列。
[0142]用于共享的密钥管理
[0143]在一个实施例中,可以利用密钥管理方案共享存储在块存储系统中的加密卷。在一个实施例中,存储在块存储系统中的加密内容被拥有在加密卷的密钥管理方案下的一个或多个可用加密密钥的客户解密。这些密钥可以是对称的密钥或公共/私人密钥对中的任一个。在一个实施例中,用于加密卷的密钥管理方案包括通过一个或多个客户端实体实施密钥共享。
[0144]例如,在一个实施例中,当授权实体被授权访问加密的卷时,用实体的密钥加密卷密钥VK,即,用于实体E的E (KE, VK)。从加密的角度来看,访问卷密钥VK的任何实体可以执行该操作。在该事项处理完成后,实体E可以访问加密的卷,解密卷密钥VK,并从而解密整个加密卷。
[0145]可以通过将卷密钥VK改变为新的卷密钥VK’,取消特定实体E’对加密卷的访问。新的卷密钥VK’可以用所有授权实体的密钥加密,但是把取消的实体E’排除在外。在一个实施例中,通过改变卷密钥VK’,使得在加密卷中的块不需要被再加密,实体E’的访问可以被取消。
[0146]改变实体授权的实施细节根据加密卷的加密方案而不同。下面给出本文讨论的三个示例性加密方案的附加细节:
[0147].块级随机加密方案
[0148]在块级随机加密方案中,每个指定块的块密钥CK用与该块关联的加密卷的卷密钥VK加密,即E (VK,CK)。在此情况下,原始卷密钥VK和新的卷密钥VK’两者被用于访问加密卷中的块。用于加密被添加到加密卷中的新块的块密钥CK用新的卷密钥加密,即E (VK’,CK)。加密块密钥可以包括识别用于加密块密钥的指定卷密钥的识别符。原始卷密钥VK和新的卷密钥VK’两者需要用剩下的实体密钥加密。在特定实体E’的访问被取消后,实体E’将不能访问加密卷中的新数据。在一个实施例中,另外的授权层可用于阻止被删除的实体E’访问加密卷。
[0149].卷密钥加密方案
[0150]在此情况下,原始卷密钥VK和新的卷密钥VK’两者都被用于访问加密卷中的块。加密块可以包含带报头,所述报头具有已被用于加密该加密块的特定卷密钥的识别符。被添加到加密卷中的新块用新的卷密钥VK’加密。在特定实体E’的访问被取消后,实体E’将不能访问加密卷中的新数据。在一个实施例中,另外的授权层可用于阻止被删除的实体E’访问加密卷。
[0151].明文散列加密方案
[0152]在将卷密钥VK改变到新的卷密钥VK’之后,生成新的该卷的散列树的新根。新的根散列用新的卷密钥VK’加密。新的卷密钥VK’用剩下的实体密钥加密。
[0153]复制整个卷的加密数据
[0154]被授权访问加密卷的实体可以被授权共享该加密卷或其一部分。例如,授权实体可能希望共享加密卷中的文件夹。加密卷中的文件夹可以由对应于加密卷的散列树的子树表不。
[0155]在一个实施例中,共享加密卷内的分级结构可以通过将数据从第一加密卷复制到第二加密卷来实施。在一个实施例中,第一加密卷是属于第一实体个人的,而第二加密卷是与一个或多个其他实体共享的共享加密卷。共享加密卷的文件夹的操作的实施取决于加密卷的加密方案。
[0156]在明文散列加密方案中,这种操作可以通过将对应于文件夹的第一加密卷的映射的子集插入到目标卷的映射中来执行。这种操作需要下载子树的非叶块,以获得并列举子树的散列。子树的块的再加密是不必要的。
[0157]在一个实施例中,在一个或多个其他加密方案中,这种操作可以通过下载对应于文件夹的子树的块、解密该块、用与第二加密卷关联的一个或多个适当的加密密钥再加密该块,并将该再加密块存放至第二加密卷而执行。
[0158]共享只读副本
[0159]在一个实施例中,授权实体可能希望共享加密卷中的子树的不变的副本。例如,子树可以对应于卷中的文件夹或其他分级结构。共享加密卷的子树的不变的副本的操作的实施取决于加密卷的加密方案。
[0160]在明文散列加密方案中,通过共享用E的密钥即h(KE,CeT)加密的子树根的明文散列以及对应于原始加密卷的子树中的相关块的散列-散列映射的至少相关部分,子树可以与实体E共享。该子树的块的再加密是不必要的。
[0161 ] 在一个实施例中,在一个或多个其他加密方案中,这种操作可以通过下载对应于文件夹的子树的块、解密该块,用与第二加密卷关联的一个或多个适当加密密钥再加密该块,并将该再加密块存放至与实体E共享的加密卷中来执行。
[0162]硬件概述
[0163]根据一个实施例,本文所述的技术通过一个或多个专用计算装置来实施。该专用计算装置可以被硬连线以执行该技术,或可以包括数字电子装置,例如一个或多个专用集成电路(ASIC)或被永久编程以执行该技术的现场可编程门阵列(FPGA),可以包括被编程以执行根据在硬体、存储器、其他存储或其组合中的程序指令执行技术的一个或多个通用硬件处理器。这样的专用计算装置还可以组合自定义硬连线逻辑、ASIC或自定义编程以实施该技术的FPGA。专用计算装置可以是台式计算机系统、便携式计算机系统、手持式装置、网络装置或并入硬连线和/或程序逻辑以实施该技术的任何其他装置。
[0164]例如,图6示出本发明的实施方式可以在其上实施的计算机系统600的框图。计算机系统600包括总线602或用于传输信息的其他通信机构,以及与总线602耦接的用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
[0165]计算机系统600还包括耦接至总线602的用于存储由处理器604执行的信息和指令的主存储器606,例如,随机访问存储器(RAM)或其他动态存储器件。主存储器606还可以被用于存储在执行指令期间由处理器604执行的临时变量或其他中间信息。当被存储在处理器604可访问的非临时性存储介质中时,这样的指令使得计算机系统600成为被自定义为执行该指令指定的操作的专用机器。
[0166]计算机系统600进一步包括耦接到总线602用于存储供处理器604的静态信息和指令的只读存储器(ROM) 608或其他静态存储器件。存储装置610,例如磁盘、光盘或被提供并耦接到总线602用于存储信息和指令。
[0167]计算机系统600可以经由总线602被耦接到用于向计算机用户显示信息的显示器612,例如阴极射线管(CRT)。包括字母数字和其他键的输入装置614被耦接到总线602,用于向处理器604传送信息和命令选择。另一种用户输入装置是光标控制616,诸如用于向处理器604传送方向信息和命令选择并控制在显不器612上的光标运动的鼠标、轨迹球或光标方向键。这种输入装置通常在两个轴,第一轴(例如,X)和第二轴(例如,y)具有允许该装置在平面中指定位置的两个自由度。
[0168]利用与计算机系统组合而使得计算机系统600成为专用机器的自定义硬连线逻辑、一个或多个ASIC或FPGA、固体和/或程序逻辑,计算机系统600可以实施本文所述的技术。根据一个实施例,响应于执行包含在主存储器606中的一个或多个指令的一个或多个序列,本文所述的技术由计算机系统600执行。这样的指令可以从其他存储介质,例如,存储装置610被读入到主存储器606中。包含在主存储器606中的指令序列的执行使得处理器604执行本文所述的过程步骤。在可选实施例中,硬连线线路可以被软件指令替换或与软件指令组合。
[0169]如本文所利用的术语“存储介质”指的是存储了使得机器以指定方式运行的数据和/或指令的任何非临时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,例如存储装置610。易失性介质包括动态存储器,例如,主存储器606。存储介质的常见形式包括例如,软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、CD-ROM、任何其他光数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒子。
[0170]存储介质与传输介质不同但是可以结合传输介质使用。传输介质在存储介质之间参与传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括具有总线603的电线。传输介质还可以采用声波或光波的形式,例如在射频波和红外数据通信期间所生成的那些声波或光波。
[0171]在向处理器604传送一个或多个指令的一个或多个序列供执行的过程中,涉及各种形式的介质。例如,可以在远程计算机的磁盘或固态硬盘上初始地承载指令。远程计算机可以将指令加载到其动态存储器中并利用调制解调器通过电话线发送该指令。计算机系统600的本地调制解调器可以接收电话线上的数据并利用红外发送器将数据转换为红外信号。红外检测器可以接收在红外信号中携带的数据以及适当的线路可以将该数据置于总线602上。总线602将该数据传送到主存储器606,处理器604检索主存储器606的数据并执行该指令。在处理器604的执行之前或之后,由主存储器606接收的指令可选地存储在存储装置610上。
[0172]计算机系统600还包括耦接到总线602的通信接口 618。通信接口 618提供耦接到网络链路620的双向数据通信,该网络链路620被连接到本地网络622。例如,通信接口618可以是综合业务数字网(ISDN)卡,电缆调制解调器,卫星调制解调器,或向对应电话线类型提供数据通信连接的调制解调器。作为另一个实例,通信接口 618可以是向兼容LAN提供数据通信连接局域网(LAN)卡。无线链路也可以被实施。在任何这样的实施中,通信接口 618发送和接收携带表示各种信息的数字数据流的电、磁或光信号。
[0173]网络链路620通常通过一个或多个网络向其他数据装置提供数据通信。例如,网络链路620可以通过本地网络622至主计算机624或由互联网服务提供商(ISP)626运行的数据设备的连接。ISP626进而通过现在一般称为“因特网”628的全球分组数据通信网络提供数据通信服务。本地网络622和因特网628两者均利用携带数据流的电、磁或光信号。通过各种网络的信号和在网络链路620上并通过通信接口 618的信号是传输介质的示例形式,所述信号携带至和自计算机系统600的数字数据。
[0174]计算机系统600可以通过网络、网络链路620和通信接口 618发送消息和接收包括程序代码的数据。在因特网实例中,服务器630可以通过因特网628、ISP626、本地网622和通信接口 618传送所请求的用于应用程序的代码。
[0175]所接收的代码可以在处理器604接收时被执行,和/或被存储在存储装置610中,或其他非易失性存储中供以后执行。
[0176]扩展和备选
[0177]在前述说明书中,本发明的实施例已参照可以依实施而变化的多个特定细节进行了描述。因此,相应的规范和附图应被看作是示例性的,而不是限制性的。本发明范围的唯一和排他的指示,以及 申请人:意在保护的本发明范围是来自本申请公布的权利要求组的字面和等效范围,以这样的权利要求所公布的特定形式,包括任何随后的修改。
【权利要求】
1.一种方法,包括: 在内容可寻址存储系统中,利用多个块来实施分级文件系统; 支持所述分级文件系统中的加密卷和非加密卷两者; 其中,支持加密卷和非加密卷两者包括: 使得文件夹和文件层直接调用块系统层,以用于涉及非加密卷的操作;以及 使得所述文件夹和文件层调用卷加密层,以用于涉及加密卷的操作; 其中,所述卷加密层通过API接收来自所述文件夹和文件层的调用,所述API匹配所述块系统层通过其接收来自所述文件夹和文件层的调用的API。
2.根据权利要求1所述的方法,其中 所述块系统层具有用于执行存放操作的第一接口和用于执行获取操作的第二接口; 所述卷加密层具有用于执行存放操作的第三接口和用于执行获取操作的第四接口; 所述方法进一步包括: 所述文件夹和文件层对所述第一接口进行第一调用以对非加密卷执行存放操作; 所述文件夹和文件层对所述第二接口进行第二调用以对所述非加密卷执行获取操作; 所述文件夹和文件层对所述第三接口进行第三调用以对加密卷执行存放操作; 响应于所述第三调用,所述卷加密层对所述第一接口进行第四调用; 所述文件夹和文件层对所述第四接口进行第五调用以对所述加密卷执行获取操作;以及 响应于所述第五调用,所述卷加密层对所述第二接口进行第六调用。
3.根据权利要求1所述的方法,其中: 其中,所述块系统层为被配置为访问所述分级文件系统的客户端层; 其中,所述卷加密层为被配置为执行加密和解密的客户端层,其中,所述卷加密层进一步被配置为对所述块系统层进行调用以访问所述分级文件系统。
4.一种方法,包括: 利用内容可寻址存储系统中的多个块来实施分级文件系统,所述分级文件系统包括多个加密卷; 为每个加密卷保持相应的卷密钥; 接收驻留于所述多个加密卷的特定加密卷上的特定块的获取请求; 响应于所述获取请求,执行步骤: 从所述内容可寻址存储系统获得所述特定块的加密块数据; 利用所述特定加密卷的卷密钥获得所述特定块的明文块数据;以及 用所述特定块的明文块数据来响应所述获取请求。
5.根据权利要求4所述的方法,其中,利用所述特定加密卷的卷密钥获得所述特定块的明文块数据的步骤包括: 利用所述卷密钥解密为所述特定块随机生成的特定块密钥; 通过利用所述特定块密钥解密所述特定块的加密块数据,生成所述明文块数据。
6.根据权利要求4所述的方法,其中,利用所述特定加密卷的卷密钥获得所述特定块的明文块数据的步骤包括通过利用所述卷密钥解密所述特定块的加密块数据,生成所述明文块数据。
7.根据权利要求4所述的方法,其中,利用所述特定加密卷的卷密钥获得所述特定块的明文块数据的步骤包括: 利用所述卷密钥解密在存储所述特定加密卷的块的所述内容可寻址存储系统内的块树的根散列; 利用所述块树的根散列获得所述特定块的散列;以及 通过利用所述特定块的散列解密所述特定块的所述加密块数据,生成所述明文块数据。
8.根据权利要求4所述的方法,进一步包括: 对于所述内容可寻址存储系统中的至少一个块,保持基于明文块数据生成的第一散列与基于所述加密块数据生成的第二散列之间的映射。
9.根据权利要求8所述的方法,其中,所述第一散列是所述明文块数据的双散列。
10.根据权利要求4所述的方法,其中,所述获取请求包括明文块散列,所述方法进一步包括: 利用所述明文块散列获得加密块散列; 其中,所述加密块数据利用所述加密块散列而获得。
11.根据权利要求4所述的方法,进一步包括: 对于所述内容可寻址存储系统中的至少一个卷,保持卷识别符与所述至少一个卷的卷状态的散列之间的映射。
12.根据权利要求4所述的方法,进一步包括: 从客户端接收存放请求以将第二块添加到所述特定加密卷; 加密所述第二块; 在所述内容可寻址存储系统中将所述加密的第二块与所述特定加密卷关联地存储。
13.根据权利要求12所述的方法,其中,所述加密的第二块通过利用与所述加密块的内容不相关的指定块密钥进行加密,进一步包括步骤: 利用所述卷密钥加密所述指定块密钥; 将加密的指定块密钥与基于所述第二块的明文块数据生成的散列关联地存储。
14.根据权利要求12所述的方法,其中,所述加密的第二块利用所述卷密钥进行加密。
15.根据权利要求12所述的方法,其中,所述加密的第二块利用基于所述第二块的明文块数据生成的散列进行加密。
16.根据权利要求12所述的方法,进一步包括通过利用所述卷密钥生成至少一个新块,更新与所述卷关联的所述块树。
17.根据权利要求4所述的方法,进一步包括: 利用实体的实体密钥加密所述卷密钥; 通过密钥管理组件与所述实体共享所述加密卷密钥,共享所述特定加密卷,其中,所述实体通过利用其自身的实体密钥解密所述卷密钥已经访问所述特定卷。
18.根据权利要求4所述的方法,进一步包括: 从所述内容可寻址存储系统获得序列化卷状态数据; 其中,所述序列化卷状态数据包括散列-散列映射和卷密钥信息。
19.根据权利要求18所述的方法,其中,所述卷密钥信息包括卷密钥ID,其中,所述卷密钥通过密钥管理组件利用所述卷密钥ID而获得。
20.一种存储指令的非临时性计算机可读介质,当所述指令由一个或多个处理器执行时,使得所述方法的执行包括: 获得用于存储在实施分级文件系统的内容可寻址存储系统中的多个加密卷中的至少一个加密卷的至少一个卷密钥; 接收驻留于所述多个加密卷的特定加密卷上的特定块的获取请求; 响应于所述获取请求,执行步骤: 从所述内容可寻址存储系统获得所述特定块的加密块数据; 利用所述特定加密卷的卷密钥获得所述特定块的明文块数据;以及 用所述特定块的明文块数据来响应所述获取请求。
21.根据权利要求20所述的非临时性计算机可读介质,其中,利用所述特定加密卷的卷密钥获得所述特定块的明文块数据的步骤包括: 利用所述卷密钥解密为所述特定块随机生成的特定块密钥; 通过利用所述特定块密钥解密所述特定块的加密块数据,生成所述明文块数据。
22.根据权利要求20所述的非临时性计算机可读介质,其中,利用所述特定加密卷的卷密钥获得所述特定块的明文块数据的步骤包括通过利用所述卷密钥解密所述特定块的加密块数据,生成所述明文块数据。
23.根据权利要求20所述的非临时性计算机可读介质,其中,利用所述特定加密卷的卷密钥获得所述特定块的明文块数据的步骤包括: 利用所述卷密钥解密在存储所述特定加密卷的块的所述内容可寻址存储系统内的块树的根散列; 利用所述块树的根散列获得所述特定块的散列;以及 通过利用所述特定块的散列解密所述特定块的加密块数据,生成所述明文块数据。
24.根据权利要求20所述的非临时性计算机可读介质,进一步包括: 对于所述内容可寻址存储系统中的至少一个块,保持基于明文块数据生成的第一散列与基于所述加密块数据生成的第二散列之间的映射。
25.根据权利要求20所述的非临时性计算机可读介质,其中,所述第一散列是所述明文块数据的双散列。
26.根据权利要求20所述的非临时性计算机可读介质,其中,所述获取请求包括明文块散列,所述方法进一步包括: 利用所述明文块散列获得加密块散列; 其中,所述加密块数据利用所述加密块散列而获得。
27.根据权利要求20所述的非临时性计算机可读介质,进一步包括: 对于所述内容可寻址存储系统中的至少一个卷,保持卷识别符与所述至少一个卷的卷状态之间的映射。
28.根据权利要求20所述的非临时性计算机可读介质,进一步包括: 从所述客户接收存放请求以将第二块添加到所述特定加密卷; 加密所述第二块; 在所述内容可寻址存储系统中将加密的第二块与所述特定加密卷关联地存储。
29.根据权利要求28所述的非临时性计算机可读介质,其中,所述加密的第二块通过利用与所述加密块的内容不相关的指定块密钥进行加密,进一步包括步骤: 利用所述卷密钥加密所述指定块密钥; 将加密的指定块密钥与基于所述第二块的明文块数据生成的散列关联地存储。
30.根据权利要求28所述的非临时性计算机可读介质,其中,所述加密的第二块利用所述卷密钥进行加密。
31.根据权利要求28所述的非临时性计算机可读介质,其中,所述加密的第二块利用基于所述第二块的明文块数据生成的散列进行加密。
32.根据权利要求28所述的非临时性计算机可读介质,进一步包括通过利用所述卷密钥生成至少一个新块,更新与所述卷关联的块树。
33.根据权利要求28所述的非临时性计算机可读介质,进一步包括: 利用实体的实体密钥加密所述卷密钥; 通过密钥管理组件与所述实体共享所述加密卷密钥,共享所述特定加密卷,其中,所述实体通过利用其自身的实体密钥解密所述卷密钥已经访问所述特定卷。
34.根据权利要求20所述的方法,进一步包括: 从所述内容可寻址存储系统获得序列化卷状态数据; 其中,所述序列化卷状态数据包括散列-散列映射和卷密钥信息。
35.根据权利要求34所述的方法,其中,所述卷密钥信息包括卷密钥ID,其中,所述卷密钥通过利用所述卷密钥ID,通过密钥管理组件获得。
36.一种系统,包括: 块存储器,被配置为存储多个块; 块存储服务器,被配置为实施包括多个卷的分级文件系统,所述多个卷包括加密卷和未加密卷; 客户端,其包括: 文件和文件夹层; 块存储客户端层,被配置为与所述块存储服务器通信; 卷加密层,被配置为执行加密和解密; 其中,所述文件和文件夹层通过调用所述块存储客户端层访问非加密卷; 其中,所述文件和文件夹层通过调用所述卷加密层访问加密卷; 其中,所述卷加密层进一步被配置为通过所述块存储客户端层访问所述块存储服务器。
【文档编号】G06F21/62GK104331408SQ201410350664
【公开日】2015年2月4日 申请日期:2014年7月22日 优先权日:2012年1月26日
【发明者】朱利安·伯夫, 萨钦·拉瓦特 申请人:阿普赛尔有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1