一种云端数据存储完整性的证明方法与流程

文档序号:12739399阅读:来源:国知局

技术特征:

1.一种云端数据存储完整性的证明方法,其特征在于:包括如下步骤:

步骤一、用户对待上传的文件进行预处理:生成私钥、对文件分块并计算每个文件块的标签;

步骤二、用户将预处理后的文件发送给云存储服务器,本地只保存私钥;

步骤三、当需要验证云端数据存储的完整性时,用户随机选取一些文件块并向云端发起挑战;

步骤四、云端生成拥有文件块的证明并返回给用户;

步骤五、用户对云端拥有文件块的证明进行云端数据完整性验证。

2.根据权利要求1所述的一种云端数据存储完整性的证明方法,其特征在于:生成私钥的方法为:利用随机数生成器,产生两个长度为k的随机数分别作为对称密码加密密钥kenc和哈希函数的密钥kmac,其中k为安全参数,则私钥sk=(kenc,kmac)。

3.根据权利要求2所述的一种云端数据存储完整性的证明方法,其特征在于:对文件分块并计算每个文件块的标签的方法为:

(1)将文件M分割为s块{M1,M2,…,Ms},每块大小为n bit;

(2)利用随机数生成器,产生一个随机数kext作为伪随机置换函数π的参数,令:

<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>i</mi> <mn>1</mn> </msub> <mo>=</mo> <msub> <mi>&pi;</mi> <msub> <mi>k</mi> <mrow> <mi>e</mi> <mi>x</mi> <mi>t</mi> </mrow> </msub> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>i</mi> <mn>2</mn> </msub> <mo>=</mo> <msub> <mi>&pi;</mi> <msub> <mi>k</mi> <mrow> <mi>e</mi> <mi>x</mi> <mi>t</mi> </mrow> </msub> </msub> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>...</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>i</mi> <mi>l</mi> </msub> <mo>=</mo> <msub> <mi>&pi;</mi> <msub> <mi>k</mi> <mrow> <mi>e</mi> <mi>x</mi> <mi>t</mi> </mrow> </msub> </msub> <mrow> <mo>(</mo> <mi>l</mi> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> </mtr> </mtable> </mfenced>

其中π(·)为的带参数的随机置换函数,l为每个文件块抽取的比特数;每个文件块抽取{i1,i2,…,il}对应位置的比特,设抽取后的结果为{m1,m2,…,ms},记为mi=Extract(Mi),1≤i≤s;

(3)利用随机数生成器,产生一个随机数kp1f作为伪随机函数f的参数,按如下公式计算每个文件块的标签:

<mrow> <msub> <mi>&sigma;</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>f</mi> <msub> <mi>k</mi> <mrow> <mi>p</mi> <mi>r</mi> <mi>f</mi> </mrow> </msub> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <msub> <mi>m</mi> <mi>i</mi> </msub> <mo>,</mo> </mrow>

其中为按位异或运算,为带参数的、输出为l比特的伪随机函数,令文件M的标签:

<mrow> <mi>&tau;</mi> <mo>=</mo> <msub> <mi>&tau;</mi> <mn>0</mn> </msub> <mo>|</mo> <mo>|</mo> <msub> <mi>Mac</mi> <msub> <mi>k</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>c</mi> </mrow> </msub> </msub> <mrow> <mo>(</mo> <msub> <mi>&tau;</mi> <mn>0</mn> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow>

其中是密钥为kenc的对称加密算法,是密钥为kmac的哈希函数。

4.根据权利要求3所述的一种云端数据存储完整性的证明方法,其特征在于:步骤二所述用户发送给云存储服务器的预处理后的文件M*={{M1,…,MS},{σ1,…,σS},τ}。

5.根据权利要求4所述的一种云端数据存储完整性的证明方法,其特征在于:云端生成拥有文件块的证明的方法为:

(1)云存储服务器利用用户随机选择子集I按如下公式计算聚合认证码σ和聚合消息

<mrow> <mi>&sigma;</mi> <mo>=</mo> <msub> <mo>&CirclePlus;</mo> <mrow> <mi>i</mi> <mo>&Element;</mo> <mi>I</mi> </mrow> </msub> <msub> <mi>&sigma;</mi> <mi>i</mi> </msub> <mo>,</mo> <mover> <mi>M</mi> <mo>&OverBar;</mo> </mover> <mo>=</mo> <msub> <mo>&CirclePlus;</mo> <mrow> <mi>i</mi> <mo>&Element;</mo> <mi>I</mi> </mrow> </msub> <msub> <mi>M</mi> <mi>i</mi> </msub> <mo>,</mo> </mrow>

(2)则生成的拥有I对应文件块的证明

6.根据权利要求5所述的一种云端数据存储完整性的证明方法,其特征在于:用户对云端拥有文件块的证明进行云端数据完整性验证的方法为:

(1)用户利用私钥sk中的kmac验证文件标签τ,如果不满足则验证失败,返回0;否则,用户利用私钥sk中的kenc解密出kext和kp1f

(2)用户计算出{i1,i2,…,il},抽取中{i1,i2,…,il}位置对应的比特,设抽取后的结果为记为

(3)当且仅当时,用户验证服务器拥有I对应文件块并返回1。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1