高复用性的云存储数据存储验证方法及系统的制作方法

文档序号:7797098阅读:522来源:国知局
高复用性的云存储数据存储验证方法及系统的制作方法
【专利摘要】本发明公开了一种高复用性的云存储数据存储验证方法及系统,该方法包括:接收用户的数据存储验证查询请求;对当前验证次数进行混淆,获取挑战密钥序号;用挑战密钥序号替换当前验证次数,获取当前挑战密钥和验证标签;从伪随机数组中选择P-1个伪随机数,并与当前挑战密钥混合生成查询数组;服务器生成校验标签序列,并返回给客户端;客户端对校验标签序列进行过滤及将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。实施本发明的有益效果是,能以较小的计算代价获得相对高的验证可信度,文件验证标签的挑战每次均包含真实挑战参数和一系列伪随机数,使得可能的伪随机标签数量大增,避免服务器利用保存的正确签名实现重放攻击。
【专利说明】高复用性的云存储数据存储验证方法及系统
【技术领域】
[0001]本发明涉及计算机领域,更具体地说,涉及一种高复用性的云存储数据存储验证方法及系统。
【背景技术】
[0002]由于云存储系统能够以低廉的价格为企业和个人用户提供按需弹性扩展的海量数据存储管理服务,节省了用户对文件存储系统进行专门维护和管理的代价,因而受到市场的欢迎。
[0003]但是,云存储在给用户带来便利的同时,也给数据保护带来了新的挑战和威胁。由于数据存储在云端,脱离用户掌控范围,用户无法对数据进行实时监测和管理。如果云存储中的数据和文件由于黑客攻击、管理员误操作、恶意行为等被篡改或损坏,用户只能依赖于云存储系统来发现这些变化。
[0004]由于云存储系统需要检验的数据量巨大,难以及时发现数据的变化,因此,云存储系统并不完全可信。且在一些情况下,出于其他方面考虑,云服务提供商并不会通知用户这些变化。因此,用户需要有一种可信手段对保存在云存储上的数据状态进行验证,从而及时应对数据故障。
[0005]目前,云存储系统的数据存储验证方法大多基于元数据校验。用户在文件上传时为每一个文件块生成对应的元数据,在发起校验元数据和文件块内容的对应关系来检测文件是否完好。但是,此类方法实现大多基于复杂的签名算法,对客户端的计算能力要求较高,而且在上传时的元数据计算时间随文件的增长而增长。另外一种方法是通过提前为用户准备一定次数的完整性验证标签,当用户需要验证时,将挑战参数发送到服务器,服务器重新生成一个对应的验证标签,客户端通过比较标签是否一致来判断文件是否完整。这类方法通常计算难度低,简单的hash算法即可满足需求,上传准备时间短。但是,由于客户端只准备了确定数量的验证标签,一旦标签用尽,就有可能遭遇服务器的重放攻击,而无法继续验证文件状态。
[0006]云存储系统缺乏一种适用于轻量级客户端的数据存储验证方法。

【发明内容】

