摘要

背景


在科学研究和商业等需要大量数据集的领域,数据共享越来越受欢迎,人们从中受益,但追踪共享数据历史(来源记录)来监控和保护数据不易。一方面集中化实体收集所有去中心化数据的来源记录不实际,一些研究结合区块链存储数据共享来源记录。另一方面,先前研究关注恶意用户不修改共享数据集并作为其拥有者重新共享。此外,存在恶意攻击者篡改数据维护搜集数据集的正确性也是挑战。


工作与成果


提出去中心化数据共享平台——ProvNet:


1、利用网络化区块链提供安全、正确的来源记录;


2、所有有效的共享记录被收集并存储在blocknet防篡改网络区块链中;


3、ProvNet可以发现和检测存储的来源记录的错误行为。


1 介绍

 背景


数据共享为大数据、商业等领域提供充足原始数据,不同机构合作加强、数据可用性扩大。但由于网络攻击频繁([11]的一项研究显示,29.6%的公司经历过数据泄露),存在保护共享数据隐私、在共享过程中安全溯源、定义和检测数据所有权破坏、不同地区数据共享导致的服务纠纷等问题。关键是对数据传播过程引入控制和追踪允许数据拥有者/生产者追踪其数据如何被访问、使用和进一步共享,会提高数据安全性和数据共享过程中的问责挑战是数据共享发生在去中心化环境,没有控制和监控


安全溯源是一种用于在攻击者可能试图篡改记录的敌手环境中捕获数据历史(数据来源)的技术。目前安全溯源主要加强环境控制和日志记录,这种中心化的核心软件不适合分布式环境。并且一旦被破坏会有更大的危害。有使用区块链的研究[3,8,34,35]:MedRec[3]和MedShare[35]的目标是电子病历(EMR)共享。FairSwap[8]是为了保护数据交换的公平性,Van Hoye等人提出了[34]日志记录机制来保存数据交换记录。


工作


工作的不同:(1)更多关注共享数据集在系统中可以修改和重新共享的场景,提出更通用的方法追踪数据集,具有现实意义和挑战性(追踪和可变数据不简单)。(2)考虑不同攻击者模型,额外考虑攻击者违背协议并传入错误数据,我们解决该类攻击者。


提出去中心化数据共享平台——ProvNet,保护数据所有权,捕获和存储正确的数据共享来源:


1、对数据共享操作提供框架验证拥有者是否允许共享


2、提出blocknet搜集并保存共享数据的来源记录(如数据信息、数据流和数据集的关系)。由一组协议保护来源记录,协议blocknet的诚实实体维护。通过blocknet,用户可以检测数据共享的不当行为。


贡献


1、ProvNet在去中心化环境实现数据共享安全溯源。


2、提出blocknet存储来源记录,支持防篡改。


3、能检测错误来源记录和本文定义的非法共享。


4、将blocknet拓展为双向有向图,可以提供前向和反向追踪。


5、正式定义去中心化安全溯源的完整性和正确性,并从理论上严格分析。

结构


第二部分:背景和相关工作


第三部分:假设和攻击模型


第四部分:详述ProvNet协议,并进行理论证明和大规模模拟

第六部分:结论


2 背景和相关工作

 许可链:区块链分许可链无需许可链。无需许可链如比特币[20],利用机制(PoW、PoS)来达成全球账本的共识。许可链如Hyperledger Fabric[1],不允许用户自由加入或离开,需要认证。Fabric的目标是跨行业合作,模块化的架构在不同场景下很灵活。


基于区块链的数据共享:一些工作提出利用区块链提供更好的数据共享应用:MedRec[3]、MeDShare[35]、HDG[18]、Medblock[9]都是为了利用区块链来改善电子病历共享过程中的问题。其他场景,如共享由物联网设备[29]或智能车辆生成的数据[14,31]也与区块链相结合,以提供更好的解决方案。此外,FairSwap[8]还利用了智能合约的使用,旨在保护公平数据交易的大文件共享。


