一种去中心化协同验证模型及验证算法的制作方法

文档序号:16128234发布日期:2018-12-01 00:00阅读:316来源:国知局

本发明属于计算机数据库领域,具体涉及一种去中心化协同验证模型及验证算法。

背景技术

外包数据作为云服务的重要组成部分,由于其可靠性高,成本低和扩展能力强而得到广泛应用。如今,越来越多的云服务提供商(csp,cloudserviceprovider)推出了外包数据应用程序,如googleappengine,microsoftazureplatform,amazons3和百度云等。外包数据服务为用户提供了分布式存储解决方案,从而减轻用户对海量数据管理的负担。

事实上,在使用外包服务时,用户会失去对外包数据的控制能力,这使得用户无法保证外包数据的完整性和可用性。针对这一问题,目前的措施主要包括数据可检索性证明(por,proofofretrievability)和数据拥有证明(pdp,proofofpossession)。por协议为用户提供数据可以被正确检索的保证。除此之外,用户可以通过pdp协议来验证外包数据没有被恶意篡改。以上这两种协议都允许用户在不下载完整数据的前提下,验证外包数据的安整性和可用性。

以上验证过程需要用户参与到整个验证过程中,导致了计算开销,增加了工作负载。为了提高验证效率,用户通常将验证过程交付给第三方审计机构(tpa,thirdpartyauditor)。当完成外包数据处理时,tpa代表用户执行与csp的验证协议。此外,用户可以随时检查tpa的验证工作。此模型中,用户不需要与csp建立通信,从而减少计算开销。但事实上,tpa的可信程度无法保证,将验证任务交给不可信任的tpa会给数据安全带来新的威胁。例如,不可信的tpa可能通过返回错误的验证结果来欺骗用户。更严重的情况是,tpa和csp可能勾结起来混淆篡改验证记录。出现上述这些情况的主要原因是用户对于tpa过分依赖。



技术实现要素:

本发明基于区块链技术,提出了一种去中心化协同验证模型及验证算法,在外包环境中可高效且有效的进行外包数据完整性验证。

本发明提供一种去中心化协同验证模型,包括:数据所有者(do,dataowner)、云服务提供商、协作网络(cn,collaborativenetwork)和区块链(bc,blockchain)四个组件;

区块链的块体存储由por记录生成的pormerkle树,其中pormerkle树的叶子节点由一个二元组构成,二元组记录por记录和数据所有者的数字签名,可以通过给定的中间散列值,即验证路径来验证por记录;

数据所有者通过数据外包的方式,来减少海量数据的本地存储开销,并采用云服务提供商提供的计算资源;

云服务提供商控制由大量数量硬件和软件资源组成的集群,以提供外包数据服务,云服务提供商拥有自己的分布式存储系统,用于管理海量数据和复制元数据;

协作网络由多个验证节点(vp,verificationpeer)组成,彼此保持通信形成p2p网络,每个验证节点可随时加入或离开网络;当数据所有者将数据外包给云服务提供商时,所有验证节点向云服务提供商申请访问以获得每个文件的por记录,减少了por的计算工作量;

区块链将每个外包数据的por记录存储在区块链中,每个验证节点在本地维护一个完整的区块链副本。

本发明还提供一种去中心化协同验证算法,包括:

setup部分:通过por协议对外包数据进行处理,形成por记录,将por记录和数据所有者的数字签名构成的二元组作为pormerkle树的叶子节点,并将二元组发送到协作网络;

writeblock部分:协作网络的验证节点使用有效的por记录和数据所有者的数字签名构建pormerkle树,并存入区块链;

checkblock部分:根据数据所有者的验证请求,验证节点根据数字签名检索本地区块链获取相应的por记录,进而获取全局区块链状态。

在本发明的去中心化协同验证算法中,所述setup部分包括:

步骤1.1:每一个数据所有者将数据进行加密,通过加密算法生成公钥和私钥,数据所有者在协作网络广播公钥,数据所有者个人持有私钥;

步骤1.2:通过编码方式对每一位数据所有者的外包数据进行分割,分割为多个数据块;

步骤1.3:通过por协议对数据块进行处理,处理后的数据块使用密钥进行加密,即为por记录;

步骤1.4:将por记录和数据所有者的数字签名构成的二元组作为pormerkle树的叶子节点;

步骤1.5:数据所有者将二元组发送到协作网络。

在本发明的去中心化协同验证算法中,所述writeblock部分包括:

步骤2.1:接收到por记录和数据所有者的数字签名构成的二元组后,验证节点利用公钥验证数字签名是否有效;

步骤2.2:如果签名有效,验证节点将二元组缓存至存储器中,若签名无效,则不进行缓存;

步骤2.3:验证节点使用有效的二元组构建pormerkle树并采用pow共识机制竞争区块链的记账权;

步骤2.4:获得记账权的验证节点将消息广播到其他验证节点,同步本地区块链;

步骤2.5:收到消息同步时,验证节点会同步区块链的本地状态以匹配全局区块链状态。

在本发明的去中心化协同验证算法中,所述checkblock部分包括:

步骤3.1:数据所有者向协作网络发送验证请求;

步骤3.2:每个验证节点检查本地区块链的状态是否与全局状态一致;

步骤3.3:状态不一致时,验证节点需要通过读取全局区块链来同步本地区块链,当本地区块链与全局区块链保持一致时,验证节点根据签名检索本地区块链获取相应的por记录;

