基于云平台的多用户可验证数据分享方案
2021-01-22唐士杰王会勇王玉珏
丁 勇, 赵 萌, 唐士杰,2, 梁 海, 王会勇, 王玉珏
(1.桂林电子科技大学 广西密码学与信息安全重点实验室,广西 桂林 541004;2.桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004;3.桂林电子科技大学 数学与计算科学学院,广西 桂林 541004)
云计算可以为用户提供强大的数据存储服务,能够极大降低用户本地存储数据的负担[1]。在多用户模式下,云计算可以提供灵活的数据访问和分享功能,如公司可将大规模数据外包至云端,所有员工使用相关账号登陆云服务器即可获得该数据,实现公司数据的有效分享。然而,云存储数据面临着各种安全风险,如用户数据可能在云端遭到恶意篡改、删除、伪造等[2],由此极有可能对用户造成经济等方面的损失。
在多用户环境下采用云平台存储数据时,需要确保外包数据的完整性,并为合法的数据使用者颁发完整性验证的权限。现有的云数据完整性验证方案分为两大类,即私有验证方案和公开验证方案[3]。前者要求数据使用者持有与数据拥有者相同的密钥,以执行外包数据完整性验证协议;而后者允许任意用户验证外包数据当前在云端的完整性。较为典型的云数据完整性验证技术包括数据持有证明(provable data possession)[4]和数据恢复证明(proofs of retrievability)[5],目前大量相关的扩展方案得到广泛研究,用户在外包数据前先对其进行处理,生成可验证的元数据以支持对外包数据的完整性验证。
Shacham等[6]基于伪随机函数(pseudo-random function)构造了私有验证的数据恢复证明方案,同时使用BLS数字签名方案[7]设计了公开验证的数据恢复证明方案,并首次给出了严格的安全模型和证明。文献[8]研究了重复数据外包情形下如何降低用户计算和通信的问题,提出的数据恢复证明方案允许云服务器协助用户对重复数据进行处理。文献[9]针对代理数据外包带来的安全问题进行了研究,允许数据拥有者授权其他用户处理数据,同时支持数据使用者对数据的来源和完整性进行验证。文献[10]构造的密码方案也支持数据拥有者授权其他实体处理数据,适用于代理数据外包的情形。文献[11]基于RSA算法提出了外包数据代理完整性验证方案,能够确保第三方在执行代理完整性验证时无法获得数据的真实内容。文献[12]发现现有云数据完整性验证方案存在相关密钥攻击问题,敌手利用相关密钥攻击技术能够获得用户保存在硬件中的私钥,并计算出相关密钥,使得恶意的云服务器可以在执行完整性验证协议时欺骗用户。文献[13]提出了支持指定审计员执行外包数据完整性验证的方案,允许数据拥有者在数据处理阶段指定一个或两个用户作为合法的数据使用者,能够和云服务器交互协议以验证外包数据的完整性。该方案允许2个或3个用户实现可验证的数据分享,且数据拥有者无需为数据使用者另外生成授权,但无法解决多用户环境下的可验证数据分享问题。为解决该问题,提出一种基于云平台的可验证外包数据分享方法。在处理数据阶段,数据拥有者可指定一组数据使用者,使得仅有指定的一组使用者可以与云服务器交互以验证其完整性,实现可验证的云数据分享机制。安全分析和性能分析表明,所提出的方案是安全高效的。
1 预备知识
本方案的安全性依赖于计算diffie-hellman难题(computational diffie-hellman,简称CDH)。
2 系统模型及安全需求
如图1所示,可验证的云数据分享系统由4类实体构成,即可信机构(trusted authority,简称TA)、云服务器(cloud server,简称CS)、数据拥有者(data owner,简称DO)和数据使用者(data user,简称DU)。TA作为系统可信实体,主要负责生成系统公开参数。CS具有强大的数据存储和计算能力,能够为用户提供数据存储服务,并响应用户的请求,但不是可信实体。DO和DU均是CS的用户,可根据TA生成的系统公开参数计算自己的密钥对。DO将自己的外包数据分享给一组DU,可根据自己的私钥以及相关DU的公钥对数据进行处理,所生成的元数据和数据标签被上传到CS存储。DU可从CS读取分享数据的内容以及数据标签,并和CS执行交互协议验证该数据的完整性。DO无需专门为DU生成授权,使得相关的DU能够验证分享数据的完整性。
可验证的云数据分享系统需满足如下安全目标:对于DO外包至CS的任何数据,如果其完整性遭到破坏,如被篡改、替换、或部分删除等,均可由一组合法的DU执行完整性验证协议来发现。任一合法DU在验证该数据的完整性时,均可独立和CS执行验证协议,不需要DO以及其他合法DU的协助。任何未被DO指定为合法使用者的用户均无法验证该数据完整性。
可验证的云数据分享方案包括系统初始化、密钥生成、数据处理、可验证分享等4个模块。系统初始化模块由TA执行,根据选取的安全参数生成系统公开参数。密钥生成模块由每个用户(包括DO和DU)单独执行,根据系统公开参数生成各自的公钥及私钥。数据处理模块由DO执行,根据自己的私钥和一组合法DU的公钥生成处理后的数据和对应的数据标签,并上传至CS保存。可验证分享模块由任一合法的DU和CS交互执行,DU首先验证数据标签的正确性,若正确,则向CS生成一个挑战,CS根据挑战生成一个响应,使得DU能够通过该响应验证所分享数据的完整性。
图1 系统模型图
3 方案设计
基于双线性群构造一个可验证的云数据分享方案,具体包含如下步骤。
(ui,vi)←Φ.N(1λ)。
(1)
因此,用户Pi的公钥为ci=(yi,ui),私钥为di=(ai,vi)。
φ(x)=(x-H1(gα‖y1α))(x-H1(gα‖y2α))…
(x-H1(gα‖ynα))+βmodp。
(2)
对函数φ(x)重组得到:
φ(x)=snxn+sn-1xn-1+…+s1x+s0modp。
(3)
根据函数φ(x)的系数计算:
(4)
随机选取一个唯一的标识符D,随机选取元素ω∈G1,将数据M划分为个数据块mi,即M=m1‖m2‖…‖m,并构造字符串Γ:
Γ←D‖c0‖c1‖…‖cn‖‖ω‖gα‖
η0‖η1‖…‖ηn,
(5)
计算
δ←Φ.S(v0,Γ),
(6)
得到数据M对应的标签τ←Γ‖δ。对每个数据块mj(1≤j≤),计算生成元数据σj:
σj=(H2(D‖gβ‖‖j)·ωmj)a0。
(7)
4)可验证分享:每个数据使用者Pi(1≤i≤n)可从CS读取数据标签τ,分解得到Γ和δ,并验证式(8)是否成立:
(8)
若不成立,则终止执行后续步骤。Pi从[1,]中随机选取一个子集Α,对每个元素j∈Α,随机选取元素将生成的挑战Δ={(j,ϖj):j∈Α}发送给CS。
(9)
ρ=H1(gα‖(gα)ai)
(10)
以及
(11)
进一步验证等式:
(12)
若等式(12)成立,则表明Pi获得的分享数据M是完整的;否则,表明该数据已遭到破坏。
4 方案分析
4.1 安全分析
定理1提出的可验证云数据分享方案是正确的。
证明数据标签τ的正确性由安全的数字签名方案Φ保证,因此,证明本方案的正确性仅需验证式(12)是否成立。由于
ρ=H1(gα‖(gα)ai)=H1(gα‖(gai)α)=
H1(gα‖yiα),
(13)
根据式(2)易得φ(ρ)=β,于是根据式(11),结合式(3)和(4)可得
…·(gs1)ρ·gs0=gsnρn+sn-1ρn-1+…+s1ρ+s0=
gφ(ρ)=gβ。
(14)
因此,每个合法的DU均可根据自己的私有获得保密参数gβ。由
可得
因此,完整性验证等式(12)成立。
定理2若CDH假设成立,且数字签名方案Φ是安全的,则提出的可验证云数据分享方案是安全的,即仅有合法的DU可以验证外包数据的完整性,且对于已经损坏的外包数据,CS无法伪造满足完整性验证条件的有效响应。
证明首先,从式(13)和(14)可看出,数据使用者Pi在计算保密参数gβ时必须使用自己的私钥ai。对于非法DU而言,根据其私钥计算式(10)所得的参数ρ无法满足式(11),即非法DU无法获得保密参数gβ,因此无法和CS执行外包数据完整性验证协议。
其次,从式(6)可看出,本方案和文献[6]的公开验证方案生成的元数据具有相似的结构,区别在于本方案要求DO在每个数据块对应的元数据中嵌入保密参数gβ,使得只有指定的DU才可获得保密参数gβ并进一步验证数据的完整性。因此,基于文献[6]定理4.2的结论,本方案可确保CS不能伪造有效的响应。
4.2 效率分析与比较
对于密钥生成算法,表1考虑了一个用户计算生成一对公钥和私钥的时间开销,每个方案均要求用户执行1次循环群G1上的指数运算并调用一次算法Φ.N,因此所有方案在本阶段具有相同的效率。在处理相同的数据M={mj:1≤j≤}时,假设每个数据块mj仅包含一个数据段,数据处理算法需要计算参数η0,η1,…,ηn,以支持n个DU验证外包数据的完整性。因此与文献[6]方案相比,需要多执行2n+3次G1上的指数运算;而文献[13]的2个方案也需要根据指定审计员的公钥计算相关参数,因此与文献[6]方案相比,分别需要多执行2次G1上的指数运算、2次G1上的指数运算和1次双线性对运算
表1 效率比较
5 结束语
为实现云数据在指定用户范围内的可验证分享,提出了基于云平台的数据外包方案,数据拥有者在数据处理阶段可以指定外包数据的分享范围,使得只有被指定的合法用户才可和云服务器执行完整性验证协议,以发现外包的分享数据完整性是否遭到破坏。安全分析表明,本方案能够确保外包数据的安全性,云服务器无法破坏或伪造用户数据。效率分析表明,本方案在用户端的计算开销和指定的数据使用者数量呈线性关系。后续工作将进一步研究外包数据可验证分享过程中的数据隐私问题。