基于区块链的安全溯源来源记录对问责和取证有重要意义,区块链防篡改,人们提出许多工作[2,17,21,26,35]解决该问题,并关注不同场景,LineageChain[28]提出Merkle DAG搜集来源,应用仅跳跃列表创建快速查找索引。Van Hoye等人[34]提出了一种记录机制,用于跨组织数据共享场景中数据交换过程中生成的记录。它们的机制利用了与数据请求和响应及其确认相关的四个函数。BlockIPFS[22]将IPFS与区块链结合,获得可追溯性属性,但不考虑相似性检测问题。


不同于上述工作,ProvNet关注更普遍场景、更多攻击类型,提供提供存储在类似区块链结构上的来源记录,可用于追溯未来来源手机和司法鉴定使用。

3 定义和假设

1 系统概述

ProvNet是一个去中心化数据共享平台,保护数据所有权,为潜在使用提供正确、安全的来源记录。它定义了一些实体应该遵循的系统规则,不遵循规则的实体能够被检测到,遵循系统规则的用户可以相互共享数据并获取和记录其共享数据的踪迹。提出类似于DAG的网络化区块链——blocknet存储来源记录,每个区块可以有多个前驱和后继。ProvNet有三个类型实体:


验证者(Verifiers):负责验证数据共享进程和更新blocknet的实体。


发布者(Publishers):共享数据集的用户,分为拥有者(Owners)和发送者(Senders)。拥有者是那些初次发布数据集的发布者,发送者是那些重新共享其他数据集或从之前共享数据集派生(包括简单添加、删除、修改或复杂计算)的发布者。此外,拥有者还可自定义其数据集的服务条款(TOS),用以规范数据集在网络中的传播。发送方需遵守之前的TOS,可做仅附加修改,即发送方以仅附加的方式继承TOS。

接收者(Receivers):接收发布者共享数据集的用户。


要共享数据集,发布者需要向验证者发送共享请求。验证者将验证请求,如果请求有效,则批准请求。通过验证者的批准,发布者可以与接收者共享数据集。在确保所有的接收者都接收到数据之后,验证者将附加一个存储数据共享过程的块到blocknet中。第4节描述了ProvNet的详细工作流程。

2 假设

假设存在验证函数 φ 用于验证者验证拥有者的数据共享请求是否有效(即判断拥有者是否真实)。FairSwap[8]有类似假设:如果x满足某个函数/述语  ,则买方会为其付款。根据不同用例,验证函数用不同形式实现。如ProvNet被用于文本文件共享。声称的拥有者是真是假与剽窃检测技术(如文档剽窃检测[30]和跨语言剽窃检测[25])高度相关。则具体方法就可以是验证函数 φ 


在ProvNet中,来源记录存储在blocknet中,blocknet是许可链的变体。我们的场景在互不信任的用户/组织之间共享数据,许可链及其变体允许节点互不信任,由于许可链共识机制(如Hyperledger Fabric使用Raft[23]),假设攻击者数量不超过总用户的1/2。因为所有用户都在许可区块链中身份验证,该假设合理。

3 攻击模型

假设发布者和接收者不会同时是攻击者,即他们不会互相勾结(因为如果发生勾结,两个实体可以离线共享数据,而不需要使用该平台)。我们考虑了在ProvNet中几种可能的攻击类型,它们与源记录的正确性有关。


所有权损坏:发布者声称自己是拥有者而非真正拥有者,即发布者侵犯数据所有权。


非法传播:如果发布者(1)未正确继承TOS、(2)破坏TOS、(3)声称是发送人,但先前没有记录说明他从其他用户接收相关数据集,则认为发布者违反数据传播。


共享不一致:发布者和接受者对数据是否正确共享有争议。


数据泄露:数据被泄露给平台外的实体。


与以前的工作[8,34,35]相比,ProvNet中的攻击者可能产生虚假信息(例如,声称错误的所有权或扰乱TOS),从而违反系统协议,因此更加活跃。


4 安全定义

如果所有权损坏发生,ProvNet必须能够检测到它。如前所述, φ 函数可以用来检测所有权损坏。然后,我们使用以下 φ完整性 来量化多少所有权损坏的ProvNet可以检测


