-
随着计算机技术和互联网的不断发展,在网络中传输的信息出现了爆炸式的增长,海量的数据量给存储能力和成本带来了巨大的压力[1]。在这种情况下云存储技术应运而生,云存储基于云计算,利用分布式计算和集群应用等技术,将大量设备整合起来,为用户提供数据存储和访问功能[2]。云存储具有成本低廉、不受地理位置限制的资源访问、易于管理和扩充等优点[3],被视为IT企业的下一代数据存储模型[4]。
用户使用云存储服务将文件提交到云服务提供商(cloud service provider, CSP)进行在线存储,在减轻本地存储压力的同时,也失去了对数据的物理控制能力[5],因此数据的安全问题[6-8]是一个不容忽视的问题。CSP可能是不诚实的[9],会为了自身的利益威胁到用户的数据安全,例如当CSP的存储设备容量不足时,CSP可能会选择删除一些用户长时间没有访问过的数据或者将这些数据移动到廉价的离线存储介质中以节省开支[10],这会造成用户数据的永久或暂时不可访问。另外在遭遇拜占庭失败时CSP可能会为了维护自己的信誉而试图向用户隐瞒数据丢失的情况[11]。
目前已经出现了多种针对云存储环境的数据完整性验证方案。一个实用的云存储完整性验证算法应该具有较小的网络开销,并且没有验证次数的限制,另外由于用户存在对云端的数据进行操作的需求,因此一个实用的完整性验证方案还要能支持动态操作。文献[12]提出了两种针对云存储的完整性验证算法,然而这两种方法均不能对文件的动态操作提供支持;文献[13]提出了一种基于Diffie-Hellman体制的完整性验证方法,该方法对验证次数没有限制,但是不能支持数据块的插入操作并且计算开销较大;文献[10]提出了一种基于merkel hash tree(MHT)的完整性认证方案,在该方案中,CSP为产生一次完整性验证需要读取所有的数据块以得到Merkel哈希树,当用户数据较大或数据块较小时,会使得Merkel哈希树的深度过深而消耗较多的计算资源,影响CSP的服务质量;文献[14]提出了一种基于改进的Merkel哈希树和双线性对的完整性审计方案,在该方案中按照两个层级对用户数据进行划分,使Merkel哈希树中的每一个叶子结点对应多个数据块,从而降低Merkel哈希树的深度,提高构造效率,同时该方案也能够支持数据块的动态操作。然而在极端情况下,例如用户不断在文件的末尾追加数据块,则会出现文献[14]中提到的树不平衡的情况,从而使根结点到某个叶子节点的路径过长,效率将会在很大程度上降低。
为了解决文献[14]中提出的方案在上述情况下的效率问题,本文基于改进的跳表和短签名技术,提出一种能够支持动态操作的完整性验证协议。本文对跳表中的结点提出一种新的定义方式,该定义方式可以在逻辑上消除跳表中的环状结构,从而降低跳表中结点的依赖关系数量,在生成跳表、更新跳表和进行验证时降低计算开销;同时本文在跳表中引入可达范围计数,使得在发生数据块的插入和删除时,跳表中需要更新的结点数量更少,从而更有效地对动态操作提供支持。最后对该方案进行了理论分析和实验验证,证明该方案是高效的。
HTML
-
将本文算法与另外3种针对云存储环境的数据完整性验证方案进行性能对比,之后将本文的方案与文献[14]的方案进行模拟分析实验。本文所提出的协议与文献[14]中所提出的方案在初始化阶段均需生成辅助认证信息,而产生辅助认证信息的时间复杂度均为O(n),且产生的认证结构中所包含的节点数量的期望值均为文件块数量的2倍,因此该部分不做性能测试。
设n代表用户需要存储在云服务器中的文件包含的数据块数量,本文与PDP方案、文献[10]和文献[14]方案的性能分析对比结果如表 1所示。
为支持动态操作,需要使用能够支持动态操作的认证性数据结构,本文方案使用的是前面介绍的跳表。在验证时,从根结点到目标结点的平均路径长度是logn,因此验证时的计算复杂度是O(logn),如表 1所示。
下面将本文的方案与文献[14]中的方案进行模拟对比实验。实现环境的配置为:主频为3.2 GHz的双核CPU台式计算机,8 GB内存,64位Windows 7操作系统,编码所用的开发语言为Java,使用的密码学工具库为jPBC v2.0.0。
对于日志文件,在文件的尾部追加内容是一种常态操作。本文测试的场景为连续向文件尾部追加数据块,测试开始前用大小为1 GB的文件产生认证结构,文件块的大小设置为8 KB,通过在文件的尾部追加不同数量的文件块以造成认证结构出现不同程度的不平衡。测量在不同程度的不平衡状态下,为每一个追加的文件块进行结构调整所消耗的平均时间,测试结果如图 5所示。
从理论分析而言,本文所提出的协议在执行尾部追加操作时,为每一个追加的文件块进行结构调整的平均时间复杂度为O(logn)。从上述测试结果可知,在向文件尾部进行连续追加文件块的场景中,本文提出的协议性能优于文献[14]中的方案。
测试向文件中随机插入文件块,测试前先用1 GB大小的文件产生认证结构,文件块的大小设置为8 KB,测试在文件中随机插入不同数量的文件块后,平均插入每一个文件块时,调整认证结构所消耗的时间,测试结果如图 6所示。测试结果显示本文方案与文献[14]中的方案性能相近。
测试不平衡状态下验证的时间消耗,首先在云端存储大小为1 GB的文件块和对应的认证结构,文件块的大小设置为8 KB,通过在原始文件尾部追加不同数量的文件块以造成认证结构出现不同程度的不平衡后,对最后一个文件块进行完整性验证以观察在不同程度的不平衡下,验证所需要的时间,测试结果如图 7所示。从测试结果可知,在不平衡状态下,本文所提出的方案在验证时的性能优于文献[14]中的方案。