在云存储环境下一种安全存储系统的实现方法

文档序号:7767257阅读:162来源:国知局
专利名称:在云存储环境下一种安全存储系统的实现方法
技术领域
云存储环境下安全存储系统的实现方法属于存储安全领域,尤其涉及其中的安 全访问控制、密钥分发管理和文件管理等技术领域。
背景技术
现今随着云计算技术的飞速发展,云存储也逐渐受到了广泛的关注和应用,文 件所有者可以创建文件,并将文件上传到云存储区中,将文件交由云存储服务提供商进 行管理,同时该文件所有者可以允许指定其他用户对该文件进行读写访问,实现了文件 的共享访问。虽然云存储服务提供商能够给用户提供方便的文件共享访问,但是存在于其中 的安全问题则不容忽视。首先,文件的机密性无法保证文件是以明文形式存储于云 存储区中,这些信息都毫无保留地置于云存储服务提供商的视线之中,倘若云存储服务 提供商获取了这些文件信息,并应用于非法目的,则将给用户带来不可预计的后果;其 次,文件信息的完整性无法保证在其他用户对该文件的共享时,文件的信息是以明文 的形式在网络中传输,这样就给网络窃听者带来了可乘之机,网络窃听者可以在网络中 截取文件信息,在得到文件信息后,可以将不利于自己的一些信息删去,同时人为添加 一些对自己有利的虚假信息,然后再将该信息发给其他用户,达到自己的非法目的;再 次,对于权限的没有有效地管理,以及权限撤销时的安全性无法保证如何能够有效实 现用户对该文件的共享,以及当一个用户的对该文件的访问权限被撤销后,如何能够保 证该文件更新后的内容不会再被撤销权限的用户获得。以上这些都是考验安全存储系统 的一些安全性问题。安全存储系统的功能是使用户能够保证共享数据的安全,它的实现方法是首 先文件所有者在本地使用哈希算法对该文件以块为单位计算哈希值,并使用密钥和加密 算法对文件以块为单位进行加密,然后将密文和哈希值一起放入公共的存储区进行存 储,这样公共存储区的管理员就无法得知文件的内容,保证了数据的机密性,同时由该 文件的所有者将密钥分发给他认为可以对该文件进行访问的用户。这些用户可以访问该 文件,并用掌握的密钥对访问内容所在文件块进行解密,然后计算这些块的哈希值,看 是否与保存的哈希值相等,如果相等,则说明访问的内容是完整的,最后再进行读取文 件的内容。在国内外现今所实现的安全存储系统,虽然保证了文件的机密性和完整性, 但是还有一些不足首先,有的存储系统的实现需要底层存储系统的支持,甚至是需要 对内核的版本进行改动或者是有特定内核版本的要求,这样给用户带来了许多不便,如 果用户需要使用这些安全存储系统,则需要安装特定的底层存储系统,或者是需要特定 版本的内核,或者是需要对内核进行修改;其次,有的安全存储系统在对文件进行操作 时,使用到了非对称加密算法,在一些情况中还需要使用到密钥回滚操作,由于非对称 加密算法的复杂度较高,因此该类安全存储系统的性能不容乐观;再次,大部分现今的 安全存储系统在对待用户的权限撤销上,一般使用的是积极撤销方法,积极撤消操作出现的背景是由于文件的所有者可能会认为已经授权访问该文件的某个用户会对该文件 进行破坏或者该用户可能会将文件的内容散发出去,造成文件所有者所不希望看到的效 果,因此文件所有者可能会将这个用户的权限进行撤销,但是由于该用户已经掌握了访 问该文件所需要的密钥,因此为了保证文件的安全性,文件所有者不得不立刻重新生成 新的密钥,并用新的密钥重立刻新对文件进行加密,最后将新的密钥分发给除了被撤销 权限的用户之外的其他合法用户,这就是积极撤销,这样做带来的一些后果是,对于大 文件来说,积极撤销带来的立刻重新加密的密码学开销极为庞大,同时在频繁撤销的环 境中,这种安全存储系统的开销也可能让用户难以承受。本发明实现了一种云存储环境下的安全存储系统,其为用户保证了数据的机密 性和完整性,同时对用户的权限进行的有效地管理,并保证了权限撤销时文件的安全 性,该系统还具有良好的可拓展性。

