1.基于区块链的外包数据完整性验证中的公平支付方法,其特征在于,包括以下步骤:
步骤1、建立包括由数据拥有者DO、云服务器CS、区块链和智能合约组成的系统,系统初始化;
步骤2、数据文件外包存储处理;
步骤2具体按照以下步骤实施:
步骤2.1:设数据拥有者DO持有的数据文件为DF;数据拥有者DO对数据文件DF计算标识符df=H(DF),划分数据文件DF={fi},1≤i≤n;
数据拥有者DO为每个数据文件fi生成数据文件标识符di,其中di=H(fi),最后得到数据文件标识符集合D={di},1≤i≤n;注意DF的标识符df和数据文件标识符di都是唯一的;
数据拥有者DO对每个数据文件fi使用对称加密算法AES的密钥K计算密文ci=AES.Enc(K,fi),最后得到数据文件密文集合C={ci},1≤i≤n;
数据拥有者DO使用数据拥有者的私钥skDO对DF的标识符df签名得到α=SigskDO(df),对每个数据文件密文ci和对应的数据文件标识符di签名得到σi=SigskDO(ci,di),最后获得签名集合β={σi},1≤i≤n;
数据拥有者DO对数据文件密文ci和对应数据文件标识符di使用安全哈希函数H计算哈希,最后获得哈希集合Htag={hi=H(ci,di)},1≤i≤n,hi表示由数据文件密文ci和对应数据文件标识符di计算的n个哈希中的其中一个;最终,数据拥有者DO把数据包S={DOID,df,C,D,α,β}上传至云服务器CS,其中DOID表示数据拥有者的标识符、df表示DF的标识符、C表示数据文件密文集合、D表示数据文件标识符集合、α表示对df签名、β表示数据文件密文ci和对应的数据文件标识符di签名构成的集合;
步骤2.2:收到数据拥有者DO上传的数据包S={DOID,df,C,D,α,β}之后,云服务器CS把数据拥有者的标识符DOID记录到快速查找表T对应的key字段;
云服务器CS使用数据拥有者的公钥pkDO验证签名α是否成立,成立则云服务器CS把DF的标识符df存入快速查找表T对应的value;云服务器CS使用数据拥有者的公钥pkDO验证签名集合β中的每个签名σi=SigskDO(ci,di)是否成立,成立则云服务器CS把数据文件密文ci和对应的数据文件标识符di存入快速查找表T对应的value;如果验证不成立,云服务器CS拒绝存储;当存储好之后,云服务器CS计算每个数据文件密文ci和对应的数据文件标识符di的哈希hi'=H(ci,di),最后获得哈希集合Htag'={hi'=H(ci,di)},1≤i≤n;其次云服务器CS使用云服务器的私钥skCS对哈希集合Htag'中的每个哈希hi'签名得到σ(hi)=SigskCS(hi'),最终得到签名集合α'={σ(hi)},1≤i≤n;云服务器CS对DF的标识符df计算哈希得到ρ'=H(df),使用云服务器的私钥skCS对ρ'签名得到γ=SigskCS(ρ'),最后云服务器CS把签名集合α'中的每个签名和签名γ存入区块链,并记录交易id的集合txids={txidi,txidk},σ(h1)≤i≤σ(hn),k=γ,其中txidi表示上传签名集合α'中的n个签名到区块链得到的交易id,txidk表示上传签名γ到区块链得到的交易id;
步骤2.3:云服务器CS把步骤2.2中交易id的集合txidx={txidi,txidk},σ(h1)≤i≤σ(hn),k=γ发送给数据拥有者DO,其中txidi表示上传签名集合α'中的n个签名到区块链得到的交易id,txidk表示上传签名γ到区块链得到的交易id;
步骤2.4:一旦收到步骤2.3交易id的集合txids={txidi,txidk},σ(h1)≤i≤σ(hn),k=γ后,其中txidi表示上传签名集合α'中的n个签名到区块链得到的交易id,txidk表示上传签名γ到区块链得到的交易id,数据拥有者DO就会去区块链上读取交易最终得到签名集合α'={σ(hi)},1≤i≤n和签名γ=SigskCS(ρ');
数据拥有者DO使用云服务器的公钥pkCS验证签名γ和验证每个签名σ(hi)=SigskCS(hi')是否成立,验证通过之后获得哈希ρ'=H(df)和哈希集合Htag'={hi'=H(ci,di)},1≤i≤n,hi表示由数据文件密文ci和对应数据文件标识符di计算的n个哈希中的其中一个;
数据拥有者DO重新计算ρ=H(df),其中ρ表示使用安全哈希函数H对DF的标识符df计算的哈希值,然后数据拥有者DO比较步骤2.1中Htag中的每个哈希值是否和Htag'中的哈希值一致即hi=hi'其中i∈[1,n]、哈希值ρ'是否和ρ一致即ρ'=ρ;如果验证结果正确,则证明数据文件密文ci,数据文件标识符di和DF的标识符df已经成功存储至云服务器CS建立的快速查找表T;
步骤2.5:当步骤2.1、2.2、2.3和2.4成功执行之后,云服务器CS返回给数据拥有者DO数据文件密文的存放路径集合sp={DOID/df/(di),1≤i≤n},其中DOID表示数据拥有者的标识符、df表示DF的标识符、di表示数据文件标识符且di可以有多个,这样的存放路径可以保证云服务器CS快速查找到数据拥有者DO上传的数据文件密文的存放位置;
步骤3、数据文件验证支付,如果数据没有被损坏,那么直接由步骤3数据文件验证支付进入步骤5;否则执行步骤3数据文件验证支付,依次进入步骤4及步骤5;
步骤4.索赔阶段;
步骤5.数据文件更新。
2.根据权利要求1所述的基于区块链的外包数据完整性验证中的公平支付方法,其特征在于,步骤1具体按照以下步骤实施:
步骤1.1、数据拥有者DO从密钥空间SK中选择对称加密算法AES的密钥K,秘密选择随机数集合r,其中r={rj},1≤j≤n,rj表示随机数集合r中的一个随机数且数据拥有者DO对随机数集合r保密;
步骤1.2、数据拥有者DO在以太坊区块链上部署验证支付智能合约并调用合约方法storeDeposit(depositDO)向此合约中存放足够的服务费,depositDO表示预先设定好的服务费数量;
步骤1.3、云服务器CS在以太坊区块链上部署惩罚智能合约并调用合约方法
storeDeposit(depositCS)向合约中存放足够数量的赔偿金,depositCS表示预先设定好的赔偿金数量;后续阶段,如果云服务器CS损坏了数据拥有者DO上传的数据文件密文的情况下,由数据拥有者DO调用惩罚智能合约方法向云服务器CS索要赔偿,从而保证数据拥有者DO和云服务器CS之间支付的公平性。
3.根据权利要求1所述的基于区块链的外包数据完整性验证中的公平支付方法,其特征在于,步骤3具体按照以下步骤实施:
步骤3.1:数据拥有者DO使用安全哈希函数H对随机数集合r中任选的随机数rj,j∈[1,n]和发起挑战请求的数据文件标识符集合D'={di},1≤i≤c中的数据文件标识符对应的每个数据文件密文ci计算哈希hi”=H(rj,ci),最后获得哈希集合Htag″={hi″=H(rj,ci)},
1≤i≤c;然后数据拥有者DO计算结果哈希值result=H(h1”||h2”,...,hc”),对结果哈希值result生成标识符rdh=H(result),最终数据拥有者DO调用验证支付智能合约中的方法storeH(result,rdh)把结果哈希值result和标识符rdh存储到区块链;
步骤3.2:数据拥有者DO随机选择一个挑战请求chal=(DOID,df,D',rj),其中发起挑战请求的数据文件标识符集合D'={d1,d2,...,dc},也就是说D'中包含随机选择的c个数据文件标识符,rj,j∈[1,n]是从集合r中随机选择的一个随机数;数据拥有者DO向云服务器CS发送挑战请求chal,请求验证发起挑战请求的数据文件标识符集合D'中包含的c个数据文件密文的正确性与完整性;
步骤3.3:一旦云服务器CS收到步骤3.2的挑战请求chal后,就会根据数据拥有者的标识符DOID、DF的标识符df和发起挑战请求的数据文件标识符集合D'到快速查找表T中查找并获得D'中包含的c个数据文件标识符对应的数据文件密文{c1,c2,...,cc};云服务器CS对每个数据文件密文计算哈希hi”'=H(rj,ci),最终获得哈希集合Htag”'={hi”'=H(rj,ci)},1≤i≤c,其中rj,j∈[1,n]是发起挑战请求的chal中选择的一个随机数,ci是发起挑战请求的chal中数据文件标识符集合D'包含的c个数据文件密文;然后云服务器CS根据上述计算的c个哈希hi”'计算结果哈希标记result'=H(h1”'||h2”',...,hc”');最后云服务器CS调用验证支付智能合约中的方法verity(rdh,accountCS,result',fee)验证步骤3.1中数据拥有者DO存入区块链的结果哈希值result是否和结果哈希标记result'一致即result=result',fee是预先定义好给云服务器CS支付的服务费;如果验证结果相等即返回true,那么验证支付智能合约自动给云服务器CS支付相应数据存储服务费进入步骤5数据文件更新阶段;如果验证结果不相等即返回false,进入步骤4索赔阶段,最后进入步骤5数据文件更新阶段。
4.根据权利要求1所述的基于区块链的外包数据完整性验证中的公平支付方法,其特征在于,步骤4具体按照以下步骤实施:
云服务器CS存在恶意行为,此时,数据拥有者DO向云服务器CS发起索要正确文件请求,如果请求失败,由数据拥有者DO直接调用惩罚智能合约方法惩罚云服务器CS;作为惩罚,云服务器CS存入惩罚智能合约中的赔偿金会自动执行返回给数据拥有者DO。
5.根据权利要求4所述的基于区块链的外包数据完整性验证中的公平支付方法,其特征在于,数据拥有者和云服务器CS存在的恶意行为有两种情况:
情况1:我们的支付方案是在结果验证正确之后由验证支付智能合约立即向云服务器CS支付;
情况2:只要云服务器CS存在恶意行为,那么直接由数据拥有者DO调用惩罚合约方法punishCS(accountDO,intervalTime,punishFee,startTime)目的是获得相应赔偿。
6.根据权利要求1所述的基于区块链的外包数据完整性验证中的公平支付方法,其特征在于,步骤5具体按照以下步骤实施:
实际使用场景中,数据拥有者DO对上传到云服务器CS的文件必然有添加、修改和删除的需求,因此考虑以下3种情况:
情况1:添加文件:数据拥有者DO产生新数据文件newFile={nf1,nf2,...,nfn}时,首先数据拥有者DO生成newFile的标识符nf;对每个数据文件nfi生成标识符得到数据文件标识符集合D”={nd1,nd2,...,ndn};对每个数据文件nfi计算密文得到数据文件密文集合C'={nc1,nc2,...,ncn};使用数据拥有者的私钥skDO对newFile的标识符nf签名得到β1=SigskDO(nf),对每个数据文件密文nci和对应的数据文件标识符ndi签名最终得到签名集合θ1={σi1},1≤i1≤n,其中σi1=SigskDO(nci,ndi;之后,数据拥有者DO给云服务器CS发送添加请求addFile=(DOID,nf,β1,θ1,C',D”),CS收到添加请求后,使用数据拥有者的公钥pkDO验证签名β1和验证签名集合θ1中的每个签名σi1=SigskDO(nci,ndi)是否成立,全部验证通过后就会根据数据拥有者的标识符DOID在快速查找表T中查找对应的存储位置,然后把newFile的标识符nf、数据文件密文集合C'中的每个数据文件密文和数据文件标识符集合D”中的每个数据文件标识符存储到快速查找表T的value;如果验证不通过,云服务器CS拒绝存储;
情况2:删除文件:数据拥有者DO想要删除数据文件ddfj时,首先数据拥有者DO计算数据文件ddfj的标识符是ddfdj;然后,数据拥有者DO给云服务器CS发送一个删除请求removeFile=(DOID,rf,ddfdj),其中DOID表示数据拥有者的标识符、rf表示数据文件ddfj的原始文件标识符且删除请求中可以包含多个数据文件标识符;当云服务器CS收到删除请求时,就会根据数据拥有者的标识符DOID和原始文件标识符rf在快速查找表T中查找对应的数据文件标识符ddfdj,找到之后删除数据文件标识符ddfdj和数据文件标识符ddfdj对应的数据文件密文;
情况3:修改文件:数据拥有者DO修改数据文件mdfj成mdfj'时,首先数据拥有者DO计算数据文件mdfj'的密文为mdfcj'、标识符为mdfdj';这里mdfj的密文是mdfcj、数据文件标识符是mdfdj;随后,数据拥有者DO给云服务器CS发送修改请求alterFile(DOID,af,mdfdj,mdfdj',mdfcj'),其中DOID表示数据拥有者的标识符、af表示mdfj的原始数据文件标识符且修改请求中可以包含多个数据文件标识符和数据文件密文;云服务器CS收到修改请求后,就会根据数据拥有者的标识符DOID和原始文件标识符af在快速查找表T中查找对应的数据文件标识符mdfdj,找到之后使用数据文件标识符mdfdj'替换数据文件标识符mdfdj,数据文件密文mdfcj'替换数据文件密文mdfcj。