定义1 φ完整性 我们说我们的ProvNet对网络中数据传播的验证是 φ完整 的,如果选择的 φ 满足:



其中←是表示协议输出的标准符号,  是所有权损坏是否发生的基本事实。


注意 φ完整性 只针对所有权损坏给出,其它攻击可以在不运行 φ 的情况下验证。


正确的来源记录获取是在ProvNet中实现可追踪性的必要条件,我们使用 正确性 来量化数据共享平台中ProvNet可追踪性的质量


定义2 正确性 :我们说我们的ProvNet在面向数据的网络中的可追踪性是 正确 的,如果每一个传播图G都满足:



其中V为G中的节点集,每个节点代表blocknet中的一个块。E表示G中的边集,表示两个区块中两个数据集之间的依赖关系。V和E都来自G。V*和E*是其范围内的实例,即如果所有的TOS都被强制执行,并且没有破坏传播,则边集和顶点集将在来源记录中。


不等式左边的分数是两组边/顶点的Jaccard指数[10,27],它表征了两组之间的相似性。


最终的目标是为ProvNet实现设计,使 φ完整性  正确性   较低的情况下实现。


4 系统设计

 如图1所示,用户之间共享数据,他们的共享记录将存储在blocknet中。



提出了三种协议解决可能的攻击


1、在共享数据集之前,验证者将遵循TOS-强制和所有权保护的数据共享协议并批准那些可接受的共享请求该协议可以检测数据共享请求中所有错误的所有权声明或错误的TOS继承,从而解决所有权损坏和传播冲突问题。


2、数据集成功共享后,双向Blocknet构建协议用于构建一个blocknet,其中每个数据共享过程的操作将被视为一个来源记录,并作为区块存储在blocknet中。


3、验证者已经根据收集到的记录构建了正确的blocknet,ProvNet进一步提供用于追责的前向/反向追踪的方法来追踪和取证场景,我们将展示一个示例,其中存储在ProvNet中的来源记录可用于检测数据泄漏攻击中的可疑用户。


图2描述了ProvNet的简单工作流程。发布者将向验证者发送共享请求(以下表示为ShrReq)和包括一些必要的条件进行验证(步骤1和2)。验证者将根据验证结果批准该请求或拒绝它(数据的真正拥有者或发送者正确地继承了TOS)(步骤3)。在收到验证者的批准后,发布者将与接收者共享数据集(步骤4),接收者将给验证者发送一个确认(以下表示为Ack),作为接收数据集的声明(步骤5)注意,在这种数据共享场景中,发送一些收据确认是一种常见的想法[8,34]。验证者将在成功验证接收者发送的确认后更新区块链,或者拒绝共享(步骤6和7)。


1 TOS-强制和所有权保护的数据共享

为了描述我们的协议,我们将从一个简单的例子开始,发布者P将共享一个数据集D。在数据共享的开始,P将生成一个ShrReq,它将包含以下条目:



Commitment(D)表示P为验证目的而生成的验证信息,它可以应用于(或作为验证函数 φ 的输入),以便验证者可以验证P是否声明了D的正确所有权。(即使P声称是D的发送者,也必须填写Commitment(D))。IsOwner是P对D所有权的声明,其中的值可以是owner或sender。Pre.P表示D的前一个发布者(s)的集合,表示P从谁那里接收到与D有关系的数据集。如上所述,D可能来自多个数据集,因此Pre.P中可能有多个发布者,P和之前的每个发布者将用它们自己块的hash值表示。如果P声称是D的发送方,则Pre.P必须填写。否则,如果P声称是D的拥有者,则可以将其保留为空。R表示将接收D的接收者集合。TOS表示由数据原始拥有者定义的服务条款,描述了所有用户需要遵循的关于该数据的规则。可以有许多不同的和复杂的TOS例子。在这里的ProvNet中,我们使用一个简单的黑名单作为TOS的实现来定义谁不应该访问数据。为简单起见,我们假设TOS是一个仅附加的结构。如果D来自多个数据集,则TOS必须是所有以前的黑名单的并集,在第3节开始定义。


