一种基于全同态加密的云环境数据完整性验证方法与流程

文档序号:16199592发布日期:2018-12-08 06:28阅读:354来源:国知局
一种基于全同态加密的云环境数据完整性验证方法与流程

本发明涉及信息安全技术领域,更具体地说,涉及一种基于全同态加密的云环境数据完整性验证方法。

背景技术

本质上,在大数据应用中的数据是动态的,如监视数据,互联网数据等。而事实上,除了一些大的静态数据,如图书馆和电子档案等,在大的数据应用中的数据一直在进行不断的更新操作。在许多应用中,数据更新是非常频繁的,如社交网络和业务交易。因此,它是非常重要的云安全机制,如一个公共审计方案,来有效地支持动态数据。安全问题主要涉及三个方面:完整性、保密性及可用性。针对完整性,公共审计或审计云数据即从外部的组织验证数据完整性,近年来已成为被广泛调查研究的问题。由于用户接触不到存储在云存储服务器(css)上的数据,不管声称服务器端的机制如何地强大,要求对客户,数据使用者或是一个第三方审计者的审计是非常有必要的。所以针对上述问题归纳并总结近年来的相关工作,提出可能解决上述安全问题的公开解决方案,改进原有的算法,并提出了一种新的数据完整性验证方案。

现有的数据完整性方法外包数据存储的完整性验证已经引起了广泛的研究兴趣。julesandkalisk提出了可追溯证明的概念以及它的第一个模型。但是,他们的方案只适用于静态数据存储,如归档或库。在同一年,ateniese等人提出了一个类似的名为“可证明的数据占有”模型。他们的方案提供无块验证,即验证者可以通过验证一个他们称之为同态验证标签(hvt)或同态线性认证(hlas)的预先计算好的文件标签的组合来验证部分外包文件的完整性。shachamandwaters提出了一种改进的无状态验证por模型。erway等人提出了第一个可以支持完全动态数据更新验证pdp方案。用一个改进的认证数据结构来验证更新成为后来pdp以及por工作中支持可验证更新的普遍方法。他们使用的是基于等级的认证跳表(rasl)ads。然而,他们的框架不支持公开审计和可变大小的文件块。为了支持更新验证,他们使用了另一种称为merkle哈希树的ads。然而,他们对ads的使用是不完美的;在没有正确的块索引验证的情况下当一个挑战块遭到损坏,一个恶意的服务器可以通过计算其他块的有效证明来欺骗客户。综上所述,现有的云存储去重方案依然存在很大安全隐患,特别是密钥的安全性是开放的问题。另外,针对不同的pow证明方案,如何保证其与密钥体系相适应,并且具有高效性,仍然是需要考虑的问题。

现有的关于数据完整性验证方案,还存在以下不足:

1.只能进行有限次数据完整性验证;

2.大部分数据完整性验证方案是基于公钥加密技术,其计算开销太大;

3.有些方案不支持公开性验证;

4.有些方案不适用于云存储海量数据服务模式问题。

基于全同态加密的云环境数据完整性验证方法是指针对云平台上数据安全性保障展开研究,该方法首先采用同态加密的方法生成同态标签;其次,利用同态标签对数据进行远程数完整性验证;再者,采用混合数据动态操作的分析方法对加密后数据进行动态操作;最后进行安全性分析。仿真结果表明,本技术方案不仅能高效地支持用户多粒度的动态操作,而且能够减轻用户执行动态操作过程和审计者执行远程数据完整性验证过程的通信开销。



技术实现要素:

有鉴于此,为解决上述现有技术的不足,本发明的目的在于提供一种基于全同态加密的云环境数据完整性验证方法,逻辑紧密,效果显著,采用全同态加密算法和混合数据动态数据操作算法分别进行数据加密、安全性验证和性能优化,达到对云平台上存储数据安全性验证的目的。不仅能高效地支持用户多粒度的动态操作,而且能够减轻用户执行动态操作过程和审计者执行远程数据完整性验证过程的通信开销。

为实现上述目的,本发明所采用的技术方案是:

