云存储中基于二次加密的数据验证和数据恢复算法的制作方法

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

本发明涉及云计算、云存储、数据安全、数据完整性和持有性验证、篡改数据恢复领域。



背景技术:

用户将数据存放在云空间中,节省了本地存储空间,方便了访问,实现了数据随时随地共享,但是数据上传后,脱离了数据属主的控制,如果数据发生异变,或许就会带来灾难性的影响。所以如何保证云空间内数据的安全,如何确定云空间内的数据是否还是真实有效的,如果数据不真实了,如何恢复数据就成了研究的热点。

现有的数据验证技术主要是对数据进行持有性和真实性的验证,将数据通过一系列计算后获得数据的验证标签,然后存储起来,在主动认为数据可能遭到破坏时进行验证。这样不仅计算复杂,而且系统开销大,不能完全避免数据篡改带来的损失;同时在数据恢复方面,一般都是采用副本或者备份的方式进行存储,大幅度增加空间占用。

为解决以上问题,本发明提出一种基于二次加密的数据验证和恢复算法,算法中将数据验证过程融入二次解密过程中,数据在每次访问的时候都会被动进行完整性验证,确保数据在每次访问的时候都是完整有效的。



技术实现要素:

针对现有技术的上述不足,本发明提出了云存储中基于二次加密的数据验证和数据恢复算法。

为解决上述问题,提出了以下技术方案:

本发明提出一种云存储中基于二次加密的数据恢复方案,首先对数据分块后进行第一次加密,采用不对称加密技术,并生成文件的哈希值,然后用原文件哈希值作为随机一个密文数据块二次加密的秘钥,然后在用其哈希值作为下一个密文数据块的秘钥进行加密,并生成秘钥和密文数据块的对应信息,将数据的完整性和持有性验证融合到数据访问的解密运算中,如果数据被篡改,则无法解密获得第一次加密的密文,即使能够解密,最后验证文件的哈希值来确定是否是需要恢复的数据。然后定义数据恢复标签算法生成数据的恢复标签,用于恢复原始数据。具体步骤如下:

步骤1:数据第一次加密。

步骤2:密文数据再次加密。

步骤3:数据恢复标签生成。

步骤4:数据上传。

步骤5:数据访问和验证。

步骤6:数据恢复。

本发明的的有益效果是:

1、采用二次加密技术,将数据验证融入解密过程中,减少了计算的开销和验证的复杂性,每一次访问都会验证数据的完整性和持有性,防止用户被错误的数据误导造成损失;

2、恢复标签占用存储空间小,恢复简单而准确。

具体实施方式

步骤1:数据第一次加密

数据在上传到云空间之前,为了数据的安全,都会将数据加密后再进行上传,机密算法有很多,在本发明中,采用不对称加密:

数据F,将其分块,表示为:F=(F1,F2,...,Fn),用RSA算法对数据块一次加密,加密公钥为keypk,私钥为keysk,加密后得到的密文数据:

步骤2:密文数据再次加密

数据的二次加密,是将数据的验证过程融入加密过程中,过程如下:

(1)将原始数据F进行哈希运算,得到文件的哈希值hF(或者叫数字签名),为了方便计算在本方法中,将哈希值长度设定为8位。

(2)对密文数据块也进行哈希运算,得到密文块的哈希值

(3)在随机抽取密文数据块及其对应的哈希值

(4)在本方案采用DES或者其他的对称加密算法对数据块,进行加密,加密的秘钥设定为key1,令key1=hF,也就是说让文件F哈希后的到的哈希值hF这个字符串作为初始秘钥,用对称加密的方法对数据块加密,加密后得到密文数据快表示为并记录key1和j的对应关系。

(5)在随机抽取另一个密文数据块及其对应的哈希值用作为加密的秘钥key2,对数据块进行加密得到密文数据块并记录key2与p的对应关系。

(6)重复执行步骤(5),直到CF中所有的数据块都加密完成,完成后得到所有的二次加密的密文为:

同时得到的还有1≤i≤n对应的秘钥keyq(q∈{i}),将所有对应的秘钥建立成一个集合S={keyj},生成i与j的对应关系τ,τ=(i,j),也就是说记录数据块i的哈希值作为数据块j的加密秘钥,而不用记录秘钥的数值。

需要注意的是,在所有的中,有一的哈希值未被作为二次加密的秘钥使用。

