论文部分内容阅读
随着如IEEE802.11无线局域网和3G蜂窝移动基础设施的广泛部署,以及移动电话、平板电脑等移动设备硬件性能水平的大幅提高,传统的基于固定网格的云计算开始向移动云计算辐射。移动云计算的应用场景主要分为面向处理和面向数据。对于面向数据的应用,数据完整性验证是其安全架构中不可或缺的一环。普遍认为,云服务供应商是不可信的,云服务供应商可能为了减轻自己的存储负担而将用户不常用到的数据从云端删除。即便云服务供应商的可信度能被保障,存储在云端的数据也很容易被入侵者篡改或删除。如果没有数据完整性验证机制,用户将不能及时地发现自己的数据已经损坏。然而已经提出的一些完整性验证方案由于验证开销太大、不支持外包验证等原因并不适合部署到移动平台上。此外,对于类似云文件共享的应用,文件完整性验证操作不单单来自文件拥有者,还有可能来自拥有文件访问权限的其他用户,因此完整性验证框架还应当具备“公开验证”的特征。本文意在通过改进现有方案,得出一个适合移动云计算环境部署的完整性验证框架。本文的组织结构如下,首先介绍移动云计算的概念,并阐释数据完整性验证技术在其上的应用现状,分析现存方案的利弊。调研中作者发现,文献[1]的方案基于Merkle哈希树[2]和BLS短签名方案[3],其具备支持公开验证、验证过程无状态信息保留、支持动态数据等特点。然而其采用复杂的哈希树建树运算和双线性对运算,并不适合部署在移动平台上。为了将该方案应用到移动环境下,本文对其改进,引入密钥交换技术,在移动端与可信第三方之间构建一个安全的通信信道,使得复杂的验证算法能够外包给可信第三方。本文着重描述了方案相对于[1]的改进之处,并增加了[1]中未涉及的哈希树遍历算法以及认证路径节点的构造算法。随后本文对改进方案的准确率和执行效率做了评估,结果表明方案能够以相对较少的数据挑战量(3%于文件块数目)以及数据传输量,完成可信度较高(大于95%)的验证。随后本文站在软件工程的角度,阐释了改进方案系统的整体设计和实现过程。本系统采用客户端-服务器架构,使用快速原型模式开发,以期能够尽快地实现核心功能,之后再对其拓展。系统客户端部署在Android操作系统上,使用Java语言编写;服务器部署在Windows操作系统上,使用C++语言编写,并利用Windows操作系统的I/O完成端口机制高效地处理多用户接入而无需创建过多线程。本系统具备如下主要功能:1)用户访问控制;2)文件上传;3)文件完整性验证;4)动态数据;5)文件下载。其中访问控制采用经典的用户名-密码机制;文件上传需要经过预处理,涉及双线性对运算,但能将其外包给可信第三方执行;文件完整性验证通过可信第三方与云服务供应商的交互完成,使用处理过的文件块,无需源文件块参与,进而向执行验证算法的第三方隐藏数据细节;动态数据允许用户自由地向自己发布的文件中(批量)更新、(批量)插入或(批量)删除文件块;用户允许下载有访问权限的文件。本系统的设计和开发流程严格地按照标准软件工程项目的要求进行,具备完整的产品需求、明确的模块划分、清晰的接口定义以及高效的代码实现。相信本文所述的文件完整性验证框架及其实现能够成为理论与实践相结合的例子,让更多的人关注到移动云计算这一发展迅猛却又危机四伏的领域。