[0007]本发明要解决的技术问题在于,针对现有技术的上述数据存储验证方法一旦标签用尽,可能遭遇服务器的重放攻击,而无法继续验证文件状态的缺陷,提供一种高复用性的云存储数据存储验证方法及系统,实现验证过程中验证标签的复用,增大验证标签的可用性。
[0008]本发明解决其技术问题所采用的技术方案是:构造一种高复用性的云存储数据存储验证方法,包括以下步骤:
[0009]S1、为每个上传到服务器的文件设定验证参数和混淆参数,并根据单次验证可信度C和文件大小确定需要读取的文件块数;[0010]其中,验证参数包括:文件的文件名、文件大小、验证次数N、单次验证可信度C ;混淆参数包括:伪随机数组S、伪随机数组生成密钥Y、混淆度P ;
[0011]S2、接收用户的数据存储验证查询请求,并发起查询请求;
[0012]S3、对当前验证次数进行混淆,获取挑战密钥序号;
[0013]S4、用挑战密钥序号替换当前验证次数,获取当前挑战密钥和验证标签;
[0014]S5、从伪随机数组S中选择P-1个伪随机数,并与当前挑战密钥混合,以生成查询数组,并记录当前挑战密钥在查询数组中的位置;
[0015]S6、将查询数组、文件名和文件块数发送给服务器;
[0016]S7、服务器根据查询数组、文件名和文件块数生成校验标签序列,并返回给客户端;
[0017]S8、客户端对返回的校验标签序列进行过滤;
[0018]S9、客户端将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。
[0019]在一个实施例中,步骤S2具体包括:根据式(I)计算挑战密钥序号:
[0020]i=j*cur mod N(I)
[0021]式(I)中,i为挑战密钥序号,j为从伪随机数组S中随机挑选的数值,cur为当前验证次数,N为验证次数。
[0022]在一个实施例中,所述方法还包括:根据系统当前时间生成随机密钥种子K,根据随机密钥种子K生成N个随机密钥{&、K2、K3……ΚΝ}。
[0023]在一个实施例中,步骤S4中获取当前挑战密钥具体为:根据挑战密钥序号从N个随机密钥IKpKyK3……κΝ}中获取的。
[0024]在一个实施例中,步骤SI中根据单次验证可信度C和文件大小确定需要读取的文件块数的计算方法为:1- (l-l%)num=C,其中num为生成验证标签所需要的文件块数,C为单次验证可信度。
[0025]在一个实施例中,步骤S4中获取验证标签包括以下步骤:
[0026]在文件大小范围内选择num个随机位置;
[0027]从每一个随机位置开始读取长度为y字节的内容{tl、t2、t3、......tnum},不足则
补零;
[0028]将所读取的内容顺序连接,成为样本文档T=Itl I 112 I 1......1l tnum};
[0029]以Ki为密钥,计算样本文档验证标签RyRi=HMAC (Tji),其中i为挑战密钥序号;
[0030]y为预设的每个文件块的大小。
[0031 ] 在一个实施例中,步骤S9中,过滤后得到的校验标签为在校验标签序列中的位置与记录的当前挑战密钥在查询数组中的位置相同的校验标签。
[0032]一种高复用性的云存储数据存储验证系统,包括:客户端和服务器;
[0033]其中客户端包括:验证准备模块、验证发起模块、混淆模块、过滤模块、验证校验模块;混淆模块包括挑战密钥序号获取模块、替换模块、查询数组生成模块和发送模块;
[0034]服务器包括校验生成模块;
[0035] 验证准备模块,用于为每个上传到服务器的文件设定验证参数和混淆参数,以及用于根据单次验证可信度C和文件大小确定需要读取的文件块数;其中,验证参数包括:文件的文件名、文件大小、验证次数N、单次验证可信度C ;混淆参数包括:伪随机数组S、伪随机数组生成密钥Y、混淆度P ;
[0036]验证发起模块,用于接收用户的数据存储验证查询请求,并发起查询请求;
[0037]挑战密钥序号获取模块,用于在验证发起模块发起查询请求时,对当前验证次数进行混淆,获取挑战密钥序号;
[0038]替换模块,用于用挑战密钥序号替换当前验证次数,获取当前挑战密钥和验证标签;
[0039]查询数组生成模块,用于从伪随机数组S中选择P-1个伪随机数,并与当前挑战密钥混合,以生成查询数组,并记录当前挑战密钥在查询数组中的位置;
[0040]发送模块,用于将查询数组、文件名和文件块数发送给服务器;
[0041]校验生成模块,用于根据查询数组、文件名和文件块数生成校验标签序列,并返回给客户端;
[0042]过滤模块,用于对校验生成模块返回的校验标签序列进行过滤;
[0043]验证校验模块,用于将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。
[0044]在一个实施例中 ,所述客户端还包括验证维护模块,用于存储验证参数和混淆参数,以及用于更新当前验证次数。
[0045]在一个实施例中,挑战密钥序号获取模块根据式(I)计算挑战密钥序号:
[0046]i=j*cur mod N(I)
[0047]式(I)中,i为挑战密钥序号,j为从伪随机数组S中随机挑选的数值,cur为当前验证次数,N为验证次数。
[0048]实施本发明的高复用性的云存储数据存储验证方法及系统,具有以下有益效果:由于真实挑战参数混合于伪随机数组中,服务器无法确定真实挑战参数;当伪随机数组S足够大时,服务器无法确定所有可能的标签集,因此标签可持续重用,直到所有可能的标签
均出现过,可验证次数由N次扩大到次;能以较小的计算代价获得相对高的验证可信
度,文件验证标签的挑战每次均包含真实挑战参数和一系列伪随机数,使得可能的伪随机标签数量大增,避免服务器利用保存的正确签名实现重放攻击。
【专利附图】

