身份加密多云多副本完整性审计协议*

2024-03-19 11:13闫一非曾昭武
计算机工程与科学 2024年3期
关键词:副本树根哈希

张 逢,文 斌,闫一非,曾昭武,周 伟

(1.海南师范大学信息科学技术学院,海南 海口 571158;2.海南师范大学云计算与大数据研究中心,海南 海口 571158; 3.数据科学与智慧教育教育部重点实验室(海南师范大学),海南 海口 571158)

1 引言

随着5G、人工智能、云计算和物联网等技术的融合创新,数据存储需求迅速增加。用户将数据外包给远程云存储服务器,但数据的安全性和计算可信度取决于云存储服务器的信誉。然而,数据可能泄露或丢失[1],传统的完整性审核技术在云环境中并不适用。为了保证外包数据的完整性,Juels等人[2]提出了“可检索性证明”PoR(Proof of Retrievability)方案,该方案在数据中嵌入哨点值以进行数据完整性审计。Ateniese等人[3]引入了可证明数据拥有PDP(Provable Data Possession)的概念,并引入了第三方审计TPA(Third-Party Auditor)来验证公共场景中数据的正确性,然而这些操作不支持数据动态性。为了支持数据动态性,Ateniese等人[4]提出了第一个支持部分数据动态性的PDP方案。随后,许多数据完整性审计方案专注于支持完整的数据动态。Wang等人[5]开发了一种基于默克尔哈希树MHT(Merkle Hash Tree)的方法,以支持公共审计和全面的数据动态。然而,如果块索引未得到正确性验证,恶意云存储服务器可以通过选择另一个块及其有效性证明来欺骗云用户。之后,Barsoum等人[6]提出了第一个基于改进的MHT的动态多副本PDP方案,称为基于树的多副本PDP,即TB-PMDDP(Tree-Based Provable Multi-copy Dynamic Data Possession)。然而,该方案不验证块的位置,导致无法抵抗替换攻击。为了解决这个问题,Liu等人[7]提出了一种基于MHT的新型认证数据结构,解决了经典MHT中块索引缺乏认证的问题。但是,此方法需要单独验证所有副本以查找损坏的副本,导致计算和通信开销随着副本数量的增加而线性增加。Shen等人[8]设计了一种结合双链接信息表和位置数组的动态结构,以有效地支持数据动态,但未考虑数据新鲜度。

为了增强数据的可靠性和持久性,Curtmola等人[9]提出了基于RSA(Rivest-Shamir-Adleman)标签的多副本解决方案,但仅适用于静态文件。为了识别损坏的副本,Barsoum等人[10]开发了一种不支持动态操作的多副本解决方案。Zhu等人[11]提出了协作PDP方案,用于在多云环境中检查数据完整性。该方案指定一个云存储服务器作为组织者,通过与其他云服务提供商的交互来完成审计过程。但是,该方案存在一个缺陷,即使所有外包数据都受到损害,恶意云服务提供商仍然可以生成有效证明。He等人[12]提出了一个专门为多云存储设计的可公开验证的批量审计方案。该方案也引入了组织者,在不同的云服务提供商之间分发数据文件,并协助分配质询请求,并在审计阶段合并不同提供商生成证明。Wang[13]提出了基于身份的分布式PDP方案ID-DPDP(IDentity-based Distributed Provable Data Possession),其中组织者负责转发块标签并向云服务提供商发送请求,然后在多云存储场景中组合来自不同提供商的证明。然而,Peng等人[14]发现ID-DPDP方案未能实现其声称的安全目标,因为即使所有数据都被丢弃,云服务提供商仍然可以生成有效证明,随后提出了一个新的解决方案来解决这个问题。然而,Lan等人[15]指出,在文献[14]的解决方案中,恶意云服务提供商仍然可以在没有完整的外包数据的情况下生成有效证明,从而引入安全漏洞。在文献[15]中他们提供了一个修改方案来解决该问题。此外,Li等人[16]将多副本存储策略与区块链技术相结合,引入了适用于分布式存储服务的可公开验证结构,解决了与集中存储相关的单点故障问题。Zhou等人[17]利用随机掩码技术生成可区分的副本块,并提出了一种具有改进Merkle哈希树的多副本数据完整性审计方案,用于动态操作。然而,他们的完整性审计方案M2HT(Multicopy Merkle Hash Tree)并没有专门识别哪个副本块已损坏。Li等人[18]提出了一种基于身份的多云存储多副本PDP方案,然而该方案需要向不同的云服务提供商交付不同的副本,从而导致额外的存储和通信开销。多副本方案中大多数PDP协议都是基于PKI(Public Key Infrastructure)技术,这给证书管理成本带来了沉重的负担。