如算法1所示,当收到来自P的共享请求时,验证者将基于P对所有权的声明以两种方式验证请求。



如果P声称是D的发送者,验证方将从以下几个方面验证ShrReq:(1)检查所有以前的发布者(表示为  )看P是否属于它们,(2)检查前一个发布者的所有TOS(表示为  )确保P的接收者名单R不是它们的子集,(3)检查P的TOS是所有  的并集。这些检查过程的原因已在3.2节中提到并解释。如果这三个方面都没有任何错误,验证者将批准P的ShrReq。否则,验证者将拒绝这个ShrReq,因此我们可以在ProvNet中实现TOS-强制的数据共享。


如果P声称是D的拥有者,那么验证者将使用验证函数 φ 来验证Commitment(D)。如3.2节所述,在验证P是否为D的真正拥有者时,根据不同的场景可以有不同的 φ 。这里我们使用两个数据集之间的相似性来帮助做出这样的决定。衡量两个集合之间相似性的方法有很多,其中之一是Jaccard指数(JI)。两组A和B之间的JI可以用下面的公式计算  。假设两个集合尺寸差异很大(例如,A是B的一个子集),两组之间的JI将非常小,但实际上应该考虑A与B相关/类似。因此,我们进一步使用以下等式测量它们之间的相似性:  。显然,当结果为0时,A会被认为与B不同,而当结果为1时,两个集合是相同的。其他的结果将被认为是两个集合之间的相似度,即两个集合越接近1就越相似。为了有效地估计两个数据集之间的相似度,我们可以使用它们的MinHash值[4,7]来代替比较原始数据集。对于每个数据集,计算其MinHash值的一种方法可以描述如下:(1)将数据集划分为多个子集,(2)使用哈希函数计算每个子集的哈希值,(3)在由同一个哈希函数计算的所有哈希值中选择最小的哈希值作为一个MinHash值,(4)选择另一个哈希函数(例如相同的哈希函数有不同的种子),多次重复步骤2和步骤3。完成这些步骤后,将生成一组MinHash值,我们可以使用下面的方程来估计两个数据集a和B之间的相似度:  ,  表示属于A的所有MinHash值。在我们的场景中,我们选择MinHash值是因为用户可能不希望将他们的数据集公开给整个系统,更重要的是,数据集的大小可能太大,无法对两个数据集进行有效的比较。因此,在ProvNet中生成MinHash值用于验证是合适的。类似的选择可以在其他工作[12]中看到,MinHash值也有其他计算方法[7,15,32]。具体来说,在ProvNet中,我们使用SHA-256作为精确的哈希函数,对于每个文件,根据一些使用类似MinHash方法的已有工作[6,33],我们为每个文件计算了200个MinHash值。在16GB内存的Intel Core i5 CPU上,5Mb文件MinHash值的额外计算时间小于20秒。注意,如果像现有的作品一样使用并行计算,这可以很容易地加速[12,13]。


以 φ 在ProvNet中的实现为例,我们可以如下描述ProvNet中的验证者如何验证数据集的所有权。P声称是D的拥有者,并要求生成D的MinHash值(作为承诺(D))。从P接收到ShrReq后,验证者将通过将MinHash值与存储在blocknet中的所有已发布数据集的MinHash值进行比较来评估JI。如果JI超过某个预定义的阈值,那么验证者将认为D类似于某些现有数据集,并将由于其错误的所有权声明而拒绝ShrReq。否则ShrReq将被视为有效并被接受。具体的阈值设置留给具体的用户。


通过利用验证功能 φ ,我们还可以在ProvNet中实现所有权保护的数据共享。因此,任何破坏了ProvNet内部的所有权或TOS的错误行为都可以通过执行这个TOS和受所有权保护的数据共享功能/协议检测到。


