一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议的制作方法

文档序号:18751654发布日期:2019-09-24 21:11阅读:249来源:国知局

本发明属于信息安全领域,具体涉及云存储中的一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议。



背景技术:

云存储已成为我们日常生活中的一个重要的应用,在数据爆炸的时代,用户为了节省自己本地的存储空间,把数据外存到云服务器;目前有许多云存储提供商例如dropbox,onedrive和googledrive。因为云存储提供商之间的竞争,现在的云存储提供商都采用更加有效的存储策略;当用户存储重复数据时,云存储提供商利用数据去重策略,对于相同的数据只存储一次,以此节省存储空间并降低存储成本。

由于云服务器不是完全可信的,所以用户通常对外存的数据加密以保护数据的隐私。利用传统的加密方法可以保护数据的隐私,然而使用传统加密,不同的用户对相同的数据加密,会产生不同的密文,致使无法达到去重的目的。为了达到加密数据去重的目的,bellare等人形式化一个加密原语—消息锁加密。近些年,很多基于消息锁加密的方案被提出,这些方案主要分成两类:服务器端去重和客户端去重;在服务器端去重中,用户需要上传其数据到云服务器,用户意识不到可能发生的去重;但是,在客户端去重中,用户需要与云服务器交互以检查数据是否已经存储,如果该数据在云服务器中没有存储,云服务器则要求用户上传数据,如果数据已经存储,用户不需要再上传数据;很明显,相比于服务器去重,客户端去重不仅可以节省存储开销而且可以节省带宽。

在客户端去重中,用户判断云服务器是否已经存储数据的方法是:用户先发送数据的哈希值给云服务器,由云服务器判断该哈希值所对应的数据是否已经存储,若已经存储,则用户无需上传数据,若没有存储,云服务器则要求用户上传该数据。用上述方法判断数据是否存储给数据去重带来了很大的安全隐患,攻击者只需窃取数据的哈希值便可向云服务器证明自己拥有该数据,与此同时云服务器把攻击者添加到数据拥有者列表,之后攻击者再向云服务器请求数据具体内容,便可以窃取完整数据。为解决上述的安全隐患,引入拥有性证明技术,拥有性证明指用户和云服务器通过询问-应答机制,由云服务器发起挑战,用户响应,最终由云服务器验证用户是否真正拥有完整数据,然而这种拥有性证明是单向的,只允许云服务器检验用户对于数据的拥有性;由于用户并不确定云服务器是否真正拥有该数据,所以用户也需验证云服务器对数据的拥有性,即实现数据拥有性的双向认证。

数据去重可以节省云服务器的存储空间,提高经济利益,然而,用户在去重策略中没有获得直接利益。armknecht等人指出云服务器应该根据存储相同数据的用户数量向每个用户收取存储费用,每个用户承担的费用应该与存储相同数据的用户数量成反比。为了避免云服务器为获取高额利润而恶意降低去重等级,armknecht等人引入了透明化去重的概念,用户可以验证数据的去重等级,然而该方案没有实现数据完整性的审计。

当我们享受云存储服务带来的优势时,也出现了一些安全性问题,其中最受关注的安全问题是外存数据的完整性。用户把数据存储于云服务器,云服务器由于硬件故障或软件错误可能会导致数据丢失或服务不可用,有的服务器为了维护自己的声誉,即使丢失了用户的数据也不会主动告知用户。用户为了确保自己外存数据的完整性,可以随时对外存数据进行完整性审计。关于数据完整性审计的方案已经被提出很多,这些方案让用户雇佣第三方审计者完成审计,然而雇佣第三方会产生很大的代价而且第三方可能会与云服务器合谋生成有偏见的审计结果,比如只审计保存完整的数据块而忽略被损坏或者丢失的数据块。若要求用户自身完成审计,用户无法一直保持在线。若要求云服务器审计,云服务器可能会生成有偏见的审计结果或者拖延审计。

为了解决上述提出的问题,本发明提出了云存储中的一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议



技术实现要素:

