法律状态公告日
法律状态信息
法律状态
2019-07-09
授权
授权
2017-02-01
实质审查的生效 IPC(主分类):H04L9/32 申请日:20160816
实质审查的生效
2017-01-04
公开
公开
技术领域
本发明涉及加密技术领域,特别是涉及一种应用基于格的线性同态签名的云存储数据的动态验证方法。
背景技术
云存储是云计算的一项基础服务,云存储提供商为用户提供大量的存储空间,用户可以随时随地访问云端数据,其在为用户提供便利的同时,也带来了新的安全隐患。用户将本地数据上传至云端服务器之后,失去对数据的直接控制,恶意云端服务提供商可能出于好奇或者其他不为人知的目的窥探或篡改用户的数据,因此,云端数据的完整性及可用性成为亟待解决的问题。基于传统密码方案的云端验证协议一般规约到某个困难问题的难解性,比如,基于RSA签名算法的验证协议,基于Diffie-Hellman困难问题的双线性映射的验证协议。伴随着科学技术的发展,使得量子计算机的问世成为可能。量子计算机可以在多项式时间内解决上述困难问题,从而基于传统密码方案的数据验证协议将不再安全。
根据目前的研究结果,对格上困难问题还没有有效的破解算法,基于格的困难问题构造的密码方案,是当前密码体制研究的一个重要方向,根据文献中格的定义,基于格的验证协议有以下优点:格在代数上是一个加法交换群,且格密码方案大都使用整数格,格上的线性运算与指数运算相比效率有很大提高;基于格的困难问题有现成的规约证明,保证格密码的安全性。Gentry,Peikert和Vaikuntanathan设计的签名方案(一下简称为GPV签名)作为标准数字签名方案,成为许多格公钥密码算法的基本工具。F.Wang使用GPV签名构建了二元域上基于格的线性同态签名方案(LHS),H.Liu在LHS的基础上又提出了云存储公有验证方案。然而,此方案不支持数据动态验证,在云存储验证中,由于时常会有文件或数据的插入、修改或删除,数据动态验证就显格外重要。
发明内容
本发明的目的在于克服现有技术的不足,提供一种应用基于格的线性同态签名的云存储数据的动态验证方法,使用基于格的线性同态签名、默克尔哈希树以及随机预言模型下安全抗碰撞哈希函数,构造了新的云存储数据动态验证方法。
本发明的目的是通过以下技术方案来实现的:应用基于格的线性同态签名的云存储数据的动态验证方法,包括数据完整性验证,所述数据完整性验证包括:
密钥生成:利用格上的陷门基生成算法生成格上的线性同态签名算法的公钥和私钥;
数据块签名:将文件划分为多个数据块,利用格上的线性同态签名算法对各数据块进行签名,然后基于默克尔哈希树求出根节点的值,并对根节点的值签名,最后将数据块、数据块 的签名以及根节点的签名发送给云端服务器;
第三方挑战:将公钥和文件的标识符提供给第三方审计,第三方审计向云端服务器发起挑战验证云端服务器中的数据块是否变化;
服务器证明:云端服务器根据第三方审计发起的挑战提供相应证明;
第三方验证:第三方审计根据所述云端服务器提供的证明判断云端服务器中的数据块是否完整,并将验证结果反馈给用户。
所述密钥生成的方式如下:
(pk,sk)←TrapGen(1n)
>
式中,TrqpGen(1n)为格上的陷门基生成算法,pk为公钥,sk为私钥,
所述数据块签名包括:
将文件F分割为l个数据块,F={u1,u2,…,ul},其中
计算系数
将系数αj与每个数据块求内积
调用SamplePre(A,T,σ,Vi)生成数据块的签名ei,1≤i≤l,令签名集合Φ={e1,e2,…,el},>
根据签名集合Φ构建默克尔哈希树,默克尔哈希树的叶子节点由签名ei按照预设顺序排列而成;非叶子节点的值由其子节点使用抗碰撞哈希函数
用户将{F,Φ,id,Sig(hR)}发送给云端服务器CSP,并将文件F、签名集合Φ和签名Sig(hR)从本地删除。
所述数据块签名还包括采用SamplePre(A,T,σ,id)对文件F的标识符id进行签名。
所述第三方挑战包括:
用户将审计请求AuditQuest=(Sig(id)||id)发送给第三方审计,其中Sig(id)表示对标识符id的签名;
第三方审计接收到审计请求AuditQuest=(Sig(id)||id)后,对签名Sig(id)进行验证,若所述签名Sig(id)成立,则第三方审计任意选取子集
所述服务器证明包括:
云端服务器接收到第三方审计发来的挑战chal={id,ci,i}i∈I后,取矩阵B=(α1,α2,…,αn),αj=H2(id||j),1≤j≤n;定义BCT=0(modq),云端服务器计算得到>云端服务器随机选取
云端服务器根据chal={id,ci,i}i∈I计算抽样数据块聚合之后的数据:
云端服务器将证明
所述第三方验证包括:
第三方审计接收到来自云端服务器的证明
若不成立则说明云端服务器存在不完整的数据块,返回0;
若成立,则,计算系数
所述动态验证方法还包括修改数据:
用户将修改数据块
云端服务器执行多项式时间算法ExeUpdate(F,Φ,Update),云端服务器根据修改数据块
用户根据(Ωi,ei)求出对应默克尔哈希树MTH的根节点的值h′R,判断A·Sig(hR)=h′R和>是否均成立,若A·Sig(hR)≠h′R,则说明修改数据之前的数据块不完整;若成立,则用户根据签名
所述动态验证方法还包括插入数据:
用户利用基于格的线性同态签名算法得到插入数据块*'的签名e*′,并将更新信息Update={I,i,u*',e*'}发送给云端服务器;
云端服务器执行多项式时间算法ExeUpdate(F,Φ,Update),将插入数据块u*'存储在云端服务器,将签名e*'放在签名ei之后,得到文件
用户根据(Ωi,ei)求出默克尔哈希树的根节点的值h″R,判断A·Sig(hR)=h″R和
所述动态验证方法还包括删除数据:
用户发送更新信息Update={D,i}给云端服务器,云端服务器执行多项式时间算法 ExeUpdate(F,Φ,Update),将存储在云端服务器上的数据块ui及其签名ei删除,得到文件F={u1,u2,…,ui-1,ui+1,…,ul},签名集合Φ*"={e1,e2,…,ei-1,ei+1,…,el},计算新的根节点的值
用户根据(Ωi,ei)求出默克尔哈希树的根节点的值h″′R,判断A·Sig(hR)=h″′R和
本发明的有益效果是:
(1)本发明中基于格的线性同态签名保证可以抵抗未来量子计算机发起的量子攻击,抗碰撞哈希函数保证用户数据的不可伪造性,格上的线性运算保证运算效率较传统中的指数运算有很大提高;
(2)本发明支持云端动态操作验证,比如文件或数据的修改、插入、删除;
(3)支持公有审计,在借助第三方审计进行验证的同时,还能达到隐私保护的目的。
附图说明
图1为本发明的一个框架示意图;
图2为本发明中数据完整性验证的一个实施例的流程示意图;
图3为本发明中修改数据的一个实施例的示意图;
图4为本发明中插入数据的一个实施例的示意图;
图5为本发明中删除数据的一个实施例的示意图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,用户将数据上传至云端服务器,由于用户的软硬件设施、时间以及计算能力等方面的局限性,无法做到随时随地验证上传至云端服务器的数据的完整性,因而借助第三方审计(Third Party Auditor,TPA)来完成验证。用户想第三方审计发送数据完整性审计请求,第三方审计根据用户的请求向云端服务器(CSP)发送挑战从而代替用户进行验证,最后再将验证结果反馈给用户。
实施例一
如图2所示,应用基于格的线性同态签名的云存储数据的动态验证方法,包括数据完整性验证,所述数据完整性验证包括:
S01.密钥生成:利用格上的陷门基生成算法生成格上的线性同态签名算法的公钥和私钥。
密钥生成的方式如下:
(pk,sk)←TrapGen(1n)
>
式中,TrqpGen(1n)为格上的陷门基生成算法,pk为公钥,sk为私钥,
S02.数据块签名:将文件划分为多个数据块,利用格上的线性同态签名算法对各数据块进行签名,然后基于默克尔哈希树求出根节点的值,并对根节点的值签名,最后将数据块、数据块的签名以及根节点的签名发送给云端服务器。
所述数据块签名包括:
S021.将文件F分割为l个数据块,F={u1,u2,…,ul},其中
S022.计算系数
S023.将系数αj与每个数据块求内积
S024.调用SamplePre(A,T,σ,Vi)生成数据块的签名ei,1≤i≤l,令签名集合Φ={e1,e2,…,el}, S025.根据签名集合Φ构建默克尔哈希树(MHT),默克尔哈希树的叶子节点由签名ei按照预设顺序排列而成;非叶子节点的值由其子节点使用抗碰撞哈希函数 S026.用户将{F,Φ,id,Sig(hR)}发送给云端服务器CSP,并将文件F、签名集合Φ和签名Sig(hR)从本地删除。 所述数据块签名还包括采用SamplePre(A,T,σ,id)对文件F的标识符id进行签名,签名算法采用SamplePre(A,T,σ,id)是为了在第三方挑战时告知第三方审计请求来自那一个用户以及所要验证的文件。 S03.第三方挑战:将公钥和文件的标识符提供给第三方审计,第三方审计向云端服务器发起挑战验证云端服务器中的数据块是否变化。 所述第三方挑战包括:用户将审计请求AuditQuest=(Sig(id)||id)(AuditQuest是用户发给第三方审计的审计请求,内容包括要审计的文件的id以及对id的签名;对id再次签名是为了告诉第三方审计这个审计请求来源于特定的用户。第三方审计拥有用户X的公钥,如果id的签名验证不通过,说明请求不是来自于用户X,就不接受请求受理,这是为了避免其他用户冒充用户X)发送给第三方审计,其中Sig(id)表示对标识符id的签名;第三方审计接收到审计请求AuditQuest=(Sig(id)||id)后,对签名Sig(id)进行验证,若所述签名Sig(id)不成立,则第三方审计不接收请求,要求用户重发;若所述签名Sig(id)成立,则第三方审计任意选取子集 S04.服务器证明:云端服务器根据第三方审计发起的挑战提供相应证明。 所述服务器证明包括:云端服务器接收到第三方审计发来的挑战chal={id,ci,i}i∈I后,取矩阵B=(α1,α2,…,αn),αj=H2(id||j),1≤j≤n;定义BCT=0(modq),云端服务器计算得到 云端服务器根据chal={id,ci,i}i∈I计算抽样数据块聚合之后的数据: 云端服务器将证明 S05.第三方验证:第三方审计根据所述云端服务器提供的证明判断云端服务器中的数据块是否完整,并将验证结果反馈给用户。 所述第三方验证包括:第三方审计接收到来自云端服务器的证明 若不成立则说明云端服务器存在不完整的数据块,返回0; 若成立,则,计算系数 BLS:是一种签名的缩写,全称:Lattice-based Linear Signature,原数据块的线性组合构成的聚合数据;这个聚合数据的签名我的获取方法:因为签名是线性同态的,那么聚合后的签名就可以是原数据块的签名的线性组合。 Vcom,j=hαj(ucom)=<αj,ucom>表示
实施例二
在实施例一的基础上,本实施例中,所述动态验证方法还包括修改数据:以M表示进行数据修改的请求信息,以用户要将数据块ui修改为
云端服务器执行多项式时间算法ExeUpdate(F,Φ,Update),云端服务器根据修改数据块 用户根据(Ωi,ei)求出对应默克尔哈希树MTH的根节点的值h′R,判断A·Sig(hR)=h′R和 在图3中,更改第3个数据块的值,依次计算
实施例三
在实施例一的基础上,本实施例中,所述动态验证方法还包括修改数据:以I表示进行数据插入的请求信息,以用户在第i个数据块之后添加数据块u*'为例。
所述动态验证方法还包括插入数据:用户利用基于格的线性同态签名算法得到插入数据块u*'的签名e*',并将更新信息Update={I,i,u*',e*'}发送给云端服务器;
云端服务器执行多项式时间算法ExeUpdate(F,Φ,Update),将插入数据块u*'存储在云端服务器,将签名e*'放在签名ei之后,得到文件
用户根据(Ωi,ei)求出默克尔哈希树的根节点的值h″R,判断A·Sig(hR)=h″R和
在图4中,在第4个节点处出入新的数据块e*',则节点hg=H1(e4||e*′),依次计算,求出
实施例四
在实施例一的基础上,本实施例中,所述动态验证方法还包括修改数据:以D表示进行数据删除的请求信息。
所述动态验证方法还包括删除数据:用户发送更新信息Update={D,i}给云端服务器,云端服务器执行多项式时间算法ExeUpdate(F,Φ,Update),将存储在云端服务器上的数据块ui及其签名ei删除,得到文件F={u1,u2,…,ui-1,ui+1,…,ul},签名集合Φ*"={e1,e2,…,ei-1,ei+1,…,el},计算新的根节点的值
用户根据(Ωi,ei)求出默克尔哈希树的根节点的值h″′R,判断A·Sig(hR)=h″′R和
在图中,将第3个数据块删除,只需要取hd=e4即可。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
机译: 云系统下具有多个签名者的基于格的线性同态签名的方法和装置
机译: 云系统下具有多个签名者的基于格的线性同态签名的方法和装置
机译: 一种基于生物数据识别的电子文档验证方法和一种基于生物数据完整性的电子签名方法,该方法将电子文档的原始文本与标记,验证码和标记一起使用,并以此为目的进行验证,验证,确认服务器和计算机