动态数据安全审计云存储系统研究

刘璐玲



摘 要: 提出支持数据去重的数据持有性证明方案,该方案改进了原有数据去重中利用MD5值冒领原数据使用权的安全问题,并且引入可信第三方对不同文件的验证密钥进行管理,避免了文件标签的重复计算,同时利用额外的本地存储减少了时间消耗和通信代价。针对文件级云存储,设计了基于索引的动态数据持有性证明方案,并且针对之前方案中存在文件I/O对验证时间的影响,采用B+樹多级索引对文件做查询优化。实验结果表明,该方案与传统方案相比,针对数据去重场景大幅度地减少了存储开销,降低了文件级的更新操作时间复杂度。
关键词: 数据持有性证明; 数据去重; 云存储; 索引
中图分类号: TN915.08?34; TP311.17 文献标识码: A 文章编号: 1004?373X(2017)09?0096?03
Abstract: A provable data possession scheme supporting data deduplication is proposed. The scheme has improved the security issue that the MD5 value in the original data deduplication is used to falsely claim the use right of the original data. A trusted third party is introduced into the scheme to manage the verification secret key of different documents to avoid the repeated calculation of the file label. The additional local storage is adopted to reduce the time consumption and communication cost. For the file?level cloud storage, a dynamic provable data possession scheme based on index was designed. According to the influence of the file I/O existing in the previous schemes on verification time, the B+ tree multi?level index is used to perform the query optimization for the file. The experimental results show that, in comparison with the traditional schemes, the proposed scheme has reduced the storage cost for data deduplication greatly, and lowered the time complexity of the file?level update operation.
Keywords: provable data possession; data deduplication; cloud storage; index
0 引 言
随着信息技术的发展,越来越多的企业或者用户选择在云存储服务提供商的服务器中存储数据,但是被存储数据的安全性和完整性在一定程度上不能得到很好的保障。虽然云存储服务提供商会有相应的技术来备份和恢复用户锁存的数据,但是一部分用户的数据依然会因为一些恶意篡改或者物理损坏等因素而造成变更甚至丢失。虽然数据能够带来的价值均会被大型企业关注,但政府却没有出台管辖数据安全问题的相关法律法规,所以,用户和服务商遇到最大的问题之一就是用户的数据出现问题[1]。提供云存储服务的供应商在提供云存储服务的过程中,需要为用户提供随时查验数据完整性服务,一旦检测到数据方面的错误时,能够在第一时间对数据进行恢复和保存,只有实现了这一功能,用户才能将云存储服务使用的更加安心[2]。
1 可支持数据去重数据持有性证明方案
1.1 初始化模块
如果用户是首次登录数据客户端,那么首先需要注册账号,账号里包含了惟一的用户名、ID以及口令,与此同时,这个账号中所有的信息也将同时被云服务商以及可信第三方拥有。
此时,验证文件所用的密钥将在本地客户端通过计算生成,具体步骤为:寻找大素数当且同时满足这一条件,生成元需要在正整数循环子群的范畴里寻找,再寻找出大于安全参数的大素数以及大素数使得大素数和大素数满足之后一个位的二进制数将由系统随机生成。其中,使得私钥sk用来体现,公钥pk用来体现。上述步骤与传统PDP方案相同。
在生成了公钥与私钥之后,需要输入pw这个新口令,用AES对私钥加密之后再进行存储,之后将公钥公开存储在数据库中[3]。Android平台上的sqlite是实现上述步骤时所采用的数据库。
1.2 数据去重模块
针对需求,本文设计了以下方案:
(1) 用户需要上传文件客户端首先计算该文件的MD5值[4]计算完成后将结果向云服务端发送,云服务端对接收到的的验证过程如下:
if (searchHash(HashTable,m) == true):
sendClient(randomKey, FID);
else requestFileTag();
在服务器查找哈希表的过程中,如果能验证的存在,系统在返回客户端之后会生成一个随机的randomKey密钥,密钥生成完成系统将继续运行步骤(2);但是如果不能验证到的存在,则系统会请求客户端上传文件标签和相应文件。
(2) 当服务端在运行过程中发现了的存在,则系统返回客户端之后生成一个文件序号FID和随机的密钥,客户端通过对该文件值以及FID的计算,将结果向云服务端发送,云服务端对接收到的二次验证过程如下:
F=getFile(FID);
temp = MAC(F, randomKey);
if (m′== temp):
addFileUser(FID,user);
sendThirdParty(FID);
else requestFileTag();
在云服务端进行二次验证时,若MAC值和第一次计算的结果一致,服务端把FID发送给可信第三方,可信第三方在接收到FID之后把验证密钥发送给客户端。如果MAC值在两次计算中结果不同,则系统发送请求给客户端,命令客户端将文件标签以及相应文件继续上传。
1.3 数据上传模块
文件预处理模块原理如图1所示。
在完成数据去重之后,需要从两方面考虑问题:第一种情况,若验证到文件在云服务端已经存在,则可信第三方会向用户提供影响文件的验证密钥;第二种情况,若在云客户端验证不到该文件的存在,则云客户端会将即将上传的文件的FID发送回客户端,客户端再根据FID计算标签TF。
1.4 完整性验证模块
用户需要通过对文件发送挑战、计算证明、验证证明三个步骤来验证单文件的数据。
(1) 发送挑战
在进行验证之前,提前与服务端寻找出伪随机文件,问卷之后对置换函数进行定义:之后再寻找出伪随机函数进行定义[5]:首先,两个位随机二进制数被系统随机生成;其次,随机数被系统生成;最后,将数据块总数以及的计算结果发送给服务端。
(2) 计算证明
在将的二进制串转换为用所表示的另一个二进制串的过程中,可以根据情况运用伪随机置换函数结果用表示。用表示通过伪随机函数生成的系数。
然后生成证明和与都拥有1 024位数,在实际操作过程中,伪随机置换函数用AES表示,伪随机函数用HMAC进行表示,函数用SHA1进行表示,同时,需要将云服务器端和客户端函数的一致性进行约定。
(3) 验证证明
验证证明的过程同计算证明基本相同,在的每一个数字中,二进制串将运用伪随机置换函数来计算,系数运用伪随机函数来计算。与此同时,计算并且使如果则说明该单文件完整性验证成功;若不相等,则失败。
2 基于索引的动态数据持有性证明系统模型
2.1 初始化模块
通过RSA的密钥生成来设计初始化模块,之后再在本地数据库中通过用户的口令加密存储。在设计本模块的过程中,要尽量满足简便操作的原则,还要尽可能使方案的安全性有所保障。
2.2 数据上传模块
在客户端计算文件标签的过程中,数据上传模块可参考完整性验证方案,在将文件以及相关数据上传服务端之后,服务端需要根据文件的标签构建B+的树索引。在验证源码PDP之前,发现当文件逐渐增大时,服务端生成证明所消耗的时间一方面运用在了指数运算上,而更大一部分则运用在了文件块I/O上[6]。
2.3 完整性挑战模块
验证模式分为全盘验证和单文件验证两种,验证模式不同,则系统发送的挑战也各不相同[7]。如果是全盘性的验证模式,那么需要挑选随机文件,在文件中选取数据块,整个过程一共需要工作460次。但是在单文件验证模式中,则将密钥挑战中随机的文件块进行发送。同台验证标签仍然是本方案的验证依据。
3 系统设计与实现
3.1 系统架构
(1) 系统客户端
系统的客户端中包含了用户与文件管理、可视化验证与完整性验证等,其结构设计见图2。客户端中用户管理业务通过用户管理模块进行实现,主要包含用户登录逻辑以及用户注册两项业务。文件管理模块实现了与云存储中文件存储相关的所有业务逻辑。客户端界面的可视化通过可视化模块进行实现,同时,该模块支持用户对文件的读写和管理操作在客戶端进行,能够给予用户更好的实用体现。利用客户端验证文件完整性,能够提升业务逻辑条理性,进而有效完成验证模块。
(2) 系统服务端
服务端的系统主要包含用户管理、存储管理、索引以及完整性验证模块,安全云存储服务端平台结构图如图3所示。
3.2 测试与结果分析
3.2.1 测试方案
系统详细功能测试包括文件上传测试、文件更新测试、文件删除测试三方面的内容。在文件上传到服务期之后,用户可以发出文件指令,云服务器能够将文件上传至云存储器,url?tag地址表项在标签哈希表中进行补充新增[8],这一操作实现了在对文件完整性验证的过程中查找文件中tag链表,提升查找的准确性,提升文件的验证有效性。对于云存储中需要删除的部分文件,需要重视文件的删除测试,利用文件删除测试实现具体的功能测试。
系统运行效率测试包括文件上传效率测试、更新效率、删除效率等测试。
3.2.2 测试结果分析
(1) 数据更新时间
假设文件块大小均为4 Kb,且通信的代价相同,本文方案和DPDP中的搜索添加删除三项操作时间的结果对比如表1所示。
(2) 证明效率测试
当存储文件所占内存为10 GB时,DPDP,Flex?DPDP的验证速度均比UT?DPDP慢了2.5倍。在验证过程中发现Flex?DPDP与DPDP验证速度和文件线性大小之间具有非常密切的关联,UT?DPDP的验证速度是固定的,随着文件占用内存率不断增加而愈发明显。
(3) 文件上传、更改、删除操作效率测试
本文方案在文件块数量很大这一情况下,在文件上传、更新、删除等方面的优越性表现显著,因此,针对理论时间复杂度来说,这三项操作都是但是变量是DPDP理论时间复杂度。
4 结 语
本文提出可支持数据去重的数据持有性证明方案和基于索引支持动态数据持有性证明的文件级云存储模型。可支持的数据去重数据持有性方案在一定程度上更新了数据自身去重环境下能够进行压缩,但是无法压缩完整性验证所需要的文件标签这一问题;基于索引支持动态数据持有性证明的文件级云存储模型设计并实现了一种新型的数据持有性证明技术,主要解决了动态验证中数据更新操作时间复杂度高且更新量庞大的问题。和同类其他方案相比,本文所提出的方案针对理论时间复杂度这一指标来说,三项操作都是满足了用户实际需求。
参考文献
[1] 刘雪琼,武刚,邓厚平.Web信息整合中的数据去重方法[J].计算机应用,2013,33(9):2493?2496.
[2] 张晓,秦志光,罗亚东,等.一种低代价的云计算存储权限管理机制[J].西南师范大学学报(自然科学版),2015(7):33?40.
[3] WU J, PING L, GE X, et al. Cloud storage as the infrastructure of cloud computing [C]// Proceedings of 2010 IEEE International Conference on Intelligent Computing and Cognitive Informatics. [S.l.]: IEEE, 2010: 380?383.
[4] HE Q, LI Z, ZHANG X. Data deduplication techniques [C]// Proceedings of 2010 IEEE International Conference on Future Information Technology and Management Engineering. [S.l.]: IEEE, 2010: 430?433.
[5] 冯泓渊,赵逢禹.云存储服务中支持动态数据完整性检测研究[J].小型微型计算机系统,2014,35(2):239?243.
[6] CHEN B, CURTMOLA R. Robust dynamic provable data possession [C]// Proceedings of 2012 the 32nd IEEE International Conference on Distributed Computing Systems Workshops. Macau, China: IEEE, 2012: 515?525.
[7] 周相兵,马洪江,苗放.云计算环境下的一种基于Hbase的ORM设计实现[J].西南师范大学学报(自然科学版),2013,38(8):130?135.
[8] ZHU Y, AHN G J, HU H, et al. Dynamic audit services for outsourced storages in clouds [J]. IEEE transactions on services computing, 2013, 6(2): 227?238.