在获得ShrReq的批准后,P可以与声称的接收者共享D。接收者会将从P接收到D的确认作为Ack广播给验证方,接收数据集的承诺(例如,在本例中是MinHash值)和接收者的id,验证者将收集所有表示来自P的收据的Ack。因为P已经在ShrReq中声明了所有的接收者,并与它们共享数据集,验证者将接受它,当且仅当所有声明的接收者广播了D的Ack。验证者不仅需要Ack的正确数量,即他们需要从R中的每个Ack接收到一个Ack,还需要验证所有接收到的Ack的正确性。为了验证ack的正确性,验证者有两个步骤,(1)比较P和R产生的Commitment(D)是否相同,(2)验证接收者的签名。签名的验证很简单,因为它可以防止攻击者伪造假签名对P和R产生的Commitment(D)s进行比较是解决第3.3节提到的共享不一致问题的必要步骤。这是因为在验证者收到并验证了所有相关的ack之后,块才会被添加。如果Ack不正确或在一段时间内收到,这意味着发布者和接收者之间存在争议,该块将不被接受,这种争议将被检测到。解决这一争议的方法可以在之前的著作[8]中找到,本文不再讨论。在验证ShrReq和所有Ack之后,验证者将把它们存储在一个类块结构中,如表1所示。


论文 | ProvNet:用于去中心化安全溯源的网络化区块链_计算机


2 双向Blocknet构建

验证者通过检查数据共享请求捕获数据共享记录后,将这些记录存储在基于区块链的新型数据结构中——BlocknetBlocknet的设计结合了区块链结构和有向图的思想,它允许每个块有多个前驱和多个后继。换句话说,每个块有多个前驱/后继块的多个哈希值。我们使用这种以哈希链为基础的块网络来存储来源记录,因为(1)这些记录是防篡改的,(2)有向图结构揭示了不同用户之间的数据流关系,直接显示了数据的源流。这是区块链上的自然扩展,因为一个用户可以从多个其他用户接收数据,一个用户也可以与多个其他用户共享数据。需要注意的是,这个想法与LineageChain[28]中的Merkle DAG和IOTA[24]中的Tangle里提出的想法相似,但又不同。LineageChain将每个状态作为一个节点存储在他们的Merkle DAG中,以保存起源记录,IOTA中的每个交易最多可以(直接)引用两个之前的交易。


此外,我们的blocknet是双向的,其中一个区块将存储其前驱和后继的hash值。这种双向属性是专门为同时需要某个块的前驱和后继的情况而设计的。当一个新的块生成时,它的前驱已经存在,但它的后继块还没有决定。因此,我们blocknet中的块被分为两部分,已确定的部分,在创建块时已确定不改变,未确定的部分,在创建块时未确定,在将来会改变。一个例子如图3所示。确定部分存储ShrReq中包含的条目和来自接收者的ack,而未确定部分存储后继哈希值。从过去的区块穿越到未来区块的想法也可以在LineageChain[28]和IOTA[24]中看到。


论文 | ProvNet:用于去中心化安全溯源的网络化区块链_计算机_02


如图3所示,发送方B想给接收者C共享数据  。  源自  ,这是从B的前驱A收到。当验证者通过检查A的块和C不属于A的TOS定义的黑色列表知道B是一个接收者,然后B的请求将被批准,在C向她/他发出接收  的Ack后,她/他的块也会添加到整个blocknet。要添加B的block,需要添加两个“箭头”(或指针):


Previous hash与大多数常见的区块链相同,例如将先前区块的hash值存储在区块头中。前一个散列存储在Pre中。B区块的P入口,并指向A区块的确定部分(图3),这已在4.1节中描述。


Future hash是我们区块网络的一个新结构,它是存储在A的区块的未确定部分的一个仅附加的条目。当B的确定部分存储在blocknet后,B的确定部分的hash值将被确定并用于更新A的future hash条目。B及其接收者都将使用自己的私钥对附加的future hash进行签名,其他人可以使用Fabric网络中CA提供的公钥验证签名。请注意,BFT也可以确保更新以前块的共识,并且签名可以保护未来哈希条目的防篡改性。


