首页 / 专利库 / 电脑安全 / 密码学 / 一种基于身份的动态数据完整性审计方法

一种基于身份的动态数据完整性审计方法

阅读:833发布:2020-05-13

专利汇可以提供一种基于身份的动态数据完整性审计方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于身份的动态数据完整性审计方法,基于私钥生成机构、客户端、第三方审计中心和 云 存储 服务器 实现。私钥生成机构生成私钥秘密交付给客户端;客户端执行文件预处理操作后将文件存储于云服务器,向第三方审计中心发送挑战 请求 来验证数据是否完整;第三方审计中心接收挑战请求,生成挑战信息发送给云服务器;云服务器接收挑战信息后生成证据信息返回给第三方审计中心;第三方审计中心验证数据是否完整,并将验证结果发送给客户端。本发明与 现有技术 相比,无需部署PKI即可认证客户端的身份,减少了资源消耗,且支持云存储数据的动态更新,能够保护动态数据的完整性。,下面是一种基于身份的动态数据完整性审计方法专利的具体信息内容。

1.一种基于身份的动态数据完整性审计方法,其特征在于,包括步骤如下:
步骤1:私钥生成机构运行初始化算法,生成公共参数param、主公钥mpk和主私钥msk,具体表述为:
步骤1.1:首先生成阶数为素数q的加法群G1,以及阶数为素数q的乘法循环群G2,然后选择G1的生成元g,定义离散对数问题中的加法群为G1,乘法循环群为G2,群G1和G2满足双线性映射e:G1×G2→G2,选取四个密码学哈希函数H1、H2、H、h,具体表示为H1: H2:
H: h: 令公共参数param={G1,G2,e,q,g,
H1,H2,H,h};
步骤1.2:令主私钥为msk,选择随机数x作为主私钥,即主私钥msk=x,且x满足x∈Zq,Zq表示[0,q-1]的整数;
x
步骤1.3:计算主公钥mpk=g;
步骤1.4:公开公共参数param和主公钥mpk,秘密保存主私钥msk;
步骤2:客户端与私钥生成机构交互,运行身份密钥生成算法,使用客户端ID、主公钥mpk、主私钥msk和公共参数param作为输入,私钥生成机构获取ID生成基于身份的私钥SKID,通过可信信道传递给客户端,具体表述为:
步骤2.1:选择随机数k∈Zq,Zq表示[0,q-1]的整数;
步骤2.2:通过哈希函数H2计算得到QID=H2(ID),dID=QIDx;
步骤2.3:计算K=gk,α=k+xH(ID,K)modq;
步骤2.4:定义SKID=(dID,K,α)为私钥,将私钥SKID通过可信信道发送给客户端;
步骤3:客户端运行密钥验证算法,验证收到的私钥的正确性,具体表述为:
步骤3.1:利用SKID中的α计算v=gα;
步骤3.2:判断等式v=K·mpkH(ID,K)是否成立,若成立则接收SKID,并输出TRUE,若不成立,则拒绝SKID,并输出FALSE;
步骤4:设计基于身份的数字签名算法,定义M为一串消息,通过调用身份签名算法SigID()使用私钥SKID对消息M进行数字签名,具体表述为:
步骤4.1:选取随机数r∈Zq,计算QID=H2(ID),利用QID计算U=QIDr;
步骤4.2:通过哈希函数H1计算得到p=H1(M,U);
步骤4.3:利用私钥SKID中的dID计算V=dIDr+p;
步骤4.4:将SigID(M)=(U,V)表示为消息M的签名;
步骤5:客户端在将文件传输到存储服务器上之前,运行文件预处理算法,对文件进行预处理;
步骤6:第三方审计中心运行挑战算法,生成挑战信息发送给云存储服务器,使用挑战-应答形式实现数据完整性审计;
步骤7:云存储服务器接收到第三方审计中心的验证请求后,运行证据生成算法,根据验证请求查找Merkle哈希树中的数据,计算出证据P交付给第三方审计中心;
步骤8:第三方审计中心根据云存储服务器提供的证据P,运行验证算法,对存储的数据的完整性进行验证;
步骤9:当客户端发出更新请求时,由云存储服务器运行更新算法执行更新请求操作,所述更新请求操作包括数据修改操作、数据插入操作、数据删除操作,具体表述为Type={INSERT,DELETE,MODIFY},客户端需要重新计算得出需要更新的新文件对应的标签值,更新标签集,最后将更新后的新文件块、根节点签名和新标签集同步到云存储服务器上,即完成一次更新操作。
2.根据权利要1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述的步骤5具体表述为:
步骤5.1:将原始文件F分割为n份,记作F={m1,m2,...,mn};
步骤5.2:选择随机数u∈Zq,将文件名name、文件分割的块数n和随机数u连接记作M1=name||n||u,使用身份签名算法SigID()对M1进行签名 并输出(U1,V1),
其中U1=QIDr,定义p1=H1(M1,U1),
步骤5.3:对于原始文件F的每一个文件块mi(i=1,2,...,n)生成同态验证标签mi指原始文件F中的每一个文件块;
步骤5.4:定义一个集合Φ存储所有文件块mi的同态验证标签σi,表示为Φ={σi},(i=
1,2,...,n);
步骤5.5:构建Merkle哈希树,具体过程如下:
步骤5.5.1:在每一个Merkle哈希树的叶子节点中存储value为mi的哈希值H(mi),即hi=h(H(mi));
步骤5.5.2:在每一个Merkle哈希树的非叶子节点中,存储的value是由两个孩子节点的value共同构成的Hash值,非叶子节点h(a)计算为ha=h(h1||h2),非叶子节点h(b)计算为hb=h(h3||h4),非叶子节点h(r)计算为hr=h(ha||hb);
步骤5.6:构建出Merkle哈希树后得到根节点hr,利用身份签名算法SigID()将根节点签名 ,计 算 并输出 其 中
步骤5.7:客户端不保存任何数据,将数据 发送给云存储服务器。
3.根据权利要1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述的步骤6具体表述为:
步骤6.1:利用 计算出H1(M1,U1)并赋值给p1,然后计算
步骤6.2:使用双线性配对e(g,V1)=e(mpk,Q1)验证签名 是否正确,以及验证存储的文件信息M1是否正确,若等式成立,则验证正确,继续执行步骤6.3,若不成立,则终止;
步骤6.3:使用随机抽查策略抽取小于n的随机数sτ构成集合I={s1,s2,...,sτ,...,sc},且满足sτ≤sτ+1<n,τ=1,2,…,c,c表示集合I的元素总数;
步骤6.4:第三方审计中心选择随机数ωi与集合I中任意一个随机数sτ对应,且满足ωi≠sτ;
步骤6.5:生成挑战信息chal,则 其中i表示需要被验证的文件块mi
位置,将挑战信息chal发送给云存储服务器。
4.根据权利要求1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述的步骤7具体表述为:
步骤7.1:根据挑战信息chal中的随机数ωi和i对应的文件块mi计算出 且满足μ∈Zq;
步骤7.2:查找挑战信息chal中文件块mi对应的同态验证标签σi,计算
步骤7.3:每一个文件块mi的辅助认证路径记作 云存储服务器将文件块mi的哈希值H(mi)和对应的辅助认证路径 作为一个键值对放入证据列表中;
步骤7.4:定义证据 云存储服务器将证据P发送给
第三方审计中心进行验证。
5.根据权利要1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述的步骤8具体表述为:
步骤8.1:利用证据P中的 计算出Merkle哈希树根节点的摘要值hr;
步骤8.2:利用证据P中的 计算 和
步骤8.3:判断等式 是否成立,若成立,说明云存储服务器端的
Merkle哈希树的根节点正确,继续执行步骤8.4,如果不相等,算法终止并返回FALSE;
步骤8.4:验证抽查的文件块mi是否是正确的,即判断等式
是否成立,等式左右相等说明数据保存完整,返回TRUE,否则证明数据完整性遭到破坏,终止并返回FALSE。
6.根据权利要1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述步骤9中的数据修改操作,具体表述为:
步骤9.1.1:定义文件块mi修改后的数据块为mi′,首先计算mi′对应的标签步骤9.1.2:客户端执行update=(E,i,m′i,σ′i),将修改请求发送给云存储服务器,其中E表示修改操作,i表示数据块mi所在的位置,m′i表示修改后的文件块;
步骤9.1.3:云存储服务器收到客户端的修改请求,执行ExecUpdate(F,Φ,update)操作,首先将mi替换成m′i,然后更新标签 和标签集φ′,最后生成证据
Pupdate=(Ωi,H(mi),SigID(hr),h′r),返还给客户端;
步骤9.1.4:客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点的摘要值hr,验证是否相等,相等则继续步骤9.1.5,不相等则算法中止,并返回FALSE;
步骤9.1.5:如果mi的根节点验算正确,客户端使用辅助认证路径{Ωi,H(mi)}计算出m′i的根节点值h′r,计算新的根节点签名值SigID(h′r);
步骤9.1.6:客户端发送m′i的根节点签名值SigID(h′r)到云存储服务器端;
步骤9.1.7:最后客户端再一次委托第三方审计中心进行一次挑战-应答验证操作,验证修改后的数据的正确性;
所述步骤9中的数据插入操作,具体表述为:
步骤9.2.1:定义插入到mi之后的插入文件块为m′,首先计算出m′对应的新标签值σ′=(H(m′)·um′)α,然后执行update=(I,i,m′,σ′)操作发送插入请求给云存储服务器,其中I代表插入操作,i表示数据块mi所在的位置,m′表示需要插入的文件块;
步骤9.2.2:云存储服务器收到客户端的插入请求,执行ExecUpdate(F,Φ,update)操作,首先将m′作为叶子节点插入到mi之后,生成新的Merkle哈希树节点,然后更新标签σ′=m′α
(H(m′)·u ) 和标签集φ′,最后生成证据Pupdate=(Ωi,H(mi),SigID(hr),h′r)发送给客户端;
步骤9.2.3:客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点摘要值hr,验证是否相等,相等则继续步骤9.2.4,不相等则算法中止,并返回FALSE;
步骤9.2.4:如果mi的根节点验证正确,客户端使用辅助认证路径{Ωi,H(mi)}计算出m′根节点值hr′,计算新的标签签名SigID(h′r),然后发送新的标签签名SigID(h′r)至云存储服务器端进行更新,然后客户端删除更新过程中生成的临时数据;
步骤9.2.5:最后客户端委托第三方审计中心进行一次挑战-应答操作,验证插入之后的数据的正确性;
所述的步骤9中的数据删除操作,具体表述为:
步骤9.3.1:当删除节点mi时,将mi的兄弟节点高度减1,云存储服务器接收到客户端delete操作请求之后,将mi删除,重建Merkle哈希树生成新的根节点h′r,更新标签集φ′;
步骤9.3.2:向客户端发送证据Pupdate=(Ωi,H(mi),SigID(hr),h′r),客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点摘要值hr,判断 是否相等,若相
等,则云存储服务器会收到客户端新的根节点签名,若不相等,则算法中止,并返回FALSE;
步骤9.3.3:最后客户端委托第三方审计中心进行挑战-应答操作,确保删除操作之后的数据是正确的。

