潘洪志 殷西祥 芮坤坤 何 军
(安徽商贸职业技术学院信息与人工智能学院 安徽芜湖 241002)
(asdphz2015@163.com)
随着计算能力和通信技术的飞速发展,产生了大量的数据.这些海量数据需要更强大的计算资源和更大的存储空间.在过去的几年里,云计算已经满足了应用需求,并且发展非常迅速.事实上,用户需要将数据处理作为服务,例如存储、计算和数据安全.通过使用云计算环境,用户的存储和计算压力得到缓解.因此,越来越多的用户希望通过云计算环境来存储和处理自己的数据.在公共云计算环境中,用户将大量数据存储在远程公共云服务器上.因为存储的数据不在用户的控制之下,所以它需要数据机密性、完整性和可用性等安全服务.数据完整性测试是证明用户数据完好无损的有效方法[1-5].
数据完整性审计方案目前主要使用数据持有性证明机制(provable data possession, PDP)或数据可恢复证明机制(proof of retrievability, PoR)协议进行完整性检测.Ateniese等人[6]在2007年提出的可证明数据保持协议(PDP),它利用基于RSA的同态校验算法对标签进行数据校验,然而PDP协议为了减少通信开销,不检测所有数据,而是采用采样检测方法.后来,Erway等人[7]在PDP的基础上设计了一种支持动态校验的数据完整性检测方案PDP.Juels等人[8]提出PoR协议.PoR协议可以验证云中的数据是否完整,还可以恢复损坏的数据.但是PoR协议并不支持动态更新数据,并且检测数据的数量受到了限制,恢复效率不高.
本文利用网络编码的思想,设计了一种基于线性编码的数据完整性审计方案(the cloud data integrity detection scheme based on linear network coding, DISLC).DISLC可以反复验证用户数据的完整性,并对数据进行动态操作.本文首先分析了线性编码的基本思想,系统地描述了数据的线性编码方法,然后详细阐述了数据完整性验证的过程,最后给出了结论并简要讨论了未来的研究工作.
同态标签允许验证者在不拥有所有数据文件的场景下验证所有数据文件的完整性.同态标签具有以下特征:
1) 只有具有密钥的用户才能计算合法的同态标记.
网络编码是网络信息处理的一种重要方法.通过将网络节点中的传输信息进行编码,以实现节点间数据的同步、纠错和恢复.
根据矩阵的特点,如果1组码中存在小于n-k块的数据错误,则剩余的矩阵行数必须大于或等于k,并且矩阵中的任意k行都是线性无关的,因此可以通过求解联立方程组对其进行解码,得到原始数据.
DISLC方案由3个实体组成:用户(user)、云服务商(cloud service provider, CSP)和可信第三方(trust third party auditor, TTPA).可信第三方是受用户委托管理和检测云端数据的可信第三方审核员.首先,用户将数据初始化,并与云服务商和可信第三方协商密钥.在质询响应阶段,用户无需在线,验证工作都委托服务商和可信第三方完成.当可信第三方验证数据安全时,它向云服务商发送质询消息chal.云服务商接收到质询后,根据云中存储的数据生成证据P并返回给可信第三方,然后可信第三方对返回的证据进行验证,其流程如图1所示:
图1 验证模型
整个协议包含的算法如下.
GenKey(·):由用户执行,输入安全参数,输出sk和pk.
Encode(·):由用户执行,使用函数对文件进行编码.
Dncode(·):由CSP执行,使用函数对文件进行解码.
Verify(·):由TTPA执行,输入证据P.
Update(·):由用户执行,实现数据动态操作.
Redistribute(·):由用户执行,此函数实现了损坏数据的修复功能.
本文提出的DISLC方案分为3个阶段:初始化阶段、完整性验证阶段和数据恢复阶段.
Step1. 初始化阶段:由GenKey(·),Encode(·),TagGen(·)3个算法组成.
算法1.KeyGen.
输出:公钥pk和私钥sk.
① 任取p,q为大素数,计算N=pq,φ(N)=(p-1)(q-1);
② 随机选择整数e<φ(N),满足gcb(e,φ(N))=1 ,整数d满足d=e-1(modφ(N)),α,α←{0,1}k1;
③ 生成私钥sk(φ(N),d,α) 和公开密钥pk(N,e,g) .
算法2.Encode.
输入:源文件F和保鲜因子τ;
输出:编码后的数据矩阵Mτ.
① 将文件F划分为t个文件分段,每个文件分段划分为t′个数据块,于是得到源数据矩阵M;
② 对数据矩阵M的数据进行编码,将数据矩阵从一个t′×t的矩阵扩展成为一个n′×t的数据矩阵Mτ.
算法3.TagGen.
输入: 数据矩阵M和保鲜因子τ;
输出:文件块标签矩阵Tτ.
① 第i块数据块Qi=H(α×i);
② 数据块Mi的同态验证标识:
Ti=gd×Qi+MimodN.
Step2. 完整性验证阶段:
算法4.GenProof.
输出:Y=(T,B).
① 随机数s,num为验证的数据块数目, (ij,cj)是数据块的块号和系数,计算cj=fk1(j),ij=πk1(j),f和π分别是伪随机函数和伪随机置换函数;
② 生成chal=(gs,num,{(ij,cj)},1≤j≤c),gs=gsmodN;
算法5.VerProof.
输入:T,B;
输出:{0,1}.
① 计算ij=πk1(j);
② 计算Qij=H(α×i);
③ 计算cj=fk1(j);
Step3. 数据恢复阶段:
客户端告知CSP检测被破坏的数据是否超过1个阈值,若超过,则进行数据修复.设CSP内部编码的容错率上限是λcsp,只要数据块错误率低于容错率上限,就可以认为服务器数据是完整的.TTPA经过num次挑战响应过程能得到挑战失败的概率为λfail,当λfail≥λcri时,用户调用解码函数进行数据解码.
证明. 在实际中,数据文件会被划分为n′×t块数据块,假设所有数据块都是安全的.
证毕.
3.4.1 伪造攻击
3.4.2 重放攻击
情景2.验证者提出对指定的云中数据m1,m2进行验证.
本实验将数据F分为1万个数据块,分别用5%,10%,15%冗余度的编码率,得到的误码率如图2所示.
DISLC方案不仅支持第三方安全认证并且能够对数据进行动态更新操作.DISLC方案在云端的运算的时间复杂度为O(1),我们将PDP,DPDP,POR从云中运算时间复杂度、第三方计算时间复杂度、通信复杂度、是否支持动态和可恢复性方面进行了对比,对比结果如表1所示:
表1 各方案性能对比
图2 误码率与冗余度之间的关系
本文通过将网络编码的思想运用到数据安全性验证当中,设计了一种基于线性编码的数据完整性审计方案,该方案对用户数据的完整性多次提出验证,最后通过验证得出该方案不仅能检测数据的完整性,而且实现了数据的动态操作.最后在运行效率方面也有一定的改善.