当涉及到多个发布者和接收者时,不同数据共享之间的来源记录将形成一个网络结构。每个块包含如图3所示的信息,我们仍然使用相应数据集的发布者来表示块。在图4的示例中,  共享的数据集依赖于  ,  ,  之前共享的三个数据集,而  将自己的数据集共享给四个接收者  ,  ,  ,  。使用这种结构,我们可以构建我们的双向blocknet,我们的blocknet的准确更新过程可以遵循Hyperledger Fabric的工作流程[1]。


论文 | ProvNet:用于去中心化安全溯源的网络化区块链_计算机_03


3 用于追责的前向/反向追踪

在构建了我们的双向blocknet用于来源记录存储后,ProvNet可以提供反向和前向追踪来解决数据泄漏问题。在大多数常见的基于区块链的结构中,很容易提供反向追踪的功能,因为每个区块总是包含它之前的区块的哈希值。(注意,这里我们将块的哈希值视为指向块本身的指针。)然而,要保留另一个指向它的后续块的指针并不容易。造成这种困难的原因很简单,前面已经介绍了分析。此外,在某些情况下,反向追踪可能不足以满足追踪的要求。例如,用户想知道在接下来的三跳中谁会引用他的数据,从而知道数据在共享平台中的流动情况。在其他情况下,如果发布的数据集在共享后发现包含错误信息,系统应该能够提供可能受假数据影响的节点列表。在这样的场景中,追踪前向依赖性的功能是必要的。


这里我们展示了另一个例子,当数据泄漏发生时,我们的blocknet可以用来发现可疑用户。如图4所示,假设黑块是发现在ProvNet外泄漏的数据集,我们想找出平台内潜在的嫌疑人。验证者首先计算泄漏数据集的MinHash值,然后利用存储在blocknet中的MinHash值估计其与所有其他数据集的相似性。为简单起见,我们使用灰度来演示相似度,即一个块的颜色越深,它与泄漏的数据集越相似。例如,在图4中,  和  是两个发送者,它们的数据集与泄漏的数据集非常相似,而泄漏的数据集  因为颜色更深而被认为更相似。在一个简单的方法中,我们可以直接选择最相似的  ,并对其前驱和后继程序执行BFS(广度优先搜索)。然而,这将导致巨大的开销,因为在最坏的情况下整个blocknet可能会被遍历。为了缓解这个问题,我们可以在搜索过程中限制跳数(例如,到k-hop的前驱/后继)。这种策略减少了开销,但也导致了不完全搜索。因此,我们进一步让验证者选择top-m相似块,并对它们的每个前驱和后继块执行k-hop BFS。通过这样做,将检查最相关的块(考虑到依赖关系和相似性),并将其对应的用户添加到可疑列表中。然后,核查人员将嫌疑人名单报告给官方机构(如执法机构)进行进一步调查。请注意,ProvNet并没有找出谁是恶意用户。相反,我们检测错误行为的发生,并提供一个可疑用户的列表,这缩小了搜索空间。

5 完整性和正确性分析

 引理1如果所有声称的所有权都是真实的,所有的所有权腐败都会被发现。


这个引理很简单,因为我们在3.3节中解释过,如果先前所有的所有权都得到了正确的认领,那么在ProvNet中就不可能接受假所有者。


引理2假设ProvNet有一个验证函数 φ ,它总是会返回正确的验证结果来判断给定的数据共享请求是否合法,并且ProvNet总是会向函数查询提交的数据集D的验证结果。对于每个发布者P,ProvNet可以保证,如果D是派生的,没有人可以声称是所有者,如果D不是D'的接收者,也没有人可以成功地声称数据集D是从D'派生的。


