云存储中的数据完整性校验——综述

6 篇文章 0 订阅
问题的提出


云存储就是将储存资源放到云上供人存取的一种新兴方案。使用者可以在任何时间、任何地方,透过任何可连网的装置连接到云上方便地存取数据。大量的用户数据都是放在云服务器上,对数据的安全性保障是提高云服务商服务质量及用户愿意享受云存储服务的前提和保障。

在云计算出现以前,用户的数据通常保存在本地。如果用户想确定自己的数据是否完整,最简单的方法是亲自查看一下数据,就可以知道数据是否完整。如果数据量很大,可以采用哈希的方式通过比较数据标签的检查数据的完整性。

在云环境下,用户数据保存在云端。用户为了知道保存在云端的数据是否完整,可以将存在云端的数据下载下来,然后自己查看,但是这种方式浪费了大量的网络传输资源,大大的削减的云服务带来的优势。特别是,用户存放在云端的数据量很大时,这种方式更加的不切实际。

另外,从用户的角度来说云服务商不可信。因为云服务提供商可能出于自己的利益考虑,即使用户数据出现完整性错误,他也不及时的通知用户,以免降低自己的信用度;从服务商的角度来讲,用户也不可信。因为用户可能伪造数据完整性错误来企图要求云服务提供商的赔偿。所以,需要一个双方都认可的第三方来担任这个校验者来担当校验任务,以避免产生分歧。所以设计一种安全有效的校验算法就十分的必要。


数据分块


云存储中的文件通常是以“大块”(64M)的形式进行存储的,这样可以有效的提高I/O效率同时降低主节点服务器的元数据量,提高查找效率;而用户的数据文件在上传到云服务器之前,需要对文件进行预处理,生成有效的校验标签等信息,出于对标签生成的效率和对有效支持数据的动态更新的考虑,通常也会对文件进行分块,这个分块可以看作是逻辑上的分块,且没有固定的标准,不过远远小于云存储中的“大块"。


设计目标


公开校验:任何人(数据所有者和校验者)都可以验证数据的完整性,解绑定和无状态性是公开校验的基本特征;

       解绑定:任何一方都不存在绑定关系,可扩展,且各司其职。   

     无状态性:校验者在校验期间不需要维持和更新状态信息。

无块校验:校验者不需要获得实际数据块内容,就可以完成数据校验,安全且高效;

动态数据更新:有效的支持块级别(或更细粒度)的数据更新操作同时不降低校验的效率;

批量校验:云服务器同时执行多个校验任务,提高校验效率;

支持混合云:验证方案在多个云服务商或混合云的环境下实现有效的数据完整性校验要求;

不可仿制:除了数据拥有者,其他人不能生成有效校验元信息(签名);

身份隐私:数据校验过程中不能分揭漏用户身分;

数据隐私:除了数据拥有者,其他人不能了解到数据的内容。


校验算法框架


1.键生成算法KeyGen:数据所有者生成初始密钥对及一些初始化的参数设置;

2.校验标签生成算法TagGen:数据所有者生成不可伪造标签或签名;

3.校验挑战Challenge:通常由校验者发出校验挑战(校验的数据块、随机值);

4.数据完整性证据生成算法ProofGen:云服务器根据校验请求生成证明数据完整性的证据;

5.检验数据完整性算法CheckProof:校验者根据其所拥有的信息(公开可获得的信息及云服务器发来的证据)检查数据是否完整。


校验模型

1.私有校验


                                      Private verification model


数据拥有者首先将数据和生成的校验元信息存放到云服务器中,当需要验证数据完整性时,数据所有者向云端发起一个“校验挑战”,然后云端返回一个“校验证据”,数据所有者通过检查云服务器返回来的“校验证据”就可以知道存放在云端的数据是否完整。(在考虑数据机密性的情况下,可以将数据加密后再传输)

此方案的主要缺点:1.数据所有者需要维护的信息及计算量比较大;2.当数据出现损坏时容易产生分歧。


2.委托校验