说明书全文

一种基于身份的动态数据完整性审计方法

技术领域

[0001] 本发明属于网络安全领域,具体涉及一种基于身份的动态数据完整性审计方法。

背景技术

[0002] 随着计算机技术的普及和计算的发展,云存储因其低廉的价格、高效的存储效率以及丰富的用户个性化定制服务受到了越来越多的企业和用户的青睐。用户只需将数据上传至云服务器,就可以实现不同设备之间数据的共享。云存储极大的释放了用户本地空间,用户不需要存放数据副本,可以根据自己的实际需求决定何时上传和下载存储在云服务器上的文件,保证了用户数据存储的灵活性。
[0003] 然而,由于用户数据只存储在云服务器,且不存在第三方机构对数据存储过程进行监督,云存储面临着严竣的安全挑战。当用户选择云存储服务时,用户自身不会保存数据副本文件,导致用户无法对其存放在服务器上的数据进行有效的监督,也无法保证其存储在云服务器上的数据完整性。当用户将数据存储到云服务器中时,可能面临以下数据破坏[3]的行为 :服务器出现软件或者硬件上的问题致使数据丢失;存储在云服务器中的数据遭到其他人恶意破坏;云服务提供商未遵守用户隐私协议,为了降低成本,擅自删除一些访问频率低的数据。因此在现有的云存储服务中,用户存储于云服务器上的数据无法得到有效保护,用户也无法及时发现服务器损坏数据的行为。因此保证云存储技术中用户数据的完整性显得尤为重要。
[0004] 最初的解决方案是通过下载云服务器中的文件与原始数据文件进行比较,然而对于云服务器中存储了海量数据的情况,该方案中上传下载文件将面临极大的通信代价。针对此问题,研究者们提出了许多数据完整性审计方案。数据完整性审计指的是用户在删除了本地数据副本、且无需下载原数据的情况下,利用预先生成的数据标签进行计算,验证云服务器上存储的用户数据是否遭到了篡改。然而,目前基于身份的数据完整性审计方案大多只支持静态数据的问题,如何在保证基于身份的数据完整性审计的同时实现数据的动态更新,具有十分广阔的研究意义和应用价值。

