在云存储环境下一种安全存储系统的实现方法 技术领域 云存储环境下安全存储系统的实现方法属于存储安全领域,尤其涉及其中的安 全访问控制、密钥分发管理和文件管理等技术领域。
背景技术 现今随着云计算技术的飞速发展,云存储也逐渐受到了广泛的关注和应用,文 件所有者可以创建文件,并将文件上传到云存储区中,将文件交由云存储服务提供商进 行管理,同时该文件所有者可以允许指定其他用户对该文件进行读写访问,实现了文件 的共享访问。
虽然云存储服务提供商能够给用户提供方便的文件共享访问,但是存在于其中 的安全问题则不容忽视。 首先,文件的机密性无法保证 :文件是以明文形式存储于云 存储区中,这些信息都毫无保留地置于云存储服务提供商的视线之中,倘若云存储服务 提供商获取了这些文件信息,并应用于非法目的,则将给用户带来不可预计的后果 ;其 次,文件信息的完整性无法保证 :在其他用户对该文件的共享时,文件的信息是以明文 的形式在网络中传输,这样就给网络窃听者带来了可乘之机,网络窃听者可以在网络中 截取文件信息,在得到文件信息后,可以将不利于自己的一些信息删去,同时人为添加 一些对自己有利的虚假信息,然后再将该信息发给其他用户,达到自己的非法目的 ;再 次,对于权限的没有有效地管理,以及权限撤销时的安全性无法保证 :如何能够有效实 现用户对该文件的共享,以及当一个用户的对该文件的访问权限被撤销后,如何能够保 证该文件更新后的内容不会再被撤销权限的用户获得。 以上这些都是考验安全存储系统 的一些安全性问题。
安全存储系统的功能是使用户能够保证共享数据的安全,它的实现方法是 :首 先文件所有者在本地使用哈希算法对该文件以块为单位计算哈希值,并使用密钥和加密 算法对文件以块为单位进行加密,然后将密文和哈希值一起放入公共的存储区进行存 储,这样公共存储区的管理员就无法得知文件的内容,保证了数据的机密性,同时由该 文件的所有者将密钥分发给他认为可以对该文件进行访问的用户。 这些用户可以访问该 文件,并用掌握的密钥对访问内容所在文件块进行解密,然后计算这些块的哈希值,看 是否与保存的哈希值相等,如果相等,则说明访问的内容是完整的,最后再进行读取文 件的内容。 在国内外现今所实现的安全存储系统,虽然保证了文件的机密性和完整性, 但是还有一些不足 :首先,有的存储系统的实现需要底层存储系统的支持,甚至是需要 对内核的版本进行改动或者是有特定内核版本的要求,这样给用户带来了许多不便,如 果用户需要使用这些安全存储系统,则需要安装特定的底层存储系统,或者是需要特定 版本的内核,或者是需要对内核进行修改 ;其次,有的安全存储系统在对文件进行操作 时,使用到了非对称加密算法,在一些情况中还需要使用到密钥回滚操作,由于非对称 加密算法的复杂度较高,因此该类安全存储系统的性能不容乐观 ;再次,大部分现今的 安全存储系统在对待用户的权限撤销上,一般使用的是积极撤销方法,积极撤消操作出
现的背景是 :由于文件的所有者可能会认为 已经授权访问该文件的某个用户会对该文件 进行破坏或者该用户可能会将文件的内容散发出去,造成文件所有者所不希望看到的效 果,因此文件所有者可能会将这个用户的权限进行撤销,但是由于该用户已经掌握了访 问该文件所需要的密钥,因此为了保证文件的安全性,文件所有者不得不立刻重新生成 新的密钥,并用新的密钥重立刻新对文件进行加密,最后将新的密钥分发给除了被撤销 权限的用户之外的其他合法用户,这就是积极撤销,这样做带来的一些后果是,对于大 文件来说,积极撤销带来的立刻重新加密的密码学开销极为庞大,同时在频繁撤销的环 境中,这种安全存储系统的开销也可能让用户难以承受。
本发明实现了一种云存储环境下的安全存储系统,其为用户保证了数据的机密 性和完整性,同时对用户的权限进行的有效地管理,并保证了权限撤销时文件的安全 性,该系统还具有良好的可拓展性。 发明内容 本发明的目的在于提供一种云存储环境下安全存储系统的系统架构,使得用户 在不可信的存储和网络环境中即使失去了对系统物理资源的控制仍然可以安全高效地进 行文件共享,同时数据安全保护与已部署的底层存储系统无关 :底层存储系统只提供可 靠的数据存储服务,而数据机密性、完整性的保护与访问控制则在根据用户需求设立的 信任域中完成 ;用户可以不依赖底层存储系统提供数据安全性保护机制就能保证自己数 据端到端的安全性,反过来底层存储系统也无法干涉用户的安全性保护机制。 该架构将 数据安全保护的责任从用户不具有控制权限的数据服务器和安全性较弱的单个客户机集 中到具有较高安全级别的、可由用户自己设定维护的、可信的信任域服务器上,从而消 除了存储系统对不可信文件服务器的信任需求,并降低了用户的管理复杂度和由客户机 密钥泄漏所带来的安全风险,因此非常适用于用户对底层共享文件系统没有控制权限的 应用场景。
本发明的框架包括 :信任域服务器、文件服务器、客户端和网络。 其作用分别如下 : 1) 信任域服务器 :其作用是对用户的身份进行认证,并对文件的密钥进行管理 和分发 ;
2) 文件服务器 :其作用是存储文件和安全元数据文件 ;
3) 客户端 :创建文件并对文件进行访问 ;
4) 网络 :作为文件传输的介质,传输用户的访问请求和文件信息 ;
本发明的思路是 :
1) 该存储系统与底层存储系统无关 ;即数据安全保护与已部署的底层存储系统 无关,底层存储系统只提供可靠的数据存储服务,而数据机密性、完整性的保护与访问 控制则在根据用户需求设立的信任域中完成 ;用户可以不依赖底层存储系统提供数据安 全性保护机制就能保证自己数据端到端的安全性,反过来底层存储系统也无法干涉用户 的安全性保护机制 ;
2) 文件的机密性和完整性保护 ;
i. 文件所有者创建文件 ;首先在本地使用哈希算法 —— SHA1 算法对文件以块
为 单位计算哈希值,然后使用密钥和加密算法 AES 算法对文件以块为单位进行加密,然 后上传到云存储区中存储,这样就保证了文件在云存储区中的机密性,其中 SHA1 算法 是由美国国家安全局设计,并由美国国家标准与技术研究院发布的一种安全散列算法, 是一种被广泛应用的哈希算法,它的用处是将冗长的文件压缩成为一段独特的数字信息 ( 一般称为哈希值 ),保证原来文件的合法性和安全性,同时 AES 算法是美国国家技术 标准委员会在 2000 年所确定的高级加密标准,是一种广泛应用的保护数据安全的加密算 法 ;方便的密钥管理文件所有者将密钥分发和管理的权限交给信任域服务器进行。
ii. 文件所有者指定访问控制列表,指定具有对该文件进行访问的权限的用户 ; 当文件所有者创建一份该文件的访问控制列表,将他认为可以对该文件进行访问的用户 添加入访问控制列表,并将访问控制列表发给信任域服务器,信任域服务器将该文件的 密钥发给访问控制列表上的用户。 当具有访问权限的用户对文件进行访问时,数据是以 密文形式在网络中传输,用户再利用掌握的密钥对文件以块为单位进行解密,然后使用 SHA1 算法对解密后的文件以块为单位计算哈希值,判断是否与读取到的哈希值相等,若 相等,则表示数据是完整的,最后读取文件内容,若用户计算的哈希值与读取到的哈希 值不相等,则表示数据的完整性遭到了破坏,则向系统报错 ; 3) 密钥的分发管理由信任域服务器统一进行 ;在该安全存储系统中主要实现的 密钥管理主要分为三层,其理由是 :利用层级的组织方式对对称密钥进行组织管理,从 而达到既保证系统性能和安全性,又不增加系统的管理负担的目的。 操作步骤如下 :
i. 文件块密钥 :为了安全高效地处理大文件,在本系统中以块为单位加密文 件,并称此块为文件块,以区分底层存储系统块,每个文件块都使用一个单独的叫做文 件块密钥的对称密钥进行加密,并且每个文件都有一组文件块密钥, ;
ii. 安全元数据文件密钥 :保存在安全元数据文件中的密钥是第二级,这些密钥 包括一个锁盒子密钥 LBK 和一个文件签名密钥 FSK。 锁盒子密钥 LBK 指的是 :在一个 锁盒子中装有一个文件中的所有文件块密钥,但是这个盒子则被对称的锁盒子密钥 LBK 加密。 只有得到锁盒子密钥 LBK 的授权用户才能解密锁盒子,进而得到文件块密钥以解 密文件内容 ;文件签名密钥 FSK 主要是写用户在对文件进行修改后的签名密钥。 在这个 安全存储系统中,正是通过文件签名密钥 FSK 来区分读操作和写操作,需要说明的是, 锁盒子密钥 LBK 和文件签名密钥 FSK 都是对称密钥,采用复杂度较低的对称密钥可以显 著降低系统的密码学计算开销 ;
iii. 信任域服务器密钥 :最上面的层次是信任域服务器密钥 ;所谓信任域服 务器密钥只是信任域服务器所维护的两个对称密钥,一个叫做信任域服务器加密密钥 ASEK,一个叫做信任域服务器签名密钥 ASSK。 前者用来加密数据文件所对应的安全 元数据文件的锁盒子密钥 LBK 和文件签名密钥 FSK,从而进行访问控制和区分读 - 写 操作 ;后者用来作为 HMAC 算法的输入参数,对安全元数据文件中的访问控制块计算 HMAC 值以保证其完整性,其中 HMAC 是一种使用加密散列函数和密钥计算出来的一种 消息验证码,它的作用主要是对消息的完整性进行检查。 信任域服务器必须保证这两个 密钥的机密性,任何时候都不能将这两个密钥泄露给其他任何人,这一点可以在实际应 用中借助硬件辅助手段实现。
本发明的特征在于,所述的方法是在信任域服务器、客户端和文件服务器组成
的网络中,使用用户空间的文件系统 FUSE 在 Linux 上依次按照以下步骤实现的 :
步骤 (1) :网络的初始化,
步骤 (1.1) :信任域服务器的初始化,设立用户认证模块和访问控制模块,其 中用户认证模块采用了 SSL/TLS 协议和公钥基础设施 PKI,访问控制模块是在文件所有 者授权下执行对文件的访问控制,在系统中采用了三级密钥管理机制,其中第一级密钥 是文件块密钥,为了安全高效地处理大文件,在本系统中以块为单位加密文件,并称此 块为文件块,每个文件块都使用一个单独的叫做文件块密钥的对称密钥进行加密,文件 块密钥被加密后,存储在安全元数据文件中,第二级密钥是安全元数据文件密钥,包括 一个锁盒子密钥 LBK 和一个文件签名密钥 FSK,每个文件都有独自的安全元数据文件密 钥,其中锁盒子密钥 LBK 被用来加密该文件中的所有文件块密钥,保证文件块密钥的机 密性,后者是写用户在对文件数据进行修改后的签名密钥,用于区分读操作和写操作, 第三级密钥是信任域服务器密钥,是信任域服务器所维护的两个对称密钥,一个叫做信 任域服务器加密密钥 ASEK,用来加密数据文件所对应的安全元数据文件的锁盒子密钥 LBK 和文件签名密钥 FSK,从而进行访问控制和区分读 - 写操作,一个叫做信任域服务 器签名密钥 ASSK,用来对安全元数据文件中的访问控制块计算基于哈希的消息验证码, 即 HMAC 值,以保证访问控制块的完整性, 步骤 (1.2) :客户端设有数据加解密模块,数据完整性验证模块,缓存模块,文 件系统接口,
步骤 (1.3) :文件服务器设有存储模块 ;
步骤 (2) :用户申请获得用户身份标识,步骤如下 :
步骤 (2.1) :用户在客户端通过安全套接层协议 SSL 和传输层安全协议 TLS 在加 密的信道上向信任域服务器的用户认证模块发送用户身份标识请求,
步骤 (2.2) :所述的用户认证模块基于公钥基础设施,用户身份与信任域服务器 身份都是借助公钥基础设施所授予的 X.509 证书进行认证,系统新用户首先必须向注册机 构申请证书,然后才可以使用该系统 ;
步骤 (3) :文件的所有者按照以下步骤创建文件 :
步骤 (3.1) :所述的文件所有者向所述信任域服务器发送创建文件的请求 :文件 所有者首先创建访问控制块的内容,内容包括 :用户的身份标识、文件名、所指定的加 密算法和模式以及访问控制列表,并将访问控制块发给信任域服务器的访问控制模块, 其中所述访问控制列表包含用户名的哈希值以及该用户的访问权限,
步骤 (3.2) :所述的信任域服务器处理文件所有者创建文件的请求,使用身份认 证模块对文件所有者的身份进行认证,判断其身份和权限,然后为其请求创建的文件生 成锁盒子密钥 LBK 和文件签名密钥 FSK ;
步骤 (3.3) :信任域服务器使用信任域加密密钥 ASEK 加密锁盒子密钥 LBK 和文 件签名密钥 FSK,并使用信任域签名密钥 ASSK 为访问控制块计算 HMAC 值,并存入访 问控制块的 HMAC 域中,然后将访问控制块返回给文件所有者 ;
步骤 (3.4) :所述文件所有者创建文件,输入数据,然后使用安全哈希算法,即 SHA1 算法,对文件以块为单位计算哈希值,将哈希值保存在安全元数据文件中,再使用 文件块密钥对文件以块为单位进行加密,并生成文件密文,最后将文件的密文和安全元
数据文件发给所述文件服务器进行存储 ;
步骤 (4) :读用户按照以下步骤读取步骤 (3) 所创建的文件 :
步骤 (4.1) :从所述文件服务器端读取文件数据密文和安全元数据文件,
步骤 (4.2) :按以下步骤进行该读用户的身份认证,
步骤 (4.2.1) :读用户将自己的身份标识和安全元数据文件中的访问控制块发给 所述信任域服务器,
步骤 (4.2.2) :信任域服务器调用身份认证模块确认用户的身份标识,调用访问 控制模块,使用信任域密钥 ASEK 解密该访问控制块,获得包括锁盒子密钥 LBK、文件 签名密钥 FSK 和访问控制列表在内的信息,使用信任域签名密钥 ASSK 计算访问控制块 的 HMAC 值,以判断访问控制块的完整性,并根据访问控制列表确定读用户的读权限, 然后将锁盒子密钥 LBK 发给读用户,
步骤 (4.3) :该读用户获得锁盒子密钥 LBK 之后,利用其解密获得文件块密 钥,然后使用文件块密钥对文件数据进行解密,最后获得文件数据的明文信息,并使用 SHA1 算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保存的哈希值一 致,判断所读数据的完整性,若相等,则说明数据完整,用户再读取该数据,否则则向 系统报错 ;
步骤 (5) :写用户按照以下步骤写入或者修改文件数据,
步骤 (5.1) :该写用户首先从所述文件服务器端读取要修改的所述文件数据的密 文和安全元数据文件,
步骤 (5.2) :写用户按以下步骤进行身份认证,
步骤 (5.2.1) :该写用户将自己的身份标识和安全元数据文件中的访问控制块 发给信任 域服务器,所述信任域服务器调用身份认证模块确认用户的身份标识,并调 用所述访问控制模块,使用信任域密钥 ASEK 解密该访问控制块,获得包括锁盒子密钥 LBK、文件签名密钥 FSK 和访问控制列表在内的信息,使用信任域签名密钥 ASSK 重新 计算该访问控制块的 HMAC 值,看是否与访问控制块中的 HMAC 值相等,判断该访问控 制块是否完整,并通过访问控制列表确定写用户所具有的写权限,接着,并将锁盒子密 钥 LBK 和文件签名密钥 FSK 返回给用户,
步骤 (5.3) 写用户按以下步骤写入或者修改文件,
步骤 (5.3.1) 写用户使用锁盒子密钥 LBK 获得文件块密钥,然后使用文件块密钥 对文件数据进行解密,获得文件明文信息,并使用 SHA1 算法对文件以块为单位计算所 要修改内容所在文件块的哈希值,看是否与安全元数据中保存的哈希值一致,判断所读 数据的完整性,
步骤 (5.3.2) :对步骤 (5.3.1) 的文件进行写入或者修改,并使用文件块密钥重新 对新的文件数据进行加密,并使用文件签名密钥 FSK 进行签名,
步骤 (5.3.3) :写用户将修改后的文件数据和安全元数据文件发给所述文件服务 器进行存储 ;
步骤 (6) :所述文件所有者按以下步骤进行权限撤销操作 :
步骤 (6.1) :该文件所有者从所述文件服务器端获得安全元数据文件,然后将 自己的身份标识、安全元数据文件中的访问控制块和拟撤销的用户列表发给信任域服务器, 步骤 (6.2) :该信任域服务器按以下步骤执行操作,
步骤 (6.2.1) :调用所述的身份认证模块对文件所有者的身份标识进行认证,确 定其具有撤销用户操作的权限,
步骤 (6.2.1) :调用所述的访问控制模块,使用信任域密钥 ASEK 解密该访问控 制块,获得访问控制列表、锁盒子密钥 LBK 和文件签名密钥 FSK 在内的信息,并使用自 己的信任域签名密钥 ASSK 重新计算该访问控制块的 HMAC 值,判断该访问控制块的完 整,然后从访问控制块的访问控制列表中删除需要撤销的用户所在的访问控制列表项, 接着为文件生成新的锁盒子密钥 LBK′和新的文件签名密钥 FSK′,然后信任域服务器 用信任域服务器加密密钥 ASEK 重新加密新生成的锁盒子密钥 LBK ′和新生成的文件 签名密钥 FSK′,并使用信任域服务器签名密钥 ASSK 重新对修改过的访问控制块计算 HMAC,
步 骤 (6.2.2) :所 述 信 任 域 服 务 器 将 新 的 访 问 控 制 块、 新 的 文 件 签 名 密 钥 FSK′、新的锁盒子密钥 LBK′以及旧的锁盒子密钥 LBK 返回给文件所有者,
步骤 (6.3) :所述文件所有者按以下方式使用懒惰撤销操作 :使用旧的锁盒子密 钥 LBK 解密所有文件块密钥,使用新的锁盒子密钥 LBK′加密这些文件块密钥,对文件 块的重新加密操作推迟到用户对文件块的更新时再进行。
本发明的效果如下 :
1. 不依赖于底层文件系统并保证用户文件在云存储区的机密性,只有拥有合法 权限的用户才可以获得文件的信息 ;
2. 保证了用户对文件操作过程中端到端的完整性,用户能够及时发现数据在网 络中传输时是否被非法篡改或者由于存储介质的变化导致数据破坏等情况 ;
3. 降低了权限撤销的开销,特别是在一个多用户,权限变更频繁的应用场景 中,本发明能够很大程度提高权限撤销的效率 ;
本发明在清华大学计算机系高性能计算技术研究所进行过测试,结果表明,这 种安全存储系统能在云存储环境下为用户提供文件共享的同时,也能保证数据的机密 性、完整性和访问控制,并且性能开销也在用户可以接受的范围之内。
附图说明 :
图 1 系统结构图。
图 2 文件所有者创建文件示意图。
图 3 读用户读文件示意图。
图 4 写用户写文件示意图。
图 5 文件所有者撤销用户权限示意图。
图 6 访问控制块图示意图。
图 7 单机环境下使用 IOzone 测试对比 ext3 和本发明的读写性能。
图 8 集群环境下使用 IOzone 测试对比 NFS 和本发明的读写性能。具体实施方式 :
本发明的具体实施方式如下 :
步骤 1 :用户申请获得用户标识 :用户标识是用户在系统中唯一的身份标识, 文件所有者和信任域服务器都是通过用户的标识来确定用户的身份,判断其的访问权 限 ;为了安全有效地识别系统中主体 ( 包括信任域服务器和用户 ) 的身份,以便系统对 进行操作的用户建立起相互之间的信任关系,系统需要一种独立于底层存储系统的安全 的用户身份标识机制。 在本系统中采用公钥基础设施 (PKI, Public Key Infrastructure), 通过数字证书来为系统提供用户标识。 数字证书是由公正、权威的机构签发给主体的电 子文档,该文档中记录有主体名称、证书序号、签发方名称、证书的有效期、密码算法 标识、公钥信息和其它信息,并经过签发方的数字签名公钥基础设施是包括了硬件、软 件、人力、策略和过程的平台或框架,它利用公钥技术提供了对数字证书进行创建、管 理、分发、使用、存储以及撤销的功能。 证书颁发机构 (CA, CerfiticateAuthority) 和注 册机构 (RA, Registration Authority) 是公钥基础设施的重要组成部分。 前者是公钥基础 设施的核心,它是一个可信的第三方,通过将用户的公钥与用户的其他信息 ( 包括用户 身份 ) 绑定在一起来为用户签发数字证书,并提供证书的查询、撤销、生命周期管理以 及密钥管理 ;后者主要是面向用户履行证书颁发机构委派的一些责任。 公钥 基础设施是 一种成熟的、被广泛应用的技术体系,具有统一的规范和标准,并有很多较为完备的实 现。 利用公钥基础设施为系统提供用户标识,可以将维护用户标识唯一性和真实性的工 作交给这个成熟的体系来完成,同时使系统用户在不必了解复杂管理细节的情况下安全 高效地验证其他系统主体的身份,实现用户之间的相互信任,从而保证用户信息的真实 性、完整性、机密性和不可否认性 ; 步骤 2 :文件所有者创建文件,文件所有者创建文件的步骤一般有如下步骤, 具体如图 2 所示 ;
步骤 2.1 :文件所有者向信任域服务器发送创建文件的请求 :文件所有者首先 创建访问控制块的内容,内容包括 :他的身份标识、文件名、所指定的加密算法和模式 以及访问控制列表,并将访问控制块发给信任域服务器 ;
步骤 2.2 :信任域服务器处理文件所有者创建文件的请求 :信任域服务器首先 根据文件所有者的身份标识判断其身份和权限,然后为其请求创建的文件生成锁盒子密 钥 LBK 和文件签名密钥 FSK,接着信任域服务器使用信任域加密密钥 ASEK 加密锁盒子 密钥 LBK 和文件签名密钥 FSK,并使用信任域签名密钥 ASSK 为访问控制块计算 HMAC 值,然后将访问控制块返回给文件所有者 ;
步骤 2.3 :文件所有者创建文件 :文件所有者创建文件,输入内容,然后使用 SHA1 算法对文件以块为单位计算哈希值,将哈希值保存在安全元数据文件中,再使用文 件块密钥对文件以块为单位进行加密,并生成文件密文,最后将文件的密文和安全元数 据文件发给文件服务器进行存储 ;
步骤 3 :读用户读取文件,读用户读取文件信息一般有如下步骤,具体如图 3 所示 : 步骤 3.1 :读取文件密文和安全元数据文件 ;读用户首先从文件服务器端读取 文件密文和安全元数据文件,获得访问控制块 ;
步骤 3.2 :读用户的身份认证 ;读用户将自己的身份标识和安全元数据文件中
的访问控制块发给信任域服务器,信任域在接收到读用户的身份标识和访问控制块后, 首先使用信任域密钥 ASEK 解密该访问控制块,获得访问控制列表、锁盒子密钥 LBK 和 文件签名密钥 FSK 等信息,然后使用自己的信任域签名密钥 ASSK,计算访问控制块的 HMAC 值,判断访问控制块的完整性,然后信任域服务器确认了用户的身份标识,并根 据访问控制列表确定了读用户的读权限,然后将锁盒子密钥 LBK 发给读用户 ;
步骤 3.3 :读用户读取文件 ;读用户获得锁盒子密钥 LBK 之后,利用其解密 获得文件块密钥,然后使用文件块密钥对所读内容所在的文件块进行解密,获得明文信 息,并使用 SHA1 算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保 存的哈希值一致,判断所读数据的完整性,若所读数据是完整的,则读取该数据,否则 向系统报错 ;
步骤 4 :写用户对文件进行修改,一般步骤如下,具体如图 4 所示 :
步骤 4.1 :写用户读取文件密文和安全元数据文件 ;写用户首先从文件服务器 端读取要修改的文件的密文和安全元数据文件 ;
步骤 4.2 :写用户的身份认证 ;写用户将自己的身份标识和安全元数据文件中 的访问控制块发给信任域服务器,信任域服务器接收到访问控制块后,使用信任域密钥 ASEK 解密该访问控制块,获得访问控制列表、锁盒子密钥 LBK 和文件签名密钥 FSK 等 信息,并使用自己的信任域签名密钥 ASSK 重新计算该访问控制块的 HMAC 值,看是否 与访问控制块中的 HMAC 值相等,判断该访问控制块是否完整,然后确认用户的身份标 识,并通过访问控制列表确定用户所具有的写权限,并将锁盒子密钥 LBK 和文件签名密 钥 FSK 返回给用户, 步骤 4.3 :写用户修改文件 ;写用户在获得锁盒子密钥 LBK 和文件签名密钥 FSK 后,使用锁盒子密钥 LBK 获得文件块密钥,然后使用文件块密钥对所修改内容所 在的文件块进行解密,获得明文信息,并使用 SHA1 算法对要修改内容所在的文件块计 算,看是否与安全元数据中保存的哈希值一致,判断所修改数据的完整性,紧接着写用 户修改文件,然后使用文件块密钥重新对写入的内容计算哈希值和进行加密,并使用文 件签名密钥 FSK 进行签名,最后还需要对安全元数据进行更新 ;
步骤 4.4 :写用户将修改后的文件和安全元数据文件发给文件服务器进行存储 ;
步骤 5 :权限撤销的操作 ;当文件所有者认为某个用户可能会对文件造成破坏 或者会向外散播该文件信息,可能会将这个用户的权限进行撤销,当文件所有者撤销用 户的权限,一般具有以下步骤,具体如图 5 所示 ;
步骤 5.1 :文件所有者向信任域服务器发出请求,请求撤销用户的权限 ;首先 文件所有者从文件服务器端获得安全元数据文件,然后将自己的身份标识、安全元数据 文件中的访问控制块和撤销的用户列表发给信任域服务器 ;
步骤 5.2 :信任域服务器对文件所有者的请求进行处理 ;信任域服务器接收到 用户的请求后,首先使用信任域密钥 ASEK 解密该访问控制块,获得访问控制列表、锁 盒子密钥 LBK 和文件签名密钥 FSK 等信息,并使用自己的信任域签名密钥 ASSK 重新计 算该访问控制块的 HMAC 值,判断该访问控制块的完整后,在对文件所有者的身份进行 认证,在确定文件所有者的身份和其具有撤销用户操作的权限后,然后从访问控制块的 访问控制列表中删除需要撤销的用户所在的访问控制列表项,接着为文件生成新的锁盒
子密钥 LBK′和新的文件签名密钥 FSK′。 然后信任域服务器用信任域服务器加密密钥 重新加密新生成的锁盒子密钥 LBK′和文件签名密钥 FSK′,并使用信任域服务器签名 密钥重新对修改过的访问控制块计算 HMAC。 然后,信任域服务器将新的访问控制块、 新的文件签名密钥、新的锁盒子密钥 LBK ′以及旧的锁盒子密钥 LBK 返回给文件所有 者;
步骤 5.3 :文件所有者使用懒惰撤销操作 ;文件所有者首先使用旧的锁盒子密 钥 LBK 解密所有文件块密钥,使用新的锁盒子密钥 LBK′加密这些文件块密钥,并将新 的访问控制块信息写入到安全元数据文件中,所谓的懒惰撤销方法指的是 :文件所有者 并不是使用新的密钥对整个文件 ( 即所有的文件块 ) 进行重新加密,而是将对文件块的重 新加密操作推迟到用户对文件块的更新时再进行 ;
本发明的系统结构如图 1 所示,使用 FUSE(Filesystem in Userspace) 框架在 Linux 上实现。 FUSE 是一种被文件系统开发者广泛使用的技术。 通过 FUSE,文件系统开发 者可以在不修改内核的前提下迅速方便地开发自己的用户态文件系统。 得益于其内核模 块,FUSE 可以从 VFS 层截获系统调用,然后将这些系统调用传递给开发者自己的用户态 的文件系统以实现一些特殊的操作逻辑。 FUSE 也使得用户可以在没有 root 权限的情况下 挂载自己的文件系统。 此外,FUSE 独立于特定的底层存储系统,具有良好的可移植性。 这些特性完全满足了本发明的设计和实现需求。 在密码学操作上,本发明使用 OpenSSL 库来执行密码学相关操作,其中 OpenSSL 是。 这个库以良好的实现和完备的接口著称, 因此被广泛应用。在系统中使用 SHA-1 作为密码学哈希函数,使用基于 SHA-1 的 HMAC 作为 MAC 函数,以及使用 AES-256 作为默认的块加密函数。这些参数都是可以由用户在 挂载系统时进行配置。 另外,OpenSSL 也提供了对公钥基础设施 (PKI) 的较好的实现, 可以用在系统中以认证系统角色并在用户和信任域服务器之间建立安全信道。
本发明的核心是提出了一种云存储环境下的安全存储系统,其实现主要是由以 下几个部分以及其相应的模块组成 :
●信任域服务器
信任域服务器主要有以下几个模块构成 :
1. 用户认证模块
该模块负责对用户身份进行验证。 实际上因为采用了在 SSL/TLS 和公钥基础 设施,用户身份与信任域服务器身份都是借助公钥基础设施所授予的 X.509 证书进行认证 的,系统新用户首先必须向注册机构 (RA, RegistrationAuthority) 申请证书,然后才可以 使用该系统。 尽管这个过程需要基于非对称加密的公钥基础设施的支持,并会引入一定 的开销,但是这种非对称计算只有在新用户第一次加入才会发生并且只进行一次 ;在占 据绝大多数使用时间的后续的文件访问过程中进行的全部是对称加密计算,这样一来相 比其他采用非对称加密的系统,本系统并不会引入过多的性能开销。 在用户与信任域服 务器进行通信的时候,信任域服务器需要验证用户证书,并从中得到用户的用户名,据 此计算用户名哈希值以便进行后续的访问控制。
用户在进行文件访问时,必须首先在客户端上通过 SSL/TLS 协议在加密的信道 上与信任域服务器交互,信任域服务器需要验证用户证书,并从中得到用户的用户名, 据此计算用户名哈希值 ;在信任域服务器的通过用户认证与访问控制权限验证以后,用户才可以最终获得文件块密钥。
关于公钥基础设施需要指出的是,一些具有安全需求的组织或机构可能已经部 署了公钥基础设施,因此这并不是一个额外的配置要求。
2. 访问控制模块
该模块在文件所有者授权下执行对文件的访问控制,所执行的操作包括对用户 发来的访问控制块完整性的验证 ( 通过计算访问控制块的 HMAC 值 ),对用户身份的验 证 ( 验证用户的身份标识,并通过比较发送请求中的用户名哈希值与访问控制块中访问 控制列表保存的用户名哈希 ),对用户请求访问权限的验证 ( 通过查询访问控制列表获得 用户的所具有的权限操作 ),以及对访问控制块中相关密钥的解密 ( 使用信任域加密密 钥 ASEK 对访问控制块进行解密,使用信任域签名密钥 ASSK 计算访问控制块的 HMAC 值 )。
●客户端
客户端主要由以下几个模块构成 :
1. 数据加解密模块
该模块承担了系统的大部分的加解密相关的密码学操作操作,包括使用文件块 密钥加解密文件块等。 此外该模块还负责处理客户端与信任域服务器之间的通信。
2. 数据完整性验证模块
该模块提供文件块内容完整性验证等操作,以及文件块内容哈希值更新等操 作。
3. 缓存模块
缓存模块提供缓存以提高系统性能。 缓存分为安全元数据缓存和文件数据缓存 两部分。 其中,安全元数据缓存对诸如访问控制块、用于访问控制的密钥进行缓存 ;而 文件数据缓存则负责缓存文件数据。 此外该模块还负责维护缓存与实际数据的一致性。
4. 文件系统接口
该模块提供了 POSIX 文件系统调用。 本发明在这些接口中实现了大部分逻辑, 考虑了对 FUSE 挂载点路径的转换处理和因为以文件块为单位验证数据内容完整性而导致 的对访问请求偏移和长度的扩展,并实现了对文件空洞进行读写的支持。
●文件服务器
1. 存储模块 :存储文件密文和安全元数据文件。 其中,安全元数据文件的主 要构成为 :访问控制块和文件的一些完整性信息。 访问控制块的内容如图 6 所示主要 包括 :文件名的哈希值、访问控制列表、加密算法和加密的模式、锁盒子密钥和文件签 名密钥,以及整个访问控制块的 HMAC 值,其中访问控制列表如下表所示,它是一个二 维数组,其中一列是用户名的哈希值,这样做的目的是可以保证用户名的机密性和完整 性,另一列是用户的操作权限,其中 “r” 表示用户具有读操作权限, “w” 表示用户具 有写操作权限,对于可执行文件来说, “x” 表示可执行操作权限 ;另外,文件的完整 性信息主要是文件块的哈希值等。
用户名 ( 哈希值 ) Hash( 用户名 1)14操作权限 rw-CN 102014133 A CN 102014140 A说明书r-... r--11/12 页Hash( 用户名 2) ... Hash( 用户名 n)
性能测试
本发明在清华大学计算机科学与技术系高性能计算研究所进行了系统的测试, 这些测试包括使用业界认可的文件系统的基准程序 IOzone,分别在单机和集群环境下测 试本发明的读写性能,以及测试了本发明在权限撤销下的性能。
●单机标准测试程序测试
使用 IOzone 对本发明在单机文件系统 ext3 下的文件系统的性能进行测试。 实验 环境包含一台具有 1.8GHz AMD 双核 CPU 和 4GB 内存的 Sun SunFireTM V20z 服务器,该 服务器上运行的操作系统是 Debian Linux(version 2.6.30)。 该服务器上同时运行信任域服 务器端与客户端软件。 为消除文件系统缓存的影响,实验将文件大小设为 8GB(2 倍于系 统内存大小 )。在测试中,测试文件大小为 8GB ;文件系统访问请求大小分别为 64KB。
由于没有网络通信开销,密码学计算开销将占据额外开销的主要部分。 通过 对本发明在 AES-256 加密算法 CFB 模式下运行 IOzone,并将结果与直接在 ext3 上运行 IOzone 的结果对比,有助于深入了解 ( 因密码学计算所致性能下降的 ) 系统性能,最后得 到的结果如图 7 所示。
从图中可以看出与 ext3 相比,本发明由于密码学计算的开销带来平均 30%左右 的性能下降。
●集群标准测试程序测试
为使测试结果接近本发明在网络环境下文件系统的真实性能,本文使用 IOzone 对架在 NFS 之上的本发明与 NFS 进行性能比较。 实验环境架设在具有 7 个节点的 Dell PowerEdgeTM M605 刀片集群上,包括 1 台信任域服务器,1 台 NFSv4 服务器和 5 台装有 本发明的客户机,这些机器通过 1000Mbps 以太网连接。 信任域服务器和 NFS 服务器分 别运行在具有两颗 800MHz AMD 四核 CPU 和 16GB 内存的机器上,装有本发明的客户端 则分别运行在 5 台具有两颗 800MHz AMD 四核 CPU 和 8GB 内存的客户机上。 这些机器 上运行的操作系统都是 Fedora Core 10Linux(version 2.6.32)。 实验采用 256 位 AES 算法 做数据加密算法,采用 SHA-1 算法作为密码学哈希函数,并使用基于 SHA-1 的 HMAC 作为 MAC 算法。 为消除文件系统缓存的影响并测试对实际应用中较大文件的支 持,将 文件大小设为 16GB(2 倍于系统内存大小 )。
需要指出的是,为更贴近实际应用,实验选取默认的 64KB 作为文件块大小,并 选择 CFB 作为 AES-256 的加密模式,因为其安全性较好,可在实际中广泛应用。
实验利用 IOzone 分别测试了 NFS 和架设在 NFS 之上的本发明在 16GB 文件上以 64KB 请求进行的顺序写、顺序重写、顺序读和顺序重读的吞吐率。 实验结果如图 8 所 示,图中结果为 5 个节点上测试所得的聚合吞吐率。
从图中可以看出,本发明架在 NFS 之上的聚合访问速度十分接近于 NFS 本身的 速度,由此可见当客户端增多时,底层存储成为了瓶颈,本发明引入的计算开销就很不 明显了。 实验结果表明,在共享存储环境中,本发明将能得到很好的应用。
●权限撤销测试环境包括一台信任域服务器和一台客户机,每台机器的配置为 :装有 1.8GHz AMD 双核 CPU 和 4GB 内存的 Sun SunFireTM V20z 服务器,操作系统是 Debian Linux( 内核版本 2.6.30)。 实验在一个 1GB 大小的文件上首先对 1000 个不同的用户授予 r-- 权限,然后将这些用户的权限修改为 rw-,最后撤销这些用户的权限。 实验在装有本 发明的客户端的访问控制工具上测试得到的每个用户的有关权限的操作时间并且将这些 时间做了平均,得到结果下所示。
操作名称 时间 (ms) 权限授予 1.862739 权限变更 1.858765 权限撤销 21.744502 可以看出在本发明中对大文件的用户使用权限操作时间开销较短,具有很好的高效性。