本文基于文献[19]的身份加密,提出了一种新的基于身份的多云多副本PDP协议IDM2PDP(IDentity-based Multi-cloud Multi-copy Provable Data Possession)。该协议基于身份加密来简化证书管理,并设计了一种新的安全数据结构,称为双层默克尔哈希树D-MHT(Double Merkle Hash Tree)。D-MHT不仅支持数据的动态修改,而且还可以保证副本的一致性和新鲜度,且可以定位损坏的数据块,便于通过其他副本对损坏的数据块进行恢复,提高存储的健壮性。IDM2PDP还支持同一用户多文件的批处理审计。每个云存储服务器都维护一个D-MHT。D-MHT的根哈希与其对应的云存储服务器的唯一标识符进行关联。在总签名上,所有的根哈希及其对应的云服务提供商的唯一标识符与秘密时间戳、文件唯一标识符、用户的唯一标识符进行关联,以确保文件与D-MHT之间的关联性和标签的新鲜度,从而确保根哈希的标签无法被生成或替换。性能评估和实验评估结果表明,相对于PDP-D[18],IDM2PDP效率更高、计算成本更低。

2 预备知识

2.1 符号说明

本文需要用到一些符号说明如表1所示。

Table 1 Symbols description表1 符号说明

2.2 双线性配对

考虑2个q阶的乘法循环群G和GT,其中q是素数。e:G×G→GT为双线性映射,满足如下性质:

(2)非退化性:∀P,Q∈G,e(P,Q)≠1;

(3)可计算性:∀P,Q∈G,存在一种有效的算法可以计算e(P,Q)。

2.3 CDH假设

3 系统模型和安全模型

3.1 系统模型

本文所提出的方案IDM2PDP的系统模型如图1所示,该模型包括5个实体:

(1)私钥生成器PKG(Private Key Generator):负责生成系统的公共参数、主公钥、主密钥以及数据所有者的私钥。

(2)数据所有者DO(Data Owner):指拥有大量数据文件但资源有限的个人、公司或商业组织等实体。

(3)第三方审计(TPA):指对DO数据进行完整性审计的实体,减轻了DO数据审计的计算负担。

(4)云存储服务器CSS(Cloud Storage Ser- ver):指具有足够计算能力和无限存储空间的实体,负责保存外包数据。

(5)云管理服务器CMS(Cloud Manage Ser- ver):在存储文件副本时,DO将文件副本发送给CMS,CMS根据DO的请求,将不同的副本分发给目标CSS。需要审计文件完整性时,DO委托TPA,TPA将挑战发送给CMS,CMS将挑战分发给目标CSS。收到所有CSS返回的证明后,CMS聚合完整证明并回复给TPA。

Figure 1 System model图1 系统模型

本文假设CSS和CMS是半可信实体,它们能遵循协议,但在数据损坏的情况下可能向TPA提供虚假信息。TPA也被认为是半可信实体,能诚实地执行数据完整性验证并将真实结果返回给DO,但对DO的数据有好奇心。

3.2 定义

定义1(IDM2PDP方案) 该方案包括9个多项式时间算法:Setup,Extract,CopyGen,TagGen,AuthGen,ChalGen,ProofGen,ProofAgg,ProofVerify。

(1)Setup(1λ):该算法由PKG执行,输入安全参数λ,输出主密钥和系统公共参数。

(2)Extract(param,x,Uid):该算法由PKG完成,输入主秘钥x、DO的唯一标识Uid和系统公共参数param,输出DO私钥sk。

(3)CopyGen(F,N):DO执行该算法生成文件副本。输入原始文件F和备份数N,输出F的副本集D={Fi}1≤i≤N。

(4)TagGen(D,σid,Uid,Fid):该算法由DO运行,为每个副本Fi生成标签。输入为副本集D={Fi}1≤i≤N、DO密钥σid、用户唯一标识Uid和文件唯一标识Fid。输出为标签集θ={ψi}1≤i≤N,其中ψi={ψij}1≤j≤n,以及文件签名sigF和所有D-MHT树根的总签名sigR。

(5)AuthGen(TPAid,Fid,σid):该算法由DO运行,创建TPA的授权信息。输入TPA的唯一标识TPAid和DO的密钥σid,生成挑战信息Chal=(num,k1,k2)、授权信息auth,并计算授权签名sigauth,用于防止非法TPA进行完整性审计。

(6)ChalGen(sigauth,auth):该算法由TPA执行,发送Chal和auth及其签名sigauth给CMS。