证明引理可以用归纳法来证明。在一个数据集  中,  必须被第一个发布者共享,并且ta必须是  的所有者(因为ta是第一个共享数据的人)。对集合  ,有两种情况:(1)如果某个发布者P声称自己是新数据集  的所有者,或者(2)P声称自己是新数据集  的发送者。在前一种情况下,验证者可以利用 φ 来验证  是否可以接受。既然我们假设 φ 总是可以返回正确的验证结果,那么如果P是真正的所有者,则  将被验证者接受,否则将被拒绝。对于后一种情况,由于  集合存储良好,且P已经声明  是从D'派生而来,验证者可以通过检查D'接收者的记录来验证D是否可接受。综上所述,如果P错误地声称是  的拥有者 / 发送者,则  不可能增加到  


定理1在引理2中有同样的假设,如果ProvNet检查每一次共享和检索,所有错误行为都会被检测到,并且来源记录是正确的。


定理1与引理2有相似的证明步骤,可以使用归纳法来证明。注意到目前为止,所有的理论结论都是基于验证函数 φ 的完美应用而得出的。但在真实世界场景中,这个函数可能会有一些误差。因此,我们有以下定理。


定理2所提出的ProvNet设计保证了  -完备性,其中 φ ,  φ 为验证函数 φ 引起的误差。


证明:这个定理可以很容易地用从一个空blocknet开始的归纳来证明。引理2与引理1的结合表明,所有虚假的所有权要求和虚假的重新共享请求都将通过使用验证函数 φ 或参考所有的前一个验证函数被拒绝。因此,所提出的ProvNet可以检测数据共享过程中所有类型的不当行为。归纳地说,在blocknet中,如果添加了一个新节点,其对应的发布者P必须是一个有效的所有者或发送者;如果添加了边缘,它必须在平台上有效地检索。因此,在任何时候,只允许有效的数据共享,所有的来源记录必须反映真实情况。


不幸的是,不可能像我们在完整性中所做的那样给出δ1, δ2的上界。只要ε> 0,无论它多么小,δ1,δ2将都是1。因为所有共享验证失败的概率将大于0,导致一个坏的情况下,我们有(1,1)-正确性(例如,每个节点和边缘blocknet是错误的)。然而,这是一种极其罕见的情况,在现实中,δ1, δ2不太可能很高。因此,我们通过大规模模拟估算δ1和δ2的值,这些值似乎也可以忽略不计。


如3.4节所述,理论上不可能给δ1和δ2一个小的上限。因此,我们使用描述消息交换的真实社会网络[16]模拟了恶意实体的不当行为。这样的图是高度循环的,但由于ProvNet中的来源记录存储在一个blocknet中,每个连接的节点之间有严格的时间顺序,我们首先使用BFS将blocknet变成森林,以便该结构更适合作为一种传播方式。然后,对于森林中的每棵树,我们将网络视为传播图  真实情况。由于ProvNet具有腐败检测  错误率的上界,因此我们让网络中的每个实体都以一定的概率  成功恶意化。一旦一个实体  变得恶意,  所触及的所有实体以及  自己都会被标记为未被检测的实体,因为  已成功移动到另一个blocknet   由于同样的原因,所有来自未检测实体的边缘也被标记为未检测边缘。这将给出构造的blocknet和真实情况之间差异的上限,因为从  到达的一些实体也可以从另一个诚实的实体到达,它们可能会或可能不会进一步转发  中的数据,但是我们把它们移到了  。最后,利用未检测实体数  和边数  计算δ1和δ2。注意δ1和δ2是相等的,因为它们被用来描述错误检测顶点和边的概率。我们重复模拟了100次,每棵树的平均节点数为81,306个,得到的在不同的ε下,δ1、δ2的结果如图5所示。结果表明当  时,δ1和δ2迅速收敛到0。


论文 | ProvNet:用于去中心化安全溯源的网络化区块链_计算机_04


6 结论

 本文提出了一个去中心化的数据共享平台ProvNet,该平台可以提供安全、正确的溯源记录并存储在双向网络化区块链上。通过选择合适的验证函数 φ 并强制执行TOS, ProvNet中的用户可以以一种规范的方式共享数据。我们还分析了储存的来源记录的正确性可以受到 φ 选择的限制。此外,新提出的blocknet还可以用于司法鉴定场景,在那里可以提供有用的证据,解释去中心化环境中数据共享期间发生的破坏。