针对上述问题,本发明提出了云存储中的一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议。

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

一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议,所述协议包括三个主体:用户、n个密钥服务器与云服务器,具体包括:

初始化:系统初始化安全系数和参数,每个用户生成自身公钥和私钥,n个密钥服务器共享一个秘密值,密钥服务器相互交互,计算自身子秘密;

用户与n个密钥服务器交互,获取数据的加密密钥:用户选择随机数,并利用该随机数对上传数据的哈希值进行盲化,并把盲化值发送给n个密钥服务器;每个密钥服务器收到盲化值后,用自身子秘密做签名,签名结果返回给用户;用户随机选择t个密钥服务器的合法签名去盲化,并计算数据的加密密钥;

用户与云服务器通信,实现数据的双向拥有性检验:用户用加密密钥加密数据,并且用户用哈希函数生成该数据的标签值;用户选取一个随机数,并且发送该随机数和数据的标签值给云服务器;云服务器通过检查数据的标签值是否已经存储,进而判断该数据是否已经存储于云服务器:若数据没有存储,云服务器要求用户上传数据密文;若数据已经存储,云服务器选取一个随机数,并把该随机数与用户选取的随机数以及数据密文使用哈希函数做运算,得到一个承诺,之后云服务器发送自己选取的随机数和承诺给用户;用户收到承诺后,验证该承诺是否为真,若为真,用户将自己选取的随机数和云服务器选择的随机数以及数据密文使用哈希函数做运算,得到一个新的承诺,并将新承诺发送给云服务器;云服务器验证该承诺是否为真,若为真,云服务器将用户添加到数据拥有者列表中;

透明化数据完整性审计和透明化数据去重:云服务器利用区块链中未生成区块的哈希值的不可预测性,生成随机种子,再利用该随机种子生成数据样本和随机挑战块;云服务器利用数据样本的用户信息构造merklehash树,并生成去重等级的证据信息;同时,云服务器利用数据样本的随机块生成相应的数据完整性证明信息;云服务器公布生成的证明信息于区块链,每个用户进行公开验证并公布验证结果。

本发明的有益效果在于:

本发明提供一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议,该协议能够抵抗单点失效攻击、穷举攻击、云服务器的欺骗攻击。在本协议中,为了避免一个密钥服务器的单点失效攻击和敌手穷举攻击,本发明引入多个密钥服务器和rate-limiting策略,抵御了密钥服务器的单点失效攻击,并且限制了用户与密钥服务器在一个周期内的交互次数,防止了攻击者穷举攻击,在线猜测数据的加密密钥。本协议在双向数据拥有性证明阶段可以抵抗用户和云服务器的欺骗攻击,通过双向数据拥有性证明,避免用户只拥有数据的哈希值,却欺骗云服务器拥有了整个完整数据,也避免了云服务器只保存部分数据或者数据的哈希值,却欺骗用户保存了完整数据。本协议可以抵御云服务器向用户收取费用时的欺骗攻击,同时本协议可以避免云服务器为了保护自身声誉,丢失数据却不向用户反馈的欺骗行为。本系统利用以太坊区块链技术,提供数据完整性和去重等级正确性的验证。然而,发布所有外存数据信息于云服务器会浪费云服务器的计算开销。为了节省开销,我们利用区块链的性质随机选取数据样本和数据样本的随机块,并公布相应的证据于区块链,用户利用区块链上的证据验证数据的完整性和数据去重等级。云服务器利用数据样本的用户信息构造merklehash树,并生成去重等级的证据信息,包括选中的数据样本、每个用户信息对应的兄弟路径、最右非零节点的兄弟路径以及数据样本的用户列表,与此同时,云服务器利用数据样本的随机块生成相应的数据完整性证明信息。云服务器公布生成的证明信息于区块链,每个用户进行公开验证并公布验证结果。

综上,本发明的协议确保了数据外存的安全性,包括数据的完整性和去重等级的正确性。

具体实施方式:

下面结合实施例对本发明作进一步详细说明。