步骤3.4:完成检索的验证节点向其他验证节点广播消息;

步骤3.5:当超过一半的验证节点完成检索并广播消息后,停止当前的检索过程并返回结果。

本发明所提出的一种去中心化协同验证模型及验证算法将区块链的特性带入了不可信环境下外包数据存储和验证过程中。可以提高数据安全性,避免了在传统数据外包服务中将数据验证过程移交给第三方可能造成的安全问题,效率提高,安全性提高。

附图说明

图1为本发明的一种去中心化协同验证模型的架构图;

图2为本发明的具体实施方式的pormerkle树结构图;

图3为本发明的一种去中心化协同验证算法的流程图;

图4为本发明具体实施方式的setup算法的流程图;

图5为本发明具体实施方式的writeblock算法的流程图;

图6为本发明具体实施方式的checkblock算法的流程图。

具体实施方式

下面结合附图对本发明具体实施方式加以详细的说明。

如图1所示,本发明的一种去中心化协同验证模型,简称dcom(decentralizedcollaborativeverificationmodel,去中心化协作验证模型)包括:数据所有者、云服务提供商、协作网络和区块链四个关键组件。

区块链的块体存储由por(proofsofretrievability,可检索性证明)记录生成的pormerkle树。其中pormerkle树的叶节点由一个二元组构成,如图2所示。二元组记录每个por记录(ρn)和数据所有者的数字签名(sigs(n))。可以通过给定的中间散列值,即验证路径来验证por记录。pormerkle树的数据结构为一个二叉树用于存储hash值,hash值是一个把任意长度的数据映射成固定长度数据的函数。pormerkle树的底层存储的值是外包数据的por记录和数据拥有者的数字签名构成的二元组。第二层为pormerkle树的叶子节点,其中存储的值为底层二元组通过哈希运算得到的哈希值。第三层为pormerkle树的非叶子节点,其中存储的值是该节点的所有叶子节点的数据经过哈希计算得到的哈希值。

数据所有者通过数据外包的方式,来减少海量数据的本地存储开销,并采用服务提供商提供的计算资源。

云服务提供商控制由大量数量硬件和软件资源组成的集群,以提供外包数据服务。云服务提供商拥有自己的分布式存储系统,如hdfs和ceph,用于管理海量数据和复制元数据。

协作网络由多个验证节点组成,彼此保持通信形成p2p网络。每个验证节点可随时加入或离开网络。当数据所有者将数据外包给云服务提供商时,所有验证节点向云服务提供商申请访问以获得每个文件的por记录,减少了por的计算工作量。

区块链将每个外包数据的por记录存储在区块链中。为了避免因为采用tpa造成的可靠性问题,每个验证节点在本地维护一个完整的区块链副本。

如图3所示为本发明的去中心化协同验证算法的流程图,包括:

setup部分:通过por协议对外包数据进行处理,形成por记录,将por记录和数据所有者的数字签名构成的二元组作为pormerkle树的叶子节点,并将二元组发送到协作网络;

writeblock部分:协作网络的验证节点使用有效的por记录和数据所有者的数字签名构建pormerkle树,并存入区块链;

checkblock部分:根据数据所有者的验证请求,验证节点根据数字签名检索本地区块链获取相应的por记录,进而获取全局区块链状态。

如图4所示为本发明的去中心化协同验证算法中,setup部分的流程图,具体包括:

步骤1.1:每一个数据所有者将数据进行加密,通过加密算法生成公钥和私钥,数据所有者在协作网络广播公钥,数据所有者个人持有私钥;

步骤1.2:通过编码方式对每一位数据所有者的外包数据进行分割,分割为多个数据块;

步骤1.3:通过por协议对数据块进行处理,处理后的数据块使用密钥进行加密,即为por记录;

步骤1.4:将por记录和数据所有者的数字签名构成的二元组作为pormerkle树的叶子节点;

步骤1.5:数据所有者将二元组发送到协作网络。

如图5所示为本发明的去中心化协同验证算法中,writeblock部分的流程图,具体包括:

步骤2.1:接收到por记录和数字签名构成的二元组后,验证节点利用公钥验证数字签名是否有效;

步骤2.2:如果签名有效,验证节点将二元组缓存至存储器中,若签名无效,则不进行缓存;

步骤2.3:验证节点使用有效的二元组构建pormerkle树并采用pow共识机制竞争区块链的记账权;

步骤2.4:获得记账权的验证节点将消息广播到其他验证节点,同步本地区块链;

步骤2.5:收到消息同步时,验证节点会同步区块链的本地状态以匹配全局区块链状态。

如图6所示为本发明的去中心化协同验证算法中,checkblock部分的流程图,具体包括:

步骤3.1:数据所有者向协作网络发送验证请求;

步骤3.2:每个验证节点检查本地区块链的状态是否与全局状态一致;

步骤3.3:状态不一致时,验证节点需要通过读取全局区块链来同步本地区块链,当本地区块链与全局区块链保持一致时,验证节点根据签名检索本地区块链获取相应的por记录;

步骤3.4:完成检索的验证节点向其他验证节点广播消息;

步骤3.5:当超过一半的验证节点完成检索并广播消息后,停止当前的检索过程并返回结果。

以上所述仅为本发明的较佳实施例,并不用以限制本发明的思想,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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