一种基于身份和环签名的数据完整性校验方法
技术领域
本发明属于数据安全技术领域,具体地说,涉及一种基于身份和环签名的数据完整性校验方法。
背景技术
传统的数据完整性验证方案往往针对的是云环境下云存储服务,其特点在于尽可能降低用户的计算开销与存储开销,而忽略了用户隐私和数据泄露的问题,所以在云存储逐渐普及的今天,能有效保护用户隐私和数据信息显得极为重要。
发明内容
有鉴于此,本发明针对现有技术中忽略用户隐私和数据泄露的问题,提供了一种基于身份和环签名的数据完整性校验方法,在原有PDP协议模型的基础上,引进了密钥生成中心作为密钥生成的参与者,利用环签名生成数据块标签,达到在进行数据共享的基础上保证数据的完整性以及提高安全性。
为了解决上述技术问题,本发明公开了一种基于身份和环签名的数据完整性校验方法,包括以下步骤:
S1、密钥生成阶段:密钥生成中心根据数据拥有者发送的身份信息生成相应的公钥和私钥并返回给数据拥有者,数据拥有者将公钥发送给云服务器;
S2、标签生成阶段:数据拥有者对需要上传的文件进行分块处理,将文件分为若干个文件块,计算出每个文件块的标签值,将其发送到云服务器端;
S3、挑战生成阶段:第三方验证者向云服务器发起挑战请求;
S4、证据生成阶段:云服务器接收来自第三方验证者的的挑战请求,计算相应的证据,并将其发送给第三方验证者;
S5、验证阶段:第三方验证者根据云服务器返回的证据,与公钥和对应的标签进行碰撞,判断待验证的数据是否完整。
进一步地,S1密钥生成阶段具体为:密钥生成中心保存数据拥有者所在环中的所有成员的身份ID信息,针对数据拥有者发送的个人身份信息,生成相应的公钥和私钥,并把公钥和私钥同时返回给数据拥有者,数据拥有者将公钥发送给云服务器。
进一步地,S2标签生成阶段具体包括以下步骤:
S21、数据拥有者在密钥生成中心中选择任意个成员作为当前环成员;针对所选取的每一个环成员,生成对应的身份信息Ri,而成员身份ai取决于初始化素数阶的整数群Zq、阶数P取决于初始化素数阶的整数群G,生成相应的成员身份Ri=aiP;
针对每一个文件M分成任意多个文件块M={m1、m2、...、mn},1≤j≤n,对每一个文件块生成相应的随机数bj,bj取决于初始化素数阶的整数群Zq中;把每个随机数以及对应的文件块进行聚合bj·mj,构成每个文件块的标签值;然后再把每个聚合后的值相加∑bj·mj,得到整个文件的标签值c,同时生成 R`i=aiPpub,其中Ppub=xP,x为主私钥;
S22、针对数据拥有者生成相应的身份信息Rk,而身份ak取决于初始化素数阶的整数群Zq、阶数P取决于初始化素数阶的整数群G,生成相应的身份信息Rk=akP;
针对每一个文件M分成任意多个文件块M={m
1、m
2、...、m
n},1≤j≤n,生成相应的随机数b
j,而b
j取决于初始化素数阶的整数群Z
q中;把每个随机数以及对应的文件块进行聚合b
j·m
j,构成每个文件块的标签值;然后再把每个聚合后的值相加∑b
j·m
j,最后和数据拥有者所选环中成员的数量L、文件名 f
name以及成员身份R
k进行哈希H
2(L||f
name||R
k)相加∑b
j·m
j+H
2(L||f
name||R
k),得到整个文件的标签值c
k,同时生成P
2=tP
pub,t取决于初始化素数阶的整数群 Z
q,P
pub=xP,x为主私钥,以及
S23、生成签名
将参数集合{L、R
0、R
1、...、R
n-1、U、N、S},标签c和数据文件一起发送给云服务器。
进一步地,S3挑战生成阶段具体为:第三方验证者将待验证的文件块的索引j和随机数bj,以及待验证的文件块的文件名fname,以元组的形式 {{j,bj},fname},1≤j≤c一起发送给云服务器。
进一步地,S4证据生成阶段具体为:云服务器根据挑战请求信息中文件块的索引j和随机数b
j,计算与文件块m
j的聚合值,之后与所选环中每个成员H
2(L||f
name||R
i)相加得到
计算标签值
形成证据σ,选择对应的环签名中的S作为证据μ,然后将证据集合{σ,μ}返回给第三方验证者。
进一步地,S5验证阶段具体为:第三方验证者根据云服务器返回的证据集合{σ,μ},与之前初始化素数阶的整数群G生成的阶数P、密钥生成中心计算的主公钥Ppub以及所选取的环中成员的身份信息的聚合值U,以及用户公钥QID通过等式e(p,μ)=e(Ppub,σ+U)是否成立来验证云服务器中的数据是否完整。
进一步地,本发明校验方法还包括S6数据更新阶段:云服务器构建认证数据结构,实现支持数据动态更新的功能。
进一步地,S6数据更新阶段具体为:
S61、设计默克尔哈希树
每个节点的值包含两个,分别为左值和右值;左值表示当前节点是其父节点的左节点还是右节点,规定左节点用0表示,右节点用1表示,根节点的左值存储的是固定值r来;右值表示其文件块的标签的聚合值,除叶子节点外,每个节点的右值均为其左孩子节点的右值和右孩子节点的右值聚合而成的标签值,每个叶子节点与每个文件块形成一一对应的关系,即一个叶子节点代表一个文件块;
S62、利用文件块的索引j和文件块的位置信息path构成虚拟映射表,当数据块发生动态更新时,对虚拟映射表进行更新。
进一步地,数据更新具有包括修改、插入和删除。
与现有技术相比,本发明可以获得包括以下技术效果:
本发明基于身份和环签名的数据完整性校验方法,在传统数据完整性验证方案的基础上引入了环签名,在数据共享的前提下,通过引入环签名的方式,在更安全的前提条件下实现数据信息的共享;同时,通过引入用户身份信息的公私密钥,增强了安全性。
为了更好支持数据的动态更新,本发明采用默克尔哈希树作为认证结构以及将文件以块的方式保存在树的叶节点处,有效的缩短了动态更新所花费的系统开销,也减少了验证或者更新时重复计算中间节点所带来的问题,使动态更新更加高效。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明基于身份和环签名的数据完整性校验方法的流程图;
图2是本发明实施例1默克尔哈希树认证树的结构图。
具体实施方式
以下将配合实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
本发明在传统的算法流程上进行了改进,在原有PDP协议模型的基础上,引进了密钥生成中心作为密钥生成的参与者,利用环签名生成数据块标签,达到在进行数据共享的基础上保证数据的完整性以及提高安全性。
本发明中将KeyGen算法委托给密钥生成中心,降低数据拥有者的计算压力和存储开销,同时将Challenge和Verify算法委托给第三方验证者,再次降低了数据拥有者的计算压力。
本发明公开了一种基于身份和环签名的数据完整性校验方法,如图1所示,包括以下步骤:
S1、密钥生成阶段:密钥生成中心根据数据拥有者发送的身份信息生成相应的公钥和私钥并返回给数据拥有者,数据拥有者将公钥发送给云服务器;
S1密钥生成阶段具体为:密钥生成中心保存数据拥有者所在环中的所有成员的身份ID信息,针对数据拥有者发送的个人身份信息,生成相应的公钥和私钥,并把公钥和私钥同时返回给数据拥有者,数据拥有者将公钥发送给云服务器。
本实施步骤中,对于私钥分配是随机的,其取决于主私钥χ,而主私钥取决于初始化素数阶的整数群Zq中,根据生成的主私钥和哈希后得到的数据拥有者公钥构成数据拥有者私钥。
S2、标签生成阶段:数据拥有者对需要上传的文件进行分块处理,将文件分为若干个文件块,计算出每个文件块的标签值,将其发送到云服务器端;
S2标签生成阶段具体包括以下步骤:
S21、数据拥有者在密钥生成中心中选择任意个成员作为当前环成员;针对所选取的每一个环成员,生成对应的身份信息Ri,而成员身份ai取决于初始化素数阶的整数群Zq、阶数P取决于初始化素数阶的整数群G,生成相应的成员身份Ri=aiP;
针对每一个文件M分成任意多个文件块M={m1、m2、...、mn},1≤j≤n,对每一个文件块生成相应的随机数bj,bj取决于初始化素数阶的整数群Zq中;把每个随机数以及对应的文件块进行聚合bj·mj,构成每个文件块的标签值;然后再把每个聚合后的值相加∑bj·mj,得到整个文件的标签值c,同时生成 R`i=aiPpub,其中Ppub=xP,x为主私钥;
S22、针对数据拥有者生成相应的身份信息Rk,而身份ak取决于初始化素数阶的整数群Zq、阶数P取决于初始化素数阶的整数群G,生成相应的身份信息Rk=akP;
针对每一个文件M分成任意多个文件块M={m
1、m
2、...、m
n},1≤j≤n,生成相应的随机数b
j,而b
j取决于初始化素数阶的整数群Z
q中;把每个随机数以及对应的文件块进行聚合b
j·m
j,构成每个文件块的标签值;然后再把每个聚合后的值相加∑b
j·m
j,最后和数据拥有者所选环中成员的数量L、文件名 f
name以及成员身份R
k进行哈希H
2(L||f
name||R
k)相加∑b
j·m
j+H
2(L||f
name||R
k),得到整个文件的标签值c
k,同时生成P
2=tP
pub,t取决于初始化素数阶的整数群 Z
q,P
pub=xP,x为主私钥,以及
S23、生成签名
将参数集合{L、R
0、R
1、...、R
n-1、U、N、S},标签c和数据文件一起发送给云服务器。
S3、挑战生成阶段:第三方验证者向云服务器发起挑战请求;
S3挑战生成阶段具体为:第三方验证者将待验证的文件块的索引j和随机数bj,以及待验证的文件块的文件名fname,以元组的形式{{j,bj},fname},1≤j≤c 一起发送给云服务器。
S4、证据生成阶段:云服务器接收来自第三方验证者的的挑战请求,计算相应的证据,并将其发送给第三方验证者;
S4证据生成阶段具体为:云服务器根据挑战请求信息中文件块的索引j 和随机数b
j,计算与文件块m
j的聚合值,之后与所选环中每个成员 H
2(L||f
name||R
i)相加得到
计算标签值
形成证据σ,选择对应的环签名中的S作为证据μ,然后将证据集合{σ,μ}返回给第三方验证者。
S5、验证阶段:第三方验证者根据云服务器返回的证据,与公钥和对应的标签进行碰撞,判断待验证的数据是否完整。
S5验证阶段具体为:第三方验证者根据云服务器返回的证据集合{σ,μ},与之前初始化素数阶的整数群G生成的阶数P、密钥生成中心计算的主公钥 Ppub以及所选取的环中成员的身份信息的聚合值U,以及用户公钥QID通过等式e(p,μ)=e(Ppub,σ+U)是否成立来验证云服务器中的数据是否完整。
若e(p,μ)=e(Ppub,σ+U)成立,则数据完整;若e(p,μ)=e(Ppub,σ+U)不成立,则数据不完整。
本发明校验方法还包括S6、数据更新阶段:云服务器构建认证数据结构,实现支持数据动态更新的功能。
S6数据更新阶段具体为:
S61、设计默克尔哈希树
每个节点的值包含两个,分别为左值和右值;左值表示当前节点是其父节点的左节点还是右节点,规定左节点用0表示,右节点用1表示,根节点的左值存储的是固定值r来;右值表示其文件块的标签的聚合值,除叶子节点外,每个节点的右值均为其左孩子节点的右值和右孩子节点的右值聚合而成的标签值,每个叶子节点与每个文件块形成一一对应的关系,即一个叶子节点代表一个文件块;
S62、利用文件块的索引j和文件块的位置信息path构成虚拟映射表,当数据块发生动态更新时,对虚拟映射表进行更新。
本发明中数据更新具体包括修改、插入和删除,具体更新操作如下:
当数据块进行修改更新时,包括以下步骤:
A1:云服务器接收来自数据拥有者的修改更新请求{UDDATE,j,c`new,mnew};根据收到的要更新文件块的索引j,云服务器在虚拟映射表中查找对应文件块的位置信息path,依照该地址值找到相应位置的结点,对云服务器的文件块进行替换;
A2:云服务器从已修改的文件块的叶子节点位置开始,对当前结点的右值进行更新,将已修改的文件块的标签值进行替换操作,再与其兄弟结点的右值进行聚合,然后修改父节点的右值,以此类推,一直更新到根结点为止,最后由第三方验证者发起完整性校验。
当数据块进行插入更新时,包括以下步骤:
B1:云服务器接收来自数据拥有者的插入更新请求{INSERT,j,c`new,mnew};根据收到的文件块的索引j,在虚拟映射表中找到相应的文件块的位置信息 path,根据此位置信息将待插入的文件块插入相应的位置;
B2:根据待插入的位置信息,将包括此位置在内的之后的文件块依次后移,然后重新构建默克尔哈希树,包括从叶子节点开始,重新计算每个节点的左值和右值,之后更新虚拟映射表,将刚插入的文件块的索引以及位置信息插入到虚拟映射表中,对其它文件块的位置信息进行更新,最后由第三方验证者发起完整性校验。
当数据块进行删除更新时,包括以下步骤:
C1:云服务器接收数据拥有者删除更新请求{DELETE,j},根据收到的索引j,在虚拟映射表中找到相应的文件块的位置信息path,而后根据位置信息找到相应的文件块,将其文件块删除,同时删除对应叶子节点中右值的标签值,然后计算和其兄弟节点中右值的标签值的聚合值,并且替换父节点中右值的标签值,替换到到根节点为止。
C2:云服务器根据所要删除的文件块的索引j,以及重新计算后的每个文件块的路径path,对虚拟映射表进行更新,删除相应行,之后由第三方验证者发起完整性校验。
本发明在数据块标签的生成部分利用了环签名的思想,在最终验证环节使用了双线性映射的性质。
下面对双线性映射以及环签名的性质进行简单介绍。
设G是以g为生成元的素数阶乘法循环群,如果存在一个素数阶的乘法循环去群GT以及一个双线性映射关系e:G×G→GT,则该映射满足以下性质:
双线性:对G中任意元素u和μ,以及Zq中任意元素α和β,均有 e(uα,μβ)=e(u,μ)αβ。
非退化性:并不是G中都将被映射到GT的单位元上,即G中存在元素u 和μ,使e(u,μ)≠1GT成立,其中1GT代表GT的单位元。
可计算性:对G中任意元素u和μ,都存在高效的多项式时间算法来计算e(u,μ)。
本发明中涉及到的环签名的性质如下:
无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。
不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。
正确性:签名必需能被所有其他人验证。
实施例1
下面结合实施例,对本发明进行详细的阐述:
S1:密钥生成阶段:
初始化阶段:初始化G1、G2为素数阶的乘法循环群,并定义双线性映射运算e:G1×G1→G2;初始化素数阶的整数群Zq,在Zq群中随机挑选任意大整数x,作为主私钥,随机选取G1群的生成元,记为P;计算主公钥Ppub=xP;
其中,定义双线性映射运算中的G1以及G2是根据开源代码自动生成。
本实施例中,提到的任意大整数,即超大型整数,数字长度可能在几十位的整数。
密钥生成中心根据数据拥有者发送的个人身份ID信息经过哈希后生成相应的公钥Q
ID=H
1(ID)以及私钥
密钥生成中心存储环中所有成员的身份集合L={ID1、ID2、...、IDn}。
S2:标签生成阶段:
S21:首先对带上传的文件M进行分块操作,M={m1、m2、...、mn},1≤j≤n。签名者k随机选择n-1个成员作为环成员,随机选择t∈Zq,计算P1=tP;
S22:对于环中i∈(k+1,...,n-1,0,...,k-1),任选a
i∈Z
q,计算R
i=a
iP,
R`
i=a
iP
pub。
S23:对于签名者k随机选择a
k∈Z
q,计算R
k=a
kP,
P
2=tP
pub,
以及
S24:生成签名
参数集合{L、R
0、R
1、...、R
n-1、U、N、S};
S25:将参数集合、数据文件以及标签值c并将发送到云服务器。
S3:挑战生成阶段:
第三方验证者在[1,n]中随机选择任意个不重复的数,代表将要被验证的c个文件块的索引,并且在Zq中随机挑选b个随机元素,同时还包括待验证数据块对应的文件名,共同组成挑战集合{{j,bj},fname,1≤j≤c}发送给云服务器。
S4:证据生成阶段:
S41:云服务器根据接收到的挑战请求{{j,bj},fname,1≤j≤c},通过虚拟映射表获取待验证数据块的位置信息;
其中,b
j代表被挑战的第j块对应的随机数,m
j代表被挑战的文件块,计算
作为证据σ,选择环签名中对应的S作为证据μ;
最后云服务器将证据集合{σ,μ}回给第三方验证者。
S5:验证阶段,第三方验证者接收云服务器返回的证据{σ}后,将通过计算等式e(P,S)=e(Ppub,σ+U)是否成立来验证云服务器的数据是否完整。
验证阶段的正确性说明如下:
本发明中还包括S6数据结构的构建以及动态更新阶段,具体如下:
本发明中为了支持数据的动态更新设计了默克尔哈希树,以及虚拟映射表。
默克尔哈希树的高度不定,根据生成文件块的数量决定其高度。本方案中的默克尔哈希树不同于以往的默克尔哈希树,它的每个叶子节点均分为左右两个值,左值代表当前节点位置是其父节点的左节点还是右节点,其中规定左节点用0表示,右节点用1表示,不同的是根节点的左值存储的是固定值r;右值代表当前数据文件的标签值聚合值。
参照附图2所示,其为默克尔哈希树的结构图,数据块A5对应存储的右值的哈希值为valueA2=H(a2),同样的可以计算得到valueA1,valueA3,valueA4。将非叶子节点用构建成二叉树,叶子节点的值依次拼接然后哈希,计算节点 A7节点中存储的哈希值为valueA7=H(valueA5,valueA6)。
虚拟映射表是一个将索引伪随机化,并且与位置信息共同存储的一种数据结构。虚拟映射表示意图如下表1所示。
表1虚拟映射表
Index |
Location |
-1201969086382881639 |
00R |
3396159355183123429 |
10R |
-8539822807454768877 |
01R |
-7685124168550293713 |
11R |
进行修改操作时,根据请求的不同,数据拥有者向云服务器发送的请求信息也有所差异。
当进行修改操作更新时,数据拥有者将数据更新请求 req={UPDATE,j,c`new,mnew}发送给云服务器,然后进行如下操作:
A1:云服务器根据接收的更新请求中的数据块索引j,在虚拟映射表中找到相应的文件块的位置信息path,根据位置信息找到相应的文件块,将待更新的文件块进行替换操作;
A2:更新默克尔哈希树,用新的标签值替换原来的标签值保存到对应叶子节点的右值当中,同时与当前节点的兄弟节点的右值进行聚合,用该聚合值对该节点的父节点的右值进行替换,以此类推一直替换到根节点为止;
A3:第三方验证者发起完整性校验。
当进行插入操作更新时,数据拥有者将数据更新请求 req={INSERT,j,c`new,mnew}发送给云服务器,然后进行如下操作:
B1:云服务器根据接收的更新请求中的索引j,在虚拟映射表中找到相应于该索引对应的文件块的位置信息path,根据此位置信息找到相应的原文件块位置,把当前位置之后的数据块依次进行后移操作,把待插入的数据块插入指定位置,同时构造一个新的节点将其右值用新的标签值进行填充,然后重建默克尔哈希树。
B2:更新虚拟映射表,从待插入位置开始,将之后的每一行数据依次后移,把新插入的文件块的索引以及位置信息插入到指定位置;
B3:第三方验证者发起完整性校验。
当进行删除操作更新时,数据拥有者将数据更新请求req={DELETE,j}发送给云服务器,然后进行如下操作:
C1:云服务器根据接收的更新请求中的索引j,在虚拟映射表中找到相应于该索引对应的文件块的位置信息path,根据此位置信息找到相应位置的文件块,把当前位置的数据块内容删除,同时删除对应叶子节点中右值的标签值,然后计算和其兄弟节点的右值的聚合值,并且替换父节点中的右值,一直替换到根节点为止。
C2:更新虚拟映射表,删除索引指向的行,删除该行,把该索引之后的行依次前移;
C3:第三方验证者发起完整性校验。
本发明中的安全性分析
结合上述方案,对本发明各个环节进行分析,说明本发明具有良好的安全性。
正确性:
无条件匿名性:因为ai是在Zq上随机生成的,所以Ri、Ri`也是在群中均匀分布的,计算出的文件块的标签值也是均匀分布的。签名者k随机选择的a、t 也是均分分布的,所以不会泄露任何有关签名者的信息。
不可伪造性:挑战者C拥有(P、aP、bP)想求出abP,这是一个CDHP问题。攻击值A向挑战者C请求预言机应答,C随机产生应答。挑战者C 给予攻击者A主公钥P
pub=bP,b为主私钥,对于C是未知的。挑战者C存储身份哈希值的请求-应答对,随机选择d
i计算
由于a、b都是未知的,因此其私钥不能得到。
重放攻击:云服务器在响应第三方验证者发出的挑战请求时,有可能将一些关键变量或者证据进行存储,并与挑战信息一一对应,当同样的挑战信息再次出现时,云服务器在不借助真实数据的情况下就可以就直接使用已经存储好的数据顺利通过验证,使验证方案失效。为避免这一安全隐患,本发明在生成的挑战信息中包含一系列随机数,云服务器做出的响应必须包含这些随机数据,使证据信息只在本次校验过程内有效,以抵御重放攻击。
替换攻击:在有些传统的数据完整性验证方案中,数据块签名中并不含有数据块索引信息,当云服务器接收证据信息进行校验时,云服务器很可能使用完好的数据块及其标签信息替换某些受损挑战块及其标签信息,第三方验证者无法有效判断接收到的证据信息是否由被挑战文件块及其标签聚合而成,从使整个校验方案失效。
针对替换攻击,本方发明在为文件块生成签名时,为每一个文件块随机生成了一个对应的随机数,并使其包含在数据块签名之中,在验证时借助这些与文件块一一对应的随机数,校验者可以快速判断出收到的证据信息是否由被挑战文件块及其标签聚合而成,同时由于引入了环签名,因此该证据信息还必须能通过环中所有成员的验证,所以能有效抵御替换攻击。
本发明的开销计算如下:
本发明提出的数据完整性校验方案可以划分为密钥生成、标签生成、挑战生成、证据生成、证据校验以及动态更新六个部分。其中密钥生成部分主要完成了根据密钥生成中心接受的数据拥有者身份ID为用户生成公钥、私钥的任务,其实质是在对应的循环群中选取随机数,公钥和私钥包含的数据个数不会随文件大小改变而改变,所以在处理不同的文件时,密钥生成阶段计算开销变化不大。
本发明的时间开销主要集中在标签生成以及动态更新阶段。
本发明中的标签生成算法不同于传统的数据完整性验证方案中的标签生成算法。
类似于传统PDP算法中的标签生成操作,存在较多幂指运算,计算复杂度较高,故计算开销较大。本方案中的标签生成阶段的计算公式为
而把验证时需要的每个环中成员的标签值交给云服务器计算,计算难度显然较低,但是由于需要为环中每个成员生成相应的身份变量,因此计算开销会有所增加,本方案针对文件块大小为100MB、200MB、300MB和400MB分别作了仿真实验,标签生成阶段的的时间开销分别为1793ms,3341ms、 4820ms和6239ms。
存储开销
这里将数据完整性方案的存储开销定义为除所上传文件外的其他数据所占存储空间的大小。下面将对数据完整校验过程中各个参与者的存储开销分别进行分析。
数据拥有者在秘钥生成阶段对私钥
其中
进行了保存,其中x∈Z
q,因此用户的存储开销为
标签生成阶段的过程中随机生成了文件块对应的随机数{b
j},1≤j≤c、{R`
i},0≤j≤n-1和 {N=a
i+a
kt},0≤i≤n-1,同时密钥生成中心上还存有环中用户的身份信息 L={ID
0、ID
1、...、ID
n-1},故所有的存储开销为 (c+n+N+length(Z
q))·length(Z
q)+length(ID)·length(L)bit。
经过上述分析可以看出,本发明额外增加了密钥生成中心,增加了存储开销,但是减少了数据拥有者本身的存储空间,使得用户端的存储开销降低,就是说本发明与传统的完整性校验方案相比通过引入密钥生成中心适当的降低了数据拥有者存储密钥对的开销,同时很大程度上增加了密钥的安全性,但是由于在标签生成阶段,数据拥有者计算生成的多个变量都需要进行保存,因此也会增大一定的存储开销。
通信开销
通信开销是指完成一次数据完整性校验所产生的数据通信开销,这里的一次数据完整性校验指的是从挑战信息生成并发送到输出校验结果的过程。
挑战生成阶段,第三方验证者生成挑战信息{{j,bj},fname},1≤j≤c,将其发送给云服务器,产生通信开销为(c·(8+length(Zq))+length(fname)·8)bit;证据生成阶段,云服务器生成证据信息{σ,μ},将证据信息返回给第三方验证者的通信开销为length(L)·(c·length(Zq)·length(m)+length(H2))·length(S)bit。
本发明对基于身份和环签名以及动态更新的数据完整性校验算法进行了全面介绍,首先阐述了新算法所应达到的算法目标以及所应抵御的几种攻击类型,然后算法的核心思想以及具体流程进行详细介绍。最后进行仿真实验,对方案中的各个阶段进行实现。
本发明的目的是:
在设计基于身份以及动态更新的数据完整性验证方案时需要考虑以下算法目标:
无条件匿名性:在本发明中利用环签名,将在标签生成阶段的各种数据均匀分布在G上,计算出的ci也是均分分布在G上,所以不会泄露任何有关签名者的信息。
不可伪造性:挑战者C拥有(P、aP、bP)想求出abP,这是一个CDHP问题。攻击值A向挑战者C请求预言机应答,C随机产生应答。挑战者C 给予攻击者A主公钥P
pub=bP,b为主私钥,对于C是未知的。挑战者C存储身份哈希值的请求-应答对,随机选择d
i计算
由于a、b都是未知的,因此其私钥不能得到。
安全性:本发明通过引入密钥生成中心,构建主公钥和主私钥的方式与数据拥有者发送的身份信息进行聚合,增加了安全性,标签生成阶段引入环签名思想,利用环签名的性质进一步增强安全性。
精确审计:算法应该有效抵御校验过程中可能会出现的重放攻击、替换攻击。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于发明型的保护范围。