本发明提供一种基于区块链的透明化数据完整性审计和透明化加密数据去重协议,其中,涉及符号声明如下表:

本实施例中,具体过程如下:

1、初始化:

初始化参数集合pp={p,p,g,gt,e,h,h1,h,l,qe},其中,g为一个阶为素数p、生成元为p的加法群,e:g×g→gt为双线性映射,h、h1、h均为哈希函数,l是系统安全参数,qe是系统规定每个用户在每个周期向密钥服务器请求密钥的次数;

用户随机选择α∈zp*作为用户的私钥sk,并计算y=αp作为用户的公钥pk;n个密钥服务器ksi、i∈[1,n]之间共享秘密值,zp*表示p阶循环群;具体生成方法如下:

1)每个密钥服务器ksi随机选择ai0∈zp*和一个t-1的多项式fi(x),例如fi(0)=ai0,而fi(x)=ai0+ai1x+...+ai,t-1xt-1

2)对于ε=1,2,...,t-1,每一个ksi发送ai0p和aiεp到其他密钥服务器;ksi秘密发送fi(j)给密钥服务器ksj,其中,j=1,2,...,n;j≠i;

3)当密钥服务器ksi收到来自密钥服务器ksj发送的fj(i)后,ksi通过验证fj(i),若验证通过、ksi接收,否则、ksi拒绝;

4)ksi计算自身子秘密:并计算自身子公钥:qi=sip;所有密钥服务器的秘密共享值为公开值为

5)每个密钥服务器ksi保存每一个用户向其请求mle密钥次数的列表,采用qn表示用户请求密钥次数,qn初始化为0。

2、用户与n个密钥服务器交互,获取数据m的加密密钥:

1)用户u随机选择r∈zp*,并计算用户u将发送给每一个密钥服务器ksi;

2)密钥服务器ksi收到用户发送的首先检测qn≤qe是否成立,若不成立、密钥服务器拒绝,否则、ksi使用自身子秘密si对进行签名并把签名结果发送给用户u;且,ksi设置qn=qn+1;

3)用户u通过检查等式验证签名σi,随机选择通过验证的t个签名值σ1,σ2,…σt;并计算其中,

4)用户u验证e(σ,p)=e(h(m),q),若成立,用户u计算k=h(σ)作为mle密钥;否则,用户u终止程序。

3、用户与云服务器通信,实现数据的双向拥有性证明:

1)对于数据m,用户u利用mle密钥加密获得数据密文c=ek(m),并且计算标签值tag=h1(c);并且,用户u选择随机数β∈zp*;用户u发送tag和β到云服务器;

2)云服务器收到tag后,首先通过检测tag值是否已经存储判断数据c是否已存;若不存在,云服务器发送false给用户;若已存,云服务器随机选择并生成一个承诺云服务器发送随机数和承诺给用户;

3)用户收到用户验证该承诺;若该承诺为真,用户计算一个新承诺并发送新承诺给云服务器;否则,用户丢弃该消息();

4)云服务器收到用户发送的新承诺验证新承诺,若承诺为真,云服务器将用户添加到密文c的用户列表;否则,云服务器丢弃该消息(新承诺);

4)若用户收到false,用户上传数据,具体为:

4.1)用户u把数据密文c分为v块,每块分为q个扇区,表示为:

c11…c1q,c21…c2q,……,cv1…cvq∈zp*

4.2)用户u随机选择u1,u2,…,uq←g,计算:

其中,1≤i≤v、1≤j≤q,k为数据m的mle密钥,name为数据m的名字;

用户u发送c={c11…c1q,c21…c2q,……,cv1…cvq}、标签值{δ1,δ2,…,δv}以及随机数集合{u1,u2,…,uq}到云服务器。

4、透明化数据完整性审计和透明化数据去重:

1)云服务器获取当前时间,并选取当前时间最近的周期ep;

2)云服务器计算种子:

θ1=h1(bt||bt-1||bt-2||bt-3||...||bt-11||1)