发明内容

[0005] 针对现有技术的不足,提供一种基于身份的动态数据完整性审计方法。
[0006] 本发明的技术方案如下:
[0007] 一种基于身份的动态数据完整性审计方法,包括步骤如下:
[0008] 步骤1:私钥生成机构运行初始化算法,生成公共参数param、主公钥mpk和主私钥msk,具体表述为:
[0009] 步骤1.1:首先生成阶数为素数q的加法群G1,以及阶数为素数q的乘法循环群G2,然后选择G1的生成元g,定义离散对数问题中的加法群为G1,乘法循环群为G2,群G1和G2满足双线性映射e:G1×G2→G2,选取四个密码学哈希函数H1、H2、H、h,具体表示为令公共参数param={G1,G2,e,q,g,H1,H2,H,h};
[0010] 步骤1.2:令主私钥为msk,选择随机数x作为主私钥,即主私钥msk=x,且x满足x∈Zq,Zq表示[0,q-1]的整数;
[0011] 步骤1.3:计算主公钥mpk=gx;
[0012] 步骤1.4:公开公共参数param和主公钥mpk,秘密保存主私钥msk;
[0013] 步骤2:客户端与私钥生成机构交互,运行身份密钥生成算法,使用客户端ID、主公钥mpk、主私钥msk和公共参数param作为输入,私钥生成机构获取ID生成基于身份的私钥SKID,通过可信信道传递给客户端,具体表述为:
[0014] 步骤2.1:选择随机数k∈Zq,Zq表示[0,q-1]的整数;
[0015] 步骤2.2:通过哈希函数H2计算得到QID=H2(ID),dID=QIDx;
[0016] 步骤2.3:计算K=gk,α=k+xH(ID,K)modq;
[0017] 步骤2.4:定义SKID=(dID,K,α)为私钥,将私钥SKID通过可信信道发送给客户端;
[0018] 步骤3:客户端运行密钥验证算法,验证收到的私钥的正确性,具体表述为:
[0019] 步骤3.1:利用SKID中的α计算v=gα;
[0020] 步骤3.2:判断等式v=K·mpkH(ID,K)是否成立,若成立则接收SKID,并输出TRUE,若不成立,则拒绝SKID,并输出FALSE;
[0021] 步骤4:设计基于身份的数字签名算法,定义M为一串消息,通过调用身份签名算法SigID()使用私钥SKID对消息M进行数字签名,具体表述为:
[0022] 步骤4.1:选取随机数r∈Zq,计算QID=H2(ID),利用QID计算U=QIDr;
[0023] 步骤4.2:通过哈希函数H1计算得到p=H1(M,U);
[0024] 步骤4.3:利用私钥SKID中的dID计算V=dIDr+p;
[0025] 步骤4.4:将SigID(M)=(U,V)表示为消息M的签名;
[0026] 步骤5:客户端在将文件传输到云存储服务器上之前,运行文件预处理算法,对文件进行预处理;
[0027] 步骤6:第三方审计中心运行挑战算法,生成挑战信息发送给云存储服务器,使用挑战-应答形式实现数据完整性审计;
[0028] 步骤7:云存储服务器接收到第三方审计中心的验证请求后,运行证据生成算法,根据验证请求查找Merkle哈希树中的数据,计算出证据P交付给第三方审计中心;
[0029] 步骤8:第三方审计中心根据云存储服务器提供的证据P,运行验证算法,对存储的数据的完整性进行验证;
[0030] 步骤9:当客户端发出更新请求时,由云存储服务器运行更新算法执行更新请求操作,所述更新请求操作包括数据修改操作、数据插入操作、数据删除操作,具体表述为Type={INSERT,DELETE,MODIFY},客户端需要重新计算得出需要更新的新文件对应的标签值,更新标签集,最后将更新后的新文件块、根节点签名和新标签集同步到云存储服务器上,即完成一次更新操作。
[0031] 所述的步骤5具体表述为:
[0032] 步骤5.1:将原始文件F分割为n份,记作F={m1,m2,...,mn};
[0033] 步骤5.2:选择随机数u∈Zq,将文件名name、文件分割的块数n和随机数u连接记作M1=name||n||u,使用身份签名算法SigID()对M1进行签名 并输出(U1,V1),其中U1=QIDr,定义p1=H1(M1,U1),
[0034] 步骤5.3:对于原始文件F的每一个文件块mi(i=1,2,...,n)生成同态验证标签mi指原始文件F中的每一个文件块;
[0035] 步骤5.4:定义一个集合Φ存储所有文件块mi的同态验证标签σi,表示为Φ={σi},(i=1,2,...,n);
[0036] 步骤5.5:构建Merkle哈希树,具体过程如下:
[0037] 步骤5.5.1:在每一个Merkle哈希树的叶子节点中存储value为mi的哈希值H(mi),即hi=h(H(mi));
[0038] 步骤5.5.2:在每一个Merkle哈希树的非叶子节点中,存储的value是由两个孩子节点的value共同构成的Hash值,非叶子节点h(a)计算为ha=h(h1||h2),非叶子节点h(b)计算为hb=h(h3||h4),非叶子节点h(r)计算为hr=h(ha||hb);
[0039] 步骤5.6:构建出Merkle哈希树后得到根节点hr,利用身份签名算法SigID()将根节点签名,计算 并输出 其中
[0040] 步骤5.7:客户端不保存任何数据,将数据 发送给云存储服务器。
[0041] 所述的步骤6具体表述为:
[0042] 步骤6.1:利用 计算出H1(M1,U1)并赋值给p1,然后计算
[0043] 步骤6.2:使用双线性配对e(g,V1)=e(mpk,Q1)验证签名 是否正确,以及验证存储的文件信息M1是否正确,若等式成立,则验证正确,继续执行步骤6.3,若不成立,则终止;
[0044] 步骤6.3:使用随机抽查策略抽取小于n的随机数sτ构成集合I={s1,s2,...,sτ,...,sc},且满足sτ≤sτ+1<n,τ=1,2,…,c,c表示集合I的元素总数;
[0045] 步骤6.4:第三方审计中心选择随机数ωi与集合I中任意一个随机数sτ对应,且满足ωi≠sτ;
[0046] 步骤6.5:生成挑战信息chal,则 其中i表示需要被验证的文件块mi的位置,将挑战信息chal发送给云存储服务器。
[0047] 所述的步骤7具体表述为:
[0048] 步骤7.1:根据挑战信息chal中的随机数ωi和i对应的文件块mi计算出且满足μ∈Zq;
[0049] 步骤7.2:查找挑战信息chal中文件块mi对应的同态验证标签σi,计算[0050] 步骤7.3:每一个文件块mi的辅助认证路径记作 云存储服务器将文件块mi的哈希值H(mi)和对应的辅助认证路径 作为一个键值对放入证据列表中;
[0051] 步骤7.4:定义证据 云存储服务器将证据P发送给第三方审计中心进行验证。
[0052] 所述的步骤8具体表述为:
[0053] 步骤8.1:利用证据P中的 计算出Merkle哈希树根节点的摘要值hr;
[0054] 步骤8.2:利用证据P中的 计算 和
[0055] 步骤8.3:判断等式 是否成立,若成立,说明云存储服务器端的Merkle哈希树的根节点正确,继续执行步骤8.4,如果不相等,算法终止并返回FALSE;
[0056] 步 骤8 .4 :验 证抽 查的 文 件块 m i是 否 是正 确的 ,即 判断 等式是否成立,等式左右相等说明数据保存完整,返回TRUE,否则证明数据完整性遭到破坏,终止并返回FALSE。
[0057] 所述步骤9中的数据修改操作,具体表述为:
[0058] 步骤9.1.1:定义文件块mi修改后的数据块为mi',首先计算mi'对应的标签[0059] 步骤9.1.2:客户端执行update=(M,i,mi',σi'),将修改请求发送给云服务器,其中E表示修改操作,i表示数据块mi所在的位置,mi'表示修改后的文件块;
[0060] 步骤9.1.3:云存储服务器收到客户端的修改请求,执行ExecUpdate(F,Φ,update)操作,首先将mi替换成mi',然后更新标签 和标签集φ',最后生成证据Pupdate=(Ωi,H(mi),SigID(hr),h'r),返还给客户端;
[0061] 步骤9.1.4:客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点的摘要值hr,验证 是否相等,相等则继续步骤9.1.5,不相等则算法中止,并返回FALSE;
[0062] 步骤9.1.5:如果mi的根节点验算正确,客户端使用辅助认证路径{Ωi,H(mi)}计算出mi'的根节点值h'r,计算新的根节点签名值SigID(h'r);
[0063] 步骤9.1.6:客户端发送mi'的根节点签名值SigID(h'r)到云存储服务器端;
[0064] 步骤9.1.7:最后客户端再一次委托第三方审计中心进行一次挑战-应答验证操作,验证修改后的数据的正确性;
[0065] 所述步骤9中的数据插入操作,具体表述为:
[0066] 步骤9.2.1:定义插入到mi之后的插入文件块为m',首先计算出m'对应的新标签值σ'=(H(m')·um')α,然后执行update=(I,i,m',σ')操作发送插入请求给云存储服务器,其中I代表插入操作,i表示数据块mi所在的位置,m'表示需要插入的文件块;
[0067] 步骤9.2.2:云存储服务器收到客户端的插入请求,执行ExecUpdate(F,Φ,update)操作,首先将m'作为叶子节点插入到mi之后,生成新的Merkle哈希树节点,然后更新标签σ'=(H(m')·um')α和标签集φ',最后生成证据Pupdate=(Ωi,H(mi),SigID(hr),h'r)发送给客户端;
[0068] 步骤9.2.3:客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点摘要值hr,验证 是否相等,相等则继续步骤9.2.4,不相等则算法中止,并返回FALSE;
[0069] 步骤9.2.4:如果mi的根节点验证正确,客户端使用辅助认证路径{Ωi,H(mi)}计算出m'根节点值hr',计算新的标签签名SigID(h'r),然后发送新的标签签名SigID(h'r)至云存储服务器端进行更新,然后客户端删除更新过程中生成的临时数据;
[0070] 步骤9.2.5:最后客户端委托第三方审计中心进行一次挑战-应答操作,验证插入之后的数据的正确性;
[0071] 所述的步骤9中的数据删除操作,具体表述为:
[0072] 步骤9.3.1:当删除节点mi时,将mi的兄弟节点高度减1,云存储服务器接收到客户端delete操作请求之后,将mi删除,重建Merkle哈希树生成新的根节点h′r,更新标签集φ';
[0073] 步骤9.3.2:向客户端发送证据Pupdate=(Ωi,H(mi),SigID(hr),h′r),客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点摘要值hr,判断 是否相等,若相等,则云存储服务器会收到客户端新的根节点签名,若不相等,则算法中止,并返回FALSE;
[0074] 步骤9.3.3:最后客户端委托第三方审计中心进行挑战-应答操作,确保删除操作之后的数据是正确的。
[0075] 本发明的有益效果:
[0076] 在实际场景中用户对于其存储在云服务器上的数据进行大量更改不可避免,本发明针对动态存储操作,对动态数据的完整性实现了有效的审计。本发明提出了一种基于身份的数据完整性审计方案,与现有技术相比,无需部署PKI即可认证客户端的身份,减少了资源消耗,并且本发明支持数据的动态更新,能够保护动态数据的完整性。附图说明
[0077] 图1为本发明具体实施方式的一种基于身份的动态数据完整性审计方法的实体架构示意图;
[0078] 图2为本发明具体实施方式的一种基于身份的动态数据完整性审计方法的实体间通信协议图;
[0079] 图3为本发明具体实施方式的Merkle哈希树的构造示意图;
[0080] 图4为本发明具体实施方式的数据修改操作示意图;
[0081] 图5为本发明具体实施方式的数据插入操作示意图;
[0082] 图6为本发明具体实施方式的数据删除操作示意图;
[0083] 图7为本发明具体实施方式的验证时间测试结果;
[0084] 图8为本发明具体实施方式的生成证据时间测试结果;
[0085] 图9为本发明具体实施方式的挑战信息通信开销测试结果;
[0086] 图10为本发明具体实施方式的证据通信开销测试结果。