(7)ProofGen(FSc,TSc,Chal):该算法由CSS执行,设其唯一标识符为Cidc。输入为文件副本集FSc、对应标签集TSc和Chal。输出为完整性证明Pc。

(8)ProofAgg({Pc}(1≤c≤L)):由CMS运行,聚合所有CSS的完整性证明。输入每个CSS的完整性证明集合{Pc}(1≤c≤L),其中L为CSS的个数,输出最终完整性证明Pf。

(9)ProofVerify(Uid,h,Chal,Pf):TPA执行该算法,通过验证完整性证明Pf检验数据的完整性。输入为挑战Chal、DO的唯一标识Uid、文件的秘密信息h和完整性证明Pf。只有当Pf通过验证时才会输出1,否则输出0。

3.3 安全模型

定义2一个IDM2PDP协议是安全的,如果对于任何概率多项式时间PPT的对手A在一组文件块上赢得IDM2PDP游戏的概率是可以忽略的。

对手A和挑战者C之间的IDM2PDP博弈可以描述为:

(1)初始阶段:挑战者C运行Setup(1λ),将(param,mpk)发送给对手A,并保留主密钥msk。

(2)副本生成阶段:C执行CopyGen获取原始文件的所有副本。

(3)查询阶段:对手A自适应地向挑战者C发出若干个不同的查询:

①哈希查询:对手A随时进行哈希函数查询。挑战者C用相应的哈希值回应对手A。

②标签查询:对手A以随机方式进行块标签对查询。挑战者C接收到对手A的查询mij后,执行TagGen计算标签ψij并发送回对手A。

(4)证据验证:对手A执行ProofGen和ProofAgg,为文件中任何身份为ID的块生成完整性证明。对手A将证明发送给挑战者C。挑战者C执行ProofVerify算法检查这些证明,并将结果返回给对手A。

(5)伪造阶段:对手A根据Chal指示的数据块,计算并返回完整性证明Pf。若通过证明,则表示对手A在IDM2PDP博弈中获胜。

3.4 IDM2PDP方案

(1)Setup(1λ):PKG生成主密钥和系统公共参数。

③PKG发布系统参数param=(G,GT,q,g,e,H1,H2,Y,f,π)。

(2)Extract(param,x,Uid):PKG计算该算法并将私钥发送给DO,DO检查收到的私钥的有效性。

②DO使用TagGen验证私钥,若通过验证gσid=Rid·YH2(Rid,Uid),则接受skid。

Figure 2 Construction process of D-MHT图2 D-MHT构建过程

(6)ChalGen(sigauth,auth):TPA发送Chal=(num,k1,k2)和auth及其签名sigauth给CMS。CMS收到后,首先验证TPA的合法性。若通过验证,则根据Fid搜索对应的Tab,并将Chal发送到每个CSS。假设Cidc存储的副本集及其对应的标签集为FSc和TSc,副本数量为βc,对应的副本索引为ISc。

(1)

(2)

(3)

(4)

并回复证明Pc={σc,{μck}(1≤k≤s),Ωc}给CMS,其中Ωc=(Cidc,H(mwtt),AIsub(wt),AImaster(t))t∈P,AIsub(wt)是第t棵子树的第wt节点的辅助信息,包括从第wt个节点生成到根节点rj所需的相关节点信息。同样,AImaster(t)是主树中第t个节点的辅助信息。

(9)ProofVerify(Uid,h,Chal,Pf):收到Pf后,TPA首先通过式(5)检查文件签名sigF是否为DO的有效签名。如果无效,TPA拒绝证明并告知DO。

(5)

如果签名有效,则TPA恢复使用U、Rid和st。接下来TPA使用{Ωc}1≤c≤L验证所有副本是否一致。首先使用(H(mwtt),AIsub(wt))生成子树的根rj,再使用(rj,AImaster(t))生成对应于Cidc的主树根Rc。同理获得其他Cid的主树根,并使用Cidc和Rc计算B=H(Cidc‖Rc){1≤c≤L},最后计算HR=H(B‖Fid‖Uid‖st)。然后通过式(6)验证签名:

(6)

(7)

如果CMS诚实地响应Pf,则所提出的协议是准确的。另一方面,如果已删除任意文件块或未对文件块进行任何修改,则式(7)将不成立。

3.5 数据动态性

3.5.1 修改

对于文件F={mj}1≤j≤n,假设在st′时,将mj修改为m′j,DO执行以下操作:

(2)CMS根据Tab,将新的数据块和标签分发给涉及到的Cidc。CSS收到后执行以下操作:

①将mij替换为m′ij。

