基于同态加密的数据完整性验证方法技术

技术编号:28674036 阅读:13 留言:0更新日期:2021-06-02 02:50
本发明专利技术公开了一种基于同态加密的数据完整性验证方法,主要解决现有技术动态更新后验证效率下降和无法抵御重放攻击的问题。其实现方案是:1)将文件进行分块、对文件分块进行加密并上传到云服务器;2)生成验证数据块编号和辅助验证信息,打包上传到云服务器;3)云服务器根据验证数据块编号和辅助验证信息计算数据完整性签名;4)用户在本地计算明文验证签名;5)用户对比数据完整性签名和明文验证签名进行完整性判决;6)用户对存储在云服务器的文件进行动态更新,循环执行2)到5)。本发明专利技术避免了树形结构频繁更新后的不平衡问题,并通过在每次验证过程中引入随机信息,提高了抵御重放攻击的能力,可用于云存储服务协议。

【技术实现步骤摘要】
基于同态加密的数据完整性验证方法
:本专利技术属于计算机
,尤其涉及一种数据完整性验证方法,可用于云存储服务协议。
技术介绍
:目前,云计算技术迅速发展,能够有效地帮助用户节约计算资源、减少成本,因此大量的数据文件都被用户上传到云端,这意味着用户失去了对云端数据的控制权,而且存储在云服务器上的数据很容易由于各种原因丢失或被非法篡改,因此对存储在云服务器上的数据进行周期性数据完整性验证是非常必要的。同时,在上传到云端的数据文件全生命周期中,用户可能会基于自身需要对存储在云端上的文件进行增、删、改、查,数据完整性验证系统需要能够对更新后的文件仍然具备良好的验证性能。现有技术中,大部分数据完整性验证方法不能够有效地支持云端文件的各种动态操作,文献“ProvableDataPossessionatUntrustedStores”首先对数据完整性验证方案进行了形式化定义,并基于RSA同态签名设计了两个不同验证策略的PDP方案,但是该方案没有考虑云端文件动态更新后的验证策略。文献“DynamicProvableDataPossession”基于跳表和RSA树设计了支持动态操作的动态PDP方案,但是该方案引入了树形辅助数据结构进行管理并且云服务器的存储成本和计算成本均比较高。除此之外,基于树形结构的动态完整性验证方法的劣势在于经过一系列更新操作之后,树形结构可能变得不平衡,影响验证的执行效率。
技术实现思路
:本专利技术的目的在于针对上述现有技术的不足,提出一种基于同态加密的数据完整性验证方法,通过支持对文件的动态操作,省去辅助数据结构,提高验证效率,降低存储和计算成本,同时通过在每次验证过程中引入随机信息实现抵御重放攻击。为实现上述目的,本专利技术的技术方案,包括以下步骤:(1)用户将要上传的文件分为n块,并将分割的文件块加密为文件密文数据块Ci,i∈{1,2,...,n},上传到云服务器;(2)用户选择k个数据块作为验证数据块,再随机生成辅助验证信息Fw,并将该辅助验证信息加密,生成辅助验证信息密文Cw,将验证数据块编号和辅助验证信息密文Cw上传到云服务器;(3)云服务器根据验证数据块编号选择对应的文件密文数据块计算数据完整性签名L:其中,vj为对应的验证数据块编号,J为Paillier算法模数;(4)云服务器将计算出的数据完整性签名L返回给用户,用户解密云服务器返回的数据完整性签名得到L',并根据验证数据块编号将对应的明文数据块和辅助验证信息计算明文验证签名Ver:其中,为验证数据块编号对应的明文数据块;(5)将明文验证签名Ver与解密后的数据完整性签名L'进行对比:若Ver=L',则判定存储在云服务器上的数据是完整的;若Ver≠L',则判定存储在云服务器上的数据是不完整的;(6)用户对存储在云服务器上的文件进行动态更新,重复(2)至(5)。与现有技术相比,本专利技术具有如下效果:第一,本专利技术由于在传统的数据完整性验证方法的基础上去除了辅助数据结构,利用Paillier加密算法密文进行同态运算获取数据完整性签名,通过对比数据完整性签名和本地明文生成的明文验证签名判断存储在云端上的文件的完整性,避免了因用户对云端文件进行频繁更新而导致的树形辅助结构不平衡的问题,且数据完整性验证过程的执行效率不受系统状态更新的影响,使得验证过程更加高效稳定。第二,本专利技术由于在验证过程中设置了随机生成的辅助验证信息,利用辅助验证信息参与数据完整性签名的计算,能够抵御云服务器的重放攻击,提高了安全性。附图说明图1为本专利技术的实现总流程图。具体实施方式:为使本专利技术实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本专利技术实施例做进一步详细说明。在此,本专利技术的示意性实施例及其说明用于解释本专利技术,但并不作为对本专利技术的限定。参照图1,本专利技术的实现步骤如下:步骤1,用户分割文件F,将文件块进行加密并上传到云服务器。1.1)根据要上传到云服务器上的文件F的总长度lF,确定分块的长度l,计算文件分块数量将文件F分割为n个长度为l的块,并编号为:F={F1,F2,...,Fi,...,Fn},其中Fi表示第i个分块,1≤i≤n,如果Fn的长度不足,则在其末尾补0延长至长度l;1.2)用户运行Paillier算法计算出公钥和私钥,然后使用公钥将每个分割后的明文数据块加密为文件密文数据块Ci,i∈{1,2,...,n},并按照对应的明文数据块进行编号;1.3)用户将加密后的文件密文数据块上传给云服务器。步骤2,用户选择验证数据块编号、生成辅助验证信息并打包上传到云服务器。2.1)用户选择本次要验证的数据块数量k,要求1≤k≤n,随后在1到n中随机选择k个编号作为验证数据块{v1,v2,...,vk};2.2)用户设置一个长度为l的空白序列,并调用随机数发生器生成l个随机比特{0,1}l,再将{0,1}l填充进空白序列中作为随机生成的辅助验证信息Fw,使用公钥将辅助验证信息Fw加密为密文格式Cw;2.3)用户将验证数据块编号{v1,v2,...,vk}和辅助验证信息密文Cw进行打包,并上传给云服务器。步骤3,云服务器计算数据完整性签名。3.1)云服务器根据收到的验证块编号{v1,v2,...,vk}查找存储在云服务器上的密文数据块Ci,i∈{v1,v2,...,vk};3.2)云服务器根据查找到的密文数据块Ci和辅助验证信息密文Cw计算数据完整性签名L:其中,J为Paillier算法模数。步骤4,云服务器将数据完整性签名L返回给用户,用户计算明文验证签名。4.1)云服务器将计算出的数据完整性签名L返回给用户;4.2)用户查找本次验证过程对应的验证数据块Fi,i∈{v1,v2,...,vk},并根据本地保存的辅助验证信息Fw计算明文验证签名Ver:Ver=(Fw+∑Fi)modJ。步骤5,用户对云端数据的完整性进行判决。5.1)用户使用私钥解密接收到的数据完整性签名L,得到明文完整性签名L';5.2)将明文完整性签名L'与明文验证签名Ver进行逐比特对比:若Ver=L',则判定存储在云服务器上的文件F是完整的,执行步骤6;若Ver≠L',则判定存储在云服务器上的数据是不完整的,用户可以再次发起验证或重新上传文件以恢复数据的完整性,执行步骤6。步骤6,用户对存储在云端的数据进行更新,重复步骤2至步骤5。6.1)用户根据自身需求对存储在云端的文件进行更新,该更新有以下三种操作:第一种是插入操作,即用户决定在编号为a的数据块后插入一个新的数据块,其具体实现是使用公钥将要插入的明文数据块Fb加密为密文数据块Cb,将密文数据块Cb和插入位置编号a打包为插入数据申请Insert={a,Cb}并发送给云服务器,云本文档来自技高网...

