公开/公告号CN106612172A
专利类型发明专利
公开/公告日2017-05-03
原文格式PDF
申请/专利权人 四川用联信息技术有限公司;
申请/专利号CN201610560815.4
申请日2016-07-15
分类号H04L9/06(20060101);H04L29/06(20060101);H04L29/08(20060101);
代理机构
代理人
地址 610054 四川省成都市成华区电子信息产业大厦1101室
入库时间 2023-06-19 02:05:15
法律状态公告日
法律状态信息
法律状态
2023-01-31
专利权的转移 IPC(主分类):H04L 9/06 专利号:ZL2016105608154 登记生效日:20230116 变更事项:专利权人 变更前权利人:李福帮 变更后权利人:中智贵阳人力资本科技有限公司 变更事项:地址 变更前权利人:100000 北京市西城区展览馆路44号 变更后权利人:550000 贵州省贵阳市南明区五里冲街道办事处花果园五里冲棚户区、危旧房、城中村改造项目V区15栋1单元(亚太中心)3201、3212室[五里冲办事处]
专利申请权、专利权的转移
2019-09-17
授权
授权
2019-09-13
专利申请权的转移 IPC(主分类):H04L9/06 登记生效日:20190826 变更前: 变更后: 申请日:20160715
专利申请权、专利权的转移
2019-07-12
专利申请权的转移 IPC(主分类):H04L9/06 登记生效日:20190625 变更前: 变更后: 申请日:20160715
专利申请权、专利权的转移
2017-05-31
实质审查的生效 IPC(主分类):H04L9/06 申请日:20160715
实质审查的生效
2017-05-03
公开
公开
查看全部
技术领域
本发明涉及云计算,云存储中数据持有性、完整性验证和篡改恢复领域。
背景技术
网络已经成为大众的一种重要生活部分,此时云存储的出现为人们对数据的存储和访问提供了极大的便利,但是数据安全问题也随之而来,数据存储在云端,脱离了数据所有者的控制,或因云服务商系统不稳定、云空间被恶意攻击,造成数据丢失和损坏。用户在不知情的情况下,或将因为数据不完整而造成各种损失,但是用户在数据上传到云端后,为了节省本地存储空间,往往会将本地数据删除,并且,某些数据非常庞大,即便用户手中有完整的数据包,也很难做到核验数据是否完整,由此数据完整性验证算法被提出,用以改善用户不能确定数据是否完整的问题,而且用户一旦发现数据被篡改后,能不能恢复则成为了重中之重。
现在,数据备份和数据副本已经发展的很成熟,用户可以随时通过数据副本或者备份的数据来取代存储的数据,但是备份和数据副本也会占用大量的存储空间,一个副本数据,即使经过压缩、加密后,数据依然是很庞大的,何况数据副本往往不止一份,某些方法中,数据存储后,实际占用的空间是原始数据的三倍以上,虽然极大的保证了数据的可恢复性,但是在造成存储空间浪费的同时,也为数据安全埋下隐患。
所以如何在保证数据能够最大限度恢复的情况下,如何保证数据的机密性、存储空间有效利用、降低系统开销成了研究的主要内容。
发明内容
针对现有技术的上述不足,本发明提出了云存储中一种可验证还原数据真实性的数据篡改恢复算法。
为解决上述问题,本发明提出了以下技术方案:
提出了一种可以验证还原文件是否真实的云存储数据验证及恢复方案,以文件哈希值作为加密体系的根密钥,对文件块进行加密,然后存储文件块的验证标签,在将F的数据块转化为矩阵,设计出完整性指示码生成函数对矩阵进行计算,得到的值进行编码,生成最终的完整性指示码,再与密文数据,密文哈希数据按照设定好的规则存储到云空间,当数据遭到破坏时候,秩序依据完整性指示码即可还原出原始数据块的内容,还原原始数据内容,由于加密的根秘钥是文件内容的哈希值,所以比较两次的哈希值可以得出还原文件的真实性。具体的步骤如下:
步骤1:数据加密。
步骤2;验证标签生成。
步骤3:数据恢复完整性指示码生成。
步骤4:数据上传。
步骤5:数据完整性验证。
步骤6:数据恢复。
步骤7:还原验证。
本发明的有益效果是:
1、本发明在保证数据最大限度恢复的情况下,保证了数据的机密性;
2、本发明在保证数据最大限度恢复的情况下,有效的利用了存储空间;
3、本发明在保证数据最大限度恢复的情况下,降低了系统开销。
具体实施方式
为解决上述问题本发明将结合以下实施步骤进行详细的分析:
为了保证数据的安全,数据将会以密文的形势上传到云端,在上传之前,先对数据进行加密。
步骤1:数据加密
(1)假设待上传的数据为F,将文件F按照长度划分为n块,即:
F={F1,F2,...,Fn}
同时,将文件F哈希,生成长度为l的哈希值,记为hl,将hl做为根密钥,对数据进行加密。
(2)密钥树初始化
由于文件划分为n个数据块,收益以定义一棵高度为p,p满足下面的条件:
2p-1≤n≤2p
密钥树包含n个叶子节点,将叶节点密钥转换为变换叶节点密钥,并作为密钥树的控制密钥。令hl为根密钥,即:key0.1=hl;根据左右孩子派生规则,逐级计算得到树节点密钥:
当keyi,j为非叶子节点密钥时,其左右节点的秘钥为:
ki+1,2j-1=fL(ki,j)=h(ki,j||i||(2j-1)
ki+1,2j=fR(ki,j)=h(ki,j||i||2j)
||表示连接字符串,此时秘钥树初始化完毕。
(3)文件块加密
keyi表示对应文件块Fi的加密秘钥,可由左右派生规则和根节点计算得来;设E为加密算法,则密文为:
步骤2:验证标签生成
文件被分成n个数据块并加密后,对每一个密文数据块进行哈希计算:
验证标签为tagi
其中i表示第i个数据块,τ表示存储的数据的节点的位置标签
步骤3:数据恢复完整性指示码生成
哈希时不可逆的,所以哈希值不能用来恢复数据,所以要生成完整性指示码,用以恢复数据,为了节省存储空间,我们要求完整性指示码在尽可能的小的情况下,还能完整的恢复数据,文件F:
F={F1,F2,...,Fn}
对于其中的文件块Fi,将其内的元素按映射到一个n*k的
对
得到的结果
初始化,根据符号概率的大小按由大到小顺序对符号进行排序
把概率最小的两个符号组成一个节点,如D和E组成节点P1。
得到节点P2、P3和P4,形成一棵“树”,其中的P4称为根节点。
从根节点P4开始到相应于每个符号的“树叶”,从上到下标上“0”(上枝)或者“1”(下枝),至于哪个为“1”哪个为“0”则无关紧要,最后的结果仅仅是分配的代码不同,而代码的平均长度是相同的。从根节点P4开始顺着树枝到每个叶子分别写出每个符号的代码。
编码完成后得到的码流即为完整性指示码,表示为
步骤4:数据上传
此时我们得到了四份数据,即
密文密钥:hl
数据密文:
验证标签
完整性指示码
用户将密文密钥自己保存,或者发布给共享数据的其他用户,然后按照τ规则将密文数据上传到存储节点中,让后将验证标签和完整性指示码各自上传到两个节点中,上传规则为:
任意标签或指示码不与对应的数据块放在一个节点上,任意指示码不存放于有验证标签的节点上,任意两个相同的标签或者指示码不存放于一个节点机架上
如此存放规则,可以最大限度的保证两份同样的验证标签或者完整性指示码不存在于一个节点和一个机架上,当一个机架崩溃,一个节点崩溃时,数据恢复不受影响。
步骤5:数据完整性验证
当数据属主怀疑数据被篡改或者遭到破坏的时候,可以发起数据完整性和持有性验证,由于密文加密用的是文件F的哈希值作为根密钥,共享用户在访问数据的时候,如果数据遭到破坏或者篡改,即使密钥正确也不能解密文件,避免获取到错误的信息,同时将信息反馈到数据属主,数据属主对文件进行验证和恢复。
数据属主随机生成挑战信息T,T=(N(i),τ(i))发送给服务器,服务器解析挑战内容为需要验证n个数据块,对应的数据块编号为i,地址信息为τ(i),服务器将按照指定信息,将对应的密文数据块和验证标签返回,对密文数据块执行哈希运算,获取验证标签tag‘,将tag‘与tagi进行对比,一致则数据时完整的,不一致则数据遭到破坏,循环计算,找出所有遭到破坏的数据块。服务器返回被破坏的数据块编号和位置信息,同时返回完整性指示码。
步骤6:数据恢复
(1)计算数据完全恢复的可能性,即服务器将所有的完整性指示码和未被遭到破坏的数据块返回给用户,然后对比计算将整合后的指示码和数据块按照编号,确定哪些数据块是可恢复的,哪些数据块不可恢复。当一个数据块破坏后,如果对应的两个完整性指示码也都缺失了,那这些数据视为不可恢复的。只有当一个数据块对应的指示码至少存在一个时候才能恢复。
(2)对码流进行解码,按照霍夫曼编码的解码方式解码
将所有Tji按照i的从小到大的顺序组合起来,Ti=T1∪T2∪,...,∪Tn,此时Ti就是数据块Fi,即:
Fi=Ti=T1∪T2∪,...,∪Tn
将所有的被破坏的数据块一一还原后,就得到了原始数据F。
步骤7:还原验证
数据还原后,如何确定是真正的还原呢?将还原后得到的数据F进行哈希,如果h(F)=hl,那就表明文件被彻底还原了,如果不相等,则说明还原失败。
机译: 用于通过数据交换设备交换数据的微处理器辅助便携式数据介质运行RSA编码算法,用于为消息创建可验证的数字签名
机译: 用于响应于输入数据而传送输出数据并提供真实性证明的智能卡设备使用操作数据来影响用于生成输出数据的算法
机译: 使用云存储和数据缓存中的数据块进行数据备份和逐步还原