θ2=h1(bt||bt-1||bt-2||bt-3||...||bt-11||2)

θ3=h1(bt||bt-1||bt-2||bt-3||...||bt-11||3)

其中,{bt,bt-1,bt-2,bt-3,...,bt-11}是最新确认的12个块的哈希值,t是当前时间下最新被验证的块的序列号;

3)云服务器利用θ3作为种子在周期ep中选取数据样本密文c′,并且计算其中,φ为包括数据样本的证明信息的证明,c′id为数据样本密文c′的文件标识,cc′id为数据样本密文c′的用户列表,是merklehash树的根节点签名,具体构造如下:

3.1)云服务器根据数据样本拥有者列表构造merklehash树:

拥有相同样本数据的用户充当非零叶子结点,每一个用户计算作为叶子节点(即非零节点),其中,w(·)为哈希函数,idu为用户身份,ep为周期;云服务器利用叶子节点构造树高为的merklehash树,其中,需要填充的叶子节点作为零节点,零节点表示为w(0);

3.2)云服务器计算merklehash树的树根rootc′,并对其进行签名

3.3)云服务器生成每个用户u的证明,云服务器计算叶子结点用户u到达根节点的兄弟路径apmc′;云服务器获取merklehash树的最右非零叶子节点hc′,并计算最右非零叶子节点hc′到达根节点的兄弟路径apcc′

3.4)云服务器生成去重等级的证明φ=(apmc′,hc′,apcc′);

4)云服务器利用{θ1,θ2}种子,生成随机挑战块,并计算相应的证明;c是挑战块的块数;具体为:

4.1)云服务器计算一系列的挑战块i={ki}、1≤i≤c,其中,并计算

4.2)云服务器计算j∈[1,q],并计算之后云服务器生成数据完整性审计的证明({μ1,μ2,…,μq},δ);c′ij为样本密文c′={c′11…c′1q,c′21…c′2q,……,c′v1…c′vq}的第i块第j扇区;

5)云服务器公布数据样本和挑战块的证明于区块链:

6)数据样本的用户验证区块链上的证明,具体为:

6.1)透明化去重验证过程如下:

6.1.1)用户u首先获取到t,θ3,然后验证下述等式是否成立:

θ3=h1(bt||bt-1||bt-2||bt-3||...||bt-11||3),

若成立、进行6.1.2),否则、进行6.1.5);

6.1.2)用户验证基于θ3生成的数据样本密文c′与公布的是否一致,若是、进行6.1.3),否则、进行6.1.5);

6.1.3)用户u从区块链上获取并且根据cc′id验证去重等级:

6.1.3.1)用户u从φ中获取并且验证兄弟路径,确保该用户的身份信息包含在数据样本拥有者列表cc′id中,若验证成果、进行6.1.3.2),否则、进行6.1.5);

6.1.3.2)用户u从φ中获取(apmc′,hc′,apcc′),并且验证最右非零节点以及该最右非零节点的兄弟路径;若验证成果、进行6.1.4),否则、进行6.1.5);

6.1.4)用户u验证是否只有一个数据样本拥有者列表若是、用户记录云服务器所公布的信息正确,否则、进行6.1.5);

6.1.5)用户记录云服务器公布的信息不正确;

6.2)透明化数据完整性审计过程如下:

6.2.1)用户u获取t,θ1,θ2,c,再验证下述等式是否成立:

θ1=h1(bt||bt-1||bt-2||bt-3||...||bt-11||1)

θ2=h1(bt||bt-1||bt-2||bt-3||...||bt-11||2)

若成立、进行6.2.2),否则、进行6.2.4);

6.2.2)用户u计算随机挑战块i={ki}(1≤i≤c),其中,并计算

6.2.3)用户u从区块链上获取{({μ1,μ2,…,μq},δ),{u1,u2,…,uq}},并且验证等式是否成立;若等式成立,则证明了外存数据的完整性;否则,进行6.2.4);

6.2.4)用户公布外存数据完整性被破坏。

以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

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