【技术保护点】
1.一种基于同态加密的数据完整性验证方法,其特征在于,包括如下:/n(1)用户将要上传的文件分为n块,并将分割的文件块加密为文件密文数据块C

【技术特征摘要】
1.一种基于同态加密的数据完整性验证方法,其特征在于,包括如下:
(1)用户将要上传的文件分为n块,并将分割的文件块加密为文件密文数据块Ci,i∈{1,2,...,n},上传到云服务器;
(2)用户选择k个数据块作为验证数据块,再随机生成辅助验证信息Fw,并将该辅助验证信息加密,生成辅助验证信息密文Cw,将验证数据块编号和辅助验证信息密文Cw上传到云服务器;
(3)云服务器根据验证数据块编号选择对应的文件密文数据块计算数据完整性签名L:



其中,vj为对应的验证数据块编号,J为Paillier算法模数;
(4)云服务器将计算出的数据完整性签名L返回给用户,用户解密云服务器返回的数据完整性签名得到L',并根据验证数据块编号将对应的明文数据块和辅助验证信息计算明文验证签名Ver:



其中,为验证数据块编号对应的明文数据块;
(5)将明文验证签名Ver与解密后的数据完整性签名L'进行对比:
若Ver=L',则判定存储在云服务器上的数据是完整的,执行(6);
若Ver≠L',则判定存储在云服务器上的数据是不完整的,用户再次发起验证或重新上传文件,执行(6);
(6)用户对存储在云服务器上的文件进行动态更新,重复(2)至(5)。


2.根据权利要求1所述的方法,其特征在于,(1)中所述的用户将要上传的文件分为n块,...

【专利技术属性】
技术研发人员:马文平张广谦
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1