在传统文件系统中,文件的访问控制通常由存储设备进行管理。为了确定是否响应用户操作请求,存储设备通常需要查询访问控制列表。然而,在分布式文件系统中,情况大不相同,它要求: 1. 可信任的存储设备能够执行正确的访问权限,如读、写、删除等操作; 2. 不可信任的设备则不能执行访问权限操作;
针对上述权限要求,通常的做法是对所有内容进行加密,以便只有合法的访问者才能解密文件数据。这显然可以减轻存储设备的访问控制负担,但需要一个较好的密钥管理方案。尽管已经提出了一些密钥管理方案,例如常见的代理重加密和数字信封等,但前者需要中心化服务器的配合,后者会增加数据冗余,降低存储空间利用率,因此都不能满足我们对未来分布式数据存储行业的构想。
DSPLabs结合分布式网络环境的特性,参考Cryptotree论文,设计了HashTree这样一种数据结构,并基于该数据结构设计了一种理论可靠、实施可行的文件分发方案。对于HashTree,我们首先假设三个约束条件: 1. 用户在文件系统中的交互次数越多,拥有有用且直观的访问控制语句就越重要。特别是,我们要求文件系统支持访问权限的机密性和动态继承; 2. 密钥管理的系统开销可控,要管理的密钥数量不应与文件数量和涉及的用户数量成比例增长; 3. 方案的落地成本要低,且易于理解和实施。
从实践的角度来看,HashTree通过利用文件系统的文件夹层次结构来实现这些属性。
在介绍HashTree的构造方式之前,我们先介绍一个简单而功能强大的密码链接概念。密码链接是从密钥K1到另一个密钥K2的加密链接,使拥有K1的每个人都能得出K2。通过串联多个链接可以构建密码数据结构,即HashTree。常见的密码链接有两种类型:对称链接和非对称链接。
A. 对称链接:给定两个秘密密钥K1和K2,以及对称加密算法(建议使用AES-128),我们用K1→K2表示K1加密K2的结果,其中→称为对称密码链接。即任何知道K1的人都可以导出K2。
B. 非对称链接:非对称链接与对称链接基本相同,不同之处在于可以在不知道K1的情况下将非对称链接K1->K2更新为K1->K3。这对于对称链接是不可能的。由于需要使用非对称加密技术(建议使用RSA-1024),因此此属性会降低性能。构建非对称链接可以使用密钥对(Kprivate,Kpublic)和秘密密钥K2,通过用Kpublic加密K2来实现。
在介绍了HashTree数据结构的基础上,我们可以看到,需要为某个文件或文件夹集合分配访问权限时,只需要构建一条非对称密码链即可。
由于互联网传输信息文件的便利性,导致内容复制的成本无限接近于0。因此,数据文件的权限控制和数字权