委托校验中需要一个双方都可信的第三方来帮助校验。第三方校验者在存储用户公钥及校验的公共参数以便进行校验方面是可信的,它也有可能会窃取用户的数据,所以要保证校验过程数据的机密性;


                                               Delegate Verification model


此模型中:数据所有者首先将数据存放到云服务器,然后将生成的数据校验元信息存放到第三方,并由第三方完成校验任务,最终第三方将校验报告发送给数据所有者。

这种校验模型比较适合静态数据情况。

主要缺点:数据拥有者与第三方校验者绑定(因校验元数据由第三方维护),扩展性不好。且当用户数据发生变化,即需要生成新的校验元信息时,校验者要维护最新的校验元信息,这种状态信息的维护很难,而且当TPA有多个服务器时更难维护。所以它不支持公开校验。


3.公开校验

                                  Public Verifcation model 


数据拥有者首先将数据及校验元信息存储到云服务器,任何一个校验者都可以向云端发起校验请求来验证数据的完整性。

此种模型相比前两种模型,更具弹性和可扩展性。因为校验者与数据拥有者解绑定,且校验者不需要维护校验元信息,即不需要维护状态信息,有效地 实现了公开校验。



4.其他扩展模型


基于授权的公开校验模型:第三方校验者必须是经过数据所有者认证过的,否则云服务器对其发起的校验请求不予理睬。

(所谓的公开校验就是要保证无状态和解绑定,但这里数据拥有者和校验者通过授权绑定,相比委托校验模型有所进步,但是否为真正意义上的公开校验?)

具体文章参见:

云存储中可验的细粒度数据更新的动态大数据授权公开校验(密码:s62j)


基于共享数据的完整性校验校验模型:这里考虑了一份数据为一组用户所有,即为多个人共享,此种条件下既要保证数据校验的有效性又要保证共享组中数据身份的隐私。

具体文章参见:

基于环签名的身份隐私保护

基于组签名同时支持身份隐私及动态组管理

基于代理盲签名的身份隐私及动态组管理


基于混合云或多云的数据校验模型:此模型考虑到数据提供者可能会将数据存放到多个云服务提供商提供的云存储环境中,同时一部分数据可能存放在私有云,而另一部分数据存放在公有云中,此种条件下既要保证数据校验的有效性,又要保证校验者对数据存储的透明性。

具体文章参见:

多云存储环境中基于身份的可证明数据拥有方案(密码:hdvu)

多云存储中基于合作的可证明数据拥有完整性校验方案(密码:gmxt)注:此方案在安全性方面有些缺陷,需要进一步改进。


常用校验方法


1.基于RSA签名



典型实现方案非受信存储中的可证明数据拥有方案(密码:jn8p)


2.基于哈希树MHT(关于此结构的详解可以参考:Merkle Tree)


                      基本哈希树结构MHT


叶子节点为数据块对应的哈希值,这些哈希值生成一个根节点哈希值R。如果数据完整,那么R的值一定保持不变。所以可以通过比较R的值就可以知道数据是否完整。

典型实现方案云计算中有效支持公开校验和数据动态更新的安全存储方案(密码:uyq6)


                          基于排名的哈希树结构R-MHT


此方案是基本的MHT的变形,可以有效的支持不同粒度的数据更新。

典型实现方案云存储中可验的细粒度数据更新的动态大数据授权公开校验 (密码:s62j)


3.基于双线性对的BLS签名


                    (数学符号编辑起来有点麻烦,给大家带来的审美疲劳还请多多谅解!)

这里涉及了较多的数学知识,如群运算、域运算、椭圆曲线加密等。

典型的实现方案Compact Proofs of Retrievability (密码:0u3m)


考虑的因素


效率:存储消耗、计算量、数据传输;

安全性:校验元信息不可仿制,用户数据的隐私性等;

可扩展性/弹性:不同的数据类型,不同的云服务商,校验方案是否合适;类似云服务的按需使用(弹性定价),将数据校验做为一种服务;


  • 3
    点赞
  • 2
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值