发明内容
本发明的目的在于提供一种云存储环境下安全存储系统的系统架构,使得用户 在不可信的存储和网络环境中即使失去了对系统物理资源的控制仍然可以安全高效地进 行文件共享,同时数据安全保护与已部署的底层存储系统无关底层存储系统只提供可 靠的数据存储服务,而数据机密性、完整性的保护与访问控制则在根据用户需求设立的 信任域中完成;用户可以不依赖底层存储系统提供数据安全性保护机制就能保证自己数 据端到端的安全性,反过来底层存储系统也无法干涉用户的安全性保护机制。该架构将 数据安全保护的责任从用户不具有控制权限的数据服务器和安全性较弱的单个客户机集 中到具有较高安全级别的、可由用户自己设定维护的、可信的信任域服务器上,从而消 除了存储系统对不可信文件服务器的信任需求,并降低了用户的管理复杂度和由客户机 密钥泄漏所带来的安全风险,因此非常适用于用户对底层共享文件系统没有控制权限的 应用场景。本发明的框架包括信任域服务器、文件服务器、客户端和网络。其作用分别 如下1)信任域服务器其作用是对用户的身份进行认证,并对文件的密钥进行管理 和分发;2)文件服务器其作用是存储文件和安全元数据文件;3)客户端创建文件并对文件进行访问;4)网络作为文件传输的介质,传输用户的访问请求和文件信息;本发明的思路是1)该存储系统与底层存储系统无关;即数据安全保护与已部署的底层存储系统 无关,底层存储系统只提供可靠的数据存储服务,而数据机密性、完整性的保护与访问 控制则在根据用户需求设立的信任域中完成;用户可以不依赖底层存储系统提供数据安 全性保护机制就能保证自己数据端到端的安全性,反过来底层存储系统也无法干涉用户 的安全性保护机制;2)文件的机密性和完整性保护;i.文件所有者创建文件;首先在本地使用哈希算法——SHAl算法对文件以块为单位计算哈希值,然后使用密钥和加密算法AES算法对文件以块为单位进行加密,然 后上传到云存储区中存储,这样就保证了文件在云存储区中的机密性,其中SHAl算法 是由美国国家安全局设计,并由美国国家标准与技术研究院发布的一种安全散列算法, 是一种被广泛应用的哈希算法,它的用处是将冗长的文件压缩成为一段独特的数字信息 (一般称为哈希值),保证原来文件的合法性和安全性,同时AES算法是美国国家技术 标准委员会在2000年所确定的高级加密标准,是一种广泛应用的保护数据安全的加密算 法;方便的密钥管理文件所有者将密钥分发和管理的权限交给信任域服务器进行。ii.文件所有者指定访问控制列表,指定具有对该文件进行访问的权限的用户; 当文件所有者创建一份该文件的访问控制列表,将他认为可以对该文件进行访问的用户 添加入访问控制列表,并将访问控制列表发给信任域服务器,信任域服务器将该文件的 密钥发给访问控制列表上的用户。当具有访问权限的用户对文件进行访问时,数据是以 密文形式在网络中传输,用户再利用掌握的密钥对文件以块为单位进行解密,然后使用 SHAl算法对解密后的文件以块为单位计算哈希值,判断是否与读取到的哈希值相等,若 相等,则表示数据是完整的,最后读取文件内容,若用户计算的哈希值与读取到的哈希 值不相等,则表示数据的完整性遭到了破坏,则向系统报错;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)所述文件所有者创建文件,输入数据,然后使用安全哈希算法,即 SHAl算法,对文件以块为单位计算哈希值,将哈希值保存在安全元数据文件中,再使用 文件块密钥对文件以块为单位进行加密,并生成文件密文,最后将文件的密文和安全元数据文件发给所述文件服务器进行存储;步骤(4)读用户按照以下步骤读取步骤(3)所创建的文件步骤(4.1)从所述文件服务器端读取文件数据密文和安全元数据文件,步骤(4.2)按以下步骤进行该读用户的身份认证,步骤(4.2.1)读用户将自己的身份标识和安全 元数据文件中的访问控制块发给 所述信任域服务器,步骤(4.2.2)信任域服务器调用身份认证模块确认用户的身份标识,调用访问 控制模块,使用信任域密钥ASEK解密该访问控制块,获得包括锁盒子密钥LBK、文件 签名密钥FSK和访问控制列表在内的信息,使用信任域签名密钥ASSK计算访问控制块 的HMAC值,以判断访问控制块的完整性,并根据访问控制列表确定读用户的读权限, 然后将锁盒子密钥LBK发给读用户,步骤(4.3)该读用户获得锁盒子密钥LBK之后,利用其解密获得文件块密 钥,然后使用文件块密钥对文件数据进行解密,最后获得文件数据的明文信息,并使用 SHAl算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保存的哈希值一 致,判断所读数据的完整性,若相等,则说明数据完整,用户再读取该数据,否则则向 系统报错;步骤(5)写用户按照以下步骤写入或者修改文件数据,步骤(5.1)该写用户首先从所述文件服务器端读取要修改的所述文件数据的密 文和安全元数据文件,步骤(5.2)写用户按以下步骤进行身份认证,步骤(5.2.1)该写用户将自己的身份标识和安全元数据文件中的访问控制块 发给信任域服务器,所述信任域服务器调用身份认证模块确认用户的身份标识,并调 用所述访问控制模块,使用信任域密钥ASEK解密该访问控制块,获得包括锁盒子密钥 LBK、文件签名密钥FSK和访问控制列表在内的信息,使用信任域签名密钥ASSK重新 计算该访问控制块的HMAC值,看是否与访问控制块中的HMAC值相等,判断该访问控 制块是否完整,并通过访问控制列表确定写用户所具有的写权限,接着,并将锁盒子密 钥LBK和文件签名密钥FSK返回给用户,步骤(5.3)写用户按以下步骤写入或者修改文件,步骤(5.3.1)写用户使用锁盒子密钥LBK获得文件块密钥,然后使用文件块密钥 对文件数据进行解密,获得文件明文信息,并使用SHAl算法对文件以块为单位计算所 要修改内容所在文件块的哈希值,看是否与安全元数据中保存的哈希值一致,判断所读 数据的完整性,步骤(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:文件所有者创建文件文件所有者创建文件,输入内容,然后使用 SHAl算法对文件以块为单位计算哈希值,将哈希值保存在安全元数据文件中,再使用文 件块密钥对文件以块为单位进行加密,并生成文件密文,最后将文件的密文和安全元数 据文件发给文件服务器进行存储;>步骤3:读用户读取文件,读用户读取文件信息一般有如下步骤,具体如图3 所示今步骤3.1:读取文件密文和安全元数据文件;读用户首先从文件服务器端读取 文件密文和安全元数据文件,获得访问控制块;今步骤3.2:读用户的身份认证;读用户将自己的身份标识和安全元数据文件中的访问控制块发给信任域服务器,信任域在接收到读用户的身份标识和访问控制块后,首先使用信任域密钥ASEK解密该访问控制块,获得访问控制列表、锁盒子密钥LBK和 文件签名密钥FSK等信息,然后使用自己的信任域签名密钥ASSK,计算访问控制块的 HMAC值,判断访问控制块的完整性,然后信任域服务器确认了用户的身份标识,并根 据访问控制列表确定了读用户的读权限,然后将锁盒子密钥LBK发给读用户;令步骤3.3:读用户读取文件;读用户获得锁盒子密钥LBK之后,利用其解密 获得文件块密钥,然后使用文件块密钥对所读内容所在的文件块进行解密,获得明文信 息,并使用SHAl算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保 存的哈希值一致,判断所读数据的完整性,若所读数据是完整的,则读取该数据,否则 向系统报错;>步骤4:写用户对文件进行修改,一般步骤如下,具体如图4所示今步骤4.1:写用户读取文件密文和安全元数据文件;写用户首先从文件服务器 端读取要修改的文件的密文和安全元数据文件;令步骤4.2:写用户的身份认证;写用户将自己的身份标识和安全元数据文件中 的访问控制块发给信任域服务器,信任域服务器接收到访问控制块后,使用信任域密钥 ASEK解密该访问控制块,获得访问控制列表、锁盒子密钥LBK和文件签名密钥FSK等 信息,并使用自己的信任域签名密钥ASSK重新计算该访问控制块的HMAC值,看是否 与访问控制块中的HMAC值相等,判断该访问控制块是否完整,然后确认用户的身份标 识,并通过访问控制列表确定用户所具有的写权限,并将锁盒子密钥LBK和文件签名密 钥FSK返回给用户,令步骤4.3:写用户修改文件;写用户在获得锁盒子密钥LBK和文件签名密钥 FSK后,使用锁盒子密钥LBK获得文件块密钥,然后使用文件块密钥对所修改内容所 在的文件块进行解密,获得明文信息,并使用SHAl算法对要修改内容所在的文件块计 算,看是否与安全元数据中保存的哈希值一致,判断所修改数据的完整性,紧接着写用 户修改文件,然后使用文件块密钥重新对写入的内容计算哈希值和进行加密,并使用文 件签名密钥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-I作为密码学哈希函数,使用基于SHA-I的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) |rw-
权利要求
1.在云存储环境下的一种安全存储系统的实现方法,其特征在于,所述的方法是在 信任域服务器、客户端和文件服务器组成的网络中,使用用户空间的文件系统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之后,利用其解密获得文件块密钥,然 后使用文件块密钥对文件数据进行解密,最后获得文件数据的明文信息,并使用SHAl 算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保存的哈希值一致, 判断所读数据的完整性,若相等,则说明数据完整,用户再读取该数据,否则则向系统 报错;步骤(5)写用户按照以下步骤写入或者修改文件数据,步骤(5.1)该写用户首先从所述文件服务器端读取要修改的所述文件数据的密文和 安全元数据文件,步骤(5.2)写用户按以下步骤进行身份认证,步骤(5.2.1)该写用户将自己的身份标识和安全元数据文件中的访问控制块发给信 任域服务器,所述信任域服务器调用身份认证模块确认用户的身份标识,并调用所述访 问控制模块,使用信任域密钥ASEK解密该访问控制块,获得包括锁盒子密钥LBK、文 件签名密钥FSK和访问控制列表在内的信息,使用信任域签名密钥ASSK重新计算该访 问控制块的HMAC值,看是否与访问控制块中的HMAC值相等,判断该访问控制块是否 完整,并通过访问控制列表确定写用户所具有的写权限,接着,并将锁盒子密钥LBK和 文件签名密钥FSK返回给用户,步骤(5.3)写用户按以下步骤写入或者修改文件,步骤(5.3.1)写用户使用锁盒子密钥LBK获得文件块密钥,然后使用文件块密钥对文 件数据进行解密,获得文件明文信息,并使用SHAl算法对文件以块为单位计算所要修 改内容所在文件块的哈希值,看是否与安全元数据中保存的哈希值一致,判断所读数据 的完整性,步骤(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'加密这些文件块密钥,对文件块 的重新加密操作推迟到用户对文件块的更新时再进行。
全文摘要
在云存储环境下一种安全存储系统的实现方法属于存储安全技术领域,其特征在于在服务器中根据用户需求建立信任域,在其中利用公钥基础设施PKI进行身份认证,利用用户空间的文件系统FUSE,实现了存储系统与底层系统无关,利用哈希算法SHA1算法以块为单位对文件计算哈希值,再利用密钥和对称加密算法AES算法对以块为单位对文件块加密,再将文件密文上传到云存储区中的文件服务器,保证了文件的机密性和完整性,文件所有者通过在访问控制列表中指定具有对该文件进行访问的用户及其权限,在发生权限撤销操作时,将对文件进行重新加密的操作推迟,只有当用户对文件内容进行修改时,由该用户重新加密修改内容所在的文件块,系统实行了文件块密钥、安全元数据文件密钥和信任域服务器密钥三层密钥管理,既保证了权限撤销时文件的安全性,又不增加系统的管理负担。
文档编号H04L29/08GK102014133SQ201010569398
公开日2011年4月13日 申请日期2010年11月26日 优先权日2010年11月26日
发明者沈志荣, 舒继武, 薛巍, 薛矛 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1