面向增量同步的分块加密算法研究

作者:刘嵩 马琳 刘福强 更新时间:2012-05-28 14:28 点击:
【论文发表关健词】云计算;网络硬盘;基于OpenSSL框架的EVP加密;文件分
【职称论文摘要】
云计算中很重要的一点就是安全问题,在云计算平台下使用网络硬盘时,必须考虑它的安全性,用户上传的内容一定要经过加密存储。而现在的网络硬盘通常都是将用户的文档直接存储在网络磁盘中的,在客户端没有进行加密。为了让网络硬盘可以适应当下日益普及的云计算环境,将

Research on Block Encryption Algorithm for Incremental Synchronization
  LIU Song, MA Lin, LIU Fu-qiang
  (Naval Academy of Armament, Beijing 100036, China)
  Abstract: Security is paid more attention to cloud computing, whereas the Network Driver existing exposures security defects with the unencrypted data. In order to adapt Network Driver to the pervasive cloud computing environment, EVP Encryption has been combined with file division method to achieve the division, encryption and patch of files and finally upload to the cloud storage system to implement network driver in cloud computing environment. This technique eliminates some of the vulnerability of traditional network driver, and at meantime enhances the efficiency of synchronization or backing-up.
  Key words: cloud computing; network driver; EVP encryption method based on OpenSSL frame; file division
  随着当今人们对于“薄客户端”的追求,网络硬盘对于无论个人还是企业来说都越发地重要。当下流行的网络硬盘虽种类繁多,但传统的网盘技术已经不再具有快速传输、有效灾备、稳定安全等特性,加之运营成本也日趋增长。因此新的云计算存储技术可以取代传统网络硬盘来满足用户的新需求。
  云计算中很重要的一点就是它的安全问题,现在的网络硬盘通常都是将用户的文档直接存储在网络磁盘中的,而在客户端没有进行加密。我们将会改进这个机制,在客户端先对文件进行AES加密。另一方面,由于网络硬盘采用的更新机制基本都是检测出更新文件与之前文件的差异然后上传此部分的补丁——也就是“增量同步”,那么我们可以想象,当我们的用户更新了文件,并再次加密之后,如果此时采用的是传统的AES定长加密,变化将会在密文中扩散开来(通过实验测试数据可以知道这个变化大概相当于整个新密文的长度),因此我们将采用OPENSSL里的EVP方法来实现一种不定长度的加密。然后通过基于位置的签名计算方法,来对文件进行不定长度的分割,这样分割就使得:当文件中改动只存在于少数地方的时候,相应的分块才会有影响,其他分块保持不变,再对整个文件进行加密之后密文变动将会减少很多!这样就解决了安全性问题和传输速度(也就是性能)之间的矛盾。
  1相关工作
  云计算的安全性和关于加密数据计算的现有研究工作有相似的目标,使云计算服务不泄露用户机密数据。Hsu和Chen[1]从Web应用程序提出了云服务的典范,但只能减轻第三方控制数据威胁,并且任何Web应用程序仍然获得用户的明文数据。Goldreich,bellare,和Goldwasser[2]引入增量对称加密,并给出了增量散列和签名的具体研究案例。赵一鸣,符旭朱洪[3]提出了基于伪随机函数的增量加密方案。Wang[4]等人考虑允许第三方提供用户数据审计服务,不泄露用户的内容的隐私问题。iDataGuard[5]给出了中间件级的解决方案,外包用户数据文件给不可信的互联网数据服务。目前在线编辑应用程序得到很好的应用,如Google Docs[6], Microsoft Office Live[7]。该文受到Yan Huang and David Evans[8]的启发,Yan Huang and David Evans的文章提供用户一种方法,使他们受益于云应用程序在线编辑文件的优势,而不要求他们暴露敏感数据给服务提供商。
  该文的目标是实现用户使用云存储服务时保证数据的安全,而对客户端和服务器之间用户提交的数据进行加密,使云端存储密文文件,而非明文文件。为了保证用户在网络硬盘同步数据的效率,缩短同步数据的时间。该文提出了一种可变长分块加密算法,使得用户修改数据后加密文件的改动很少,这样就实现了增量上传,提升了同步数据的效率。该文并不对云端技术进行深入讨论,文章接下来的部分主要描述分块加密算法的实现。
  2文件的分割
  这一部分的内容在dividemethod.h的头文件中,其功能是将目标文件分块,参数是目标文件的路径,而由于我们需要返回多个参数所以采用一个结构体来包含这些参数:最大分块数m(整数型),当前分块数n(整数型),断点指针ptr(size_t型)。这里有一个比较重要的函数,是用来得到文件的当前分块数和断点指针的。
  这里我们可以看到其实分割文件就是通过一个函数来对读取的文档进行一种计算,这种计算可以返回一组叫做breakpoints的数,这就是断点了。计算一个文件的断点所在位置的方法是这样的:首先我们要定义一个sizt_t类型的pos变量来遍历当前的文件块,并对每一个pos签名,生成一个uint64_t(也就是unsigned long long)类型的变量sig,将sig模以TARGET_CHUNK_SIZE,也就是十进制的4096,如果得到的数字为十六进制的0x78,并且这一块的block_len不小于最小分块大小(2048),那么这个点将会被视为是Breakpoint。如果block_len超出了最大的分块大小(65535),那么将会把这最大分块大小(65535)这么多的内容作为一个分块。如果满足sig % 4096 == 0x78但是block_len小于最小分块大小(2048),那么将会进入下一次的循环。
  通过上述方法就可以得到当前文件的断点了。
  需要注意的是,由于我们采用的2进制来读取或存入文档/字符串,所以会遇到一个比较普遍的麻烦,就是我们不能用类似’\0’这样的终止符来判别文件或者字符串是否已经到达尾部。对于每一个输入或读取都要通过事先记录的大小或长度变量来计量。这一点在整个工程中都是要非常留心的,比如加解密过程中,因此下文中就不再次强调了。
  3文件的加密和解密
  在分割好了文件之后要对每一个分块进行加密的工作,我们这里采用的是EVP加密中的AES加密方法。我们首先引用了一个头文件,这个头文件中是对EVP中AES加解密方法重写的方法。
  这部分的内容被包含在ReEnc-Dec.h的头文件中,有三个比较重要的函数。第一个是用来初始化用户输入的口令来生成标准的AES加密密钥;第二个是通过输入AES密钥,明文和明文长度,输出AES加密后的密文;第三个则是输入需要通过AES解密的密钥,密文和密文长度,输出AES解密后的明文。这里需要指出的是,AES加密和解密都是分别通过三个函数组合来实现的,这三种函数在EVP中非常常见。 (责任编辑:论文发表网)转贴于八度论文发表网: http://www.8dulw.com(论文网__代写代发论文_论文发表_毕业论文_免费论文范文网_论文格式_广东论文网_广州论文网)

发表评论
本站模板均经测试成功,请放心下载,遇到任何问题或者需要购买付费论文请联系本站。
表情:
验证码:点击我更换图片