②将ψij替换为ψ′ij。

③将H(mij)替换为H(m′ij),生成新的第j个子树,并生成新的主树根R′c。

④回复Pc={rj,AImaster(j),Rc}给CMS。

(3)CMS将Pf=({Pc}1≤c≤L,sigR,sigF,Rid,U)返回给DO。 当DO收到Pf时,首先根据式(5)检查文件签名sigF的有效性,接着根据式(6)验证每个Cidc的D-MHT根Rc。如果通过验证,DO根据Tab生成每个Cidc对应的第j棵子树,并得到子树根r′j。然后使用{r′j,AImaster(j)}计算每个Cidc的新主树根R′c,并利用所有主树根生成新签名sig′R=H(B′‖Fid‖Uid‖st′)σid,其中B′=H(Cidc‖Rc′){1≤c≤L}。完成所有主树根的签名后,DO更新文件F的签名。更新h中的st为st′,并计算sig′F=(H1(h))σid作为文件F的签名。DO将{sig′R,sig′F}发送到CMS。最后DO对新块执行默认的完整性审核协议。如果验证通过,则DO可以从其本地系统中删除{m′ij,sig′F,sig′R}。

3.5.2 插入

假设DO在st′时刻插入一个数据块m′j,必须执行以下操作:

(2)CMS根据Tab将新的数据块和标签分发给相关的Cidc,CSS收到后执行以下操作:

①生成新块组成的新子树,计算新子根r′j,将其于原先位置的根rj作为兄弟叶节点,并生成主树的新根哈希R′c(参见图3)。

②向CMS回复Pc={rj,AImaster(j),Rc}。

Figure 3 Insertion process of a new data block m′j in D-MHT图3 D-MHT中新数据块m′j的插入过程

(3)CMS将证据Pf=({Pc}1≤c≤L,sigR,sigF,Rid,U)返回给DO。当DO收到Pf时,首先根据式(5)检查文件签名sigF的有效性;接着再根据式(6)验证每个Cidc的D-MHT的根Rc。如果验证通过,DO根据Tab生成每个Cidc对应的第j棵子树,得到子树根r′j;然后使用{r′j,AImaster(j))}计算每个Cidc的新主树根R′c,并利用所有主树根生成新的签名sig′R=H(B′‖Fid‖Uid‖st′)σid,其中B′=H(Cidc‖R′c){1≤c≤L}。完成所有主树根的签名后,DO更新文件F的签名。将h中的st更新为st′,并计算sig′F=(H1(h))σid作为文件F的签名。DO将{sig′R,sig′F}发送到CMS。最后DO对新块执行默认的完整性审核协议。如果验证通过,则DO可以从其本地系统中删除{m′ij,sig′F,sig′R}。

3.5.3 删除

对于文件F={mj}1≤j≤n,若在系统时间st′删除mj,DO需执行以下操作:删除的最初几个步骤类似于插入的。数据删除消息为(D,j),其中D特指“Deletion”。每个Cidc从其主树中删除第j棵子树。父节点的相对索引值和哈希值也会更新。之后的所有的删除步骤与插入步骤类似,故在此省略。

4 安全性分析

定理1(正确性) 在IDM2PDP方案中,如果DO、授权的TPA、CMS和CSS在完整性审计过程中表现诚实,TPA就能验证数据的完整性。

证明具体来说,证明IDM2PDP的正确性等价于证明式(7)成立。具体证明过程如式(8)所示:

(8)

根据式(8)可以确保式(7)的正确性。

定理2(安全性) 在IDM2PDP方案中,未经授权的实体无法在审计过程中从收集的信息中获取DO的任何数据内容。

证明假设哈希函数是抗碰撞的,所选签名算法是安全的。

(1)单个标签是不可伪造的,因为没有DO的秘密信息st。

(9)

与实际证明的式(10)进行比较,至少有一个μk′=μk。

(10)

定理3(支持授权审计) 在IDM2PDP方案中,若TPA未经DO授权,或授权已经逾期,则TPA不能向CMS发起挑战。

证明TPA首先将其身份TPAid发送到DO以获取授权信息auth。随后,TPA将随机挑战Chal,连同auth和sigauth一起发送到CMS。收到挑战后,CMS验证认证的有效性,如果验证失败,CMS将拒绝该挑战。

5 实验与结果分析

5.1 性能评估