一种基于全同态加密的云环境数据完整性验证方法,包括以下步骤:

步骤1、初始化参数:由用户和云存储服务器协商产生一组双方共享的参数;

步骤2、初始化秘钥:用户在初始化秘钥后将公钥公开,私钥则由用户秘密保存;

步骤3、生成同态标签:用户在将文件上传到云存储服务器之前,首先按照一定大小对文件进行分块,之后用户在本地通过计算产生同态标签,一个文件块对应一个标签,文件块和用户的私钥将作为输入,同态标签则是对应的输出;

步骤4、存储文件和标签:在产生同态标签后,用户将对文件本身和标签进行存储管理,用户将文件本身移动到云端进行在线存储,移动完成后删除本地的文件副本以释放本地的存储空间,同态标签存储在用户本地或者使用对称加密算法进行加密后上传到云存储服务器中进行保存;

步骤5、用户发起验证挑战:用户在本地产生若干随机数,构造挑战消息,并将该消息传输给服务器;

步骤6、产生完整性证据:服务器解析用户发送的挑战消息,读取对应的文件块,计算完整性证据的算法包括3个输入:文件块、挑战信息和步骤1得到的参数,计算过程的输出则是文件块的完整性证据,服务器将产生的完整性证据返回到挑战发起者;

步骤7、验证完整性证据:用户接收到完整性证据后对其进行合法性验证,该步骤中使用的算法包括3个输入:完整性证据、同态标签和用户公钥,输出则是一个代表完整性证据是否有效的布尔值。

进一步的,该验证方法包括diffie-hellman体制、rsa体制和双线性对等若干具有同态性质的算法。

进一步的,该验证方法用到的安全模型,包括以下步骤:

a1、初始化:挑战者运行初始化算法,输入相关安全参数k、λp、λq以及m、s,得到具有同态性质的密钥k和私钥sk,同时把公钥传给对手,公钥为:keygen(1k,λp,λq,m,s)→(k,sk),其中,m为消息扇区数目,s为随机种子;

a2、阶段1:这一阶段是由数据所有者执行,以生成文件的标记,输入同态密钥k、私钥sk以及文件f,得到用于表示每个块的标记的顺序集合的输出标签集t:taggen(k,sk,f)→t;

a3、挑战:数据所有者执行该算法以生成质疑信息,它以被挑战的块计数c作为输入,并输出挑战chall,其表达式为:challenge(c)→chall;

a4、猜测:css执行该算法生成完整性验证p,它输入文件f、标签集t和质疑集chall,并输出验证p,其表达式为:proofgen(f,t,chall)→p;

a5、证明:数据所有者执行该算法,使用css返回的验证p检查文件的完整性,输入同态密钥k、私钥sk、挑战chall以及验证p,如果p正确则输出1,否则p错误则输出0,其表达式为:verify(k,sk,chall,p)→{1,0}。

进一步的,步骤1-7均以数据块作为最小单位进行。

进一步的,该验证方法还包括混合数据动态数据操作方法,该操作方法包括三个概率多项式时间算法,具体包括以下子步骤:

