发明内容
公开证明动态数据安全的隐私问题和效率问题一直是动态公开云审计的关注热点。为了更安全有效地实现云存储公开审计的动态更新的功能,本发明引进了动态累加器这一数据认证结构,并结合双链的动态哈希表,公开了一种支持用户全动态并行操作的抗数据泄露的公开云审计方法,实现低通信开销、低计算开销、低存储开销的同时,还具有更新验证的功能。本发明通过以下具体的技术方案实现以上提到的技术问题。整个发明过程涉及三方主体,云存储服务提供商CSP,数据拥有者DO及第三方审计者TPA。
本发明的技术解决方案为:
一种抗泄露公开云审计方法,包括以下步骤:
1)建立
1.1)系统参数生成:
云存储服务提供商CSP利用参数生成算法ParamGen(1k)→(p,G,GT,g,e,H,N)生成系统参数cp并公开所生成的系统参数,具体为:
系统参数cp=(p,G,GT,g,e,H,N),其中大素数p取值是由安全参数k所决定,G、GT是阶为大素数p的乘法循环群,g为乘法循环群G的生成元,e:G×G→GT是一个双线性映射,H:{0,1}*→G是一个密码学安全的哈希函数,正整数N<2p;
1.2)密钥生成:
挑选两个随机数α←Zp和随机数γ←Zp;
计算得到u←g
α,进而得私钥sk=(α,γ)和公钥
公开公开参数pub;
2)存储
2.1)存储准备:
2.1.1)文件分块:
数据拥有者DO利用分块算法FileSplit(F,n)→(d1,d2,…,dn)对文件F进行分块,具体为:
将文件F分为n块{d1,d2,…,dn},其中di∈Zp且di≤N,i=1,2,…,n,文件F表示为F={d1,d2,…,dn},对应数据块索引集合为{1,2,…,n};
2.1.2)数据块版本信息初始化:
数据拥有者DO利用数据版本信息初始化算法VIGen(F)→(VI)创建所有数据块的版本信息,具体为:
数据块的版本信息VI={(vi,ti)|i=1,2,…,n},其中vi和ti分别表示数据块di的版本信息和建立版本信息时的时间戳;
2.1.3)生成数据块累加值:
数据拥有者DO利用累加值生成算法AccGen(F,pub)→accF计算所有数据块的累加值,具体为:
2.1.4)生成数据块签名:
数据拥有者DO利用签名生成算法SigGen(F,VI,sk,pub)→(Φ)计算所有数据块对应的签名,具体为:
2.2)分发:
数据拥有者DO将文件F={d
1,d
2,…,d
n}和签名集合
发送给云存储服务提供商CSP,云存储服务提供商CSP按数据块对应顺序存储文件F和签名集合Φ的内容;同时数据拥有者DO将数据块的版本信息VI={(v
i,t
i)|i=1,2,…,n}和累加值
发送给第三方审计者TPA,第三方审计者TPA将版本信息添加到双链的动态哈希表中存储,并存储数据块的累加值acc
F;确定云存储服务提供商CSP和第三方审计者TPA存储成功后,数据拥有者DO从本地存储中删除{F,Φ,VI},保留acc
F;
2.3)生成数据块标签:
云存储服务提供商CSP利用数据块标签生成算法TagGen(F,pub)→(Ω)生成每个数据块d
i的对应标签
其中i=1,2,…,n,具体为:
云存储服务提供商CSP存储标签集合Ω;
3)审计
3.1)生成挑战请求:
第三方审计者TPA利用挑战请求算法ChalGen(n,c)→chal生成审计挑战,具体为:
从文件F的数据块索引集合{1,2,…,n}中随机挑取出c个索引,记为chal={s1,s2,…,sc}c≤n,作为挑战请求信息发送给云存储服务提供商CSP;
这里解释说明本发明的审计阶段并不需要第三方审计者TPA对所有的数据块进行完整性验证的原因。其中验证数据块的多少依赖于数据出错的比例和验证结论的可信程度。设数据拥有者的文件块总量非常大,已选取块对下一次选择几乎没有影响,同时出错数据块比例相对较低。设ρ为出错数据块比例,p为第三方审计者检测出云存储服务提供商CSP数据出错的概率,c为需要验证的数据块的数量。那么,三者之间满足关系p=1-(1-ρ)c,不同出错比例和不同检测概率下需要验证的数据块数量见表1。当数据块错误率为1%时,第三方审计者仅需要审计460个数据块(常规审计数据块数),就能以高概率99%发现有错误的数据块,这使得审计计算代价和通信代价大大降低,且达到被数据拥有者所接受的实用水平。特别说明,在每次询问时,c个数据块的选择是随机的。
表1不同错误率和检测率的验证数据块数
3.2)证据生成:
云存储服务提供商CSP利用证据生成算法ProofGen(F,Φ,Ω,chal,pub)→P,生成完整性证据P,具体为:
云存储服务提供商CSP作为证明者,根据存储在其服务器上的文件及其对应的签名集合和标签集合{F,Φ,Ω}和接收到的挑战信息chal={s1,s2,…,sc}c≤n,生成完整性证据P=(ω,σ,τ),其中
然后将完整性证据P=(ω,σ,τ)作为存储数据的完整性证明发送给第三方审计者TPA;
这里需要进一步说明本发明抗数据泄露的原因。如公式(1)和(2)所示,每个数据块di,dj的数值均在生成元g的指数位置上。按目前密码学中离散对数求解困难性假设,第三方审计者是根本无法通过ω和τ的值获得数据块的信息。而目前多数技术的审计证明中包含c个挑战数据块的线性组合,这将导致第三方审计者TPA在重复积累c个挑战块的一定数量的证据之后,可通过解线性方程组容易地获取数据块内容,从而有泄露数据块内容的风险。为了解决这个问题,大多数审计方法利用随机掩码技术包装挑战数据块,来防止第三方审计者TPA获得数据的隐私,但这将增加额外的计算开销和通信开销。然而,本发明采用的方法巧妙的规避了该风险,该方法本身具有保护外包云存储数据的机密性和隐私性的良好性质,达到抗数据泄露的功能。
3.3)证据验证:
第三方审计者TPA利用验证算法ProofCheck(P,chal,VI,pk)→{TRUE/FALSE}进行验证,具体为:
第三方审计者TPA根据双链动态哈希表中的信息VI,对挑战的所有数据块对应的版本信息计算哈希值{H(vi||ti)|i∈chal};
检验等式一验证τ的合法性:
若检验等式一不成立,则第三方审计者TPA输出FALSE,表示验证失败;否则,第三方审计者TPA再检验等式二是否成立:
若检验等式二成立,则第三方审计者TPA输出TRUE,表示验证成功,完整性验证通过;否则输出FALSE,表示验证失败。
一种支持用户全动态并行操作的抗泄露公开云审计方法,包括以下步骤:
1)建立
1.1)系统参数生成:
云存储服务提供商CSP利用参数生成算法ParamGen(1k)→(p,G,GT,g,e,H,N)生成系统参数cp并公开所生成的系统参数,具体为:
系统参数cp=(p,G,GT,g,e,H,N),其中大素数p取值是由安全参数k所决定,G、GT是阶为大素数p的乘法循环群,g为乘法循环群G的生成元,e:G×G→GT是一个双线性映射,H:{0,1}*→G是一个密码学安全的哈希函数,正整数N<2p;
1.2)密钥生成:
挑选两个随机数α←Zp和随机数γ←Zp;
计算得到u←g
α,进而得私钥sk=(α,γ)和公钥
公开公开参数pub;
2)存储
2.1)存储准备:
2.1.1)文件分块:
数据拥有者DO利用分块算法FileSplit(F,n)→(d1,d2,…,dn)对文件F进行分块,具体为:
将文件F分为n块{d1,d2,…,dn},其中di∈Zp且di≤N,i=1,2,…,n,文件F表示为F={d1,d2,…,dn},对应数据块索引集合为{1,2,…,n};
2.1.2)数据块版本信息初始化:
数据拥有者DO利用数据版本信息初始化算法VIGen(F)→(VI)创建所有数据块的版本信息,具体为:
数据块的版本信息VI={(vi,ti)|i=1,2,…,n},其中vi和ti分别表示数据块di的版本信息和建立版本信息时的时间戳;
2.1.3)生成数据块累加值:
数据拥有者DO利用累加值生成算法AccGen(F,pub)→accF计算所有数据块的累加值,具体为:
2.1.4)生成数据块签名:
数据拥有者DO利用签名生成算法SigGen(F,VI,sk,pub)→(Φ)计算所有数据块对应的签名,具体为:
2.2)分发:
数据拥有者DO将文件F={d
1,d
2,…,d
n}和签名集合
发送给云存储服务提供商CSP,云存储服务提供商CSP按数据块对应顺序存储文件F和签名集合Φ的内容;同时数据拥有者DO将数据块的版本信息VI={(v
i,t
i)|i=1,2,…,n}和累加值
发送给第三方审计者TPA,第三方审计者TPA将版本信息添加到双链的动态哈希表中存储,并存储数据块的累加值acc
F;确定云存储服务提供商CSP和第三方审计者TPA存储成功后,数据拥有者DO从本地存储中删除{F,Φ,VI},保留acc
F;
2.3)生成数据块标签:
云存储服务提供商CSP利用数据块标签生成算法TagGen(F,pub)→(Ω)生成每个数据块d
i的对应标签
其中i=1,2,…,n,具体为:
云存储服务提供商CSP存储标签集合Ω;
3)动态更新:对已存储的文件F进行动态操作并更新相关数据,得到新文件F'和对应的更新后相关数据;
4)动态更新验证:验证云存储服务提供商CSP是否正确执行了数据更新的操作。
进一步的,步骤3)动态更新操作为插入数据块,具体为:
3.a1)插入准备:
3.a1.1)数据拥有者DO确定插入文件F中的插入数据块
新文件形式化表示为F'=F∪D
*;数据拥有者DO确定在文件F中的插入位置索引集合X和每个位置之后将被插入数据块的数量所组成的集合Y,其中X为文件F的索引集合{1,2,…,n}的子集X={i
1,i
2,…,i
x},1≤x≤m,
表示X中的每个位置之后将要被插入数据块的数量,其中
且
具体描述为:在文件F第i
1块之后插入
个数据块、第i
2块之后插入
个数据块、…、第i
x的块之后插入
个数据块;
3.a1.2)插入数据块D*的版本信息初始化:
数据拥有者DO利用数据版本信息初始化算法VIGen(D
*)→(VI
*)创建所有插入数据块对应的版本信息
其中
和
分别表示插入数据块
的版本信息和建立版本信息时的时间戳;
3.a1.3)更新数据块累加值:
数据拥有者DO利用插入数据块D
*和保存在本地的原始累加值acc
F计算更新累加值
3.a1.4)生成插入数据块签名:
数据拥有者DO利用签名生成算法SigGen(D
*,VI
*,sk,pub)→(Φ
*)计算所有插入数据块对应的签名,签名
令
表示所有插入数据块对应的签名集合;
3.a2)插入请求:
数据拥有者DO向云存储服务提供商CSP发送插入请求消息UCSP=(insert,X,Y,D*,Φ*),并向第三方审计者TPA发送另一个插入请求消息UTPA=(insert,X,Y,VI*,accF'),其中insert表示插入操作请求;
3.a3)插入更新:
3.a3.1)更新双链动态哈希表和累加值:
第三方审计者TPA收到插入请求消息UTPA=(insert,X,Y,VI*,accF')之后,将插入数据块的版本信息VI*按位置添加到双链的动态哈希表中存储,得到更新后双链动态哈希表,令存储的新数据块版本信息为VI'=VI∪VI*;并用更新累加值accF'替换原始累加值accF;
3.a3.2)更新文件集合:
在收到请求U
CSP=(insert,X,Y,D
*,Φ
*)后,云存储服务提供商CSP按照插入要求和数据块顺序将
进行插入存储,即在文件F第i
1块之后插入
个数据块、第i
2块之后插入
个数据块、…、第i
x的块之后插入
个数据块,其中插入的数据块按照
的顺序,并输出新文件F'=F∪D
*;
3.a3.3)更新标签集合:
云存储服务提供商CSP采用公式(3)更新原文件F中所有数据块的标签并存储,利用公式(4)计算所有新插入数据块的标签并存储:
3.3a.4)更新签名集合:
云存储服务提供商CSP将插入数据块对应的签名
按插入要求添加到签名集合中,令新的签名集合Φ'=Φ∪Φ
*。
进一步的,步骤3)动态更新操作为删除数据块,具体为:
3.b1)删除准备:
数据拥有者DO确定从文件F中删除的数据块位置索引集合X,其中X为文件F的位置索引集合{1,2,…,n}的子集,X={i1,i2,…,im},m≤n,具体描述为:将删除文件F的第i1块数据块、第i2块数据块、…、第im块数据块;
3.b2)删除请求:
数据拥有者DO向云存储服务提供商CSP发送删除请求消息U
CSP=(delete,X),并向第三方审计者TPA发送另一个删除请求消息
其中delete表示删除操作请求;
3.b3)返回删除数据块:
令删除数据块集合为
云存储服务提供商CSP在收到删除请求消息U
CSP=(delete,X)之后,向数据拥有者DO返还删除数据块集合
即第i
1块数据块
第i
2块数据块
…、第i
m块数据块
新文件形式化表示为F'=F\D
#;
3.b4)删除更新
3.b4.1)更新数据块累加值:
数据拥有者DO利用云存储服务提供商CSP返回的删除数据块集合
和保存在本地的原始累加值acc
F计算更新累加值
并发送二次删除请求消息
给第三方审计者TPA;
3.b4.2)更新双链动态哈希表和累加值:
第三方审计者TPA收到删除请求消息
和二次删除请求消息
之后,将对应位置X={i
1,i
2,…,i
m}的版本信息从双链动态哈希表中删除,得到更新后的双链动态哈希表,其中令存储的新数据块版本信息为
并用更新累加值acc
F'替换原始累加值acc
F;
3.b4.3)更新标签集合:
在收到删除请求消息U
CSP=(delete,X)后,云存储服务提供商CSP利用被删除数据块
采用公式(5)更新新文件F'中所有数据块的标签并存储:
3.b4.4)更新文件集合:
云存储服务提供商CSP删除文件F中对应位置X={i
1,i
2,…,i
m}的数据块
得新文件F'=F\D
#;
3.b4.5)更新签名集合:
云存储服务提供商CSP删除对应位置的签名,得新的签名集合
进一步的,步骤3)动态更新操作为修改数据块,具体为:
3.c1)修改准备:
3.c1.1)数据拥有者DO确定文件F中被修改数据块的位置索引集合X,其中X为文件F的位置索引集合{1,2,…,n}的子集X={i
1,i
2,…,i
m},m≤n;数据拥有者DO同时确定这些位置修改后的数据块集合
具体描述为:修改文件F的第i
1块数据块为
第i
2块数据块为
…、第i
m块数据块为
3.c1.2)修改后数据块D
*的版本信息初始化:数据拥有者DO利用数据版本信息初始化算法VIGen(D
*)→(VI
*)创建所有修改后数据块对应的版本信息
其中
和
分别表示修改后数据块
的版本信息和建立版本信息时的时间戳;
3.c1.3)生成修改数据块签名:
数据拥有者DO利用签名生成算法SigGen(D
*,VI
*,sk,pub)→(Φ
*)计算所有修改后数据块对应的签名,签名
令
表示所有修改后数据块对应的签名集合;
3.c2)修改请求:
数据拥有者DO向云存储服务提供商CSP发送修改请求消息U
CSP=(modify,X,D
*,Φ
*),并向第三方审计者TPA发送另一个修改请求消息
其中modify表示修改操作请求;
3.c3)返回修改前数据块:
云存储服务提供商CSP在收到修改请求消息U
CSP=(modify,X,D
*,Φ
*)之后,向数据拥有者DO返还对应位置的数据块,即第i
1块数据块
第i
2块数据块
…、第i
m块数据块
令修改前的数据块集合为
即云存储服务提供商CSP向数据拥有者DO返还
新文件形式化表示为F'=(F\D
^)∪D
*;
3.c4)修改更新
3.c4.1)更新数据块累加值:
数据拥有者DO根据修改前数据块集合
修改后数据块
以及保存在本地的原始累加值acc
F计算更新累加值
并发送二次修改请求消息
给第三方审计者TPA;
3.c4.2)更新双链动态哈希表和累加值:
第三方审计者TPA收到修改请求消息
和二次修改请求消息
之后,将双链动态哈希表中对应位置X={i
1,i
2,…,i
m}的版本信息用
替换,得到更新后的双链动态哈希表,令修改后的数据块集合对应的版本信息为
并用更新累加值acc
F'替换原始累加值acc
F;
3.c4.3)更新标签集合:
在收到修改请求消息U
CSP=(modify,X,D
*,Φ
*)后,云存储服务提供商CSP根据修改前数据块集合
和修改后数据块集合
采用公式(6)更新新文件F'中未被修改的所有数据块标签并存储,再利用公式(7)计算修改后的数据块的标签并存储:
3.c4.4)更新文件集合:
云存储服务提供商CSP将文件F中位置为X={i
1,i
2,…,i
m}的数据块
修改为
得新文件F'=(F\D
^)∪D
*;
3.c4.5)更新签名集合:
云存储服务提供商CSP用
替换对应位置数据块的签名,得新的签名集合
进一步的,步骤4)验证云存储服务提供商CSP是否正确执行了数据更新的操作,具体包括:
4.1)生成挑战请求:
令新文件F'的数据块总块数为M,第三方审计者TPA利用挑战请求算法ChalGen(M,c)→chal,从文件F'的数据块索引集合{1,2,…,M}中随机挑取出c个索引,记为chal={s1,s2,…,sc}c≤M,作为挑战请求信息发送给云存储服务提供商CSP,其中,这c个挑战索引随机生成,可以不包括曾经挑战过的数据块;
4.2)证据生成:
云存储服务提供商CSP利用证据生成算法ProofGen(F',Φ',Ω',chal,pub)→P,生成审计证据P,具体为:
云存储服务提供商CSP作为证明者,根据存储在其服务器上的文件F'及其对应的更新签名集合和标签集合{F',Φ',Ω'}和接收到的挑战信息chal={s1,s2,…,sc}c≤M,生成更新验证证据P=(ω,σ,τ),其中
然后将证据P=(ω,σ,τ)作为动态操作执行证明发送给第三方审计者TPA;
4.3)证据验证:
第三方审计者TPA利用验证算法ProofCheck(P,chal,VI',pk)→{TRUE/FALSE}进行验证,具体为:
第三方审计者TPA利用更新后双链动态哈希表中的信息VI'对挑战的所有数据块对应的版本信息计算哈希值{H(vi||ti)|i∈chal};
检验等式一验证τ的合法性:
若检验等式一不成立,则第三方审计者TPA输出FALSE,表示验证失败;否则,第三方审计者TPA再检验等式二是否成立:
若检验等式二成立,则第三方审计者TPA输出TRUE,表示验证成功,云存储服务提供商CSP按要求执行了动态更新操作;否则输出FALSE,表示云存储服务提供商CSP未按要求执行动态更新操作。
本发明所具有的有益效果
1、公开审计。本发明支持可信第三方审计,可以提供可靠的审计结果。
2、抗泄露。本发明的审计阶段并不需要第三方审计者TPA对所有的数据块进行完整性验证,而是采用概率性的策略验证整个文件的完整性和正确性,即随机挑选少部分数据块进行挑战询问,这将大大减少审计的计算开销和通信开销。特别地,不同于传统基于同态签名的认证,本发明采用动态累加器这一新型的数据认证结构巧妙地规避了泄露挑战数据块隐私的风险。该方法本身就具有保护外包云存储数据的机密性和隐私性的良好性质,达到抗数据泄露的功能。
3、动态更新。本发明提供对云审计数据块插入、删除和修改的全动态更新功能,且支持多个数据块并行操作。同时,当发生动态更新后,第三方审计者TPA执行一次“挑战-响应”过程即可检查云服务提供商CSP是否按数据拥有者DO的要求正确执行了数据更新的操作。
4、性能优良。本发明经过实验模拟和分析,可以看出本发明方法相比现有技术性能更优良,实现低通信开销、低计算开销、低存储开销。
具体实施方式
本发明的系统模型由三个实体构成,即云存储服务提供商CSP,数据拥有者DO及第三方审计者TPA,如图1所示。下面结合附图对本发明的具体的实施方式进一步详细说明。
实施例1:文件存储与审计
1)建立
1.1)系统参数生成:
云存储服务提供商CSP利用参数生成算法ParamGen(1k)→(p,G,GT,g,e,H,N)生成系统参数cp并公开所生成的系统参数,具体为:
云存储服务提供商CSP首先选择一个合适的素数生成算法,并根据安全参数k生成大素数p,使得素数p的二进制比特长度大于等于k;
其次,在PBC密码库环境下随机选择两个p阶的乘法循环群G和GT,并选定乘法循环群G的生成元g,且规定一个双线性映射e:G×G→GT;
然后,利用Cryptopp密码库选择一个抗强碰撞的哈希函数H,如MD5算法或者SHA1算法,将任意长度的二进制串作为函数输入,且输出为乘法循环群中的任意一个值,形式化表达为H:{0,1}*→G,其中所述的抗强碰撞表示在该哈希函数定义域内找不到一对数值m≠m'使得H(m)=H(m');
最后,根据公开参数p确定的一个正整数N<2p,具体地,选定整数N=20。
综上,云存储服务提供商CSP公开系统参数cp=(p,G,GT,g,e,H,20)。
1.2)密钥生成:
挑选两个随机数α←Zp和随机数γ←Zp;
计算得到u←gα;
公开公开参数pub;
2)存储
2.1)存储准备:
2.1.1)文件分块:
数据拥有者DO利用分块算法FileSplit(F,n)→(d1,d2,…,dn)对文件F进行分块,具体为:
将文件F分为10块{d1,d2,…,d10},且每个数据块具体的十进制值如表1所示,即F={2,3,6,13,5,4,8,11,15,7},其中di∈Zp且其中di∈Zp且di≤20,i=1,2,…,10,对应数据块索引集合为{1,2,…,10};
表1具体实例中10个文件分块的十进制值
2.1.2)数据块版本信息初始化:
数据拥有者DO利用数据版本信息初始化算法VIGen(F)→(VI)创建所有数据块的版本信息,具体为:
数据块的版本信息VI={(vi,ti)|i=1,2,…,10},其中vi和ti分别表示数据块di的版本信息和建立版本信息时的时间戳;
2.1.3)生成数据块累加值:
数据拥有者DO利用累加值生成算法AccGen(F,pub)→accF计算所有数据块的累加值,具体为:
对于存储文件F={d
1,d
2,…,d
10},数据拥有者DO根据pub计算它的累加值
具体如公式(1):
2.1.4)生成数据块签名:
数据拥有者DO利用签名生成算法SigGen(F,VI,sk,pub)→(Φ)计算所有数据块对应的签名,具体为:
2.2)分发:
数据拥有者DO将文件F={d
1,d
2,…,d
10}和签名集合
发送给云存储服务提供商CSP,云存储服务提供商CSP按数据块对应顺序存储F和Φ的内容;同时数据拥有者DO将数据块的版本信息VI={(v
i,t
i)|i=1,2,…,10}和累加值acc
F发送给第三方审计者TPA,第三方审计者TPA将版本信息添加到双链的动态哈希表中存储,如图2所示,并存储数据块的累加值acc
F;确定云存储服务提供商CSP和第三方审计者TPA存储成功后,数据拥有者DO从本地存储中删除{F,Φ,VI},保留acc
F;
2.3)生成数据块标签:
云存储服务提供商CSP利用数据块标签生成算法TagGen(F,pub)→(Ω)生成每个数据块d
i的对应标签
其中i=1,2,…,10,具体为:
计算标签
具体地,数据块d
1的标签
的计算如公式(2)所示,类似地,计算每个数据块的标签
结果如下表2所示;
表2具体实例中10个数据块的标签表示
3)审计
3.1)生成挑战请求:
第三方审计者TPA利用挑战请求算法ChalGen(n,c)→chal生成审计挑战,具体为:
从文件F的数据块索引集合{1,2,…,10}中随机挑取出2个索引,第三方审计者TPA挑战询问第3块数据块和第7块数据块来检查整个文件的完整性和正确性,记为chal={3,7},作为挑战请求信息发送给云存储服务提供商CSP;
3.2)证据生成:
云存储服务提供商CSP利用证据生成算法ProofGen(F,Φ,Ω,chal,pub)→P,生成完整性证据P,具体为:
云存储服务提供商CSP作为证明者,根据存储在其服务器上的文件及其对应的签名集合和标签集合{F,Φ,Ω}和接收到的挑战信息chal={3,7},生成完整性证据P=(ω,σ,τ);其中
然后将完整性证据P=(ω,σ,τ)作为存储数据的完整性证明发送给第三方审计者TPA;
3.3)证据验证:
第三方审计者TPA利用验证算法ProofCheck(P,chal,VI,pk)→{TRUE/FALSE}进行验证,具体为:
第三方审计者TPA根据双链动态哈希表中的信息VI,对挑战的所有数据块对应的版本信息计算哈希值{H(vi||ti)|i∈chal},即{H(v3||t3),H(v7||t7)};
检验等式一验证τ的合法性:
若检验等式一不成立,则第三方审计者TPA输出FALSE,表示验证失败;否则,第三方审计者TPA再检验等式二是否成立:
若检验等式二成立,则第三方审计者TPA输出TRUE,表示验证成功,完整性验证通过;否则输出FALSE,表示验证失败。
实施例2:在原始存储文件的基础上进行动态更新并验证:插入数据块
2.1)插入准备:
2.1.1)数据拥有者DO确定插入文件F中的插入数据块d*=12,新文件形式化表示为F'=F∪{d*}={2,3,6,13,12,5,4,8,11,15,7},记D*={d*}={12};数据拥有者DO确定在文件F中的插入位置索引集合X={5}和每个位置之后将被插入数据块的数量所组成的集合Y={1},其中X为文件F的索引集合{1,2,…,10}的子集,Y={1}表示X中的每个位置之后将要被插入数据块的数量,此实例具体描述为:在文件F的第5块数据块之后插入1个数据块;
2.1.2)插入数据块D*的版本信息初始化:
数据拥有者DO利用数据版本信息初始化算法VIGen(D*)→(VI*)创建插入数据块对应的版本信息VI*={(v*,t*)},其中v*和t*分别表示插入数据块d*的版本信息和建立版本信息时的时间戳;
2.1.3)更新数据块累加值:
数据拥有者DO利用插入数据块D
*和保存在本地的原始累加值acc
F计算更新累加值
2.1.4)生成插入数据块签名:
数据拥有者DO利用签名生成算法SigGen(D
*,VI
*,sk,pub)→(Φ
*)计算所有插入数据块对应的签名,签名
令
表示插入数据块对应的签名集合;
2.2)插入请求:
数据拥有者DO向云存储服务提供商CSP发送插入请求消息U
CSP=(insert,X,Y,D
*,Φ
*),即
并向第三方审计者TPA发送另一个插入请求消息U
TPA=(insert,X,Y,VI
*,acc
F'),即U
TPA=(insert,5,1,VI
*,acc
F'),其中insert表示插入操作请求;
2.3)插入更新:
2.3.1)更新双链动态哈希表和累加值:
第三方审计者TPA收到插入请求消息UTPA=(insert,5,1,VI*,accF')之后,将插入数据块的版本信息VI*={(v*,t*)}按位置添加到双链的动态哈希表中存储,如图3所示,得到更新后双链动态哈希表,令存储的新数据块版本信息为VI'=VI∪VI*;并用更新累加值accF'替换原始累加值accF;
2.3.2)更新文件集合:
在收到请求
后,云存储服务提供商CSP按照插入要求和数据块顺序将D
*={d
*}={12}进行插入存储,即在文件F的第5块数据块之后插入1个数据块d
*=12,并输出新文件F'=F∪D
*;
2.3.3)更新标签集合:
云存储服务提供商CSP采用公式(3)更新原文件F中所有数据块的标签并存储,具体地,如公式(4)计算原文件中第1个数据块d1的新标签,类似地,其余数据块更新情况如表3所示;利用公式(5)计算新插入数据块的标签并存储:
表3具体实例中原文件F中10个数据块的标签更新表示
2.3.4)更新签名集合:
云存储服务提供商CSP将插入数据块对应的签名
按插入要求添加到签名集合中,令新的签名集合
2.4)插入验证:验证云存储服务提供商CSP是否正确执行了数据插入的操作
2.4.1)生成挑战请求:
令新文件F'的数据块总块数为M=11,第三方审计者TPA利用挑战请求算法ChalGen(11,c)→chal,从文件F'的数据块索引集合{1,2,…,11}中随机挑取出c个索引,记为chal={s1,s2,…,sc}c≤11,作为挑战请求信息发送给云存储服务提供商CSP,其中,这c个挑战索引随机生成,可以不包括曾经挑战过的数据块;
2.4.2)证据生成:
云存储服务提供商CSP利用证据生成算法ProofGen(F',Φ',Ω',chal,pub)→P,生成审计证据P,具体为:
云存储服务提供商CSP作为证明者,根据存储在其服务器上的文件F'及其对应的更新签名集合和标签集合{F',Φ',Ω'}和接收到的挑战信息chal={s1,s2,…,sc}c≤11,生成更新验证证据P=(ω,σ,τ),其中
然后将证据P=(ω,σ,τ)作为动态插入操作执行证明发送给第三方审计者TPA;
2.4.3)证据验证:
第三方审计者TPA利用验证算法ProofCheck(P,chal,VI',pk)→{TRUE/FALSE}进行验证,具体为:
第三方审计者TPA根据更新后双链动态哈希表中的信息VI'对挑战的所有数据块对应的版本信息计算哈希值{H(vi||ti)|i∈chal};
检验等式一验证τ的合法性:
若检验等式一不成立,则第三方审计者TPA输出FALSE,表示验证失败;否则,第三方审计者TPA再检验等式二是否成立:
若检验等式二成立,则第三方审计者TPA输出TRUE,表示验证成功,云存储服务提供商CSP按要求执行了动态插入更新操作;否则输出FALSE,表示云存储服务提供商CSP未按要求执行动态插入更新操作。
实施例3:在原始存储文件的基础上进行动态更新并验证:删除数据块
3.1)删除准备:
数据拥有者DO确定从文件F中删除的数据块位置索引集合X={6},其中X为文件F的位置索引集合{1,2,…,n}的子集,具体描述为:将删除文件F的第6块数据块;
3.2)删除请求:
数据拥有者DO向云存储服务提供商CSP发送删除请求消息U
CSP=(delete,X),即U
CSP=(delete,6),并向第三方审计者TPA发送另一个删除请求消息
即
其中delete表示删除操作请求;
3.3)返回删除数据块:
令删除数据块集合为D#={d6}={4},云存储服务提供商CSP在收到删除请求消息UCSP=(delete,6)之后,向数据拥有者DO返还删除数据块集合D#={d6}={4},即第6块数据块d6=4;新文件形式化表示为F'=F\{d6}={2,3,6,13,5,8,11,15,7};
3.4)删除更新:
3.4.1)更新数据块累加值:
数据拥有者DO利用云存储服务提供商CSP返回的删除数据块集合D
#={d
6}={4}和保存在本地的原始累加值acc
F计算更新累加值
并发送二次删除请求消息
给第三方审计者TPA;
3.4.2)更新双链动态哈希表和累加值:
第三方审计者TPA收到删除请求消息
和二次删除请求消息
之后,将对应位置第6块的版本信息从双链动态哈希表中删除,得到更新后的双链动态哈希表,如图4所示,其中令存储的新数据块版本信息为VI'=VI\{(v
6,t
6)};并用更新累加值acc
F'替换原始累加值acc
F;
3.4.3)更新标签集合:
在收到删除请求消息UCSP=(delete,6)后,云存储服务提供商CSP利用被删除数据块D#={d6}={4},采用公式(6)更新新文件F'中所有数据块的标签并存储,具体地,如公式(7)计算新文件中第一个数据块d1的新标签,类似地,其余数据块更新情况如表4所示:
表4具体实例中新文件中9个数据块的标签更新表示
3.4.4)更新文件集合:
云存储服务提供商CSP删除文件F中对应位置X={6}的数据块D#={d6}={4},得新文件F'=F\D#;
3.4.5)更新签名集合:
云存储服务提供商CSP删除对应位置的签名,得新的签名集合
3.5)删除验证:验证云存储服务提供商CSP是否正确执行了数据删除的操作
3.5.1)生成挑战请求:
令新文件F'的数据块总块数为M=9,第三方审计者TPA利用挑战请求算法ChalGen(9,c)→chal,从文件F'的数据块索引集合{1,2,…,9}中随机挑取出c个索引,记为chal={s1,s2,…,sc}c≤9,作为挑战请求信息发送给云存储服务提供商CSP,其中,这c个挑战索引随机生成,可以不包括曾经挑战过的数据块;
3.5.2)证据生成:
云存储服务提供商CSP利用证据生成算法ProofGen(F',Φ',Ω',chal,pub)→P,生成审计证据P,具体为:
云存储服务提供商CSP作为证明者,根据存储在其服务器上的文件F'及其对应的更新签名集合和标签集合{F',Φ',Ω'}和接收到的挑战信息chal={s1,s2,…,sc}c≤11,生成更新验证证据P=(ω,σ,τ),其中
然后将证据P=(ω,σ,τ)作为动态删除操作执行证明发送给第三方审计者TPA;
3.5.3)证据验证:
第三方审计者TPA利用验证算法ProofCheck(P,chal,VI',pk)→{TRUE/FALSE}进行验证,具体为:
第三方审计者TPA根据更新后双链动态哈希表中的信息VI'对挑战的所有数据块对应的版本信息计算哈希值{H(vi||ti)|i∈chal};
检验等式一验证τ的合法性:
若检验等式一不成立,则第三方审计者TPA输出FALSE,表示验证失败;否则,第三方审计者TPA再检验等式二是否成立:
若检验等式二成立,则第三方审计者TPA输出TRUE,表示验证成功,云存储服务提供商CSP按要求执行了动态删除更新操作;否则输出FALSE,表示云存储服务提供商CSP未按要求执行动态删除更新操作。
实施例4:在原始存储文件的基础进行动态更新并验证:修改数据块
4.1)修改准备:
4.1.1)数据拥有者DO确定文件F中被修改数据块的位置索引集合X={8},其中X为文件F的位置索引集合{1,2,…,10}的子集;数据拥有者DO同时确定这些位置修改后的数据块集合
具体描述为:修改文件F的第8块数据块为
4.1.2)修改后数据块D*的版本信息初始化:
数据拥有者DO利用数据版本信息初始化算法VIGen(D
*)→(VI
*)创建所有修改后数据块对应的版本信息
其中
和
分别表示修改后数据块
的版本信息和建立版本信息时的时间戳;
4.1.3)生成修改数据块签名:
数据拥有者DO利用签名生成算法SigGen(D
*,VI
*,sk,pub)→(Φ
*)计算所有修改后数据块对应的签名,签名
令
表示修改后数据块对应的签名集合;
4.2)修改请求:
数据拥有者DO向云存储服务提供商CSP发送修改请求消息U
CSP=(modify,X,D
*,Φ
*),即U
CSP=(modify,8,D
*,Φ
*),并向第三方审计者TPA发送另一个修改请求消息
即
其中modify表示修改操作请求;
4.3)返回修改前数据块:
云存储服务提供商CSP在收到修改请求消息U
CSP=(modify,8,D
*,Φ
*)之后,向数据拥有者DO返还对应位置的数据块,即第8块数据块d
8=11,令修改前的数据块集合为D
^={d
8}={11},即云存储服务提供商CSP向数据拥有者DO返还D
^={d
8}={11},新文件形式化表示为
4.4)修改更新
4.4.1)更新数据块累加值:
数据拥有者DO根据修改前数据块集合D
^={d
8}={11}、修改后数据块
以及保存在本地的原始累加值acc
F计算更新累加值
并发送二次修改请求消息
给第三方审计者TPA;
4.4.2)更新双链动态哈希表和累加值:
第三方审计者TPA收到修改请求消息
和二次修改请求消息
之后,将双链动态哈希表中对应位置X={8}第8块的版本信息用
替换,得到更新后的双链动态哈希表,如图5所示,令修改后的数据块集合对应的版本信息为VI'=VI\{(v
8,t
8)}∪VI
*,并用更新累加值acc
F'替换原始累加值acc
F;
4.4.3)更新标签集合:
在收到修改请求消息U
CSP=(modify,8,D
*,Φ
*)后,云存储服务提供商CSP根据修改前数据块集合D
^={d
8}={11}和修改后数据块集合
采用公式(8)更新新文件中未被修改过的所有块标签并存储,具体地,如公式(9)计算文件中第1个数据块d
1的新标签,类似地,其余数据块更新情况如表5所示;并利用公式(10)计算所有修改后数据块的标签并存储:
表5具体实例中新文件中未被修改的9个数据块标签更新表示
4.4.4)更新文件集合:
云存储服务提供商CSP将文件F中位置为X={8}的数据块D
^={d
8}={11}修改为
得新文件
4.4.5)更新签名集合:
云存储服务提供商CSP用
替换对应位置数据块的签名,得新的签名集合
4.5)修改验证:验证云存储服务提供商CSP是否正确执行了数据修改的操作
4.5.1)生成挑战请求:
令新文件F'的数据块总块数为M=10,第三方审计者TPA利用挑战请求算法ChalGen(10,c)→chal,从文件F'的数据块索引集合{1,2,…,10}中随机挑取出c个索引,记为chal={s1,s2,…,sc}c≤10,作为挑战请求信息发送给云存储服务提供商CSP,其中,这c个挑战索引随机生成,可以不包括曾经挑战过的数据块;
4.5.2)证据生成:
云存储服务提供商CSP利用证据生成算法ProofGen(F',Φ',Ω',chal,pub)→P,生成审计证据P,具体为:
云存储服务提供商CSP作为证明者,根据存储在其服务器上的文件F'及其对应的更新签名集合和标签集合{F',Φ',Ω'}和接收到的挑战信息chal={s1,s2,…,sc}c≤11,生成更新验证证据P=(ω,σ,τ),其中
然后将证据P=(ω,σ,τ)作为动态修改操作执行证明发送给第三方审计者TPA;
4.5.3)证据验证:
第三方审计者TPA利用验证算法ProofCheck(P,chal,VI',pk)→{TRUE/FALSE}进行验证,具体为:
第三方审计者TPA根据更新后双链动态哈希表中的信息VI'对挑战的所有数据块对应的版本信息计算哈希值{H(vi||ti)|i∈chal};
检验等式一验证τ的合法性:
若检验等式一不成立,则第三方审计者TPA输出FALSE,表示验证失败;否则,第三方审计者TPA再检验等式二是否成立:
若检验等式二成立,则第三方审计者TPA输出TRUE,表示验证成功,云存储服务提供商CSP按要求执行了动态修改更新操作;否则输出FALSE,表示云存储服务提供商CSP未按要求执行动态修改更新操作。
为了更贴切地模拟本发明方法的主要核心步骤,因此进行了数值更大的实验模拟。经过基于PBC库平台的实验模拟和分析,可以看出本发明方法相比现有技术性能更优良,实现了低通信开销、低计算开销、低存储开销。具体对比结果如图6-10所示。
其中图6为本发明方法与现有技术在存储阶段所产生的通信量比较图,从图6中可以看出本发明在存储阶段所产生的通信量比较低;图7为本发明方法与现有技术在审计阶段所产生的通信量比较图,从图7中不难看出本发明方法在审计阶段所产生的通信量非常低,相比其他技术而言这是一个很大的优势;图8为本发明方法与现有技术在存储阶段所需的计算代价比较图,从图8中可以看出本发明方法在存储阶段所需的计算代价最低,这对于计算资源有限的数据拥有者DO来说是非常重要的一个优点,这将更适用于资源有限的用户;图9为本发明方法与现有技术在云服务提供商CSP产生证据时的计算代价比较图,从图9中不难看出本发明方法中云服务提供商CSP产生证据的计算代价最低,这有利于云服务提供商CSP,因为在实际情况下对于需要执行多任务的云服务提供商来说能实现更快速地处理审计任务;图10为本发明方法与现有技术在第三方审计者TPA验证证据时计算代价的比较图,从图10中不难看出本发明方法在第三方审计者TPA验证证据时的计算代价非常低,这将使得第三方审计者可以以更少的计算代价就完成审计证据的验证,这有非常重要的实际意义。