云计算中一种基于同态性的共享数据验证算法的制作方法

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

本发明涉及云计算中云存储共享数据的验证更新领域。



背景技术:

随着云计算的发展,云存储已经深入人心;数据属主选择将数据存储在云空间,然后设置不同的权限,共享给有权的用户浏览和使用。为了保证数据的安全,往往选择将数据加密后存储,同样,为了保证用户获得的数据是真实有效的,需要设置数据持有性和完整性的验证,以避免数据遭到非法攻击而对用户造成损失。

基于上述原因,数据验证技术在一定程度上得到了发展,学者也提出了一些验证方法,包括数据冗余验证,完整性指示码验证等一系列验证方法,这些方法都有局限性,一是验证次数有限,多次验证后服务器可能掌握数据的完整信息,二是不支持公开验证,很难解决云用户与云供应商因数据完整性问题产生的纠纷。数据的更新也是一个难点,特别是在数据共享情况下,用户有不同的权限,能访问到的信息不一样,既不能全局验证,又不能不验证;数据属主若是每次更新都重新给每一位用户发送验证信息无疑是非常繁杂的,系统开销大、效果不好。

同态,是从一个代数结构到另一个代数结构的映射,它保持所有相关的结构不变;列入同态加密,数据属主将数据同态加密后,发送给某机构进行一些列计算,然后将计算结果返回数据属主,数据属主在解密后得到的信息与用原始数据进行操作后得到的信息一致,换句话说就是某个机构解决了数据属主的问题,虽然它并不知道问题是什么,将同态性用在数据的验证上,可以使用少量特定的数据块进行数据的完整性检测,而无须对所有的数据块进行检测,降低了通信开销和计算开销,对于任意两个数据块的标签信可以由它们各自的标签信息生成。



技术实现要素:

针对现有技术的以上所述不足,本发明提出了云计算中一种基于同态性的共享数据验证算法。

针对以上所述方法,本发明提出了以下技术方案:

利用同态性计算生成秘钥和文件的验证标签,然后依照验证标签的同态性,随机选择文件块进行验证;数据同态性,决定了验证过程不需要接触到数据原文还能完成数据的验证。同时,生成了文件的状态信息表,用于支持文件的动态更新。其具体步骤如下:

步骤1:秘钥生成。

步骤2:同态验证标签生成。

步骤3:状态表构建。

步骤4:挑战信息生成。

步骤5:挑战响应。

步骤6:完整性验证。

步骤7:数据更新。

本发明的有益效果是:

1、本发明所述的方法具有较高的安全性,数据同态性,决定了验证过程不需要接触到数据原文还能完成数据的验证,所以数据是可以进行无限次的验证二不用担心验证次数过多导致服务器知晓文件信息;

2、整个计算要求书数据较少,节省流量和计算开销。

具体实施方式

云计算中一种基于同态性的共享数据验证算法,主要是有7个大步骤组成,包括生成秘钥,同态验证标签生成、状态表生成、挑战、挑战响应、证据验证、数据更新,整个文件F上传到云端之前,为了数据的机密性,可以上传加密后的文件。以下按照验证流程阐述每一步的具体实施方式。

步骤1:秘钥生成

首先,对文件进行预处理,假设数据属主的共享文件为F,包含n个子文件,每个子文件被划分为k个数据块即:

F=(F1,F2,...,Fi,...,Fn)

Fi=(Fi1,Fi2,...,Fij,...,Fik)

其中,1≤i≤n,1≤j≤k。所以Fij表示第i个子文件的第j个数据块。

其次,随机生成两个不相等的大素数p,q,计算N=p×q,并随机选取一个与互质的整数e,即然后令:

公钥PK=(N,e)

私钥SK=(p,q)

公钥用于生成验证标签,私钥由数据属主保存。

步骤2:同态验证标签生成

第i个子文件的第j个数据块表示为Tagij,在本发明方法中,

其中,1≤i≤n,1≤j≤k,H(*)表示哈希函数,H(Fij)表示对数据块Fij进行哈希计算,f(*)表示伪随机函数,fi(j)表示对每一个文件块和子文件生成一个伪随机数。

所以,子文件Fi的验证指纹可以表示为Tagij的集合,其中1≤i≤n,1≤j≤k。即:

步骤3:状态表构建

状态表(S)主要是用于记录数据更新操作的,主要对象是组织子文件Fi;整个状态表设置为3列,第一列为BN,表示子文件的物理序号,第二列为SN,表示更新操作的插入(删除、修改)顺序,第三列为FB,记录子文件Fi的。

步骤4:挑战信息生成

经过上述处理后,得到文件的秘钥、状态表、标签信息,将这三份信息可以上传到云空间,当用户在访问数据的时候,对文件的完整性进行验证。

首先,用户随机生成一个系数λ,1≤λ≤n;然后用户将系数λ发送到云服务商,云服务商根据系数找到对应的λ个子文件,然后根据子文件包含的数据块的信息,计算出子文件的验证标签信息Tagm,m∈(1,2,...,λ)。

然后,云服务商在生成一个随机数r∈(1,2k-1),挑战信息为:Chal=(r,e,PK,Fm,Fmj)。将挑战信息发送给云存储空间。

步骤5:挑战响应

云空间受到挑战信息Chal=(r,k,PK,Fm,Fmj)后,计算er=ermod(N),并计算输出验证信息:

步骤6:完整性验证

用户计算

然后计算:

Tag″==Tag′

如果成立,则验证通过,如果不成立则返回验证错误信息;表示存储在云中的数据块被篡改或者删除了。

步骤7:数据更新

数据的更新主要在于更新用户存储的状态信息表,以及云服务器上存储的相应的标签信息。数据的更新主要包含三种操作:

(1)插入:在指定数据块后面插入新的数据块;

(2)修改:对指定的数据块进行修改;

(3)删除:删除指定的数据块。

当向云存储服务器中第i个数据块后插入一个新的数据块t时,新数据块的物理序号BN为i+1,插入顺序SN为数据块中最大的SN值加1。首先把新的数据块Ft分成基本块Ft,j,然后根据其对应的标签信息tagt,j计算数据块标签信息tagt,并关联数据块Ft和标签信息tagt,最后更新状态信息表。

当用户要修改云存储服务器中的第i个数据块时,首先取得第i个数据块Fi、Fi′,对新的数据块Fi′进行预处理操作后计算生成数据块标签信息tagi′;把第i个节点下的数据块Fi和标签信息Fi更新为新tagi′,并关联tagi′,最后更新状态信息表。

当用户要删除存储在服务器中的第i个数据块时,查询状态信息表,取得第i个数据块Fi,删除第i个节点和对应的数据块Fi,以及关联的标签信息Fi,其后续节点的BN值全都减1,SN值保持不变,然后更新状态信息表。

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