发明内容
本发明的目的是为了解决云端数据安全性的问题,提出了一种基于无证书且含隐私保护功能的云端数据完整性审计方法。
本发明的技术方案是:一种基于无证书且含隐私保护功能的云端数据完整性审计方法包括以下步骤:
S1:对密钥生成中心进行系统初始化,生成系统参数和主密钥;
S2:根据主密钥,利用系统参数为用户生成部分密钥;
S3:基于部分密钥,通过用户设定秘密值并秘密保存;
S4:通过用户根据秘密值设置公钥;
S5:基于公钥,将用户的文件发送至云服务器进行持久存储;
S6:通过验证者将需要检验完整性的文件根据随机抽样策略生成挑战信息,并发送至云服务器;
S7:利用云服务器,根据生成的挑战信息生成数据完整性的证据返回给验证者;
S8:根据数据完整性的证据判断云端数据完整性是否受损,完成云端数据完整性的审计。
本发明的有益效果是:本发明的云端数据完整性审计方法具有安全和高效的优势;利用无证书密码体制设计,克服了证书管理与密钥托管的问题;利用双线性映射的性质,采用对数加密的方式将云服务器生成的数据持有的证明加密,确保在审计过程中用户的数据隐私信息不被第三方验证者获取。本发明采用随机抽取的方式,避免了需要将整份文件全部下载进行验证,减轻了通信量,并且在审计过程中实现了隐私保护,安全性高,可有效解决面向云存储的数据完整性检测问题。
进一步地,步骤S1包括以下子步骤:
S11:利用密钥生成中心选择两个q阶循环群,即第一循环群G1和第二循环群G2;
S12:利用密钥生成中心选择第一循环群G1上的第一独立生成元P0、第二独立生成元P1和双线性映射e:G1×G1→G2;
S13:基于两个独立生成元和双线性映射,利用密钥生成中心选择第一安全哈希函数h和第二安全哈希函数H;
S14:基于第一安全哈希函数h和第二安全哈希函数H,利用密钥生成中心选择第一随机数
作为主密钥,其中Z
q *为有限域;
S15:根据第一随机数s计算系统公钥Ppub,其计算公式为:
Ppub=s·P0
其中,s表示第一随机数,P0表示第一独立生成元;
S16:保存第一随机数s并公开系统参数params,其表达式为params={G1,G2,q,P0,P1,e,h,H,Ppub},完成系统初始化。
上述进一步方案的有益效果是:在本发明中,对密钥生成中心进行系统初始化,有利于后续步骤的进行。在步骤S11中,q是一个大小为160比特的大素数;在步骤S13中,第一安全哈希函数
表示将任意长度的01比特串映射成有限域
中元素的散列运算,第二安全哈希函数H():{0,1}
*→G
1表示将任意长度的01比特串映射成循环群G
1中元素的散列运算。
进一步地,步骤S2包括以下子步骤:
S21:利用密钥生成中心获取用户的公开身份标识IDU;
S22:基于用户的公开身份标识,利用密钥生成中心选择第二随机数
其中Z
q *为有限域;
S23:根据第二随机数rU和第一独立生成元P0计算第一部分密钥RU;
S24:根据用户的公开身份标识IDU和第一部分密钥RU计算中间参数hU;
S25:根据第一随机数s、中间参数hU和第二随机数rU计算第二部分密钥sU;
S26:利用密钥生成中心将第一部分密钥RU和第二部分密钥sU发送给用户。
上述进一步方案的有益效果是:在本发明中,每个用户的身份标识都是唯一且公开的,任何人都可以获取。密钥生成中心获取用户的身份标识后可为其生成部分密钥。
进一步地,步骤S23中,第一部分密钥RU的计算公式为:
RU=rU·P0
其中,rU表示第二随机数,P0表示第一独立生成元;
步骤S24中,中间参数hU的计算公式为:
hU=h(IDU,RU)
其中,h()表示第一安全哈希函数运算,IDU表示用户的公开身份标识,RU表示第一部分密钥;
步骤S25中,第二部分密钥sU的计算公式为:
sU=s·hU+rUmodq
其中,s表示第一随机数,hU表示中间参数,rU表示第二随机数,mod表示求余运算,q表示循环群阶数。
上述进一步方案的有益效果是:在本发明中,利用公式可计算出中间参数,中间参数与每个用户的身份标识绑定。
进一步地,步骤S3中,用户选择第三随机数xU∈Zq *作为秘密值,并秘密保存,其中Zq *为有限域。
上述进一步方案的有益效果是:在本发明中,用户可以选择随机数作为秘密值并进行秘密保存,其安全性高。
进一步地,步骤S4包括以下子步骤:
S41:利用用户根据秘密值计算公开参数XU,其计算公式为:
XU=xU·P0
其中,xU表示第三随机数,P0表示第一独立生成元;
S42:根据公开参数XU生成公钥pkU,其生成公式为:
pkU={XU,RU}
其中,XU表示公开参数,RU表示第一部分密钥。
上述进一步方案的有益效果是:在本发明中,用户可根据秘密值计算其公钥。
进一步地,步骤S5包括以下子步骤:
S51:将用户的文件F分为n个数据块{m1,m2,...,mn};
S52:利用用户计算每个数据块mi的标签Ti,其计算公式为:
Ti=(sU+xU)(miP1+H(name||i))
其中,sU表示第二部分密钥,xU表示第三随机数,P1表示第二独立生成元,name为文件F的唯一标识,i代表数据块mi的索引,i=1,2,...,n;
S53:将所有数据块及标签的集合{name,{mi,Ti}i∈[1,n]}发送至云服务器进行持久存储。
上述进一步方案的有益效果是:在本发明中,当用户想将需存储的文件上传至云服务器时,则将文件分为多个数据块,并为每个数据块生成对应的标签,最后将所有数据块及其标签发送至云服务器进行持久存储。
进一步地,步骤S6包括以下子步骤:
S61:通过验证者从数据块的索引集合{1,2,...,n}中随机选择c个元素组成挑战索引集合J,c=1,2,...,n;
S62:利用验证者为挑战索引集合中的每个索引i∈J选择对应的第四随机数并构成随机数集合
其中Z
q *为有限域;
S63:通过验证者选择第五随机数
其中Z
q *为有限域;
S64:根据第五随机数计算第一挑战参数R0和第二挑战参数R1,其计算公式分别为:
R0=w·P0
R1=w·P1
其中,w表示第五随机数,P0表示第一独立生成元,P1表示第二独立生成元;
S65:利用验证者将集合{J,V,R0,R1}作为挑战信息发送至云服务器。
上述进一步方案的有益效果是:在本发明中,当需要检验存储在云服务器上的文件完整性时,验证者利用随机抽样的策略生成挑战信息并发送给云服务器。
进一步地,步骤S7包括以下子步骤:
步骤S7包括以下子步骤:
S71:利用云服务器和用户的公开身份标识计算中间参数hU和数据中间参数QU,其计算公式分别为:
hU=h(IDU,RU)
QU=XU+hU·Ppub+RU
其中,h()表示第一安全哈希函数运算,IDU表示用户的公开身份标识,RU表示第一部分密钥,XU表示公开参数,Ppub表示系统公钥,hU表示中间参数;
S72:根据中间参数和数据中间参数计算响应证据P,其计算公式为:
其中,e()表示双线性映射运算,vi表示随机数集合V中的元素,i表示数据块mi的索引,J表示挑战索引集合,Ti表示每个数据块mi的标签,R0表示第一挑战参数,R1表示第二挑战参数,QU表示数据中间参数,i=1,2,...,n;
S73:利用云服务器将响应证据P作为数据完整性的证据返回给验证者。
上述进一步方案的有益效果是:在本发明中,云服务器根据挑战信息找到对应的数据块及其标签,并生成数据可持有的证据作为响应发送给验证者。
进一步地,步骤S8包括以下子步骤:
S81:通过验证者计算中间参数hU和数据中间参数QU,其计算公式分别为:
hU=h(IDU,RU)
QU=XU+hU·Ppub+RU
其中,h()表示第一安全哈希函数运算,IDU表示用户的公开身份标识,RU表示第一部分密钥,XU表示公开参数,Ppub表示系统公钥;
S82:通过验证者判断等式
是否成立,若成立则表示云端的数据保存完好,否则表示云端的数据至少有一个数据块已受损。
上述进一步方案的有益效果是:在本发明中,验证者收到云服务器返回的信息后对云端数据的完整性进行判断,完成云端数据的完整性审计。
具体实施方式
下面结合附图对本发明的实施例作进一步的说明。
如图1所示,本发明提供了一种基于无证书且含隐私保护功能的云端数据完整性审计方法,包括以下步骤:
S1:对密钥生成中心进行系统初始化,生成系统参数和主密钥;
S2:根据主密钥,利用系统参数为用户生成部分密钥;
S3:基于部分密钥,通过用户设定秘密值并秘密保存;
S4:通过用户根据秘密值设置公钥;
S5:基于公钥,将用户的文件发送至云服务器进行持久存储;
S6:通过验证者将需要检验完整性的文件根据随机抽样策略生成挑战信息,并发送至云服务器;
S7:利用云服务器,根据生成的挑战信息生成数据完整性的证据返回给验证者;
S8:根据数据完整性的证据判断云端数据完整性是否受损,完成云端数据完整性的审计。
在本发明实施例中,如图1所示,步骤S1包括以下子步骤:
S11:利用密钥生成中心选择两个q阶循环群,即第一循环群G1和第二循环群G2;
S12:利用密钥生成中心选择第一循环群G1上的第一独立生成元P0、第二独立生成元P1和双线性映射e:G1×G1→G2;
S13:基于两个独立生成元和双线性映射,利用密钥生成中心选择第一安全哈希函数h和第二安全哈希函数H;
S14:基于第一安全哈希函数h和第二安全哈希函数H,利用密钥生成中心选择第一随机数
作为主密钥,其中Z
q *为有限域;
S15:根据第一随机数s计算系统公钥Ppub,其计算公式为:
Ppub=s·P0
其中,s表示第一随机数,P0表示第一独立生成元;
S16:保存第一随机数s并公开系统参数params,其表达式为params={G1,G2,q,P0,P1,e,h,H,Ppub},完成系统初始化。
在本发明中,对密钥生成中心进行系统初始化,有利于后续步骤的进行。在步骤S11中,q是一个大小为160比特的大素数;在步骤S13中,第一安全哈希函数
表示将任意长度的01比特串映射成有限域
中元素的散列运算,第二安全哈希函数H():{0,1}
*→G
1表示将任意长度的01比特串映射成循环群G
1中元素的散列运算。
在本发明实施例中,如图1所示,步骤S2包括以下子步骤:
S21:利用密钥生成中心获取用户的公开身份标识IDU;
S22:基于用户的公开身份标识,利用密钥生成中心选择第二随机数
其中Z
q *为有限域;
S23:根据第二随机数rU和第一独立生成元P0计算第一部分密钥RU;
S24:根据用户的公开身份标识IDU和第一部分密钥RU计算中间参数hU;
S25:根据第一随机数s、中间参数hU和第二随机数rU计算第二部分密钥sU;
S26:利用密钥生成中心将第一部分密钥RU和第二部分密钥sU发送给用户。
在本发明中,每个用户的身份标识都是唯一且公开的,任何人都可以获取。密钥生成中心获取用户的身份标识后可为其生成部分密钥。
在本发明实施例中,如图1所示,步骤S23中,第一部分密钥RU的计算公式为:
RU=rU·P0
其中,rU表示第二随机数,P0表示第一独立生成元;
步骤S24中,中间参数hU的计算公式为:
hU=h(IDU,RU)
其中,h()表示第一安全哈希函数运算,IDU表示用户的公开身份标识,RU表示第一部分密钥;
步骤S25中,第二部分密钥sU的计算公式为:
sU=s·hU+rUmodq
其中,s表示第一随机数,hU表示中间参数,rU表示第二随机数,mod表示求余运算,q表示循环群阶数。
在本发明中,利用公式可计算出中间参数,中间参数与每个用户的身份标识绑定。
在本发明实施例中,如图1所示,步骤S3中,用户选择第三随机数
作为秘密值,并秘密保存,其中Z
q *为有限域。在本发明中,用户可以选择随机数作为秘密值并进行秘密保存,其安全性高。
在本发明实施例中,如图1所示,步骤S4包括以下子步骤:
S41:利用用户根据秘密值计算公开参数XU,其计算公式为:
XU=xU·P0
其中,xU表示第三随机数,P0表示第一独立生成元;
S42:根据公开参数XU生成公钥pkU,其生成公式为:
pkU={XU,RU}
其中,XU表示公开参数,RU表示第一部分密钥。
在本发明中,用户可根据秘密值计算其公钥。
在本发明实施例中,如图1所示,步骤S5包括以下子步骤:
S51:将用户的文件F分为n个数据块{m1,m2,...,mn};
S52:利用用户计算每个数据块mi的标签Ti,其计算公式为:
Ti=(sU+xU)(miP1+H(name||i))
其中,sU表示第二部分密钥,xU表示第三随机数,P1表示第二独立生成元,name为文件F的唯一标识,i代表数据块mi的索引,i=1,2,…,n;
S53:将所有数据块及标签的集合{name,{mi,Ti}i∈[1,n]}发送至云服务器进行持久存储。
在本发明中,当用户想将需存储的文件上传至云服务器时,则将文件分为多个数据块,并为每个数据块生成对应的标签,最后将所有数据块及其标签发送至云服务器进行持久存储。
在本发明实施例中,如图1所示,步骤S6包括以下子步骤:
S61:通过验证者从数据块的索引集合{1,2,...,n}中随机选择c个元素组成挑战索引集合J,c=1,2,…,n;
S62:利用验证者为挑战索引集合中的每个索引i∈J选择对应的第四随机数并构成随机数集合
其中Z
q *为有限域;
S63:通过验证者选择第五随机数
其中Z
q *为有限域;
S64:根据第五随机数计算第一挑战参数R0和第二挑战参数R1,其计算公式分别为:
R0=w·P0
R1=w·P1
其中,w表示第五随机数,P0表示第一独立生成元,P1表示第二独立生成元;
S65:利用验证者将集合{J,V,R0,R1}作为挑战信息发送至云服务器。
在本发明中,当需要检验存储在云服务器上的文件完整性时,验证者利用随机抽样的策略生成挑战信息并发送给云服务器。验证文件完整性时,随机抽取一定数目的数据块进行验证。若F完整性受损,则抽取的数目为460时,就能以99%的概率检测出文件受损,若验证通过表明文件极大概率保存完好,若验证失败表明至少有一个数据块被损坏了。
在步骤S6中,两次选择随机数的目的不同。第一次选择的随机数v
i是为了给挑战索引集合J中的每个索引匹配一个随机数,该随机数是用来与对应索引的数据块及其标签进行线性运算,即
和
第一次选择的随机数w是为了计算第一挑战参数R
0和第二挑战参数R
1。
在本发明实施例中,如图1所示,步骤S7包括以下子步骤:
S71:利用云服务器和用户的公开身份标识计算中间参数hU和数据中间参数QU,其计算公式分别为:
hU=h(IDU,RU)
QU=XU+hU·Ppub+RU
其中,h()表示第一安全哈希函数运算,IDU表示用户的公开身份标识,RU表示第一部分密钥,XU表示公开参数,Ppub表示系统公钥,hU表示中间参数;
S72:根据中间参数和数据中间参数计算响应证据P,其计算公式为:
其中,e()表示双线性映射运算,vi表示随机数集合V中的元素,i表示数据块mi的索引,J表示挑战索引集合,Ti表示每个数据块mi的标签,R0表示第一挑战参数,R1表示第二挑战参数,QU表示数据中间参数,i=1,2,...,n;
S73:利用云服务器将响应证据P作为数据完整性的证据返回给验证者。
在本发明中,云服务器根据挑战信息找到对应的数据块及其标签,并生成数据可持有的证据作为响应发送给验证者。
在本发明实施例中,如图1所示,步骤S8包括以下子步骤:
S81:通过验证者计算中间参数hU和数据中间参数QU,其计算公式分别为:
hU=h(IDU,RU)
QU=XU+hU·Ppub+RU
其中,h()表示第一安全哈希函数运算,IDU表示用户的公开身份标识,RU表示第一部分密钥,XU表示公开参数,Ppub表示系统公钥;
S82:通过验证者判断等式
是否成立,若成立则表示云端的数据保存完好,否则表示云端的数据至少有一个数据块已受损。
在本发明中,验证者收到云服务器返回的信息后对云端数据的完整性进行判断,完成云端数据的完整性审计。
下面对中间参数进行反复计算的原因进行说明。中间参数是不同实体在不同阶段进行的。首先是密钥生成中心为用户生成部分密钥时需要计算该参数;然后是云服务器在证据生成阶段时要计算此参数;最后是验证者验证证据时需要计算此参数。该参数可作为不同阶段的一个中间参数,因为该参数和数据中间参数QU与用户身份信息绑定的,因此不同实体在计算过程中就能够知道是对用户公开身份标识IDU的文件进行操作的,即每个实体都需要确保自己是对用户公开身份标识的文件操作,所以每个阶段都需要计算。
本发明的工作原理及过程为:首先,密钥生成中心进行系统初始化,生成系统参数以及主密钥;密钥生成中心再利用用户公开的身份标识为其生成部分密钥;然后再设置秘密值和公钥;当用户想要上传文件至云服务器时,则将文件分成若干个数据块,并为每个数据块生成对应的标签,最后将所有数据块及其标签发送至云服务器进行持久存储;当需要检验存储在云服务器上的文件完整性时,验证者利用随机抽样的策略生成挑战信息并发送给云服务器;云服务器根据挑战信息找到对应的数据块及其标签,并生成数据可持有的证据作为响应发送给验证者;最后,验证者收到云服务器返回的信息后进行云端数据完整性的审计判断。
本发明的有益效果为:本发明的云端数据完整性审计方法具有安全和高效的优势;利用无证书密码体制设计,克服了证书管理与密钥托管的问题;利用双线性映射的性质,采用对数加密的方式将云服务器生成的数据持有的证明加密,确保在审计过程中用户的数据隐私信息不被第三方验证者获取。本发明采用随机抽取的方式,避免了需要将整份文件全部下载进行验证,减轻了通信量,并且在审计过程中实现了隐私保护,安全性高,可有效解决面向云存储的数据完整性检测问题。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。