【附图说明】
[0049]下面将结合附图及实施例对本发明作进一步说明,附图中:
[0050]图1是本发明实施例的高复用性的云存储数据存储验证方法的流程图;
[0051]图2是本发明实施例的高复用性的云存储数据存储验证系统的结构框图;
[0052]图3是本发明实施例的高复用性的云存储数据存储验证系统的客户端和服务器的交互示意图。
【具体实施方式】
[0053]为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的【具体实施方式】。[0054]参见图1为本发明实施例的高复用性的云存储数据存储验证方法的流程图。
[0055]本发明实施例的高复用性的云存储数据存储验证方法包括以下步骤:
[0056]S1、为每个上传到服务器的文件设定验证参数和混淆参数,并根据单次验证可信度C和文件大小确定需要读取的文件块数。
[0057]其中,验证参数包括:文件的文件名、文件大小、验证次数N、单次验证可信度C。混淆参数包括:伪随机数组S、伪随机数组生成密钥Y、混淆度P。
[0058]验证次数N、单次验证可信度C、伪随机数组S的大小、混淆度P、伪随机数组生成密钥Y等由用户设定。伪随机数组S是基于随机算法和伪随机数组生成密钥Y生成的。
[0059]根据单次验证可信度C和文件大小确定需要读取的文件块数包括以下步骤:若文件大小为X字节(byte),以y字节为一个文件块,则共有x/y个文件块。为了满足单次验证可信度C的要求,即1- (l_l%)num=C,其中num即为生成验证标签所需要的文件块数。
[0060]S2、接收用户的数据存储验证查询请求,并发起查询请求。
[0061]S3、对当前验证次数进行混淆,获取挑战密钥序号。
[0062]具体的,本发明实施例的高复用性的云存储数据存储验证方法还包括:根据系统当前时间生成随机密钥种子K,根据随机密钥种子K生成N个随机密钥{KpKy K3……KN}。
[0063]步骤S3具体包括:根据式(I)计算挑战密钥序号: [0064]i=j*cur mod N(I)
[0065]式(I)中,i为挑战密钥序号,j为从伪随机数组S中随机挑选的数值,cur为当前验证次数,N为验证次数。式(I)即将从伪随机数组S中随机挑选的数值j与当前验证次数cur相乘后,再与验证次数N进行取余运算,所计算出的值即为挑战密钥序号i。
[0066]S4、用挑战密钥序号(i)替换当前验证次数(cur),获取当前挑战密钥和验证标签。
[0067]其中,当前挑战密钥是根据挑战密钥序号从N个随机密钥{&、K2、K3……ΚΝ}中获取的。当前挑战密钥即为Ki, i为挑战密钥序号。
[0068]验证标签的获取过程包括:(1)在文件大小范围内选择num个随机位置。具体的,可以K1为随机密钥,为需进行数据存储验证的文件生成num个随机位置。(2)从每一个随
机位置开始读取长度为y字节的内容Itl、t2、t3、......tnum},不足则补零。(3)将所读取
的内容顺序连接,成为样本文档T={tl| |t2| 1......1 |tnum}。(4)以Ki为密钥,计算样本文
档验证标签Ri,即Ri=HMAC (T,Ki),其中i为挑战密钥序号。
[0069]S5、从伪随机数组S中选择P-1个伪随机数,并与当前挑战密钥混合,以生成查询数组Q,并记录当前挑战密钥在查询数组中的位置。
[0070]S6、将查询数组Q、文件名和文件块数num发送给服务器。
[0071]S7、服务器根据查询数组Q、文件名和文件块数num生成校验标签序列,并返回给
客户端。
[0072]具体的:(1)服务器以Q为随机密钥,为需进行数据存储验证的文件生成num个随机位置。文件的大小可根据文件名从存储服务器获得。服务器生成num个随机位置的方法与步骤SI中的生成方法相同。(2)从每一个随机位置开始读取长度为y字节的内容{tl、t2、t3、......tnum},不足则补零。(3)将所读取的内容顺序连接,成为样本文档T={tl I t2 |......tnum}。(4)以Q[u]为密钥,计算样本文档校验标签序列Ru’,即Ru,=HMAC (T,Q[u]),其中u=l、2、……P。P为混淆度。即校验标签序列Ru’包含P个检验标签。
[0073]S8、客户端对返回的校验标签序列进行过滤。具体的,过滤后得到的校验标签为在校验标签序列Ru’中的位置与记录的当前挑战密钥在查询数组Q中的位置相同的校验标签。例如,当前挑战密钥在查询数组Q中的位置为第5,则校验标签序列Ru’中的第5个标签即为过滤得到的校验标签。
[0074]S9、客户端将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。
[0075]若校验标签与验证标签的值相同,则证明验证的文件未被破坏,其在服务器的存储正常;若不相同,则证明验证的文件出现被破坏、不完整等情况。
[0076]本发明实施例的高复用性的云存储数据存储验证方法还包括,在步骤S6中进行当前验证次数(cur)的更新,即将当前验证次数cur加I,随着验证次数的增加,cur值依次增长。但是在执行步骤S4时,cur值将被挑战密钥序号i替换。此外,cur值的更新也可在其他步骤中进行(例如步骤S3中),以记录当前验次数。[0077]应理解,本发明实施例的高复用性的云存储数据存储验证方法中的步骤S1-S6由客户端执行。
[0078]参见图2为本发明实施例的高复用性的云存储数据存储验证系统的结构框图。该系统包括客户端I和服务器2。其中客户端I包括:验证准备模块11、验证维护模块12、验证发起模块13、混淆模块14、过滤模块15、验证校验模块16。服务器2包括校验生成模块21。
[0079]验证准备模块11,用于为每个上传到服务器的文件设定验证参数和混淆参数,以及用于根据单次验证可信度C和文件大小确定需要读取的文件块数及用于根据系统当前时间生成随机密钥种子K,根据随机密钥种子K生成N个随机密钥IKpK2' K3……KN}。
[0080]验证参数包括:文件的文件名、文件大小、验证次数N、单次验证可信度C。混淆参数包括:伪随机数组S、伪随机数组生成密钥Y、混淆度P。
[0081 ] 验证次数N、单次验证可信度C、伪随机数组S的大小、混淆度P、伪随机数组生成密钥Y等由用户设定。伪随机数组S是基于随机算法和伪随机数组生成密钥Y生成的。
[0082]验证准备模块11根据单次验证可信度C和文件大小确定需要读取的文件块数具体包括:若文件大小为X字节(byte),以y字节为一个文件块,则共有x/y个文件块。为了满足单次验证可信度C的要求,即1- (1-1%)_=C,其中num即为生成验证标签所需要的文件块数。
[0083]验证维护模块12,用于存储验证参数和混淆参数,以及用于更新当前验证次数。验证维护模块12对当前验证次数(cur)的更新,即将当前验证次数cur加I,随着验证次数的增加,cur值依次增长。
[0084]验证发起模块13,用于接收用户的数据存储验证查询请求,并发起查询请求。
[0085]混淆模块14包括挑战密钥序号获取模块141、替换模块142、查询数组生成模块143和发送模块144。
[0086]其中,挑战密钥序号获取模块141,用于在验证发起模块13发起查询请求时,对当前验证次数进行混淆,获取挑战密钥序号。具体的,根据上述式(I)计算挑战密钥序号。
[0087]替换模块142,用于用挑战密钥序号(i)替换当前验证次数(cur),获取当前挑战密钥和验证标签。当前挑战密钥是根据挑战密钥序号从N个随机密钥IKpK2I3……KN}中获取的。当前挑战密钥即为Ki, i为挑战密钥序号。
[0088]验证标签的获取过程包括:(1)在文件大小范围内选择num个随机位置。具体的,可以K1为随机密钥,为需进行数据存储验证的文件生成num个随机位置。(2)从每一个随
机位置开始读取长度为y字节的内容Itl、t2、t3、......tnum},不足则补零。(3)将所读取
的内容顺序连接,成为样本文档T={tl| |t2| 1......1 |tnum}。(4)以Ki为密钥,计算样本文
档验证标签Ri,即Ri=HMAC (T,Ki),其中i为挑战密钥序号。
[0089]查询数组生成模块143,用于从伪随机数组S中选择P-1个伪随机数,并与当前挑战密钥混合,以生成查询数组Q,并记录当前挑战密钥在查询数组Q中的位置。
[0090]发送模块144,用于将查询数组Q、文件名和文件块数num发送给服务器。
[0091]校验生成模块21,用于根据查询数组Q、文件名和文件块数num生成校验标签序列,并返回给客户端。具体的:(1)以Q为随机密钥,为需进行数据存储验证的文件生成num个随机位置。文件的大小可根据文件名从存储服务器获得。服务器生成num个随机位置的方法与客户端生成num的方法相同。(2)从每一个随机位置开始读取长度为y字节的
内容{tl、t2、t3、......tnum},不足则补零。(3)将所读取的内容顺序连接,成为样本文档
T=Itl I t2 1......1 I tnum}。(4)以Q[u]为密钥,计算样本文档校验标签序列Ru’,即Ru’=HMAC
(1',0[11]),其中11=1、2、……P。P为混淆度。即校验标签序列Ru’包含P个检验标签。
[0092]过滤模块15,用于对校验生成模块21返回的校验标签序列进行过滤。具体的,过滤后得到的校验标签为在校验标签序列Ru’中的位置与记录的当前挑战密钥在查询数组Q中的位置相同的校验标签。
[0093]验证校验模块16,用于将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。若校验标签与验证标签的值相同,则证明验证的文件未被破坏,其在服务器的存储正常;若不相同,则证明验证的文件出现被破坏、不完整等情况。
[0094]以下结合图3及一个具体的例子对上述本发明实施例的高复用性的云存储数据存储验证系统进行详细描述:
[0095]验证准备模块11设定用户向非可信服务器上传文件的文件名为filel,文件大小为100MB,验证次数N为1000次,单次验证可信度为C为0.9,混淆度P为4,伪随机数组S的大小为10000,伪随机数组生成密钥Y=9387862494432,根据系统当前时间生成的随机密钥种子Κ=1285572979437,根据随机密钥种子K生成N个随机密钥IK^K2' K3……ΚΝ}。
[0096]验证准备模块11根据单次验证可信度0.9和文件大小100ΜΒ确定需要读取的文件块数。具体的,文件大小为104857600字节(byte) (100MB),以16字节为一个文件块,则共有7864320个文件块。为了满足单次验证可信度0.9的要求,即1- (l-l%)num=0.9,则num=229。
[0097]验证维护模块12根据验证准备模块11的存储请求,对上述设定的参数进行存储。
[0098]当用户通过客户端发起数据存储验证查询请求时,验证发起模块13接收用户的数据存储验证查询请求,并从验证准备模块11获得相关参数后发起查询请求。挑战密钥序号获取模块141对当前验证次数cur进行混淆,获取挑战密钥序号。具体的,挑战密钥序号i=j*cur mod N,其中,j=S[207],利用伪随机数组生成密钥K与207生成,值为8736 ;当前验证次数cur=l,N=1000,由此得到i=736。替换模块142用i=736替换cur,并继续原请求,获取当前挑战密钥和验证标签。获取到的当前挑战密钥为κ736。
[0099]替换模块142获取验证标签的获取过程为:以K1为随机密钥,为需进行数据存储验证的文件生成229个随机位置;并从每一个随机位置开始读取长度为16字节的
内容{tl、t2、t3、......t229},不足则补零;将所读取的内容顺序连接,成为样本文档
T={tl| |t2| I……I |t229};以1(736为密钥,计算样本文档验证标签R736,即R736=HMAC(T,K736)。
[0100]查询数组生成模块143从伪随机数组S中选择3 (P-1)个伪随机数,并与当前挑战密钥混合,以生成查询数组Q。例如,选择出的3个伪随机数分别为S [94]、S [385]和S[787]。利用伪随机数组生成密钥K和序号(94、385、787)生成,则3个伪随机数分别为3489825427445,2654478345628,7674398282265ο K736 为 85735279849542。
[0101]查询数组生成模块143将3个伪随机数和当前挑战密钥混合后得到的查询数组Q为{S[94]、S[385]、K736、S[787]},当前挑战密钥K736在Q中的位置为3。
[0102]发送模块144将查询数组Q、文件名(name)和文件块数num发送给服务器。
[0103]服务器2的校验生成模块21根据查询数组Q、文件名和文件块数num生成校验标签序列,并返回给客户端。具体的:(1)以Q为随机密钥,为需进行数据存储验证的文件生成num (229)个随机位置;(2)从每一个随机位置开始读取长度为y字节的内容{tl、t2、t3、……t229},不足则补零;将所读取的内容顺序连接,成为样本文档T={tl I |t2| I……
|t229} ;(3)以Q[u]为密 钥,计算样本文档校验标签序列&’,即Ru’ =HMAC (T,Q[u]),其中 u=l、2、......4。
[0104]客户端I的过滤模块15对返回的校验标签序列进行过滤。
[0105]客户端I的验证校验模块16将过滤后得到的检验标签与验证表演进行比较以判断文件是否被破坏。具体的过滤模块15获取到校验标签序列中位置为3的验证标签R3’。验证校验模块16将过滤后得到的校验标签R/与验证标签R736进行比较,以判断文件是否被破坏。若校验标签R/与验证标签R736的值相同,则证明验证的文件未被破坏,其在服务器的存储正常;若不相同,则证明验证的文件出现被破坏、不完整等情况。
[0106]在本发明实施例的高复用性的云存储数据存储验证系统中,验证维护模块12起到存储和当前验证次数更新等作用。此外,本发明实施例的系统也可包括一个存储模块,用于存储各个文件的验证标签,当验证维护模块12发起存储验证标签查询维护请求时,存储模块即返回对应的文件验证标签或维护结果。
[0107]应理解,本发明的实施例中文件块数的确定也可由替换模块142进行计算,或在步骤S4中进行计算,本申请对此不作限制。
[0108]本发明实施例的高复用性的云存储数据存储验证方法及系统,可使得文件验证标签可循环使用:由于真实挑战参数混合于伪随机数组中,服务器无法确定真实挑战参数。当伪随机数组S足够大时,服务器无法确定所有可能的标签集,因此标签可持续重用,直到所
有可能的标签均出现过,可验证次数由N次扩大到次。这是由于,若没有步骤S3和
S5的混淆和混合过程,经过N次顺序挑战,服务器即可了解所有的挑战参数和标签。当引入伪随机数组S后,在服务器看来,所有可挑战的标签数目变为I S I +N,每次验证仅消耗P个标
签,因此,当次挑战后,服务器才能获得所有的挑战秘钥和标签。由此,验证次数由N次扩大到^次。
[0109]由此,在上述例子中,通过本发明实施例的高复用性的云存储数据存储验证方法使得可能的验证标签为10000+1000个,可验证至少11000/P=11000/4=2750次。而采用现有技术的方法,1000个标签只能支持验证1000次。本发明实施例的高复用性的云存储数据存储验证方法增加了验证标签可重用性。
[0110]本发明实施例的高复用性的云存储数据存储验证方法及系统可在文件上传到非可信的服务器(例如,云存储服务器)之前,根据用户持有的秘密和其他参数提前为文件生成验证标签,并生成一系列伪随机数组,同时保存和维护所有的参数;在验证文件时,用户除了指定真正的挑战参数,还从伪随机数组中选择一定数目的扰动参数,将这些参数混合在一起,向服务器发起挑战;服务器按照所有参数重新生成多个校验标签,用户仅需验证真正挑战参数对应的标签,即可判定文件状态。本发明实施例的方法及系统能以较小的计算代价获得相对高的验证可信度,文件验证标签的挑战每次均包含真实挑战参数和一系列伪随机数,使得可能的伪随机标签数量大增,避免服务器利用保存的正确签名实现重放攻击的可能性。
[0111]流程图中或在本发明的实施例中以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据 所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所述【技术领域】的技术人员所理解。
[0112]上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的【具体实施方式】,上述的【具体实施方式】仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
【权利要求】
1.一种高复用性的云存储数据存储验证方法,其特征在于,包括以下步骤: 51、为每个上传到服务器的文件设定验证参数和混淆参数,并根据单次验证可信度C和文件大小确定需要读取的文件块数; 其中,验证参数包括:文件的文件名、文件大小、验证次数N、单次验证可信度C ;混淆参数包括:伪随机数组S、伪随机数组生成密钥Y、混淆度P ; 52、接收用户的数据存储验证查询请求,并发起查询请求; 53、对当前验证次数进行混淆,获取挑战密钥序号; 54、用挑战密钥序号替换当前验证次数,获取当前挑战密钥和验证标签; 55、从伪随机数组S中选择P-1个伪随机数,并与当前挑战密钥混合,以生成查询数组,并记录当前挑战密钥在查询数组中的位置; 56、将查询数组、文件名和文件块数发送给服务器; 57、服务器根据查询数组、文件名和文件块数生成校验标签序列,并返回给客户端; 58、客户端对返回的校验标签序列进行过滤; 59、客户端将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。
2.根据权利要求1所述的高复用性的云存储数据存储验证方法,其特征在于,步骤S2具体包括:根据式(I)计算挑战密钥序号: i=j*cur mod N(I) 式(I)中,i为挑战密钥序号,j为从伪随机数组S中随机挑选的数值,cur为当前验证次数,N为验证次数。
3.根据权利要求1-2任一项所述的高复用性的云存储数据存储验证方法,其特征在于,所述方法还包括:根据系统当前时间生成随机密钥种子K,根据随机密钥种子K生成N个随机密钥IKpKyK3……κΝ}。
4.根据权利要求3所述的高复用性的云存储数据存储验证方法,其特征在于,步骤S4中获取当前挑战密钥具体为:根据挑战密钥序号从N个随机密钥IKpKyK3……KN}中获取的。
5.根据权利要求3所述的高复用性的云存储数据存储验证方法,其特征在于,步骤SI中根据单次验证可信度C和文件大小确定需要读取的文件块数的计算方法为:1_ (1-1%)num=C,其中num为生成验证标签所需要的文件块数,C为单次验证可信度。
6.根据权利要求5所述的高复用性的云存储数据存储验证方法,其特征在于,步骤S4中获取验证标签包括以下步骤: 在文件大小范围内选择num个随机位置; 从每一个随机位置开始读取长度为y字节的内容Itl、t2、t3、......tnum},不足则补零; 将所读取的内容顺序连接,成为样本文档T={tl| |t2| 1......1 I tnum}; 以Ki为密钥,计算样本文档验证标签Ri, Ri=HMAC (T,Ki),其中i为挑战密钥序号; y为预设的每个文件块的大小。
7.根据权利要求1所述的高复用性的云存储数据存储验证方法,其特征在于,步骤S9中,过滤后得到的校验标签为在校验标签序列中的位置与记录的当前挑战密钥在查询数组中的位置相同的校验标签。
8.一种高复用性的云存储数据存储验证系统,其特征在于,包括:客户端(I)和服务器(2); 其中客户端(I)包括:验证准备模块(11)、验证发起模块(13 )、混淆模块(14 )、过滤模块(15)、验证校验模块(16);混淆模块(14)包括挑战密钥序号获取模块(141)、替换模块(142)、查询数组生成模块(143)和发送模块(144); 服务器(2 )包括校验生成模块(21); 验证准备模块(11),用于为每个上传到服务器的文件设定验证参数和混淆参数,以及用于根据单次验证可信度C和文件大小确定需要读取的文件块数;其中,验证参数包括:文件的文件名、文件大小、验证次数N、单次验证可信度C ;混淆参数包括:伪随机数组S、伪随机数组生成密钥Y、混淆度P ; 验证发起模块(13),用于接收用户的数据存储验证查询请求,并发起查询请求; 挑战密钥序号获取模块(141),用于在验证发起模块(13)发起查询请求时,对当前验证次数进行混淆,获取挑战密钥序号; 替换模块(142),用于用挑战密钥序号替换当前验证次数,获取当前挑战密钥和验证标签; 查询数组生成模块(143),用于从伪随机数组S中选择P-1个伪随机数,并与当前挑战密钥混合,以生成查询数 组,并记录当前挑战密钥在查询数组中的位置; 发送模块(144 ),用于将查询数组、文件名和文件块数发送给服务器; 校验生成模块(21),用于根据查询数组、文件名和文件块数生成校验标签序列,并返回给客户端; 过滤模块(15),用于对校验生成模块(21)返回的校验标签序列进行过滤; 验证校验模块(16),用于将过滤后得到的校验标签与验证标签进行比较,以判断文件是否被破坏。
9.根据权利要求8所述的高复用性的云存储数据存储验证系统,其特征在于,所述客户端还包括验证维护模块(12),用于存储验证参数和混淆参数,以及用于更新当前验证次数。
10.根据权利要求8-9任一项所述的高复用性的云存储数据存储验证系统,其特征在于,挑战密钥序号获取模块(141)根据式(I)计算挑战密钥序号: i=j*cur mod N(I) 式(I)中,i为挑战密钥序号,j为从伪随机数组S中随机挑选的数值,cur为当前验证次数,N为验证次数。
【文档编号】H04L29/06GK103944874SQ201410054969
【公开日】2014年7月23日 申请日期:2014年2月18日 优先权日:2014年2月18日
【发明者】陈开渠, 付艳艳, 张敏, 李 昊, 洪澄, 冯登国, 王蓉, 庞妍 申请人:国家超级计算深圳中心, 中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1