温琳雅,仪张倩,刘 行
(长安大学 信息工程学院,西安 710064)
云存储服务在个人和组织环境中,随着云用户数的增加,冗余数据量也随之增加.众所周知,云服务提供商通常利用跨用户数据去重复来尽量减少存储开销,允许云服务器检测两个或多个用户上传同一文件的副本,并且只存储该文件的一个副本.
云服务提供商自由访问用户数据,这就要求云用户充分信任云服务提供商做正确的事情.传统的加密算法将文件的相同副本加密成完全独立的密文,这使得重复删除的工作复杂化.Douceur 等人[1]提出的收敛加密(CE)的技术,CE是一种确定性加密方案,使得文件的相同副本被加密成相同的密文.
虽然CE 提供了一种简单而有效的方法来在数据隐私和加密重复数据消除的功能要求之间取得平衡,但它有安全性和性能限制.利用CE的概念,Bellare 等人[2–4]构建了一个名为消息锁定加密(MLE)的新加密原语,以方便在加密数据上的重复数据消除,他们还为MLE 定义了两个安全要求:隐私性和标签一致性.
在本文中,我们提出了一种随机、安全、跨用户重复数据消除方案,请求上传文件的用户需要与云服务器进行交互,以确保同一文件的副本被加密到同一密文中,同时实现抵抗暴力攻击.具体地说,拥有相同文件副本的不同用户通过共享相同的随机值生成文件加密密钥,因此只有具有该文件相同副本的用户才能获得随机值并计算正确的加密密钥.
Millier[5]基于椭圆曲线提出了椭圆曲线密码体制,Fp被设定为阶为q有限域,有限域Fp上的椭圆曲线E被定义为满足等式y2=x3+ax+bmodp上所有点(x,y) 集合;其中a,b∈Fp且 4a3+27b2≠0.无穷远点O和椭圆曲线E上其他点形成一个循环加法群 G,则椭圆曲线上的标量乘是kP=P+P+···+P(k times),这里k∈Z*q.
Fan 等人在2014年提出布谷过滤器(Cuckoo filter),这是一种用于近似集合查询的新型数据结构[6].
本文提出了动态布谷鸟滤波器(DCF),以支持可靠的删除操作和弹性容量的动态集.影响DCF 设计的效率有两个因素,首先,DCF 数据结构是可扩展的,使动态集空间的表示更有效.其次,DCF 使用垄断指纹来表示一个项,并保证可靠的删除操作.实验结果表明,与现有的先进设计相比,DCF的内存成本降低了75%,构建速度提高了50%,会员查询速度提高了80%.
布谷鸟滤波器一般是成对的哈希函数,一个是记录的位置,另一个是备用位置,这个备用位置是处理碰撞时用的.
HA:G→{0,1}L HB:G→{0,1}L L
使用和(一般为64 bits)计算文件对应的位置.
此外,在迁移过程中,存储的是原始数据的哈希值ξx而不是原始数据x带来了挑战.为了解决这个问题,利用了一种新的散列方法,称为部分密钥布谷鸟散列,它通过根据当第一个阵列地址和要踢出的哈希值进行异或操作来计算替代位置的地址.具体来说,两个阵列的地址可计算为:
如果在添加新元素时,两个哈希列表均被偶然的占据,则会导致假阳性的结果.可计算假阳性概率的上限为:
椭圆曲线离散对数问题(ECDLP):给定P,Q∈G为椭圆曲线上E的点,P是G的生成元,这里a∈Z*q且未知,满足Q=aP,ECDL 问题是计算a∈Z*q.
该系统模型图如图1所示,参与者包括3 个实体:云服务器(CSP),域服务器(KS),用户(U).
图1 网络模型
云服务提供商CSP:表示诚实又好奇的实体机构,负责系统参数的生成.
区域服务器KSi:表示诚实又好奇的实体机构,负责生成用户的文件标识和区域内部去重.
用户Ui:生成文件标识进行去重.
我们的目标是在所提方案中实现以下安全目标.
(1)数据机密性:任何对手,包括未经授权的用户U、CSP或KS,都不能获得加密数据的明文信息,除非他们获得加密数据的密钥[7].
(2)数据完整性[8]:所提方案应保护数据完整性免受对手的影响.也就是说,它应该允许U验证从云存储器下载的数据是否没有被更改.
(3)可扩展性:所有的密钥服务器都不应参与收敛的密钥生成过程,这会导致系统的性能下降.
所提方案包含6 个阶段:系统初始化阶段、用户注册阶段、用户文件标签产生阶段、去重阶段、数据完整性校验、用户动态更新.
系统初始化:该算法由CSP执行.
(1)给定一个安全参数 λ,基于定义在有限域Fp上的椭圆曲线E,选择一个阶为q的循环加法群 G,P是群 G的生成元.
(2)CSP随机选取3 个单向哈希函数H1:{0,1}*→Z*q,H2:G→Z*q,H3:G→Z*q.公开系统参数params={q,G,P,H1,H2,H3}.
区域服务器参数生成:区域服务器KSi(i∈(1,N),共有N个区域) 随机选择si∈Z*q作为私钥,计算公钥pki=siP,并将公钥公开.
用户注册:用户选择xi∈Z*q作为用户的密钥,并计算公钥 Xi=xiP,并将公钥公开.
给定系统参数params,区域公钥pki、用户的数据mi,执行以下步骤生成文件标签.
(1)用户Ui随 机选择ai∈Z*q,计算M1=aisiP+H1(mi)P,Ai=ai·P.用户Ui将(M1,Ai,Xi) 发送给所在区域的服务器KSi.
(2)区域服务器KSi随机选择ri∈Z*q,计算M2=M1-siAi=H1(mi)P.在用户区域内去重过程中,区域服务器KSi限制规定时间内进行有限次询问,例如十分钟内进行20 次询问.为了防止区域服务器发生单点故障,我们在一个区域内部署3 个服务器.
(3)生成标签:区域服务器KSi计算:H3(M2),哈希值H3(M2) 将用于去重工作.
去重工作包含两个阶段,区域内部去重、跨区域去重.区域内部去重由区域服务器执行,跨区域去重由CSP执行.
(1)区域内去重阶段区域服务器KSi将H3(Tagi) 与本区域保存的哈希列表进行对比.区域内去重工作存在两种情况:
第1 类,本区域内存在重复,即本区域内存在Tagi满足Tagi=Tagj,意味着在之前已经有处在同一个区域的用户上传了与用户Ui相同的文件,则用户Ui为后续上传者,因此,用户Ui不需要上传密文.
区域服务器KSi向用户Ui发送‘同区域重复文件存在||不需要上传文件’的指令,区域服务器KSi计算:Ti=H3(M2).区域服务器KSi将用户公钥、用户文件标识:‘ (Xi,Ti)||重复’提交给CSP,CSP将用户Ui的公
钥Xi添加到文件第一个上传者的密文列表中.
第2 类,如果本区域内文件不存在重复,意味着在同一个区域的用户没有上传过与用户Ui相同的文件,区域服务器KSi将H3(Tagi) 保存在本域的哈希列表中,区域服务器KSi将‘ (i,Xi,Ti)||去重’提交给CSP进行跨区域去重.
(2)区域间去重阶段,CSP收到来自区域服务器KSi的‘ (Xi,Ti)||去重’指令,CSP计算哈希值HA(Ti)、HB(Ti),CSP利用布谷鸟服务器进行对比查询这两个哈希值在滤波器列表中映射的位置是否为空,如果映射位置为空则该文件属于无重复文件,任选一个位置插入Ti,如果映射的位置不都为空则与Ti进行对比,存在与Ti相同数值,则该文件在云上已有重复存在.去重后存在两种情况:
第1 类,跨区域不存在重复文件,则表示用户Ui为其文件的第一上传者,用户需要加密文件并上传.云向区域服务器发送‘Ti||上传文件’指令,由区域服务器KSi转发给用户.
第2 类,跨区域存在重复文件,意味着在之前已经有处在不同区域的用户上传了与用户Ui相同的文件,则用户Ui为后续上传者,不需要上传加密文件.
CSP向区域服务器KSi发送‘Ti||文件重复’,CSP添加用户Ui的公钥Xi添加进第一上传者的密文条目.用户去重工作完成后,CSP向发生重复的用户发送‘不需要上传文件’指令时,并向用户发送文件第一上传者的密钥辅助参数Ci2.
用户Ui在完整性校验过程中利用已保存的H1(mi) 计算:ai=DecH1(mi)(Ci2),cki′=H2(ai).用户Ui保存对称密钥cki′.用户Ui保存对称密钥cki′,形如:
用户Ui收到上传文件指令后,计算对称加密密钥、文件密文、辅助密文:
其中,cki用于加密文件mi,Ci2用于辅助后续去重工作中与用户Ui具有重复文件的用户生成解密的对称密钥.用户Ui将密文 (Ci1,Ci2,Ti) 发送给区域服务器KSi,服务器KSi将(Ci1,Ci2,Ti) 转发给CSP.云将(Ci1,Ci2)添加到去重阶段已保存的条目 (i,Ti,Xi)中,保存为(i,Ci1,Ci2,Ti,Xi).
用户Ui向云服务器提交‘下载||Ti’,云检查Ti相对应的密文列表是否具有用户的公钥Xi,云随机选择r∈Z*a计算EncXi(r),发送给用户Ui.用户收到EncXi(r)后利用自己的进行解密得到r,用户将r发送给云,云收到r后进行检验,相等的情况下云将密文发送给用户.云服务器向用户发送相应的(Ci1,Ci2).
用户在下载请求后将收到密文 (Ci1,Ci2),用户Ui可以利用已保存的私钥cki,下载文件进行解密:mi=Deccki(Ci1).
当有用户想要删除文件时,需要进行密钥的更新,CSP从Tj对应的密文条目中删除用户公钥Xj.
数据的保密性和完整性是对加密数据的重复数据消除研究中重要的安全问题.因此,在这部分,我们讨论如何实现更高层次的安全性,且比其他方案的设置更简单.
内部攻击通常被定义为服务器试图获得明文[9–11],在我们的方案中,由于服务器和云是半信任的,它们将按指定的方式执行数据的去重复,但出于好奇,他们试图获得明文.具体地,区域服务器为每个数据存储哈希值H3(Tagi),云服务器存储密文 (Ci1,Ci2).基于椭圆曲线离散对数难题,服务器无法通过M2=M1-siAi=H1(mi)P,Ai=ai·P获得文件的哈希值H1(mi)和加密密钥ai,从而服务器无法解密文件密文.
本节与以前的去重方案的安全属性和计算成本方面的比较.
(1)安全属性比较
方案的安全属性比较如表1.
表1 安全属性比较
(2)计算代价比较
本节将比较所提方案与现有去重方案的计算代价和通信代价.
基于MIRACL Crypto SDK,仿真实验在CPU为英特尔i7 (2.53 GHz),内存为8 GB的64 位Window 7 操作系统下进行.平均运行时间如表2所示.表3和表4给出了文献[12–16]和本文提出的方案计算代价比较.
表2 基本操作的执行时间
表3 该方案与其他方案用户计算代价比较
表4 通信代价比较 (bits)
由表3可知,在文件标签上传阶段,所提方案计算代价为1.16 ms,与已有的数据去重方案[12–16]相比,计算代价最小,分别降低了59.15%,95.70%,95.70%,95.97%和72.76%.
在文件加密阶段中,所提方案加密文件计算代价为0.004 8 ms,与已有的数据去重方案[12–14,16]相比,分别降低了99.91%,99.96%,99.96%和99.96%,与方案[15]相比,计算代价近乎相同,但方案[15]不能满足访问控制和用户的动态更新.
密文解密阶段,在非上传者解密2 KB 文件过程中,所提方案解密文件计算代价为0.39 ms,与已有的数据去重方案[12–14,16]相比,分别降低了86.26%,96.31%,98.33%和99.96%,尽管方案[15]的非上传者在文件解密阶段具有更低的计算代价,但所提方案在功能方面优于方案[15].
由图2可知,在文件标签上传阶段,所提方案通信代价为320 bits,与已有的数据去重方案[12–16]相比,通信代价最小,分别降低了68.75%,79.17%,79.17%,68.75%和68.75%.
图2 通代价比较
文件密文上传阶段,在密文大小相同的情况下,对辅助参数的通信代价进行比较.由图2所知,与已有的数据去重方案[12–16]相比,所提方案在密文上传阶段的通信代价最小,所提方案分别降低了89.58%,84.38%,87.50%,68.75%和72.97%.
文件密文下载阶段,与已有的数据去重方案[12–16]相比,所提方案的通信代价最小,所提方案分别降低了84.38%,84.38%,87.50%,68.75%和72.97%.
由以上分析表明,所提方案在实际应用中具有更好的适用性.
本文提出了一种随机、安全、服务器端去重方案.通过共享用于为持有相同文件副本的用户生成加密密钥的随机值,可以抵抗来自恶意云服务器和用户的暴力攻击.在所提方案中,昂贵和复杂的计算由云服务器处理,因此在客户端发生的计算开销较少.安全性分析表明,该方案提供了一个更简单的去重复框架,具有更高的安全性.性能评估的结果表明,本文方案在客户端产生最小的计算开销,这是足够轻量级的.