发明名称 一种云存储环境下的安全网盘系统的实现方法
摘要 在云存储环境下安全网盘系统的实现方法属于存储安全技术领域,其特征在于在云存储环境下的网盘系统的信任体系中,发明了一种系统架构,在服务器中根据用户需求建立信任域,然后利用公钥基础设施PKI进行身份认证,保证了用户的不可欺骗性和不可抵赖性;利用哈希算法对文件计算哈希值,利用密钥和对称加密算法AES算法对数据加密,之后再将文件密文上传到云存储区中的文件服务器,保证了数据的机密性和完整性;使用基于目录树的同步方式,提高了系统的同步效率与机密性;使用了层级密钥管理的方式,在保证数据安全性的同时减少了系统的管理负担;提供了版本控制功能,保证了文件版本的连续性;提供了多种粒度的加密密钥选择方式,增加了系统的灵活性。
申请公布号 CN102685148A 申请公布日期 2012.09.19
申请号 CN201210176807.1 申请日期 2012.05.31
申请人 清华大学 发明人 舒继武;傅颖勋
分类号 H04L29/06(2006.01)I;H04L29/08(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 楼艮基
主权项 一种云存储环境下的安全网盘系统的实现方法其特征在于是在由客户端计算机、服务器以及云存储服务器共同组成的云存储环境下的安全网盘系统的网络中,依次按以下步骤实现的:步骤(1),系统初始化;客户端计算机以下简称客户端,设有数据加解密模块,数据完整性验证模块,本地监听模块,文件夹共享模块以及协议通信模块;服务器端设有:身份验证模块,存储控制模块,访问控制模块,版本控制模块以及目录元数据管理模块,其中:目录元数据管理模块用于对目录元数据进行查询,更新在内的维护操作,所述目录元数据包括:目录类型,拥有者用户名,绝对路径,访问控制列表,授权用户数量以及密钥生成方式,其中访问控制列表包括:用户名和对应的密钥密文,所述密钥密文是使用所对应用户的公钥加密的,对应用户可使用自己的私钥解密;云存储服务器以下简称云存储端,设有:存储模块和数据可靠模块,其中:存储模块设有一套供所述服务器端调用的存储接口,以便把需要存储的信息以对象的形式存放在所述云存储端;数据可靠性模块,根据所述服务器端的需要,为所有存放在云存储端的文件创建一定数量的副本;步骤(2),为所述云存储端构建并初始化一个云存储平台,步骤如下:步骤(2.1),在装有Linux操作系统的各子云存储中分别安装一个多副本,可扩展的分布式云存储系统swift,并指定其中的一台机器作为Proxy代理节点,重配置Proxy代理服务,创建账户,容器以及对象,将其配置成三层环的形式,启动Proxy代理服务;步骤(2.2),配置各云存储服务计算机,实现所述三层环之间的关联;步骤(2.3),启动所述swift系统,提供云存储服务;步骤(3),用户初始化个人信息,步骤如下:步骤(3.1),在客户端用户通过调用所述的服务器接口向所述服务器注册新用户;步骤(3.2),所述服务器端在确认用户注册所用的用户名与密码后,向注册机构申请一个由公钥基础设施所授予的X509证书;步骤(3.3),用户申请步骤(3.2)所述的证书后把其中的公钥保存在所述的服务器端;步骤(3.4),所述服务器端把包括用户名、密码的哈希值绑定邮箱在内的基本信息保存在数据库中的users表中,并创建该用户的服务器端目录树,以文件的形式保存在所述云存储端;步骤(4),客户端采用一种目录树比对的方式按以下步骤生成一种在客户端目录树、服务器端目录树和磁盘目录树执行同步操作用的操作队列:步骤(4.1),所述客户端向所述服务器端发送同步请求;步骤(4.2),所述服务器端在验证当前用户身份后返回用户的最近操作列表,其中包括:此用户在该机器上两次同步之间的这段时间里,该用户在其他机器上对目录或文件所作的删除、移动和重命名操作,其他用户对此用户所共享的目录进行的删除、移动、重命名操作以及当前用户的服务器端目录树;步骤(4.3),所述用户逐项执行所述服务器端返回的操作列表,完成文件或目录的以上三类操作的同步;步骤(4.4),所述客户端向服务器请求共享密钥,所述服务器验证身份后根据访问控制列表中的信息将所有该用户被授权的所有文件加密密钥返回给客户端;步骤(4.5),客户端构造初始化目录树,步骤如下:步骤(4.5.1),所述客户端读取保存在本地的客户端目录树生成文件,在内存中创建该用户的客户端目录树和组成该客户端目录树的客户端目录树结点:所述客户端目录树是一个二叉树结构,它的格式包括:root、nodes、nodesCount和maxnodesCount,其中,nodes,以数组方式记录了所述客户端目录树的所有结点;nodesCount,记录了所述客户端目录树中的总结点数;maxNodesCount,表示所述客户端目录树最多允许包含的结点数;客户端目录树结点的格式包括:nodeType、name、appendAttribute、lastModifyTime、lchild和rchild,其中:nodeType,记录所述客户端目录树中的结点所对应的是目录还是文件;name,记录所述客户端目录树中所述目录或文件的名称;appendAttribute,对所述客户端目录树中的目录而言,记录的是是否被共享,对所述客户端目录树中的文件而言,记录的是最新版本的版本号;lchild,记录了在所述客户端目录树中该结点的左孩子的索引号;rchild,记录了在所述客户端目录树中该结点的右孩子的索引号;lastModifytime,记录所述云存储环境下的安全网络存储系统CorsBox所维护的该结点的最新修改时间;步骤(4.5.2),客户端计算机根据步骤(4.5.1)的返回的服务器端目录树在内存中创建该用户的服务器端目录树,用于记录所述云存储服务器中的实时数据状态,用户服务器端目录树的结构与客户端目录树完全相同,只是nodes数组中的结点类型是用户服务器端目录树结点,用户服务器端目录树结点包括:nodeType、name、appendAttribute、lchild和rchild,其中:nodeType,记录所述用户服务器端目录树中的结点所对应的是目录或文件;name,记录所述的目录或文件的名称;appendAttribute,对所述用户服务器端目录树中的目录而言,记录的是是否被共享,对所述服务器端目录树中的文件而言,记录的是最新版本的版本号;lchild,记录了在所述用户服务器端目录树中该结点的左孩子的索引号;rchild,记录了在所述用户服务器端目录树中该结点的右孩子的索引号;步骤(4.5.3),所述客户端计算机在每次同步时扫描磁盘中的所述客户端目录树的目录及其子目录,在内存中创造磁盘目录树记录用户的实时数据,用户的磁盘目录树的结构与客户端目录树完全相同,只是nodes数组中的结点类型是磁盘目录树结点,磁盘目录树结点包括:nodeType、name、lastModifyTime、lchild和rchild,其中:nodeType,记录所述磁盘目录树中的结点所对应的是目录还是文件;name,记录所述磁盘目录树中所述目录或文件的名称;lastModifytime,记录了在所述客户端计算机中该结点的最后修改时间;lchild,记录了在所述磁盘目录树中该结点的左孩子的索引号;rchild,记录了在所述磁盘目录树中该结点的右孩子的索引号;步骤(4.6),客户端通过比对步骤(4.5)中构建的目录树,生成待执行操作的操作队列,具体步骤如下:步骤(4.6.1),客户端比对客户端目录树与磁盘目录树,并将比对结果保存在集合A中,用来记录用户在此机器上离线进行的操作;步骤(4.6.2),客户端比对客户端目录树与服务器端目录树,并将比对结果保存在集合B中,用来记录此用户在此机器上两次同步之间其他客户端进行的操作;步骤(4.6.3),客户端比对集合A与集合B中的内容,并根据比对结果生成待执行的操作队列;步骤(4.7),逐项执行步骤(4.6)中生成的操作队列,完成同步操作;步骤(5),客户端修改访问权限:步骤(5.1),客户端共享某文件夹:客户端首先检查待共享文件夹的祖先目录与子孙目录是否被共享,若已被共享,则提示用户此文件夹不能被共享,否则向服务器发起共享请求,服务器收到请求后修改该目录元数据中的共享标志位,然后为此文件夹创建新的操作日志,接着删除该文件夹下所有历史版本,最后向客户端返回共享成功的提示;步骤(5.2),客户端添加/删除某用户的访问权限:只有数据的拥有者才能够修改自己共享文件夹的访问权限;若是添加权限,客户端向服务器发起添加权限请求,服务器验证用户身份后将待添加用户的公钥返回给客户端,客户端用此公钥加密该文件夹对应的加密密钥后发送给服务器端,服务器将此密钥的密文写入目录元数据中,并在共享表中添加一条共享记录,最后向客户端返回添加权限成功的提示;若为删除权限,服务器端验证用户身份后将被取消权限用户及其密钥密文从目录元数据中删除,同时删除共享表中对用的记录,然后向客户端返回删除权限成功的提示;步骤(5.3),客户端查看共享内容:客户端查看共享内容依次按照以下步骤来完成:步骤(5.3.1),客户端在启动时向服务器发起查看最新共享请求(可以随时手动请求);步骤(5.3.2),服务器收到请求后查找共享表,将客户端未选择是否接受共享的文件名称和拥有者ID返回给客户端,并在共享表中将这些路径置为已处理;步骤(5.3.3),客户端弹出对话框请求用户操作,若用户选择接受共享则转步骤(4.3.4),否则直接返回;步骤(5.3.4),服务器端将该共享目录下的所有文件密文和该目录的元数据中对应此用户的ACL项返回给客户端;步骤(5.3.5),客户端用自己的私钥从返回的ACL项解密出该文件夹对应的加密密钥;步骤(5.3.6),客户端解密出所有文件的明文,然后根据明文后面附着的哈希值做完整性校验;步骤(5.4),客户端取消共享:只有文件夹的拥有者才能取消共享,服务器收到验证用户身份后删除共享表中所有关于此文件夹的共享,接着将该文件夹的目录元数据中的共享标志位改为非共享并删除掉所有的ACL项,然后向客户端返回修改成功的提示;客户端接收到成功提示后修改客户端目录树中该结点的共享状态;步骤(6):文件版本控制:步骤(6.1),当客户端上传文件时,服务器首先对该文件的大小进行判断,若是小文件则在文件名末尾添加版本号,并保存在云端;若不是小文件,则直接保存在云端(若已存在则直接覆盖);步骤(6.2),客户端随时可以进行小文件的历史版本回滚,服务器验证用户身份后返回文件版本列表,用户可以根据自己的需要选择合适的版本进行回滚;步骤(7),用户选择加密方式:客户端会在工作目录下自动生成一个public文件夹,所有保存在此文件夹下的内容都是不加密的;另外,用户在客户端可以手动修改某个文件夹(非public夹)的密钥生成方法,但一旦某个文件夹的密钥生成方式被指定,其祖先目录与子孙目录都不得再被指定密钥生成规则;密钥生成是将用户的加密密钥和该文件夹的名称通过一定的算法生成的,若非特别指定则默认直接使用用户的文件加密密钥对其数据进行加密。
地址 100084 北京市海淀区清华园1号