设Tpair、Texp和Tmul分别表示群G中1次配对、取幂和乘法运算的时间。其他操作,如Zq中的哈希、加法和乘法的时间可以省略,因为它们的时间几乎可以忽略不计。假设DO在L个CSS上存储了N个副本,第c个CSS的副本数为βc,每个副本有n个块,每个块被分成s个扇区。若有num个挑战,为了生成N个副本,算法CopyGen需要运行N次加密算法E。假设E的时间为TE,那么CopyGen的计算成本为N×TE。那么为所有副本生成所有标签,算法TagGen的时间开销为Nn(2Texp+Tmul)+sTexp。算法ChalGen花费的时间很小,可以忽略不计。每个CSS都运行ProofGen来生成完整性证明,ProofGen的时间开销为numβc(Texp+Tmul)。CMS运行算法ProofAgg花费LTmul来聚合所有证明。为了检查文件完整性,TPA运行算法ProofVerify,其时间开销为3Tpair+(N+s+3)Texp+(N+s+3)Tmul。本文对IDM2PDP方案与PDP-D[18]方案在计算开销和功能方面进行了比较,具体情形分别如表2和表3所示。其中,βc为最大副本数。

Table 2 Time comparison between PDP-D and IDM2PDP表2 IDM2PDP与PDP-D时间比较

Table 3 Functional comparison between PDP-D and IDM2PDP表3 IDM2PDP与PDP-D功能比较

5.2 实验结果及分析

本文实验使用了GMP(GNU Multiple Precision)库6.2.1版本[20]和PBC(Pairing-Based Cryptography)库0.5.14版本[21]进行A型配对,使用加密库OpenSSL(Open Secure Sockets Layer)3.0.7版本[22]来实现哈希操作中的SHA256(Secure Hash Algorithm 256-bit)和加密操作AES(Advanced Encryption Standard)来实现加密。该协议在同一台计算机上运行。机器配置为:WSL2 Ubuntu 22.04.2LTS操作系统、2.80 GHz Intel®CoreTMCPU i7-7700HQ和16 GB RAM。

PDP方案的主要计算开销集中在生成和验证阶段,因为涉及到双线性配对、指数运算和乘法运算等时间成本较高的操作。为了确保损坏数据的检测概率超过0.99,根据文献[5]设置相关参数:n=5000和num=460。由于方案还涉及扇区,设置s=50。由于PDP-D方案不支持多个CSS,且即便有多个CSS进行,也只需要比较一个CSS即可,因此对于IDM2PDP方案,设置L=1。每个数据块最多存储20字节,因此存储能力因方案而异。对于PDP-D,准备的文件大小约为97 KB,而本文方案准备的文件大小为4 MB。

实验结果通过10次实验得出。图4为TagGen的时间开销。从图4可以看出,在TagGen阶段,时间开销随着N增大而增大,与PDP-D相比,IDM2PDP效率更高。

Figure 4 Time cost of TagGen图4 TagGen时间开销

图5和图6分别为ProofGen和ProofVerify的时间开销。从图5可以看出,在ProofGen阶段,时间开销随着副本数N的增加而增大,但在相同的副本数下,IDM2PDP效率提高了约50%。从图6可以看出,在ProofVerify阶段,尽管IDM2PDP的时间开销与N呈线性关系,但与PDP-D相比,IDM2PDP验证效率提高了约20%。实验结果表明,在相同的备份数和块数下,IDM2PDP有更大的存储能力和更低的计算成本,因此比PDP-D更优。

Figure 5 Time cost of ProofGen图5 ProofGen时间开销

Figure 6 Time cost of ProofVerify图6 ProofVerify时间开销

6 结束语

本文提出了一种基于身份的多云多副本云数据完整性审计协议(IDM2PDP),用于检查多云存储服务器上的多个副本。在CDH假设下,证明了该协议的安全性。该协议的显著特征是通过D-MHT可以确认CSS所管理的副本的一致性和新鲜性,并且能够确定受损块。每个CSS的D-MHT根哈希与其Cid关联,并在最后的总签名sigR中关联时间戳、Fid和Uid,保证了数据的新鲜性和文件、DO以及所有根哈希之间的对应关系,弥补了现有方案的不足。该协议能有效支持数据隐私保护、数据公共审计、数据动态和数据新鲜性。实验结果和安全性证明表明,IDM2PDP是一种安全高效的审计方案。下一步工作将解决基于身份的多云多副本审计中替换攻击的问题,以实现更加安全的方案。

猜你喜欢
副本树根哈希
世界上最深的树根
巧夺天工
面向流媒体基于蚁群的副本选择算法①
树干和树根
愿望巴士 10疯狂的树根
副本放置中的更新策略及算法*
基于OpenCV与均值哈希算法的人脸相似识别系统
基于维度分解的哈希多维快速流分类算法
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构