著录项信息
专利名称 | 在云存储环境下一种安全存储系统的实现方法 |
申请号 | CN201010569398.2 | 申请日期 | 2010-11-26 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-04-13 | 公开/公告号 | CN102014133A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6;;;H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 清华大学 | 申请人地址 | 北京市海淀区清华园1号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 清华大学 | 当前权利人 | 清华大学 |
发明人 | 舒继武;薛巍;薛矛;沈志荣 |
代理机构 | 北京思海天达知识产权代理有限公司 | 代理人 | 楼艮基 |
摘要
在云存储环境下一种安全存储系统的实现方法属于存储安全技术领域,其特征在于:在服务器中根据用户需求建立信任域,在其中利用公钥基础设施PKI进行身份认证,利用用户空间的文件系统FUSE,实现了存储系统与底层系统无关,利用哈希算法SHA1算法以块为单位对文件计算哈希值,再利用密钥和对称加密算法AES算法对以块为单位对文件块加密,再将文件密文上传到云存储区中的文件服务器,保证了文件的机密性和完整性,文件所有者通过在访问控制列表中指定具有对该文件进行访问的用户及其权限,在发生权限撤销操作时,将对文件进行重新加密的操作推迟,只有当用户对文件内容进行修改时,由该用户重新加密修改内容所在的文件块,系统实行了文件块密钥、安全元数据文件密钥和信任域服务器密钥三层密钥管理,既保证了权限撤销时文件的安全性,又不增加系统的管理负担。
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之后,利用其解密获得文件块密钥,然后使用文件块密钥对文件数据进行解密,最后获得文件数据的明文信息,并使用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′加密这些文件块密钥,将新的安全控制信息写入安全元数据文件,并将更新后的安全元数据文件发回文件服务器,对文件块的重新加密操作推迟到用户对文件块的更新时再进行。
在云存储环境下一种安全存储系统的实现方法 \n技术领域\n[0001] 云存储环境下安全存储系统的实现方法属于存储安全领域,尤其涉及其中的安全访问控制、密钥分发管理和文件管理等技术领域。 \n背景技术\n[0002] 现今随着云计算技术的飞速发展,云存储也逐渐受到了广泛的关注和应用,文件所有者可以创建文件,并将文件上传到云存储区中,将文件交由云存储服务提供商进行管理,同时该文件所有者可以允许指定其他用户对该文件进行读写访问,实现了文件的共享访问。 \n[0003] 虽然云存储服务提供商能够给用户提供方便的文件共享访问,但是存在于其中的安全问题则不容忽视。首先,文件的机密性无法保证:文件是以明文形式存储于云存储区中,这些信息都毫无保留地置于云存储服务提供商的视线之中,倘若云存储服务提供商获取了这些文件信息,并应用于非法目的,则将给用户带来不可预计的后果;其次,文件信息的完整性无法保证:在其他用户对该文件的共享时,文件的信息是以明文的形式在网络中传输,这样就给网络窃听者带来了可乘之机,网络窃听者可以在网络中截取文件信息,在得到文件信息后,可以将不利于自己的一些信息删去,同时人为添加一些对自己有利的虚假信息,然后再将该信息发给其他用户,达到自己的非法目的;再次,对于权限的没有有效地管理,以及权限撤销时的安全性无法保证:如何能够有效实现用户对该文件的共享,以及当一个用户的对该文件的访问权限被撤销后,如何能够保证该文件更新后的内容不会再被撤销权限的用户获得。以上这些都是考验安全存储系统的一些安全性问题。 [0004] 安全存储系统的功能是使用户能够保证共享数据的安全,它的实现方法是:首先文件所有者在本地使用哈希算法对该文件以块为单位计算哈希值,并使用密钥和加密算法对文件以块为单位进行加密,然后将密文和哈希值一起放入公共的存储区进行存储,这样公共存储区的管理员就无法得知文件的内容,保证了数据的机密性,同时由该文件的所有者将密钥分发给他认为可以对该文件进行访问的用户。这些用户可以访问该文件,并用掌握的密钥对访问内容所在文件块进行解密,然后计算这些块的哈希值,看是否与保存的哈希值相等,如果相等,则说明访问的内容是完整的,最后再进行读取文件的内容。在国内外现今所实现的安全存储系统,虽然保证了文件的机密性和完整性,但是还有一些不足:首先,有的存储系统的实现需要底层存储系统的支持,甚至是需要对内核的版本进行改动或者是有特定内核版本的要求,这样给用户带来了许多不便,如果用户需要使用这些安全存储系统,则需要安装特定的底层存储系统,或者是需要特定版本的内核,或者是需要对内核进行修改;其次,有的安全存储系统在对文件进行操作时,使用到了非对称加密算法,在一些情况中还需要使用到密钥回滚操作,由于非对称加密算法的复杂度较高,因此该类安全存储系统的性能不容乐观;再次,大部分现今的安全存储系统在对待用户的权限撤销上,一般使用的是积极撤销方法,积极撤消操作出现的背景是:由于文件的所有者可能会认为 已经授权访问该文件的某个用户会对该文件进行破坏或者该用户可能会将文件的内容散发出去,造成文件所有者所不希望看到的效果,因此文件所有者可能会将这个用户的权限进行撤销,但是由于该用户已经掌握了访问该文件所需要的密钥,因此为了保证文件的安全性,文件所有者不得不立刻重新生成新的密钥,并用新的密钥重立刻新对文件进行加密,最后将新的密钥分发给除了被撤销权限的用户之外的其他合法用户,这就是积极撤销,这样做带来的一些后果是,对于大文件来说,积极撤销带来的立刻重新加密的密码学开销极为庞大,同时在频繁撤销的环境中,这种安全存储系统的开销也可能让用户难以承受。 [0005] 本发明实现了一种云存储环境下的安全存储系统,其为用户保证了数据的机密性和完整性,同时对用户的权限进行的有效地管理,并保证了权限撤销时文件的安全性,该系统还具有良好的可拓展性。 \n发明内容\n[0006] 本发明的目的在于提供一种云存储环境下安全存储系统的系统架构,使得用户在不可信的存储和网络环境中即使失去了对系统物理资源的控制仍然可以安全高效地进行文件共享,同时数据安全保护与已部署的底层存储系统无关:底层存储系统只提供可靠的数据存储服务,而数据机密性、完整性的保护与访问控制则在根据用户需求设立的信任域中完成;用户可以不依赖底层存储系统提供数据安全性保护机制就能保证自己数据端到端的安全性,反过来底层存储系统也无法干涉用户的安全性保护机制。该架构将数据安全保护的责任从用户不具有控制权限的数据服务器和安全性较弱的单个客户机集中到具有较高安全级别的、可由用户自己设定维护的、可信的信任域服务器上,从而消除了存储系统对不可信文件服务器的信任需求,并降低了用户的管理复杂度和由客户机密钥泄漏所带来的安全风险,因此非常适用于用户对底层共享文件系统没有控制权限的应用场景。 [0007] 本发明的框架包括:信任域服务器、文件服务器、客户端和网络。其作用分别如下: \n[0008] 1)信任域服务器:其作用是对用户的身份进行认证,并对文件的密钥进行管理和分发; \n[0009] 2)文件服务器:其作用是存储文件和安全元数据文件; \n[0010] 3)客户端:创建文件并对文件进行访问; \n[0011] 4)网络:作为文件传输的介质,传输用户的访问请求和文件信息; [0012] 本发明的思路是: \n[0013] 1)该存储系统与底层存储系统无关;即数据安全保护与已部署的底层存储系统无关,底层存储系统只提供可靠的数据存储服务,而数据机密性、完整性的保护与访问控制则在根据用户需求设立的信任域中完成;用户可以不依赖底层存储系统提供数据安全性保护机制就能保证自己数据端到端的安全性,反过来底层存储系统也无法干涉用户的安全性保护机制; \n[0014] 2)文件的机密性和完整性保护; \n[0015] i.文件所有者创建文件;首先在本地使用哈希算法——SHA1算法对文件以块为 单位计算哈希值,然后使用密钥和加密算法AES算法对文件以块为单位进行加密,然后上传到云存储区中存储,这样就保证了文件在云存储区中的机密性,其中SHA1算法是由美国国家安全局设计,并由美国国家标准与技术研究院发布的一种安全散列算法,是一种被广泛应用的哈希算法,它的用处是将冗长的文件压缩成为一段独特的数字信息(一般称为哈希值),保证原来文件的合法性和安全性,同时AES算法是美国国家技术标准委员会在2000年所确定的高级加密标准,是一种广泛应用的保护数据安全的加密算法;方便的密钥管理文件所有者将密钥分发和管理的权限交给信任域服务器进行。 \n[0016] ii.文件所有者指定访问控制列表,指定具有对该文件进行访问的权限的用户;\n当文件所有者创建一份该文件的访问控制列表,将他认为可以对该文件进行访问的用户添加入访问控制列表,并将访问控制列表发给信任域服务器,信任域服务器将该文件的密钥发给访问控制列表上的用户。当具有访问权限的用户对文件进行访问时,数据是以密文形式在网络中传输,用户再利用掌握的密钥对文件以块为单位进行解密,然后使用SHA1算法对解密后的文件以块为单位计算哈希值,判断是否与读取到的哈希值相等,若相等,则表示数据是完整的,最后读取文件内容,若用户计算的哈希值与读取到的哈希值不相等,则表示数据的完整性遭到了破坏,则向系统报错; \n[0017] 3)密钥的分发管理由信任域服务器统一进行;在该安全存储系统中主要实现的密钥管理主要分为三层,其理由是:利用层级的组织方式对对称密钥进行组织管理,从而达到既保证系统性能和安全性,又不增加系统的管理负担的目的。操作步骤如下: [0018] i.文件块密钥:为了安全高效地处理大文件,在本系统中以块为单位加密文件,并称此块为文件块,以区分底层存储系统块,每个文件块都使用一个单独的叫做文件块密钥的对称密钥进行加密,并且每个文件都有一组文件块密钥,; \n[0019] ii.安全元数据文件密钥:保存在安全元数据文件中的密钥是第二级,这些密钥包括一个锁盒子密钥LBK和一个文件签名密钥FSK。锁盒子密钥LBK指的是:在一个锁盒子中装有一个文件中的所有文件块密钥,但是这个盒子则被对称的锁盒子密钥LBK加密。\n只有得到锁盒子密钥LBK的授权用户才能解密锁盒子,进而得到文件块密钥以解密文件内容;文件签名密钥FSK主要是写用户在对文件进行修改后的签名密钥。在这个安全存储系统中,正是通过文件签名密钥FSK来区分读操作和写操作,需要说明的是,锁盒子密钥LBK和文件签名密钥FSK都是对称密钥,采用复杂度较低的对称密钥可以显著降低系统的密码学计算开销; \n[0020] iii.信任域服务器密钥:最上面的层次是信任域服务器密钥;所谓信任域服务器密钥只是信任域服务器所维护的两个对称密钥,一个叫做信任域服务器加密密钥 ASEK,一个叫做信任域服务器签名密钥ASSK。前者用来加密数据文件所对应的安全元数据文件的锁盒子密钥LBK和文件签名密钥FSK,从而进行访问控制和区分读-写操作;后者用来作为HMAC算法的输入参数,对安全元数据文件中的访问控制块计算HMAC值以保证其完整性,其中HMAC是一种使用加密散列函数和密钥计算出来的一种消息验证码,它的作用主要是对消息的完整性进行检查。信任域服务器必须保证这两个密钥的机密性,任何时候都不能将这两个密钥泄露给其他任何人,这一点可以在实际应用中借助硬件辅助手段实现。 [0021] 本发明的特征在于,所述的方法是在信任域服务器、客户端和文件服务器组成的网络中,使用用户空间的文件系统FUSE在Linux上依次按照以下步骤实现的: [0022] 步骤(1):网络的初始化, \n[0023] 步骤(1.1):信任域服务器的初始化,设立用户认证模块和访问控制模块,其中用户认证模块采用了SSL/TLS协议和公钥基础设施PKI,访问控制模块是在文件所有者授权下执行对文件的访问控制,在系统中采用了三级密钥管理机制,其中第一级密钥是文件块密钥,为了安全高效地处理大文件,在本系统中以块为单位加密文件,并称此块为文件块,每个文件块都使用一个单独的叫做文件块密钥的对称密钥进行加密,文件块密钥被加密后,存储在安全元数据文件中,第二级密钥是安全元数据文件密钥,包括一个锁盒子密钥LBK和一个文件签名密钥FSK,每个文件都有独自的安全元数据文件密钥,其中锁盒子密钥LBK被用来加密该文件中的所有文件块密钥,保证文件块密钥的机密性,后者是写用户在对文件数据进行修改后的签名密钥,用于区分读操作和写操作,第三级密钥是信任域服务器密钥,是信任域服务器所维护的两个对称密钥,一个叫做信任域服务器加密密钥ASEK,用来加密数据文件所对应的安全元数据文件的锁盒子密钥LBK和文件签名密钥FSK,从而进行访问控制和区分读-写操作,一个叫做信任域服务器签名密钥ASSK,用来对安全元数据文件中的访问控制块计算基于哈希的消息验证码,即HMAC值,以保证访问控制块的完整性, [0024] 步骤(1.2):客户端设有数据加解密模块,数据完整性验证模块,缓存模块,文件系统接口,\n[0025] 步骤(1.3):文件服务器设有存储模块; \n[0026] 步骤(2):用户申请获得用户身份标识,步骤如下: \n[0027] 步骤(2.1):用户在客户端通过安全套接层协议SSL和传输层安全协议TLS在加密的信道上向信任域服务器的用户认证模块发送用户身份标识请求, \n[0028] 步骤(2.2):所述的用户认证模块基于公钥基础设施,用户身份与信任域服务器身份都是借助公钥基础设施所授予的X.509证书进行认证,系统新用户首先必须向注册机构申请证书,然后才可以使用该系统; \n[0029] 步骤(3):文件的所有者按照以下步骤创建文件: \n[0030] 步骤(3.1):所述的文件所有者向所述信任域服务器发送创建文件的请求:文件所有者首先创建访问控制块的内容,内容包括:用户的身份标识、文件名、所指定的加密算法和模式以及访问控制列表,并将访问控制块发给信任域服务器的访问控制模块,其中所述访问控制列表包含用户名的哈希值以及该用户的访问权限, \n[0031] 步骤(3.2):所述的信任域服务器处理文件所有者创建文件的请求,使用身份认证模块对文件所有者的身份进行认证,判断其身份和权限,然后为其请求创建的文件生成锁盒子密钥LBK和文件签名密钥FSK; \n[0032] 步骤(3.3):信任域服务器使用信任域加密密钥ASEK加密锁盒子密钥LBK和文件签名密钥FSK,并使用信任域签名密钥ASSK为访问控制块计算HMAC值,并存入访问控制块的HMAC域中,然后将访问控制块返回给文件所有者; \n[0033] 步骤(3.4):所述文件所有者创建文件,输入数据,然后使用安全哈希算法,即SHA1算法,对文件以块为单位计算哈希值,将哈希值保存在安全元数据文件中,再使用文件块密钥对文件以块为单位进行加密,并生成文件密文,最后将文件的密文和安全元数据文件发给所述文件服务器进行存储; \n[0034] 步骤(4):读用户按照以下步骤读取步骤(3)所创建的文件: \n[0035] 步骤(4.1):从所述文件服务器端读取文件数据密文和安全元数据文件, [0036] 步骤(4.2):按以下步骤进行该读用户的身份认证, \n[0037] 步骤(4.2.1):读用户将自己的身份标识和安全元数据文件中的访问控制块发给所述信任域服务器, \n[0038] 步骤(4.2.2):信任域服务器调用身份认证模块确认用户的身份标识,调用访问控制模块,使用信任域密钥ASEK解密该访问控制块,获得包括锁盒子密钥LBK、文件签名密钥FSK和访问控制列表在内的信息,使用信任域签名密钥ASSK计算访问控制块的HMAC值,以判断访问控制块的完整性,并根据访问控制列表确定读用户的读权限,然后将锁盒子密钥LBK发给读用户, \n[0039] 步骤(4.3):该读用户获得锁盒子密钥LBK之后,利用其解密获得文件块密钥,然后使用文件块密钥对文件数据进行解密,最后获得文件数据的明文信息,并使用SHA1算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保存的哈希值一致,判断所读数据的完整性,若相等,则说明数据完整,用户再读取该数据,否则则向系统报错; [0040] 步骤(5):写用户按照以下步骤写入或者修改文件数据, \n[0041] 步骤(5.1):该写用户首先从所述文件服务器端读取要修改的所述文件数据的密文和安全元数据文件, \n[0042] 步骤(5.2):写用户按以下步骤进行身份认证, \n[0043] 步骤(5.2.1):该写用户将自己的身份标识和安全元数据文件中的访问控制块发给信任 域服务器,所述信任域服务器调用身份认证模块确认用户的身份标识,并调用所述访问控制模块,使用信任域密钥ASEK解密该访问控制块,获得包括锁盒子密钥LBK、文件签名密钥FSK和访问控制列表在内的信息,使用信任域签名密钥ASSK重新计算该访问控制块的HMAC值,看是否与访问控制块中的HMAC值相等,判断该访问控制块是否完整,并通过访问控制列表确定写用户所具有的写权限,接着,并将锁盒子密钥LBK和文件签名密钥FSK返回给用户, \n[0044] 步骤(5.3)写用户按以下步骤写入或者修改文件, \n[0045] 步骤(5.3.1)写用户使用锁盒子密钥LBK获得文件块密钥,然后使用文件块密钥对文件数据进行解密,获得文件明文信息,并使用SHA1算法对文件以块为单位计算所要修改内容所在文件块的哈希值,看是否与安全元数据中保存的哈希值一致,判断所读数据的完整性, \n[0046] 步骤(5.3.2):对步骤(5.3.1)的文件进行写入或者修改,并使用文件块密钥重新对新的文件数据进行加密,并使用文件签名密钥FSK进行签名, \n[0047] 步骤(5.3.3):写用户将修改后的文件数据和安全元数据文件发给所述文件服务器进行存储; \n[0048] 步骤(6):所述文件所有者按以下步骤进行权限撤销操作: \n[0049] 步骤(6.1):该文件所有者从所述文件服务器端获得安全元数据文件,然后将自己的身份标识、安全元数据文件中的访问控制块和拟撤销的用户列表发给信任域服务器, [0050] 步骤(6.2):该信任域服务器按以下步骤执行操作, \n[0051] 步骤(6.2.1):调用所述的身份认证模块对文件所有者的身份标识进行认证,确定其具有撤销用户操作的权限, \n[0052] 步骤(6.2.1):调用所述的访问控制模块,使用信任域密钥ASEK解密该访问控制块,获得访问控制列表、锁盒子密钥LBK和文件签名密钥FSK在内的信息,并使用自己的信任域签名密钥ASSK重新计算该访问控制块的HMAC值,判断该访问控制块的完整,然后从访问控制块的访问控制列表中删除需要撤销的用户所在的访问控制列表项,接着为文件生成新的锁盒子密钥LBK′和新的文件签名密钥FSK′,然后信任域服务器用信任域服务器加密密钥ASEK重新加密新生成的锁盒子密钥LBK′和新生成的文件签名密钥FSK′,并使用信任域服务器签名密钥ASSK重新对修改过的访问控制块计算HMAC, \n[0053] 步骤(6.2.2):所述信任域服务器将新的访问控制块、新的文件签名密钥FSK′、新的锁盒子密钥LBK′以及旧的锁盒子密钥LBK返回给文件所有者, \n[0054] 步骤(6.3):所述文件所有者按以下方式使用懒惰撤销操作:使用旧的锁盒子密钥LBK解密所有文件块密钥,使用新的锁盒子密钥LBK′加密这些文件块密钥,对文件块的重新加密操作推迟到用户对文件块的更新时再进行。 \n[0055] 本发明的效果如下: \n[0056] 1.不依赖于底层文件系统并保证用户文件在云存储区的机密性,只有拥有合法权限的用户才可以获得文件的信息; \n[0057] 2.保证了用户对文件操作过程中端到端的完整性,用户能够及时发现数据在网络中传输时是否被非法篡改或者由于存储介质的变化导致数据破坏等情况; [0058] 3.降低了权限撤销的开销,特别是在一个多用户,权限变更频繁的应用场景中,本发明能够很大程度提高权限撤销的效率; \n[0059] 本发明在清华大学计算机系高性能计算技术研究所进行过测试,结果表明,这种安全存储系统能在云存储环境下为用户提供文件共享的同时,也能保证数据的机密性、完整性和访问控制,并且性能开销也在用户可以接受的范围之内。 \n附图说明:\n[0060] 图1系统结构图。 \n[0061] 图2文件所有者创建文件示意图。 \n[0062] 图3读用户读文件示意图。 \n[0063] 图4写用户写文件示意图。 \n[0064] 图5文件所有者撤销用户权限示意图。 \n[0065] 图6访问控制块图示意图。 \n[0066] 图7单机环境下使用IOzone测试对比ext3和本发明的读写性能。 [0067] 图8集群环境下使用IOzone测试对比NFS和本发明的读写性能。 具体实施方式:\n[0068] 本发明的具体实施方式如下: \n[0069] 步骤1:用户申请获得用户标识:用户标识是用户在系统中唯一的身份标识,文件所有者和信任域服务器都是通过用户的标识来确定用户的身份,判断其的访问权限;为了安全有效地识别系统中主体(包括信任域服务器和用户)的身份,以便系统对进行操作的用户建立起相互之间的信任关系,系统需要一种独立于底层存储系统的安全的用户身份标识机制。在本系统中采用公钥基础设施(PKI,Public Key Infrastructure),通过数字证书来为系统提供用户标识。数字证书是由公正、权威的机构签发给主体的电子文档,该文档中记录有主体名称、证书序号、签发方名称、证书的有效期、密码算法标识、公钥信息和其它信息,并经过签发方的数字签名公钥基础设施是包括了硬件、软件、人力、策略和过程的平台或框架,它利用公钥技术提供了对数字证书进行创建、管理、分发、使用、存储以及撤销的功能。证书颁发机构(CA,CerfiticateAuthority)和注册机构(RA,Registration Authority)是公钥基础设施的重要组成部分。前者是公钥基础设施的核心,它是一个可信的第三方,通过将用户的公钥与用户的其他信息(包括用户身份)绑定在一起来为用户签发数字证书,并提供证书的查询、撤销、生命周期管理以及密钥管理;后者主要是面向用户履行证书颁发机构委派的一些责任。公钥 基础设施是一种成熟的、被广泛应用的技术体系,具有统一的规范和标准,并有很多较为完备的实现。利用公钥基础设施为系统提供用户标识,可以将维护用户标识唯一性和真实性的工作交给这个成熟的体系来完成,同时使系统用户在不必了解复杂管理细节的情况下安全高效地验证其他系统主体的身份,实现用户之间的相互信任,从而保证用户信息的真实性、完整性、机密性和不可否认性; [0070] 步骤2:文件所有者创建文件,文件所有者创建文件的步骤一般有如下步骤,具体如图2所示; \n[0071] 步骤2.1:文件所有者向信任域服务器发送创建文件的请求:文件所有者首先创建访问控制块的内容,内容包括:他的身份标识、文件名、所指定的加密算法和模式以及访问控制列表,并将访问控制块发给信任域服务器; \n[0072] 步骤2.2:信任域服务器处理文件所有者创建文件的请求:信任域服务器首先根据文件所有者的身份标识判断其身份和权限,然后为其请求创建的文件生成锁盒子密钥LBK和文件签名密钥FSK,接着信任域服务器使用信任域加密密钥ASEK加密锁盒子密钥LBK和文件签名密钥FSK,并使用信任域签名密钥ASSK为访问控制块计算HMAC值,然后将访问控制块返回给文件所有者; \n[0073] 步骤2.3:文件所有者创建文件:文件所有者创建文件,输入内容,然后使用SHA1算法对文件以块为单位计算哈希值,将哈希值保存在安全元数据文件中,再使用文件块密钥对文件以块为单位进行加密,并生成文件密文,最后将文件的密文和安全元数据文件发给文件服务器进行存储; \n[0074] 步骤3:读用户读取文件,读用户读取文件信息一般有如下步骤,具体如图3所示: 步骤3.1:读取文件密文和安全元数据文件;读用户首先从文件服务器端读取文件密文和安全元数据文件,获得访问控制块; \n[0075] 步骤3.2:读用户的身份认证;读用户将自己的身份标识和安全元数据文件中的访问控制块发给信任域服务器,信任域在接收到读用户的身份标识和访问控制块后,首先使用信任域密钥ASEK解密该访问控制块,获得访问控制列表、锁盒子密钥LBK和文件签名密钥FSK等信息,然后使用自己的信任域签名密钥ASSK,计算访问控制块的HMAC值,判断访问控制块的完整性,然后信任域服务器确认了用户的身份标识,并根据访问控制列表确定了读用户的读权限,然后将锁盒子密钥LBK发给读用户; \n[0076] 步骤3.3:读用户读取文件;读用户获得锁盒子密钥LBK之后,利用其解密获得文件块密钥,然后使用文件块密钥对所读内容所在的文件块进行解密,获得明文信息,并使用SHA1算法对所读内容所在的文件块计算哈希值,看是否与安全元数据中保存的哈希值一致,判断所读数据的完整性,若所读数据是完整的,则读取该数据,否则向系统报错; [0077] 步骤4:写用户对文件进行修改,一般步骤如下,具体如图4所示: [0078] 步骤4.1:写用户读取文件密文和安全元数据文件;写用户首先从文件服务器端读取要修改的文件的密文和安全元数据文件; \n[0079] 步骤4.2:写用户的身份认证;写用户将自己的身份标识和安全元数据文件中的访问控制块发给信任域服务器,信任域服务器接收到访问控制块后,使用信任域密钥ASEK解密该访问控制块,获得访问控制列表、锁盒子密钥LBK和文件签名密钥FSK等信息,并使用自己的信任域签名密钥ASSK重新计算该访问控制块的HMAC值,看是否与访问控制块中的HMAC值相等,判断该访问控制块是否完整,然后确认用户的身份标识,并通过访问控制列表确定用户所具有的写权限,并将锁盒子密钥LBK和文件签名密钥FSK返回给用户, [0080] 步骤4.3:写用户修改文件;写用户在获得锁盒子密钥LBK和文件签名密钥FSK后,使用锁盒子密钥LBK获得文件块密钥,然后使用文件块密钥对所修改内容所在的文件块进行解密,获得明文信息,并使用SHA1算法对要修改内容所在的文件块计算,看是否与安全元数据中保存的哈希值一致,判断所修改数据的完整性,紧接着写用户修改文件,然后使用文件块密钥重新对写入的内容计算哈希值和进行加密,并使用文件签名密钥FSK进行签名,最后还需要对安全元数据进行更新; \n[0081] 步骤4.4:写用户将修改后的文件和安全元数据文件发给文件服务器进行存储; \n[0082] 步骤5:权限撤销的操作;当文件所有者认为某个用户可能会对文件造成破坏或者会向外散播该文件信息,可能会将这个用户的权限进行撤销,当文件所有者撤销用户的权限,一般具有以下步骤,具体如图5所示; \n[0083] 步骤5.1:文件所有者向信任域服务器发出请求,请求撤销用户的权限;首先文件所有者从文件服务器端获得安全元数据文件,然后将自己的身份标识、安全元数据文件中的访问控制块和撤销的用户列表发给信任域服务器; \n[0084] 步骤5.2:信任域服务器对文件所有者的请求进行处理;信任域服务器接收到用户的请求后,首先使用信任域密钥ASEK解密该访问控制块,获得访问控制列表、锁盒子密钥LBK和文件签名密钥FSK等信息,并使用自己的信任域签名密钥ASSK重新计算该访问控制块的HMAC值,判断该访问控制块的完整后,在对文件所有者的身份进行认证,在确定文件所有者的身份和其具有撤销用户操作的权限后,然后从访问控制块的访问控制列表中删除需要撤销的用户所在的访问控制列表项,接着为文件生成新的锁盒子密钥LBK′和新的文件签名密钥FSK′。然后信任域服务器用信任域服务器加密密钥重新加密新生成的锁盒子密钥LBK′和文件签名密钥FSK′,并使用信任域服务器签名密钥重新对修改过的访问控制块计算HMAC。然后,信任域服务器将新的访问控制块、新的文件签名密钥、新的锁盒子密钥LBK′以及旧的锁盒子密钥LBK返回给文件所有者; \n[0085] 步骤5.3:文件所有者使用懒惰撤销操作;文件所有者首先使用旧的锁盒子密钥 LBK解密所有文件块密钥,使用新的锁盒子密钥LBK′加密这些文件块密钥,并将新的访问控制块信息写入到安全元数据文件中,所谓的懒惰撤销方法指的是:文件所有者并不是使用新的密钥对整个文件(即所有的文件块)进行重新加密,而是将对文件块的重新加密操作推迟到用户对文件块的更新时再进行; \n[0086] 本发明的系统结构如图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)的较好的实现,可以用在系统中以认证系统角色并在用户和信任域服务器之间建立安全信道。 \n[0087] 本发明的核心是提出了一种云存储环境下的安全存储系统,其实现主要是由以下几个部分以及其相应的模块组成: \n[0088] ●信任域服务器 \n[0089] 信任域服务器主要有以下几个模块构成: \n[0090] 1.用户认证模块 \n[0091] 该模块负责对用户身份进行验证。实际上因为采用了在SSL/TLS和公钥基础设施,用户身份与信任域服务器身份都是借助公钥基础设施所授予的X.509证书进行认证的,系统新用户首先必须向注册机构(RA,RegistrationAuthority)申请证书,然后才可以使用该系统。尽管这个过程需要基于非对称加密的公钥基础设施的支持,并会引入一定的开销,但是这种非对称计算只有在新用户第一次加入才会发生并且只进行一次;在占据绝大多数使用时间的后续的文件访问过程中进行的全部是对称加密计算,这样一来相比其他采用非对称加密的系统,本系统并不会引入过多的性能开销。在用户与信任域服务器进行通信的时候,信任域服务器需要验证用户证书,并从中得到用户的用户名,据此计算用户名哈希值以便进行后续的访问控制。 \n[0092] 用户在进行文件访问时,必须首先在客户端上通过SSL/TLS协议在加密的信道上与信任域服务器交互,信任域服务器需要验证用户证书,并从中得到用户的用户名,据此计算用户名哈希值;在信任域服务器的通过用户认证与访问控制权限验证以后,用户才可以最终获得文件块密钥。 \n[0093] 关于公钥基础设施需要指出的是,一些具有安全需求的组织或机构可能已经部署了公钥基础设施,因此这并不是一个额外的配置要求。 \n[0094] 2.访问控制模块 \n[0095] 该模块在文件所有者授权下执行对文件的访问控制,所执行的操作包括对用户发来的访问控制块完整性的验证(通过计算访问控制块的HMAC值),对用户身份的验证(验证用户的身份标识,并通过比较发送请求中的用户名哈希值与访问控制块中访问控制列表保存的用户名哈希),对用户请求访问权限的验证(通过查询访问控制列表获得用户的所具有的权限操作),以及对访问控制块中相关密钥的解密(使用信任域加密密钥ASEK对访问控制块进行解密,使用信任域签名密钥ASSK计算访问控制块的HMAC值)。 [0096] ●客户端 \n[0097] 客户端主要由以下几个模块构成: \n[0098] 1.数据加解密模块 \n[0099] 该模块承担了系统的大部分的加解密相关的密码学操作操作,包括使用文件块密钥加解密文件块等。此外该模块还负责处理客户端与信任域服务器之间的通信。 [0100] 2.数据完整性验证模块 \n[0101] 该模块提供文件块内容完整性验证等操作,以及文件块内容哈希值更新等操作。 [0102] 3.缓存模块 \n[0103] 缓存模块提供缓存以提高系统性能。缓存分为安全元数据缓存和文件数据缓存两部分。其中,安全元数据缓存对诸如访问控制块、用于访问控制的密钥进行缓存;而文件数据缓存则负责缓存文件数据。此外该模块还负责维护缓存与实际数据的一致性。 [0104] 4.文件系统接口 \n[0105] 该模块提供了POSIX文件系统调用。本发明在这些接口中实现了大部分逻辑,考虑了对FUSE挂载点路径的转换处理和因为以文件块为单位验证数据内容完整性而导致的对访问请求偏移和长度的扩展,并实现了对文件空洞进行读写的支持。 [0106] ●文件服务器 \n[0107] 1.存储模块:存储文件密文和安全元数据文件。其中,安全元数据文件的主要构成为:访问控制块和文件的一些完整性信息。访问控制块的内容如图6所示主要包括:文件名的哈希值、访问控制列表、加密算法和加密的模式、锁盒子密钥和文件签名密钥,以及整个访问控制块的HMAC值,其中访问控制列表如下表所示,它是一个二维数组,其中一列是用户名的哈希值,这样做的目的是可以保证用户名的机密性和完整性,另一列是用户的操作权限,其中“r”表示用户具有读操作权限,“w”表示用户具有写操作权限,对于可执行文件来说, “x”表示可执行操作权限;另外,文件的完整性信息主要是文件块的哈希值等。 [0108] \n 用户名(哈希值) 操作权限\n Hash(用户名1) rw-\n Hash(用户名2) r--\n ... ...\n Hash(用户名n) r--\n[0109] 性能测试 \n[0110] 本发明在清华大学计算机科学与技术系高性能计算研究所进行了系统的测试,这些测试包括使用业界认可的文件系统的基准程序IOzone,分别在单机和集群环境下测试本发明的读写性能,以及测试了本发明在权限撤销下的性能。 \n[0111] ●单机标准测试程序测试 \n[0112] 使用IOzone对本发明在单机文件系统ext3下的文件系统的性能进行测试。实验TM\n环境包含一台具有1.8GHz AMD双核CPU和4GB内存的Sun SunFire V20z服务器,该服务器上运行的操作系统是Debian Linux(version 2.6.30)。该服务器上同时运行信任域服务器端与客户端软件。为消除文件系统缓存的影响,实验将文件大小设为8GB(2倍于系统内存大小)。在测试中,测试文件大小为8GB;文件系统访问请求大小分别为64KB。 [0113] 由于没有网络通信开销,密码学计算开销将占据额外开销的主要部分。通过对本发明在AES-256加密算法CFB模式下运行IOzone,并将结果与直接在ext3上运行IOzone的结果对比,有助于深入了解(因密码学计算所致性能下降的)系统性能,最后得到的结果如图7所示。 \n[0114] 从图中可以看出与ext3相比,本发明由于密码学计算的开销带来平均30%左右的性能下降。 \n[0115] ●集群标准测试程序测试 \n[0116] 为使测试结果接近本发明在网络环境下文件系统的真实性能,本文使用IOzone对架在NFS之上的本发明与NFS进行性能比较。实验环境架设在具有7个节点的Dell TM\nPowerEdge 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倍于系统内存大小)。 \n[0117] 需要指出的是,为更贴近实际应用,实验选取默认的64KB作为文件块大小,并选择CFB作为AES-256的加密模式,因为其安全性较好,可在实际中广泛应用。 [0118] 实验利用IOzone分别测试了NFS和架设在NFS之上的本发明在16GB文件上以\n64KB请求进行的顺序写、顺序重写、顺序读和顺序重读的吞吐率。实验结果如图8所示,图中结果为5个节点上测试所得的聚合吞吐率。 \n[0119] 从图中可以看出,本发明架在NFS之上的聚合访问速度十分接近于NFS本身的速度,由此可见当客户端增多时,底层存储成为了瓶颈,本发明引入的计算开销就很不明显了。实验结果表明,在共享存储环境中,本发明将能得到很好的应用。 [0120] ●权限撤销 \n[0121] 测试环境包括一台信任域服务器和一台客户机,每台机器的配置为:装有1.8GHz TM\nAMD双核CPU和4GB内存的Sun SunFire V20z服务器,操作系统是Debian Linux(内核版本2.6.30)。实验在一个1GB大小的文件上首先对1000个不同的用户授予r--权限,然后将这些用户的权限修改为rw-,最后撤销这些用户的权限。实验在装有本发明的客户端的访问控制工具上测试得到的每个用户的有关权限的操作时间并且将这些时间做了平均,得到结果下所示。 \n[0122] \n 操作名称 时间(ms)\n 权限授予 1.862739\n 权限变更 1.858765\n 权限撤销 21.744502\n[0123] 可以看出在本发明中对大文件的用户使用权限操作时间开销较短,具有很好的高效性。
法律信息
- 2013-08-21
- 2011-06-01
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201010569398.2
申请日: 2010.11.26
- 2011-04-13
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2015-01-20 | 2015-01-20 | | |