问题的提出
云存储就是将储存资源放到云上供人存取的一种新兴方案。使用者可以在任何时间、任何地方,透过任何可连网的装置连接到云上方便地存取数据。大量的用户数据都是放在云服务器上,对数据的安全性保障是提高云服务商服务质量及用户愿意享受云存储服务的前提和保障。
在云计算出现以前,用户的数据通常保存在本地。如果用户想确定自己的数据是否完整,最简单的方法是亲自查看一下数据,就可以知道数据是否完整。如果数据量很大,可以采用哈希的方式通过比较数据标签的检查数据的完整性。
在云环境下,用户数据保存在云端。用户为了知道保存在云端的数据是否完整,可以将存在云端的数据下载下来,然后自己查看,但是这种方式浪费了大量的网络传输资源,大大的削减的云服务带来的优势。特别是,用户存放在云端的数据量很大时,这种方式更加的不切实际。
另外,从用户的角度来说云服务商不可信。因为云服务提供商可能出于自己的利益考虑,即使用户数据出现完整性错误,他也不及时的通知用户,以免降低自己的信用度;从服务商的角度来讲,用户也不可信。因为用户可能伪造数据完整性错误来企图要求云服务提供商的赔偿。所以,需要一个双方都认可的第三方来担任这个校验者来担当校验任务,以避免产生分歧。所以设计一种安全有效的校验算法就十分的必要。
数据分块
云存储中的文件通常是以“大块”(64M)的形式进行存储的,这样可以有效的提高I/O效率同时降低主节点服务器的元数据量,提高查找效率;而用户的数据文件在上传到云服务器之前,需要对文件进行预处理,生成有效的校验标签等信息,出于对标签生成的效率和对有效支持数据的动态更新的考虑,通常也会对文件进行分块,这个分块可以看作是逻辑上的分块,且没有固定的标准,不过远远小于云存储中的“大块"。
设计目标
公开校验:任何人(数据所有者和校验者)都可以验证数据的完整性,解绑定和无状态性是公开校验的基本特征;
解绑定:任何一方都不存在绑定关系,可扩展,且各司其职。
无状态性:校验者在校验期间不需要维持和更新状态信息。
无块校验:校验者不需要获得实际数据块内容,就可以完成数据校验,安全且高效;
动态数据更新:有效的支持块级别(或更细粒度)的数据更新操作同时不降低校验的效率;
批量校验:云服务器同时执行多个校验任务,提高校验效率;
支持混合云:验证方案在多个云服务商或混合云的环境下实现有效的数据完整性校验要求;
不可仿制:除了数据拥有者,其他人不能生成有效校验元信息(签名);
身份隐私:数据校验过程中不能分揭漏用户身分;