b1、prepareupdate(pk,sk,m')→info:由用户执行的生成更新请求算法,用户根据需求,输入公钥pk、私钥sk、新的数据信息m',输出更新请求信息info,更新请求中包括更新的数据信息,以及操作类型modify,insert或delete分别表示修改、插入或删除操作;

b2、performupdate(info,f,φ)→{f',φ',p'}:由云存储服务器css执行的更新算法,输入接收到的更新请求info、保存的用户数据f和元数据φ,输出更新后的数据集合f'、新的元数据φ'、css执行更新操作的证据p';

b3、verifyupdate(pk,p')→{accept,reject}:由第三方审计员执行的验证更新操作的算法,输入用户的公钥pk和css返回的更新证据p',若验证通过,则输出accept;否则,验证不通过,则输出reject。

本发明的有益效果是:

本发明一种基于全同态加密的云环境数据完整性验证方法,逻辑紧密,效果显著,采用全同态加密算法和混合数据动态数据操作算法分别进行数据加密、安全性验证和性能优化,达到对云平台上存储数据安全性验证的目的。该验证方法首先采用全同态加密的方法生成同态标签;其次,利用同态标签对数据进行远程数完整性验证;再者,采用混合数据动态操作的分析方法对加密后数据进行动态操作;最后进行安全性分析。不仅能高效地支持用户多粒度的动态操作,而且能够减轻用户执行动态操作过程和审计者执行远程数据完整性验证过程的通信开销。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的方法流程图;

图2为混合数据动态数据操作方法中对数据块的修改操作原理框图;

图3为混合数据动态数据操作方法中对数据块的插入操作原理框图;

图4为混合数据动态数据操作方法中对数据块的删除操作原理框图。

具体实施方式

下面给出具体实施例,对本发明的技术方案作进一步清楚、完整、详细地说明。本实施例是以本发明技术方案为前提的最佳实施例,但本发明的保护范围不限于下述的实施例。

本发明在实际实施的过程中,云存储服务器在此过程中向用户发送的是经过计算得到的完整性证据,而无需包含文件或者文件的子集,用户在收到完整性证明后,在本地进行验证计算,根据本地计算得出的结果判断本次验证的目标数据块在云端是否保持完整性。diffie-hellman体制、rsa体制和双线性对是该类协议中常见的具有同态性质的算法。

如图1所示,一种基于全同态加密的云环境数据完整性验证方法,包括以下步骤:

步骤1、初始化参数:由用户和云存储服务器协商产生一组双方共享的参数;

步骤2、初始化秘钥:用户在初始化秘钥后将公钥公开,私钥则由用户秘密保存;

步骤3、生成同态标签:用户在将文件上传到云存储服务器之前,首先按照一定大小对文件进行分块,之后用户在本地通过计算产生同态标签,一个文件块对应一个标签,文件块和用户的私钥将作为输入,同态标签则是对应的输出;

步骤4、存储文件和标签:在产生同态标签后,用户将对文件本身和标签进行存储管理,用户将文件本身移动到云端进行在线存储,移动完成后删除本地的文件副本以释放本地的存储空间,同态标签存储在用户本地或者使用对称加密算法进行加密后上传到云存储服务器中进行保存;

步骤5、用户发起验证挑战:用户在本地产生若干随机数,构造挑战消息,并将该消息传输给服务器;

步骤6、产生完整性证据:服务器解析用户发送的挑战消息,读取对应的文件块,计算完整性证据的算法包括3个输入:文件块、挑战信息和步骤1得到的参数,计算过程的输出则是文件块的完整性证据,服务器将产生的完整性证据返回到挑战发起者;

步骤7、验证完整性证据:用户接收到完整性证据后对其进行合法性验证,该步骤中使用的算法包括3个输入:完整性证据、同态标签和用户公钥,输出则是一个代表完整性证据是否有效的布尔值。

进一步的,本发明的验证方法首先采用全同态加密的方法生成同态标签;其次,利用同态标签对数据进行远程数完整性验证;再者,采用混合数据动态操作的分析方法对加密后数据进行动态操作;最后进行安全性分析。不仅能高效地支持用户多粒度的动态操作,而且能够减轻用户执行动态操作过程和审计者执行远程数据完整性验证过程的通信开销。

进一步的,该验证方法包括diffie-hellman体制、rsa体制和双线性对等若干具有同态性质的算法。这些算法是常见的具有同态性质的算法。

进一步的,该验证方法用到的安全模型,包括以下步骤:

a1、初始化:挑战者运行初始化算法,输入相关安全参数k、λp、λq以及m、s,得到具有同态性质的密钥k和私钥sk,同时把公钥传给对手,公钥为:keygen(1k,λp,λq,m,s)→(k,sk),其中,m为消息扇区数目,s为随机种子;

a2、阶段1:这一阶段是由数据所有者执行,以生成文件的标记,输入同态密钥k、私钥sk以及文件f,得到用于表示每个块的标记的顺序集合的输出标签集t:taggen(k,sk,f)→t;

a3、挑战:数据所有者执行该算法以生成质疑信息,它以被挑战的块计数c作为输入,并输出挑战chall,其表达式为:challenge(c)→chall;

a4、猜测:css执行该算法生成完整性验证p,它输入文件f、标签集t和质疑集chall,并输出验证p,其表达式为:proofgen(f,t,chall)→p;

a5、证明:数据所有者执行该算法,使用css返回的验证p检查文件的完整性,输入同态密钥k、私钥sk、挑战chall以及验证p,如果p正确则输出1,否则p错误则输出0,其表达式为:verify(k,sk,chall,p)→{1,0}。

进一步的,该安全模型的具体实施过程如下:

将文件分块存储,在后期标签生成、证据验证等阶段都是以数据块为最小单位进行。在初始化阶段,主要生成一系列初始化参数用作哈希函数的生成,利用全同态加密函数进行加密,算法keygen(λp,λq,m,s)→k得到同态密钥在标签生成阶段,客户端使用伪随机数生成器产生一系列伪随机数,然后将文件块与伪随机数相乘得到标签tag。客户端将文件块bi、tag以及p、q发送至服务器,客户端保存生成元g、哈希参数g以及伪随机数生成器使用的种子seed。在挑战阶段,客户端使用伪随机数生成器生成n个随即挑战块发给服务器。在证据生成阶段,服务器计算出数据块与标签相应的证据bc和tc,并将bc和tc返回客户端。在证据验证阶段,客户端用种子seed重新生成相应的伪随机数,验证服务器返回的tc是否是客户端指定的tc。同时验证了此tc是否对应正确的bc。最后,对此验证方案进行安全性分析。在挑战阶段,挑战者随机生成k个挑战块发给a,a生成挑战块的完整性验证p,若p通过了验证,则认为a完成了一次成功的欺骗。假设a删除了挑战者的数据块,从而将任意数据块及其对应的标签返回给挑战者,此时,虽然能够验证其返回的bc与tc是正确对应的,但由于a不知道构造标签使用的随机数,因此挑战者只需要将收到的数据块进行同态哈希后,用与生成标签相同的种子生成伪随机数后重新构造标签,并与a返回的标签进行比较,就能验证a返回的数据块与标签是否是挑战者指定的。

将文件f表示成一个m×n的矩阵,矩阵中的每个单元都是zp中的元素。对m的选择保证每一个元素都小于因此小于q。如下公式所示:

此时,f的第j列仅仅与文件f第j个消息块相关,写成bj=(b1,j,l,bm,j),因此对于2个文件块的加法运算只需要将相应的列向量直接相加来实现。也就是说,将文件的第i块和第j块相加,只需计算公式如下所示:

bi+bj=(bi,i,+bi,j,l,bm,i+bm,j)modq。

进一步的,步骤1-7均以数据块作为最小单位进行。

进一步的,该验证方法还包括混合数据动态数据操作方法,是指对文件的动态操作主要包括文件块的修改、删除和任意位置的插入等,在本技术方案中,当文件发生变化后,需要使用文件所有者的私钥对文件的变动授权,因此在本技术方案中,仅持有私钥的实体能够对文件产生合法的动态操作。

在实际应用中,用户不仅需将大量数据存储在云端,并且可能随时需要对远程数据进行更新。为了满足用户的需求,许多云存储应用都支持用户随时随地更新数据。用户根据数据的特点,可选择档案型的静态存储服务和业务性的动态存储服务。因此,确保用户数据的完整性,不仅包含静态数据的完整性验证,还需验证服务器是否正确更新了用户的数据。由于用户端计算资源有限,网络通信代价高昂,频繁地下载整个数据文件然后进行动态更新是不可行的。为了节约成本,减少网络通信开销,用户的数据更新操作以及对动态更新的验证工作都应该无需取回整个数据文件。简而言之,支持动态更新的数据完整性验证机制是指,服务器按照用户要求更新数据,包括修改、插入和删除操作,然后返回执行了更新操作的证据。用户或第三方审计员验证证据的正确性,判断服务器更新是否完成,同时也能在任何其他时候验证存储在服务器中的数据的完整性。因此,支持数据动态更新的完整性验证方法,相较于静态方案,应增加以下三个概率多项式时间算法。

即该操作方法包括三个概率多项式时间算法,具体包括以下子步骤:

b1、prepareupdate(pk,sk,m')→info:由用户执行的生成更新请求算法,用户根据需求,输入公钥pk、私钥sk、新的数据信息m',输出更新请求信息info,更新请求中包括更新的数据信息,以及操作类型modify,insert或delete分别表示修改、插入或删除操作;

b2、performupdate(info,f,φ)→{f',φ',p'}:由云存储服务器css执行的更新算法,输入接收到的更新请求info、保存的用户数据f和元数据φ,输出更新后的数据集合f'、新的元数据φ'、css执行更新操作的证据p';

b3、verifyupdate(pk,p')→{accept,reject}:由第三方审计员执行的验证更新操作的算法,输入用户的公钥pk和css返回的更新证据p',若验证通过,则输出accept;否则,验证不通过,则输出reject。

如图2-4所示为本发明的混合数据动态数据操作方法中对数据块的修改、插入、删除操作的原理框图,其中,每个子节点列表有100个节点,分别进行修改、插入和删除操作。

对应图2,对数据块的修改操作算法中,首先,发送方提出发送请求,需要对数据块bm进行修改,客户端受到了修改操作申请,生成一个服务标签tag,以及原始文件f,然后对m个数据块进行处理,j=mton+1,伪随机数生成器生成相应的种子seed,如果j≥s,则进行取模操作:其中,tj=xj·rj。最终返回更新后的标签tag',tag'=[t1,t2,tm,...,tn+1]。最终得到更新后的文件f'。

对应图3,对数据块的插入操作算法中,首先,发送方提出发送请求,需要将数据块bs插入到文件f中,客户端受到了插入操作申请,生成一个服务标签tag,以及原始文件f,然后对m个数据块进行处理,j=1ton+1,伪随机数生成器生成相应的种子seed,如果j≥s,则进行取模操作:其中,tj=xj·rj。最终返回更新后的标签tag”,tag”=[t1,t2,t3,...,tn+1]。最终得到更新后的文件f'。

对应图4,对数据块的删除操作算法中,首先,发送方提出发送请求,需要将数据块bt从文件f中删除,客户端受到了删除操作申请,生成一个服务标签tag,以及原始文件f,然后对m个数据块进行处理,j=1ton-1,伪随机数生成器生成相应的种子seed,如果j≥s,则进行取模操作:其中,tj=xj·rj。最终返回更新后的标签tag”,tag”'=[t1,t2,t3,...,tn-1]。最终得到更新后的文件f”'。

进一步的,还可以对本发明的技术方案进行后续的安全性分析。为了验证本方案的安全性,构建一个数据持有游戏,如果对手a赢得此游戏,则对手a能正确地获得全部密文数据块和签名标签信息。本方案的安全性也是基于:哈希函数的抗碰撞性、diffie-hellman问题的困难性;其定理为:如果散列函数和同态散列函数都是无冲突的,本文数据完整性检测方法是安全的。具体包括以下步骤:

1、证明:给出被挑战的文件f,并将文件f划分为n个块,记作:f=(f1,f2,l,fn)。接着,将fi分为m个扇区,记作:fi=(f1i,f2i,l,fmi)。挑战者c与对手a进行的游戏如下描述;

2、生成密钥:用户执行keygen算法获得同态密钥密钥k和私钥sk,两者俩都被c秘密保管着;

3、标签查询:在任何时间,a都可以查询任意块fi(1≤i≤n)的标签。c维护一个组值为(i,fi,ti)的列表,名为tab1。当a发送查询标签(i,fi)时,c将检查组值为(i,fi,*)的列是否存在于tab1中。如果(i,fi,*)∈tab1,则c检索(i,fi,ti)并将ti返回a。否则,c通过taggen算法计算ti,并将(i,fi,ti)添加到tab1中,并将ti返回到a;

4、证明验证查询:任何时间a都可以向c启动证明验证查询。a自适应地选择几个块,其标签从c中查询并为选定的块生成一个证明。a将证明发送给c,并要求c响应验证结果。c调用verify算法来检查证明并将结果返回给a;

5、挑战:c随机选取两个值和挑战块数c。要求每个对(l,fl)应存在于tab1中,其中l∈{π(k1,i)|1≤i≤c}。然后,c将发起的挑战chall={c,k1,k2}发送给a,并请求a回答被挑战的块的数据拥有证明p;

6、伪造:a根据挑战chall={c,k1,k2}生成一个证明并将其发送给c,其中如果可以通过验证,则a胜;

对手a如果不拥有挑战块,就不能获得有效的证明。那么我们将证明,如果a不维护整个文件,那么a赢得数据持有游戏的可能性是微不足道的;

7、输出:假设对手a赢得比赛,这意味着证明可以通过等式(3-2)证明其正确性。

如果css和数据所有者都真实地执行该技术方案,其正确性可以证明为如下:

进一步的,对本发明的技术方案进行性能分析。计算开销主要集中在标签生成、检测请求生成、验证信息生成和和验证完整性四个阶段。具体如下:

1、标签生成阶段:总共要为n个数据块生成标签信息,计算复杂度为o(n)。根据欧拉定理,由于gcd(e,n)=1,那么eφ(n)modn=1。由于取模运算比模指运算高效得多,在这里只考虑幂指操作的开销。所以,标签生成阶段的计算开销为(n+n×k)×texp(|n|,n),其中n表示数据块数目;n×k表示基本块数;texp(len,num)表示一个整数的指数为len比特再取模num的模指运算的计算时间开销;

2、检测请求生成阶段:需要计算两个随机数,(r,e)计算复杂度为o(1),其计算开销为tprng(|n|+tprng(k))。其中tprng(len)表示生成一个len比特的伪随机数的计算开销时间;

3、验证信息生成阶段:计算复杂度为o(n)。云服务器首先需要计算er=ermodn,此过程执行模指运算,计算时间开销为texp(|n|,n)。然后需要进行n×k+n次伪随机数生成和计算r。在计算需要进行n×k次大型乘法计算,因为fi(j)、f(i)和mi的长度分别为d比特、d比特和l比特,h(mi,j)为h比特,那么计算完每个mi,jh(mi,j)fi(j)f(i)后,然后计算它们和因此验证信息阶段的总计算开销其表达式为:texp(|n|,n)+(n×k+n)tprng(d)+n×k×tmul(2d+l+h)+n×k×tadd(2d+l+h),其中:tmul(len)表示几个len比特的数相乘的计算开销,tadd(len)表示几个len比特的数相加的计算时间开销;

4、验证完整性阶段:计算复杂度为o(n)。云存储服务器需要(n+1)次模指运算和(n-1)次模乘运算。整个阶段的计算开销其表达式为,(n+1)texp(d,n)+(n-1)tmul(|n|,n),其中:sum×tmul(len,num)表示sum个长度为len比特的整数的取模num计算时间开销。

综上所述,本发明一种基于全同态加密的云环境数据完整性验证方法,逻辑紧密,效果显著,采用全同态加密算法和混合数据动态数据操作算法分别进行数据加密、安全性验证和性能优化,达到对云平台上存储数据安全性验证的目的。该验证方法首先采用全同态加密的方法生成同态标签;其次,利用同态标签对数据进行远程数完整性验证;再者,采用混合数据动态操作的分析方法对加密后数据进行动态操作;最后进行安全性分析。不仅能高效地支持用户多粒度的动态操作,而且能够减轻用户执行动态操作过程和审计者执行远程数据完整性验证过程的通信开销。

以上显示和描述了本发明的主要特征、基本原理以及本发明的优点。本行业技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会根据实际情况有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

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