具体实施方式

[0087] 下面结合附图对本发明具体实施方式加以详细的说明。
[0088] 本发明中的一种基于身份的动态数据完整性审计方法,基于私钥生成机构、第三方审计中心、客户端、云存储服务器四方实体设计的,这四方实体的具体架构图如图1所示,[0089] 私钥生成机构:主要负责客户端私钥的生成,它接收客户端用户身份信息,基于身份信息生成私钥,通过可信信道传输给客户端;
[0090] 客户端:客户端包含一个或多个用户,每个用户都可以对云存储服务器的数据进行完整性挑战,通过向第三方审计中心发送挑战请求来验证数据是否完整;
[0091] 第三方审计中心:主要功能是与客户端和云存储服务器进行交互,它接收客户端的挑战请求,同时生成挑战信息发送给云存储服务器,它与服务器交互,执行证据验证算法,验证数据是否完整,并将审计结果发送给客户端;
[0092] 云存储服务器:主要功能是存储数据和生成证据功能,服务器接收到挑战信息后会执行证据生成算法,生成能够证明数据是否完整的证据并发送给第三方审计中心;
[0093] 四方实体之间的交互主要包括:私钥生成机构接收用户ID生成对应密钥对交付给客户端;客户端使用密钥对文件进行预处理,然后将文件存储于云服务器;第三方审计中心接收用户委托生成挑战信息并接收和验证云服务器提供的证据;云服务器接收来自第三方审计中心的挑战信息,计算生成证据信息。
[0094] 本实施例采用Java编程语言,利用JPBC包实现双线性配对、大整数运算等操作,利用云服务器以及实体机分别为系统中的第三方审计中心、云存储服务器服务器、客户端、私钥生成机构搭建测试环境,系统中部署各个实体的测试环境如表1所示。
[0095] 表1测试环境
[0096]
[0097] 如图2所示,基于私钥生成机构、第三方审计中心、客户端、云存储服务器之间的交互关系以及通信流程,一种基于身份的动态数据完整性审计方法,具体实施方法包括步骤如下:
[0098] 步骤1:私钥生成机构运行初始化算法,生成公共参数param、主公钥mpk和主私钥msk,具体表述为:
[0099] 步骤1.1:首先生成阶数为素数q的加法群G1,以及阶数为素数q的乘法循环群G2,然后选择G1的生成元g,定义离散对数问题中的加法群为G1,乘法循环群为G2,群G1和G2满足双线性映射e:G1×G2→G2,选取四个密码学哈希函数H1、H2、H、h,具体表示为令公共参数param={G1,G2,e,q,g,H1,H2,H,h};
[0100] 步骤1.2:令主私钥为msk,选择随机数x作为主私钥,即主私钥msk=x,且x满足x∈Zq,Zq表示[0,q-1]的整数;
[0101] 步骤1.3:计算主公钥mpk=gx;
[0102] 步骤1.4:公开公共参数param和主公钥mpk,秘密保存主私钥msk;
[0103] 步骤2:客户端与私钥生成机构交互,运行身份密钥生成算法,使用客户端ID、主公钥mpk、主私钥msk和公共参数param作为输入,私钥生成机构获取ID生成基于身份的私钥SKID,通过可信信道传递给客户端,具体表述为:
[0104] 步骤2.1:选择随机数k∈Zq,Zq表示[0,q-1]的整数;
[0105] 步骤2.2:通过哈希函数H2计算得到QID=H2(ID),dID=QIDx;
[0106] 步骤2.3:计算K=gk,α=k+xH(ID,K)modq;
[0107] 步骤2.4:定义SKID=(dID,K,α)为私钥,将私钥SKID通过可信信道发送给客户端;
[0108] 步骤3:客户端运行密钥验证算法,验证收到的私钥的正确性,具体表述为:
[0109] 步骤3.1:利用SKID中的α计算v=gα;
[0110] 步骤3.2:判断等式v=K·mpkH(ID,K)是否成立,若成立则接收SKID,并输出TRUE,若不成立,则拒绝SKID,并输出FALSE;
[0111] 步骤4:设计基于身份的数字签名算法,定义M为一串消息,通过调用身份签名算法SigID()使用私钥SKID对消息M进行数字签名,具体表述为:
[0112] 步骤4.1:选取随机数r∈Zq,计算QID=H2(ID),利用QID计算U=QIDr;
[0113] 步骤4.2:通过哈希函数H1计算得到p=H1(M,U);
[0114] 步骤4.3:利用私钥SKID中的dID计算V=dIDr+p;
[0115] 步骤4.4:将SigID(M)=(U,V)表示为消息M的签名;
[0116] 步骤5:客户端在将文件传输到云服务器上之前,运行文件预处理算法,对文件进行预处理,具体表述为:
[0117] 步骤5.1:将原始文件F分割为n份,记作F={m1,m2,...,mn};
[0118] 步骤5.2:选择随机数u∈Zq,将文件名name、文件分割的块数n和随机数u连接记作M1=name||n||u,使用身份签名算法SigID()对M1进行签名 并输出(U1,r
V1),其中U1=QID,定义p1=H1(M1,U1),
[0119] 步骤5.3:对于原始文件F的每一个文件块mi(i=1,2,...,n)生成同态验证标签mi指原始文件F中的每一个文件块;
[0120] 步骤5.4:定义一个集合Φ存储所有文件块mi的同态验证标签σi,表示为Φ={σi},(i=1,2,...,n);
[0121] 步骤5.5:构建Merkle哈希树,Merkle哈希树的构造示意图如图3所示,具体构建过程如下:
[0122] 步骤5.5.1:在每一个Merkle哈希树的叶子节点中存储value为mi的哈希值H(mi),即hi=h(H(mi));
[0123] 步骤5.5.2:在每一个Merkle哈希树的非叶子节点中,存储的value是由两个孩子节点的value共同构成的Hash值,非叶子节点h(a)计算为ha=h(h1||h2),非叶子节点h(b)计算为hb=h(h3||h4),非叶子节点h(r)计算为hr=h(ha||hb);
[0124] 步骤5.6:构建出Merkle哈希树后得到根节点hr,利用身份签名算法SigID()将根节点签名,计算 并输出 其中
[0125] 步骤5.7:客户端不保存任何数据,将数据 发送给云存储服务器。
[0126] 步骤6:第三方审计中心运行挑战算法,生成挑战信息发送给云存储服务器,使用挑战-应答形式实现数据完整性审计,具体表述为:
[0127] 步骤6.1:利用 计算出H1(M1,U1)并赋值给p1,然后计算
[0128] 步骤6.2:验证签名 是否正确,通过使用双线性配对e(g,V1)=e(mpk,Q1)进行验证,验证存储的文件信息M1是否正确,若等式成立,则验证正确,继续执行步骤6.3,若不成立,则终止;
[0129] 步骤6.3:使用随机抽查策略抽取小于n的随机数sτ构成集合I={s1,s2,...,sτ,...,sc},且满足sτ≤sτ+1<n,τ=1,2,…,c,c表示集合I的元素总数;
[0130] 步骤6.4:第三方审计中心选择随机数ωi与集合I中任意一个随机数sτ对应,且满足ωi≠sτ;
[0131] 步骤6.5:生成挑战信息chal,则 其中i表示需要被验证的文件块mi的位置,将挑战信息chal发送给云存储服务器,此时的i经过随机抽查策略抽取之后范围缩小为i∈{s1,s2,...,sτ,...,sc}。
[0132] 步骤7:云存储服务器接收到第三方审计中心的验证请求后,运行证据生成算法,根据验证请求查找Merkle哈希树中的数据,计算出证据P交付给第三方审计中心,具体表述为:
[0133] 步骤7.1:根据挑战信息chal中的随机数ωi和i对应的文件块mi计算出且满足μ∈Zq;
[0134] 步骤7.2:查找挑战信息chal中文件块mi对应的同态验证标签σi,计算[0135] 步骤7.3:对于一个文件块H(mi)它的辅助认证路径是其兄弟节点,父亲的兄弟节点,祖父的兄弟节点,以此类推,这样保证了使用最少节点数量即可计算出Merkle哈希树的根节点,每一个文件块mi的辅助认证路径记作 云存储服务器将文件块mi的哈希值H(mi)和对应的辅助认证路径 作为一个键值对放入证据列表中;
[0136] 步骤7.4:定义证据 云存储服务器将证据P发送给第三方审计中心进行验证。
[0137] 步骤8:第三方审计中心根据云存储服务器提供的证据P,运行验证算法,对存储的数据的完整性进行验证,具体表述为:
[0138] 步骤8.1:利用证据P中的 计算出Merkle哈希树根节点的摘要值hr;
[0139] 步骤8.2:利用证据P中的 计算 和
[0140] 步骤8.3:判断等式 是否成立,若成立,说明云存储服务器端的Merkle哈希树的根节点正确,继续执行步骤8.4,如果不相等,算法终止并返回FALSE;
[0141] 步骤8.4:步骤8.3验证了根节点正确,但是并不代表数据完整性没有遭到破坏,因为云服务器存在只存储Merkle哈希树路径值的情况,还验证抽查的文件块mi是否是正确的,即判断等式 是否成立,等式左右相等说明数据保存完整,返回TRUE,否则证明数据完整性遭到破坏,终止并返回FALSE。
[0142] 步骤9:当客户端发出更新请求时,由云存储服务器运行更新算法执行更新请求操作,所述更新请求操作包括数据修改操作、数据插入操作、数据删除操作,具体表述为Type={INSERT,DELETE,MODIFY},客户端需要重新计算得出需要更新的新文件块对应的标签值,更新标签集,最后将更新后的新文件块、根节点签名和新标签集同步到云存储服务器上,即完成一次更新操作;
[0143] 其中数据修改操作的示意图如图4所示,具体表述为:
[0144] 步骤9.1.1:定义文件块mi修改后的数据块为mi',首先计算mi'对应的标签[0145] 步骤9.1.2:客户端执行update=(M,i,mi',σi'),将修改请求发送给云服务器,其中E表示修改操作,i表示数据块mi所在的位置,mi'表示修改后的文件块;
[0146] 步骤9.1.3:云存储服务器收到客户端的修改请求,执行ExecUpdate(F,Φ,update)操作,首先将mi替换成mi',然后更新标签 和标签集φ',最后生成证据Pupdate=(Ωi,H(mi),SigID(hr),h′r),返还给客户端;
[0147] 步骤9.1.4:客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点的摘要值hr,验证 是否相等,相等则继续步骤9.1.5,不相等则算法中止,并返回FALSE;
[0148] 步骤9.1.5:如果mi的根节点验算正确,客户端使用辅助认证路径{Ωi,H(mi)}计算出mi'的根节点值h′r,计算新的根节点签名值SigID(h′r);
[0149] 步骤9.1.6:客户端发送mi'的根节点签名值SigID(h′r)到云存储服务器端;
[0150] 步骤9.1.7:最后客户端再一次委托第三方审计中心进行一次挑战-应答验证操作,验证修改后的数据的正确性;
[0151] 其中数据插入操作,具体表述为:
[0152] 步骤9.2.1:定义插入到mi之后的插入文件块为m',首先计算出m'对应的新标签值σ'=(H(m')·um')α,然后执行update=(I,i,m',σ')操作发送插入请求给云存储服务器,其中I代表插入操作,i表示数据块mi所在的位置,m'表示需要插入的文件块;
[0153] 步骤9.2.2:云存储服务器收到客户端的插入请求,执行ExecUpdate(F,Φ,update)操作,首先将m'作为叶子节点插入到mi之后,生成新的Merkle哈希树节点,然后更新标签σ'=(H(m')·um')α和标签集φ',最后生成证据Pupdate=(Ωi,H(mi),SigID(hr),h'r)发送给客户端;
[0154] 步骤9.2.3:客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点摘要值hr,验证 是否相等,相等则继续步骤9.2.4,不相等则算法中止,并返回FALSE;
[0155] 步骤9.2.4:如果mi的根节点验证正确,客户端使用辅助认证路径{Ωi,H(mi)}计算出m'根节点值hr',计算新的标签签名SigID(h'r),然后发送新的标签签名SigID(h'r)至云存储服务器端进行更新,然后客户端删除更新过程中生成的临时数据;
[0156] 步骤9.2.5:最后客户端委托第三方审计中心进行一次挑战-应答操作,验证插入之后的数据的正确性,操作示意图如图5所示;
[0157] 其中数据删除操作,具体表述为:
[0158] 步骤9.3.1:当删除节点mi时,将mi的兄弟节点高度减1,云存储服务器接收到客户端delete操作请求之后,将mi删除,重建Merkle哈希树生成新的根节点h′r,更新标签集φ';
[0159] 步骤9.3.2:向客户端发送证据Pupdate=(Ωi,H(mi),SigID(hr),h′r),客户端根据辅助认证路径{Ωi,H(mi)}计算出mi的根节点摘要值hr,判断 是否相等,若相等,则云存储服务器会收到客户端新的根节点签名,若不相等,则算法中止,并返回FALSE;
[0160] 步骤9.3.3:最后客户端委托第三方审计中心进行挑战-应答操作,确保删除操作之后的数据是正确的,操作示意图如图6所示。
[0161] 本发明还提供了一种使用上述基于身份的动态数据完整性审计方法的审计系统,包括初始化模块、存储审计模块、更新模块,首先通过初始化模块与实体间建立通信连接,由私钥生成机构生成系统所需参数,由客户端完成对私钥的验证,由客户端对文件进行预处理操作,当客户端发出挑战请求时,存储审计模块通过第三方审计中心接收客户端的挑战请求,并生成挑战信息发送给云存储服务器,所述挑战信息通过云存储服务器验证后生成证据返回给客户端,当客户端发出更新请求时,更新模块接收更新请求并发送给云存储服务器,由云存储服务器执行更新请求操作;
[0162] 初始化模块用于系统启动时实体间通信连接的建立、公私钥系统所需的参数的生成、对密钥的验证、对文件的预处理操作;
[0163] 存储审计模块用于第三方审计中心接收客户端的挑战请求、生成挑战信息,通过云存储服务器生成证据;
[0164] 更新模块用于接收客户端发送的更新请求,并发送给云存储服务器执行更新请求的操作。
[0165] 初始化模块包括身份密钥生成、密钥验证和文件预处理三个子模块,初始化模块启动时首先建立通信连接,然后通过身份密钥生成子模块将客户端身份信息生成私钥,其次通过密钥验证子模块完成对私钥的验证,当客户端执行文件预处理操作,通过文件预处理子模块将验证后的私钥生成存储数据结构后转换为标签信息,并通过网络发给云存储服务器;
[0166] 身份密钥生成子模块用于将客户端身份信息生成私钥;
[0167] 密钥验证子模块用于对私钥进行验证;
[0168] 文件预处理子模块用于将通过验证的私钥生成存储数据结构后转换为标签信息,并通过网络发给云存储服务器。
[0169] 存储审计模块主要包括挑战查询、证据生成和查询验证三个子模块,当客户端发出挑战请求时,存储审计模块通过第三方审计中心接收客户端的挑战请求后发送给挑战查询子模块,通过挑战查询子模块查询所述挑战请求,并转换为挑战信息,所述挑战信息通过证据生成子模块执行证据生成算法生成证据,然后将证据发送给查询验证子模块通过验证后返回给客户端;
[0170] 挑战查询子模块用于查询挑战请求,并转换为挑战信息;
[0171] 证据生成子模块用于将挑战信息生成证据;
[0172] 查询验证子模块用于对证据验证后返回给客户端。
[0173] 更新模块包括数据更新、数据删除和数据插入三个子模块,当客户端发出更新请求时,更新模块接收更新请求并发送给云存储服务器,数据更新子模块通过云储存服务器执行数据修改操作,数据删除子模块通过云存储服务器执行数据删除操作,数据插入子模块通过云存储服务器执行数据插入操作,主要由客户端发送更新请求,云存储服务器执行;
[0174] 数据更新子模块用于对云储存服务器上的数据进行修改;
[0175] 数据删除子模块用于对云存储服务器上的数据进行删除;
[0176] 数据插入子模块用于对云存储服务器插入新数据。
[0177] 在上述搭建的测试环境下,基于上述审计系统进行测试,测试时使用160bit椭圆曲线群,审计系统执行不同操作时的耗时,选择对验证时间成本、服务器生成证据的成本、挑战信息的通信代价以及证据的通信代价四方面进行测试。
[0178] 对验证时间的测试结果如图7所示,横坐标表示挑战文件块的数量,分别包含了10-50之间的文件块个数,纵坐标表示验证时间的开销,可以看出随着文件块数量的增大,验证时间也随着增大,但50个文件块的验证开销仅为约0.2秒;对服务器生成证据时间的测试结果如图8所示,横坐标表示挑战文件块的数量,分别包含了20-1000之间的文件块个数,纵坐标表示生成证据时间的开销,可以看出随着文件块数量的增大,服务器生成证据的时间也随着增大,但100个文件块的证据生成时间仅为约0.5秒;对挑战信息的通信开销的测试结果如图9所示,横坐标表示挑战文件块的数量,分别包含了200-1000之间的文件块个数,纵坐标表示挑战信息的通信开销,可以看出随着文件块数量的增大,挑战信息的通信开销为常量,约为220比特;对证据的通信开销的测试结果如图10所示,横坐标表示挑战文件块的数量,分别包含了10-30之间的文件块个数,纵坐标表示证据的通信开销,可以看出随着文件块数量的增大,证据的通信开销增加,但30个文件块的证据的通信开销仅为约5000比特。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