外包数据完整性审计方案
2016-10-21王鑫龙
王鑫龙
摘 要:在本次论文中,主要在文献的基础上,针对的场景是群组里面的成员分享数据、群组中有可能有群组的成员离开群组,所以该成员的签名并不再生效,如果把数据重新下载下来再重新签名这样并不适用,所以在这次的论文中,利用第三方审计端的代理重签名思想,来解决群组成员以后重新签名的问题。
关键词:云存储;完整性审计;代理重签名
引言
云存储是由云计算提供的一种数据外包的存储服务。然而,这种新的数据托管服务面临着重要的安全挑战,即如何保障数据的机密性和数据的完整性。在数据机密性方面,现在一般采用由数据拥有者自行对上传云端的数据进行加密这种方式来解决。相比数据机密性,在数据完整性方面,可能存在更大的担忧,担心存储在云服务器中的数据可能会丢失,由于数据被存储到云服务器上,数据拥有者就放弃了对所存储的数据的控制权。要是云存储服务提供商是不可信或者半可信的,那么云服务器可能会对数据拥有者隐瞒数据丢失的情况,或者丢掉那些在长时间内未被访问过或很少被访问的数据以达到节省存储空间的目的。但是云存储服务提供商却可能欺骗数据拥有者说数据仍然被完整地存储在云服务器中。所以数据拥有者需要一种安全可信的服务机制来确保数据被真实、完整地存储在云服务器中。为了提高云存储的安全性、可靠性,验证云服务器中数据拥有者数据的完整性和可用性,现在有许多的云存储数据完整性审计的概念被大家所提出来,并具有很多优点,但是也有很多不足之处。其中一个问题就是当用户将其数据存储到云端之后,他们最关心的问题之一就是存储的文件是否完好。最直接的办法是将文件全部取回检查,但是这样将耗费大量的网络带宽,特别当存储在云端的数据量很大的时候,将文件全部取回检查是很不现实的。近年来出现的远程数据完整性审计协议,使得云用户不需要访问原始数据,就能够对原数据的完整性和正确性进行校验,特别适用于云计算环境。因此,对云存储环境下的数据完整性验证审计协议的研究,具有重要的现实意义。云存储下数据完整性验证主要用户、云服务提供商、可信的第三方审计端组成。由于本地客户不可能将大量的时间的精力花费在对数据的完整性检测上面,所以一般交给可信的第三方来处理。采用第三方验证时,验证方只需要掌握少量的公开信息即可完成完整性验证任务。文献基于代理重签名的思想,设计了一个可以有效地支持群组用户撤销的方案。但是在文献中,作者提到由于使用了代理重签名的思想,这样有可能出现一个问题:云端有可能和已经离开群组的用户串谋,从而泄露用户的隐私的问题。还有一个问题就是,重签名该签署谁的名,如果是一个非常机密的组织,这样还有可能导致一个问题,就是容易泄露群组中用户的信息的问题,比如:当一个数据块分成多个数据块以后,如果里面大多数是其中某一个人的签名,那么我们有理由相信他是这个群组中比较重要的人物,所以在本论文中还要解决这个问题。
1 预备知识
1.1 双线性映射
设G1和G2分别是同为q阶的加群和乘群,并假设p,g为G1的生成子,假设在群G1和G2中,离散对数问题是难解的。
可定义双线性映射对为e:
,并满足以下特性:
可计算性:存在一个有效的算法计算双线性映射e
双线性:对于所有的u,v∈G1和a,b∈Zp,
非退化性:e(g,g)≠1
1.2 同态验证标签
同态是从一个代数结构到另一个代数结构的映射,它保持所有相关的结构不变,即存在映射: ,满足
其中:·是X上的运算,是Y上的运算。
同态标签是基于同态概念而生成的标签,在数据完整性检测过程中,可以利用同态标签的同态性来验证数据是否完整,同态标签具有以下两个性质:(1)通过使用同态标签,可使用少量特定的数据块数据的完整性检测,而无数对所有的数据块进行检测,降低了通信开销的计算开销。(2)对于任意两个数据块mi和mj,mi+mj的标签信息T(mi+mj)可以由它们各自的标签信息T(mi)、T(mj)生成,即T(mi+mj)=T(mi)?T(mj)。
2 改进的方案
在本次论文中,假设在一个群组中有n个人,他们分享数据,一个数据被分成很多个数据块,当某一个数据块有人修改的时候,修改完成就签上那个的人的名字,通常一个群组往往有人会退出这个群组,所以他的签名就不应该还在群组中。当这个人离开后该签谁的名字,签了以后如何解决用户隐私的问题。
如图1所示:当Bob离开群组,cloud需要用重签名密钥重新计算之前由B签名的数据块。可以看出来,经过重签名以后之前由Bob签署的数据块变成了A的。
假设群组中B由于某种原因离开了这个群组,所以当B离开后,可以签署组长E的名字,具体步骤如下:
令M代表外包的数据块, 1和 2是階为p的乘法群,g为
1的生成元。
e: 为双线性映射,全局变量有(e,p, 1, 2,g,w,H),其中H是哈希函数 。
KeyGen:给出了全局变量(e,p, 1, 2,g,w,H),用户uA随机生成一个随机数 ,输出公钥pkA=ga,私钥skA=a
ReKey:可信第三方按照以下步骤生成重签名的密钥rkA→B:(1)代理生成一个随机数 并把他发送给用户uA;(2)用户uA计算并把r/a发送给用户uB,其中skA=a;(3)用户uB计算并把rb/a给第三方代理,其中skB=b;(4)代理恢复
Sign:通过私钥skA=a,数据块 ,数据块的标示符id,用户uA数据块m的签名: 。
Resign:通过重签名的密钥rkA→B,公钥pkA,签名σ,数据块的标示符id,代理验证Verify(pkA,m,id,σ)是否等于1,如果结果是0,代理输出 ,否则 。Verify:通过公钥pkA,数据块m,数据块的标示符id,签名σ,如果数据块是完整的,则e(σ,g)=e(H(id)ωm,pkA),否则输出为0。
前面提到这样还有可能导致一个问题,就是容易泄露群组中用户的信息的问题,比如:当一个数据块分成多个数据块以后,如果里面大多数是其中某一个人的签名,那么我们有理由相信他是这个群组中比较重要的人物。在代理重签名的方案中,我们可以随机的抽取群组的成员,利用代理重签名的方案,让离开群组的用户签名签署成群里面随机成员的,这样可以不用泄露群组重要成员的问题。
3 结束语
本次论文针对的是在群组用户分享数据的时候,由于有用户离开群组,这样离开的用户的签名并不再生效,为了使用户不用下载数据修改签名以后在上传到云端这样的通信开销,所以本论文利用代理重签名的方法来解决这个问题。
参考文献
[1]李晖,孙文海,李凤华,等.公共云存储服务数据安全及隐私保护技术综述[J].计算机研究与发展,2014.
[2]傅颖勋,罗圣美,舒继武.安全云存储系统与关键技术综述[J].计算机研究与发展,2013.