一种面向用户的云存储数据完整性保护方法_2

文档序号:9564821阅读:来源:国知局
容错的目的。其基本思想是将 k块原始数据通过一定的编码计算,得到m块冗余。对于这k+m块的元素,当其中任意的m 块元素出错(包括数据和冗余出错)时,均可以通过对应的重构算法恢复出原来的K块数 据。以上的H)S2、HAIL方案中均使用了纠删码,FDPOR方案中使用了 ECC (error-correcting code),ECC相比纠删码,实现较为简单,但恢复能力有限。
[0014] RS纠删码,首先由Reed和Solomon于1960年提出。应用于存储系统中的RS码编 码简单描述如下:将η个原始数据块编码生成n+m个数据块,将n+m个分块分发到网络中的 节点,其中新生成的m块数据为冗余数据,编码后的数据具有m个数据块的容错能力,当其 中任意t (t < m)个数据块丢失,都可以通过余下的k个分块进行恢复。RS码编码方式使数 据拥有者能够在不超过m个节点失效的情况下恢复原始数据。RS码的编码算法是代数的, 因此RS码的编码可以用矩阵和向量组的乘法形式来表示。RS码同时也被称为最大距离可 分码(Maximal Distance Separable, MDS),是达到了理论上最优的存储利用率的编码,可 以用任意m个编码后的数据块恢复原始数据。
[0015] RS类纠删码根据其生成矩阵不同分为两类,范德蒙码和柯西码。范德蒙码的编码 时间复杂度为〇 (η2),解码时需要对矩阵求逆,解码时间复杂度高于0 (η2)。而柯西码的编码 时间复杂度为〇 (η2),但是柯西码解码不用求大矩阵的逆。柯西RS编码使用柯西矩阵来代 替范德蒙行列式,使得生成矩阵变得更为简单。同时,位运算转换方法可以对柯西RS编码 中的乘法运算进行改进。经过简单的改造,柯西RS编码可以将GF(2 W)域上的乘法运算转 化成二进制的乘法运算。因此,整个RS编码的运算就可以转化成只包含异或的简单运算而 且把乘法除法运算分别转化为有限域上的加法和减法运算,可用异或实现。因此,柯西码运 算复杂度低于范德蒙码。
[0016] 在本发明中,我们将基于FDPOR方案,对该方案进行改进和完善,提高数据恢复能 力和完整性验证效率,节省存储标签等验证数据造成的不必要的存储开销。

【发明内容】