步骤3:数据恢复标签生成

数据在云空间遭到损坏或者破坏后,想要恢复数据,就需要在上传时额外存储多余的数据信息,或者说是数据备份、副本,那么如何采用较小的空间即可存储可以独立并完全恢复原始数据?在本发明中,用冗余编码的办法,设计了如下生成数据恢复标签的算法,为了保证存储数据的安全性和绕过两次数据解密,所以选择对第一次加密后的密文数据:进行处理,生成恢复标签:

设用于存储恢复标签的节点数目为m,每个节点上存储文件块的个数为α,定义一个m×a的矩阵A,矩阵中的数据为矩阵A=Nn×αMn×d,矩阵Nn×a为编码矩阵;矩阵Mn×d表示待存储数据的信息矩阵,其中的元素包含了密文数据的数据包。

式中矩阵Nn×α=[Γ ΛΓ],Γ是一个n×α的矩阵,Λ是一个n×n的对角矩阵,并且:N中任意行线性无关,Γ中任意行线性无关,Λ中对角元素不相同,根据这三个条件构造出N矩阵为止;M为信息矩阵,

S1、S2都是α×α的方阵,且各自三角的个信息位上都存放数据块的信息,在恢复时候,主要是利用矩阵的对称性。

计算得到Ai

Ai中的数据是计算后得到的恢复标签数据,即是求解的数据块恢复标签。

步骤4:数据上传

为了保证在有节点遭到破坏时候不至于损失更多数据,所以我们在上传时候按照一定规则进行上传,首先,将数据上传到云存储的节点中,再将Ai上传到云空间中任意两个节点上,要求一个几点最多只能存放一个Ai,并且不能存放相同的两个Ai不能存放于同一个机架上。这样的存储规则最大限度的防止数据因为节点或机架遭到破坏而造成的损失。用户保存第一次加密的私钥keysk和原始文件的哈希值hF、τ=(i,j)。

步骤5:数据访问和验证

用户在访问数据的时候,向服务器发出访问请求,服务器按顺序将下载到本地,然后执行解密,按照秘钥对应信息τ找出第一块需要解密的数据块进行解密,解密秘钥为hF,然后得到第一个数据块然后哈希生成用于解密第二个数据块,一直计算下去直到所有的数据块都被解密,然后用户在利用keysk对密文数据块进行解密即可得到原始文件。

(1)数据验证

在本方法中数据不需要进行完整性验证,或者说验证已经融合在第一次解密中,如果某个数据块缺失,则无法利用其哈希值对下一个数据进行解密,如果数据块中信息被修改,那么其哈希值转化来的密钥也无法解密下一个数据块,如果解密失败,返回提示信息;用户便知道数据已经遭到破坏。

(2)持有性证明

用户在利用keysk对密文数据块进行解密即可得到原始文件后,对解密得到的文件哈洗一次,并与存储的hF进行对比,如果两者相等,则所下载的数据确实为所需要的数据,如果不相等,则说明数据为伪造的。

步骤6:数据恢复

当用户解密失败或者解密得到的数据并非自己的数据的时候,认为数据遭到了篡改和破坏,此时需要对数据进行恢复。恢复方法为:

从存储恢复标签中的节点中下载需要恢复的数据块对应的恢复标签Ai,由S1、S2矩阵的对称性开始进行计算

右乘ΓT后得到将其拆解成两个矩阵,拆解方式为:

由于S1、S2是对称的,P、Q也是对称的,于是得到:P+ΛQ,这个矩阵中第(i,j)项元素为Pi,jiQi,j,P、Q对称的,所以

Pi,jiQi,j=Qi,jiPi,j

Λ总得元素互不相同,于是可以解除Pi,j和Qi,j,所以可以得到矩阵P中第i行

后面的行为:根据Γ中线性无关,可以得到

式中,组编是可逆矩阵,于是可以解出同理可以解出然后就可以从矩阵中分离出的值,将所有得到的用keysk解密,即可得到原始数据块Fi,然后组合起来就是文件F,此时可以再次计算新得到问价的哈希值,与原来的哈希值对比,一致,则说明数据完全恢复了,不一致,则需要进行检查云空间是否遭到破坏。

在所有的数据软恢复中,并不是所有情况都能完全恢复数据的,本发明方法在保证计算简单,系统开销小的情况下,尽量提升数据恢复的可能性。

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