1.一种云端数据存储完整性的证明方法,其特征在于:包括如下步骤:
步骤一、用户对待上传的文件进行预处理:生成私钥、对文件分块并计算每个文件块的标签;
步骤二、用户将预处理后的文件发送给云存储服务器,本地只保存私钥;
步骤三、当需要验证云端数据存储的完整性时,用户随机选取一些文件块并向云端发起挑战;
步骤四、云端生成拥有文件块的证明并返回给用户;
步骤五、用户对云端拥有文件块的证明进行云端数据完整性验证。
2.根据权利要求1所述的一种云端数据存储完整性的证明方法,其特征在于:生成私钥的方法为:利用随机数生成器,产生两个长度为k的随机数分别作为对称密码加密密钥kenc和哈希函数的密钥kmac,其中k为安全参数,则私钥sk=(kenc,kmac)。
3.根据权利要求2所述的一种云端数据存储完整性的证明方法,其特征在于:对文件分块并计算每个文件块的标签的方法为:
(1)将文件M分割为s块{M1,M2,…,Ms},每块大小为n bit;
(2)利用随机数生成器,产生一个随机数kext作为伪随机置换函数π的参数,令:
其中π(·)为的带参数的随机置换函数,l为每个文件块抽取的比特数;每个文件块抽取{i1,i2,…,il}对应位置的比特,设抽取后的结果为{m1,m2,…,ms},记为mi=Extract(Mi),1≤i≤s;
(3)利用随机数生成器,产生一个随机数kp1f作为伪随机函数f的参数,按如下公式计算每个文件块的标签:
其中为按位异或运算,为带参数的、输出为l比特的伪随机函数,令文件M的标签:
其中是密钥为kenc的对称加密算法,是密钥为kmac的哈希函数。
4.根据权利要求3所述的一种云端数据存储完整性的证明方法,其特征在于:步骤二所述用户发送给云存储服务器的预处理后的文件M*={{M1,…,MS},{σ1,…,σS},τ}。
5.根据权利要求4所述的一种云端数据存储完整性的证明方法,其特征在于:云端生成拥有文件块的证明的方法为:
(1)云存储服务器利用用户随机选择子集I按如下公式计算聚合认证码σ和聚合消息
(2)则生成的拥有I对应文件块的证明
6.根据权利要求5所述的一种云端数据存储完整性的证明方法,其特征在于:用户对云端拥有文件块的证明进行云端数据完整性验证的方法为:
(1)用户利用私钥sk中的kmac验证文件标签τ,如果不满足则验证失败,返回0;否则,用户利用私钥sk中的kenc解密出kext和kp1f;
(2)用户计算出{i1,i2,…,il},抽取中{i1,i2,…,il}位置对应的比特,设抽取后的结果为记为
(3)当且仅当时,用户验证服务器拥有I对应文件块并返回1。