[0017] 动态完整性保护方案FDPOR(Fair and Dynamic P0R)是目前云存储完整性保护 方面的重要研究成果之一,该方案采用基于范围的2-3树算法和针对数据块进行数字签 名的方法实现了数据完整性保护的动态性与公平性,但方案在数据可恢复性、完整性验证 等方面均存在不完善之处。本发明针对FDPOR方案的不足进行改进,在FDPOR基础上,提 出了一种云存储环境下的动态数据完整性保护方案--ECAS-FDPOR(Erasure Code and Algebraic Signatures-FDPOR),从用户角度对存储在云端的动态数据进行完整性验证,当 数据损坏时能够对受损数据进行一定程度的恢复。
[0018] 本发明基于FDPOR方案,结合2-3树的特性,研究针对动态数据的完整性验证方 法。提出了一种基于纠删码和代数签名技术的动态数据完整性保护方案--ECAS-FDP0R。 本发明从用户角度对存储在云端的动态数据进行完整性验证,当数据损坏时能够对受损数 据进行一定程度的恢复。用户存储数据时,先对文件进行分块并进行纠删编码,对冗余校验 码进行加密后连同分块的文件上传到云端。验证时由用户向云端发起挑战,由云端计算挑 战内容所对应的代数签名并返回给用户,用户验证签名的一致性,一旦发现数据被破坏,可 以从云端下载被破坏的数据块和对应的冗余校验码对其进行恢复。
[0019] 方案概述:
[0020] 方案的应用场景是在云平台和云服务提供商不完全可信的云存储环境中,用户通 过云服务提供商提供的云存储服务将数据存放在云端。
[0021] 1、用户是云存储服务的使用者,文件的拥有者。用户不完全信任云存储服务器 (云端),不确定上传到云端的数据是否遭到损坏、篡改或丢失。用户的工作是通过与云存 储服务器进行交互来进行文件上传、更新、验证与恢复,确保数据在云端的完整性并在发现 数据不完整时通过恢复技术将其恢复。
[0022] 2、云存储平台是云存储服务的提供者,不被完全信任,同时,云平台也要谨防是否 有不诚实的用户骗取云存储上保存的数据,体现方案的公平性。云存储平台的工作是与用 户进行交互完成存储数据并配合用户计算一些验证信息。
[0023] ECAS-FDP0R方案有四个组成部分,分别是文件上传、文件更新、文件验证、文件恢 复。
[0024] 1、文件上传
[0025] 指用户将文件上传到云存储服务器之前所需要做的一些工作,以供数据完整性验 证、数据更新验证与数据恢复之用。其中包括文件分块、计算一些附属信息、计算纠删码等 一些预处理的操作。
[0026] 在这一阶段,先生成一个公私钥对,这个公私钥对的作用是对文件进行数字签名, 在以后的阶段用户与云存储服务器都互相验证以保证安全性,生成流置换的密钥,对下面 生成的校验数据进行流置换加密,作用是防止服务器联合攻击破解纠删码编码结构导致文 件验证阶段的不安全。之后将文件分块编号,并对每一个块进行纠删码编码,生成块内冗余 校验码,并对每一个分块计算哈希值,将哈希值保存成一个基于范围的2-3树,根据树形结 构,将对应的一个分支树的分块进行纠删码编码,生成块间冗余校验码,将纠删码与树形结 构很好的结合在一起。用私钥对文件块哈希值联接成的哈希值λ进行数字签名,用流置换 密钥对块间冗余校验码进行加密。生成客户端附属信息与服务器端附属信息,客户端附属 信息保存在本地,包含文件块编号、私钥、流置换密钥和树的信息;服务器端附属信息要上 传到云端,包含文件号、处理后的文件(包含校验数据)、公钥、树的信息、数字签名。注意每 个分支树y的原始数据与冗余校验码不存储在一个服务器上,将相关信息(也就是一组纠 删码计算得出的冗余校验码与原始数据)尽量分散存储,以便一个服务器崩溃还有其他服 务器上的完好数据将丢失数据恢复。
[0027] 改进方案与原方案的不同之处是在原有范围2-3树算法的基础上提出基于纠删 码的范围2-3树算法,在2-3树中增加冗余校验码的映射信息以实现纠删码动态局部更新, 避免了每次数据更新都必须重算全部校验数据,使得引入纠删码后带来的系统开销尽可能 小;在数据块之间与数据块内部计算两种粒度的纠删码,提供两种粒度的灵活冗余保护; 对冗余校验码进行流置换加密以抵抗文件验证时服务器合谋攻击。
[0028] 2、文件更新
[0029] 指用户将文件已传到云存储服务器,对上传到云存储服务器上的文件进行一些更 新的操作,在进行这些更新操作时,需要先进行用户与云存储管理节点双方验证以保证两 方都是诚实的,再进行数据与纠删码的更新,之后进行附属信息的更新。更新操作包括:
[0030] a)插入操作
[0031] b)删除操作
[0032] c)修改操作
[0033] 在文件更新阶段首先用户与云平台要进行两方面的验证,一方面是进行基于纠删 码的范围2-3树的验证,当用户向云存储管理节点发送要更新的分块索引时,管理节点返 回分块的路径,由用户验证云端保存的树形信息与用户端保存的树形信息是否一致,两者 持有的是否是同一棵树。进行验证的原因是由于存储在云存储节点上的更新前后的树形结 构都是正确的,不诚实的云端节点可能会使用之前的树形信息通过验证,所以用户在进行 每一次数据更新之前都要对云端树形结构进行验证,防止云端利用旧版本的树形信息进行 重放攻击。
[0034] 另一方面的验证是进行数据块的数字签名的验证,从公平性角度出发,云存储服 务器在把数据块传给用户之前,也需要对用户进行验证确保用户是一个诚实的用户。实现 的手段就是利用在文件上传阶段计算的数字签名,云端通过公钥验证签名的正确性。
[0035] 当树形结构验证与数据块验证都无误后,云存储管理节点会把用户需要的数据块 索引号对应的数据块发给用户,用户进行更新与重新计算纠删码并流置换加密校验数据后 再传给云存储节点保存。
[0036] 改进方案与原方案不同之处在于在更新阶段数据更新之后纠删码将重新计算,相 应的映射信息也需要改变。在2-3树的树形结构中记录了数据块间冗余校验码逻辑地址的 映射信息,因此如果树形结构改变,那么这个映射信息也要根据树形结构的变化做相应的 改变。这里需要注意的一点是用户发给服务器的数据块索引号就是用户想要更新的数据 块,在数据进行更新之后纠删码同样也需要更新,在一个数据块插入、删除以后,会引起树 形结构的变化,一般来说,会有两种情况,一种就是不影响别的分支树,只在一个分支树内 部出现变化,另外一种情况会影响旁边的一个分支,因此旁边分支的纠删码也需要重新编 码,所以要根据更新操作的类型(插入、修改、删除)结合树形结构预先在用户端做返回的 索引号判定,将最终将要涉及更改的数据块索引传给云存储管理节点。
[0037] 3、文件验证
[0038] 指用户已把文件上传至云存储服务器后,用户通过一些验证方法来验证一下存储 在云端的数据是否遭到损坏、篡改或丢失,如图2所示。
[0039] 在文件验证阶段,不同于FDPOR中基于标签的验证方法,而是使用了代数签名与 纠删码结合的方法验证数据的完整性。用户随机选取将要挑战的数据的索引集合(x,n,s, y,c,a)发送给云存储管理节点,云存储管理节点将用户想要挑战的数据索引发给云存储 服务器编号集合c和用户端地址对应的存储节点,由云存储节点计算挑战索引值对应的原 始数据与该原始数据对应分支树的块间冗余校验码的代数签名,之后将签名返回给用户, 用户对该块间冗余校验码的代数签名解密并利用纠删码生成矩阵计算签名一致性来验证 数据完整性,一旦发现数据被损坏便通过数据恢复流程将数据恢复;其中X是起始偏移量, η是想要挑战的样本数量,s是一个纠删码码字,y是分支树的编号,c是服务器编号集合, α是计算代数签名的参数值。
[0040] 相比原方法,所有验证值根据数据本身计算,无需事先存储任何验证标签等验证 数据,节省了用于保存完整性验证数据所需的存储空间,同时也避免了验证信息丢失的安 全风险。另外,此验证方法可以抵抗服务器合谋攻击、替换攻击,保证方法的安全性。
[0041] 4、文件恢复
[0042] 指当用户发现文件中有数据不完整,通过文件上传阶段计算出来的数据块内与数 据块间冗余校验码对受损数据
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1