摘要
随着物联网(IoT)市场的不断发展,账本系统面临着新的挑战,即如何有效地存储和保护物联网设备收集的大量客户记录。这些记录的真实性、可用性和完整性对业务提供者和客户都至关重要。在本文中,我们描述了一种轻量级、弹性的分布式账本系统DLedger。DLedger不是单一的区块链,而是在有向无环图(DAG)上构建账本,因此其操作可以容忍网络分区和间歇性连接。与计算密集型的工作量证明(PoW)不同,DLedger利用了认证证明(PoA),其轻量级操作与物联网友好,以达成共识。此外,DLedger建立在名为命名数据网络(NDN)的以数据为中心的网络上,这有助于在异构物联网网络中进行对等数据传播。介绍
在现代商业网络中,账本对于保存客户数据、保证业务功能的稳定至关重要。据[11]预测,到2020年,物联网市场的实体数量将达到500亿,这对账本系统提出了更高的要求,要求其在大规模数据中提供更好的安全性,并对物联网更加友好。
今天的物联网行业通常使用集中式账本系统。我们的工作灵感来自于一个实验性的私有太阳能系统[33],在该系统中,由屋顶太阳能网关测量的客户能源生产/消耗记录保存在云服务器上用于日志记录。这些记录稍后将由业务服务提供者报价,以向其客户收费。然而,由于集中式账本仅由服务提供者管理,这种方法经常受到客户以及业务系统中涉及的其他金融方的非议,原因有二。
首先,控制服务器的业务服务提供商可能篡改客户记录以获得不公平的优势。例如,太阳能系统服务商可能会篡改能源使用数据,恶意向无法证明原始记录数据存在的客户收费。更糟糕的是,如今对这种腐败几乎没有监督。其次,云服务器宕机和不稳定的物联网网络连接也可能破坏数据可用性。
为了克服集中式解决方案带来的弊端,现在很多商业提供商开始关注基于区块链的分布式账本系统。然而,加密货币中使用的流行分布式账本,如比特币[20]和以太坊[10],以及其他用例,由于许多原因不适合用于私有物联网业务。(i)这些系统使用各种资源密集的门控功能(例如,工作量证明,权益证明),这些功能对于受限设备来说基本上是不可接受的,对于具有大规模实时记录的系统来说是低效的。(ii)广泛使用的区块链数据结构不能满足不稳定的网络条件。例如,子网的区块链经过网络分区后,就很难集成到主链中。(iii)此外,由于物联网异构网络的存在,P2P网络要求的数据传播和同步往往效率较低。例如,当对等端试图从原始生成端获取丢失的数据时,该生成端设备可能处于休眠模式,因此不可访问。
今天的物联网行业通常使用集中式账本系统。我们的工作灵感来自于一个实验性的私有太阳能系统[33],在该系统中,由屋顶太阳能网关测量的客户能源生产/消耗记录保存在云服务器上用于日志记录。这些记录稍后将由业务服务提供者报价,以向其客户收费。然而,由于集中式账本仅由服务提供者管理,这种方法经常受到客户以及业务系统中涉及的其他金融方的非议,原因有二。
首先,控制服务器的业务服务提供商可能篡改客户记录以获得不公平的优势。例如,太阳能系统服务商可能会篡改能源使用数据,恶意向无法证明原始记录数据存在的客户收费。更糟糕的是,如今对这种腐败几乎没有监督。其次,云服务器宕机和不稳定的物联网网络连接也可能破坏数据可用性。
为了克服集中式解决方案带来的弊端,现在很多商业提供商开始关注基于区块链的分布式账本系统。然而,加密货币中使用的流行分布式账本,如比特币[20]和以太坊[10],以及其他用例,由于许多原因不适合用于私有物联网业务。(i)这些系统使用各种资源密集的门控功能(例如,工作量证明,权益证明),这些功能对于受限设备来说基本上是不可接受的,对于具有大规模实时记录的系统来说是低效的。(ii)广泛使用的区块链数据结构不能满足不稳定的网络条件。例如,子网的区块链经过网络分区后,就很难集成到主链中。(iii)此外,由于物联网异构网络的存在,P2P网络要求的数据传播和同步往往效率较低。例如,当对等端试图从原始生成端获取丢失的数据时,该生成端设备可能处于休眠模式,因此不可访问。
在本文中,我们提出了一种面向私有业务网络的物联网友好分布式账本系统DLedger。由于以数据为中心,我们在命名数据网络(NDN)[31]上构建分类帐系统,该系统可部署在私有系统中。DLedger的目标是提供安全、高可用的分类帐,以在业务环境中保持永久和不可变的数据。在整个DLedger中,实体不能否认或质疑记录数据的有效性、存在性或所有权,从而确保正常的业务功能。针对上述挑战,DLedger提供了四个主要组件的设计:
- DLedger中的记录保存在一个有向无环图(DAG)中,而不是单个区块链,允许在网络分区后进行简单的分类帐集成。
- DLedger利用了一种计算效率高的门控功能,称为认证证明(PoA),导致满足有限的设备工作。此外,DLedger为系统参与者提供了归档机制,以减少其本地账本的大小。
- 为了保证DLedger的鲁棒性,防止潜在的滥用和攻击场景,我们还提出了一组安全策略,提供(k;N) k <N个阈值方案,除非N个对等体中有超过k个对等体被破坏,系统仍然是安全的。
- DLedger利用NDN,通过提供内置的内容多播和弹性数据可用性来实现有效的数据传播。此外,NDN还有助于降低DLedger实现的复杂性。
在本文的其余部分,我们将在第2节介绍相关工作和关键挑战,并在第3节介绍DLedger的设计概述。第4节描述了DLedger的账本设计,解释了DAG、PoW和安全策略如何协同工作以提供数据安全。第5节讨论DLedger的网络设计。我们在第6节中评估DLedger系统的安全性,在第7节中评估DLedger。我们在第8节中对设计进行了一些讨论,在第9节中总结了我们的工作。
动机
相关工作
比特币[20]和以太坊[10]是分布式账本系统的两个典型和成功的例子。两者都基于区块链,其中事务保存在块中,所有块通过哈希指针链接在一起。为了决定谁可以在区块链中添加下一个有效的区块,矿工们通过更高的计算能力来竞争机会,导致巨大的能量浪费,因为它只允许一个赢家,而其他人所做的所有工作都是无效的。另一个著名的共识算法是PoS (Proof-of-Stake, PoS),用户通过将自己持有的区块置于赌注中,赢得添加下一个区块的机会。文中还提出了许多其他算法;例如,[8,23]提出了空间证明,对等体通过分配大量内存进行竞争,[2]提出了结合PoW和PoS的活动证明。一种声称对物联网友好的加密货币IOTW[1]提出了一种基于区块链的分配证明协议,其中挖掘对物联网设备来说更加轻量级和负担得起。在转让证明中,将通过两种方式选择矿工。(i)集中式服务器随机拾取物联网设备。每个设备使用自己的密钥和预定义的种子来计算随机性。将选择具有特定格式的随机性(例如,n个最低有效位的特征)。
区块链在其他用例中也得到了很多关注[5,35]。例如,麻省理工学院的研究人员开发了一个去中心化的计算平台,名为Enigma[36],在用户和服务提供商之间维护一个区块链来存储个人数据的访问策略,充当访问控制调节器。为了添加新的区块,Enigma使用PoS (Proof-of-Stake)模型来选择worker[9]。许多其他作品[27,32,12,28]利用比特币或以太坊交易的未使用字节为自己的目的。例如,在物联网用例中,[7]利用Beta信誉系统[15]over区块链在其私有智能家居设备网络中建立分布式信任模型,[30]提出了基于区块链和Proof-of-Space的物联网框架。除了TCP/IP上的分布式账本系统,基于NDN/ icn的相关著作[14,17]也很少发表。例如,[14]通过NDN提供了一个类似比特币的区块链系统,称为BlockNDN。
具体来说,我们识别了IOTA[13]、Nano[21]和Byteball[4]的工作,它们是基于图的分布式分类系统。IOTA[13]是一个加密货币系统,由于其无感觉的交易和轻量级的PoW,它声称对物联网友好。IOTA的分布式账本建立在一个称为tangle[24]的底层数据结构上,派生自有向无环图(DAG)。tangle中的每个节点都是携带IOTA货币的事务的块,与区块链中的链式块类似,块也通过散列引用关联。IOTA允许每个系统参与者通过验证两个现有块并执行轻量级PoW来追加新的块。IOTA采用一种加权随机选择算法——马尔科夫链蒙特卡洛(Markov Chain Monte Carlo, MCMC),从古老的区块走向最新的区块。一旦一个记录被足够多的块引用,就认为系统已经对这个记录达成了共识。IOTA利用了纠结,因此允许多个交易并行处理,与基于区块链的系统相比,极大地提高了系统容量。Nano[21]和Byteball[4]也是利用基于图的账本的加密货币。Nano类似于IOTA,使用PoW作为反垃圾邮件保护,Byteball则摆脱PoW,在图内形成一条称为“主链”的单链来达成共识。这个主链由可信的第三方用户选择的区块组成。
观察结果和主要挑战
如观察到的,大多数共识协议依赖于系统参与者的资源(计算或存储能力),这与约束物联网设备的约束资源不兼容,因为“没有肌肉显示”。因此,物联网设备需要等待强大的矿工将其交易添加到区块链中,而不是直接参与分类帐系统。在这些协议中,分配证明[1]似乎是物联网友好的。然而,第一种次要的选择方法依赖于中央服务器,有可能导致服务提供商的恶意干预和单点故障,而第二种选择方法很容易被破坏,因为攻击者可以简单地雇佣计算能力(不会太多,因为IOTW的挖掘是如此轻量级),并计算出一个随机性来赢得选择。
此外,单一的区块链结构也不是物联网友好的,原因如下。首先,它限制了系统容量,因为总是只有一个下一个记录,禁止并行操作。比特币就是这样一个例子,每个区块大约需要10分钟才能被添加到链中,最大吞吐量是3.3-7交易/秒[6]。此外,在进行网络分区时,每个子网会不断在其链视图中追加新的区块,从而导致两个不同版本的区块链不兼容。
与基于区块链的系统相比,IOTA利用了tangle,从而允许多个交易并行处理,极大地提高了系统的容量。然而,IOTA也不适合作为物联网的分布式账本。一方面,IOTA的轻量级PoW对于受限的物联网设备来说仍然很重,因为计算一个PoW可能需要几分钟,可能会影响物联网的正常功能。另一方面,由于矿工对系统是匿名的,它可以秘密地将PoW计算租给PoW不太消耗资源的现代计算机,从而能够在短时间内向系统添加许多块。这使得它们不仅可以在同伴可以不断引用自己的(甚至无效的)块时进行自我批准,还可以通过控制所有提示使系统接受它们。此外,由于哈希指针是从新块到旧块的,而MCMC需要从旧块到新块的随机遍历,这会导致效率低下,因为找到连续的块并非易事。在最糟糕的情况下,对等体甚至需要为每一步迭代整个图。
其他基于图形的分布式账本也不适合作为用于物联网的私人账本。例如,在Nano中,PoW可以被现代计算机以秒的顺序计算出来,因此当攻击者具有强大的计算能力时,系统可能会受到事务泛滥的影响。Byteball虽然是基于图的,但是数据的一致性仍然处于一个单链中,这在网络分区方面是不足的。Byteball认为,网络分区在公共互联网中几乎是不可能的,但在IoT网络中,这一假设不再成立。
因此,设计面向物联网业务模式的分布式账本系统,需要改变账本设计和网络设计。我们特别指出了工作中需要解决的三个主要挑战。
1. 提供强大的账本,其数据共识对不稳定的物联网网络条件具有弹性。在网络分区或间歇性连接的情况下,来自不同子网的实体应该仍然能够对分类帐系统作出贡献。网络故障后,分布式账本可以通过聚合不同子网产生的数据,从分区中快速恢复。
2. 物联网设备容量有限,数据规模庞大。分布式账本应该足够高效,使受限制的设备能够附加自己的数据,同时防止潜在的滥用和攻击场景。
3. 填补了物联网中低效的数据传播与P2P网络要求的高数据吞吐量之间的空白。分类帐应该支持有效的数据传播,以实现对等点之间的日常同步。
DLedger设计概述
DLedger的目标是在一个可以与资源受限的物联网设备一起工作的分布式账本系统中保持不可否认的和永久的记录。为了实现目标并解决所确定的挑战,DLedger做出了四个设计决策:
- DLedger利用DAG来保存记录数据。
- DLedger使用PoA作为门控功能,允许实体添加新记录。
- DLedger通过一组安全策略确保系统的健壮性。
- DLedger构建在一个以数据为中心的网络上。
(i)每个实体信任身份管理器,即安装身份管理器的数字证书,能够验证身份管理器直接或间接签署的签名。
(ii)系统内的每一个实体都有一个身份名称,并已预先由指定的身份管理器发出数字证书,以将实体的身份名称与公钥/私钥对绑定。在多方业务模型中,也可以有多个身份管理器;在这种情况下,还需要身份管理器之间的交叉认证。
DLedger的结构概述如图1所示。简而言之,DLedger旨在通过记录和联锁系统中的每个记录来促进安全解决方案的开发,创建和维护一个不可变的分布式账本。DLedger系统中的所有实体(包括身份管理器)共同构成一个点对点(P2P)网络。每个对等体在验证其有效性后对其他对等体的记录进行批准,并将其新记录添加到DLedger中。身份管理器还将实体证书颁发和证书撤销记录附加到分类帐中。目前,分布式账本存储两类记录内容:
- 实体的申请记录,例如,太阳能使用情况;
- 身份管理操作,包括证书的颁发和吊销。
DLedger与IOTA的纠结类似,它将所有记录存储在一个有向无环图(DAG)中,而不是单个区块链中。如图2a所示,每个顶点代表一条承载其有效载荷数据的记录,而每个边代表一条记录对另一条记录的批准。在DLedger的DAG中,一个新生成的记录(顶点)将被放置在DAG中n (n ≥ 2)现有记录的相邻(链接)处,建立从新记录到前一个记录的批准。图2a是n=2时DAG的一个例子。尾随记录是指未被DAG中任何其他记录批准的记录。
当对等体P生成一条新记录R时,对等体P的步骤如下。
1. P随机选择n条其他对等点生成的尾随记录。
2. 然后,它将验证这些记录以及这些记录直接或间接批准的记录的有效性。如果这n条记录中有一条是无效的,即这条记录是恶意的,或者它批准了一条无效的记录,P应该删除它并重新选择另一条记录。
3. 然后,对等端将n条被选中的记录和应用负载的名称添加到新记录R中,如图2b所示,并设置R的名称为:
“/DLedger/<Generator ID>/<Record Hash>”
2. 然后,它将验证这些记录以及这些记录直接或间接批准的记录的有效性。如果这n条记录中有一条是无效的,即这条记录是恶意的,或者它批准了一条无效的记录,P应该删除它并重新选择另一条记录。
3. 然后,对等端将n条被选中的记录和应用负载的名称添加到新记录R中,如图2b所示,并设置R的名称为:
“/DLedger/<Generator ID>/<Record Hash>”
其中“<Generator ID>”是P的唯一ID,“<Record Hash>”是在R上计算的摘要。
最后,P通过对记录进行数字签名来附加认证证明(PoA),使其真实性和完整性可验证。
对等体利用新的记录通知协议(章节5.2)将其通告给整个P2P网络。在接收到通知后,其他实体将获取该记录,并在身份验证后将其添加到本地分类账中。还存在一个账本同步过程(章节5.3),周期性地或在不同步事件(例如,休眠模式、网络故障等)之后触发。利用通知协议和同步协议,在所有实体之间复制和同步DAG。
我们的工作与现有解决方案的根本区别在于NDN上以数据为中心的实现。与TCP/IP网络不同,NDN将命名和安全的数据作为网络的“细腰”。在NDN中,应用程序通过发送携带所需数据名称的Interest包来获取数据。网络根据兴趣的名称转发兴趣,并从其来源或网络内缓存中获取相应的数据包。我们将在第5节详细介绍这两个协议及其以数据为中心的特性。
DLedger为记录接收方提供了一套安全策略来检查传入的记录,防止了垃圾邮件攻击、共谋攻击等潜在威胁,以及懒惰(对系统安全没有任何贡献)等不当操作。这些安全政策保证了(k,N) k<N个阈值方案,除非N个对等体中有超过k个对等体被破坏,系统仍然是安全的。
激励同行P做出贡献的动机是记录的有效性依赖于其批准。因此,积极地批准记录导致记录的确认,P产生并受益于其数据的真实性、完整性和可用性。相反,被动对等体可能会将自己的记录附加到无效记录上,从而使其被忠实的大多数实体拒绝,失去数据安全的保证。
保持本地账本同步的动机是获得最新状态,这对保护自身利益很重要。例如,身份管理器可能会将证书撤销记录插入到分布式账本中。在没有注意到这些记录的情况下,实体可能会错误地批准一个由撤销密钥签名的记录,导致生成被废弃的记录。此外,保持本地分类帐的新鲜度有助于实体知道他们自己的记录是否被整个系统接受、确认或放弃。
基于DAG的互锁PoA可验证记录DLedger
本节从以下方面介绍分类帐系统的详细设计:
(i) PoA如何工作,
(ii) DLedger如何通过安全策略(即贡献策略和联锁策略)确保成功记录功能,
以及(iii)系统如何对记录数据达成共识。我们还描述了一种存储受限的物联网设备机制,以减少本地账本所需的存储。
证明的认证
在DLedger中,实体不是计算加密谜题或分配其他资源,而是向记录附加PoA,将其与特定实体关联,因此其创建者不能拒绝承认它的存在和所有权。要验证PoA,实体需要确认:
- 身份管理器向创建者颁发的公钥可以验证PoA。
- 必须确认包含密钥证书的记录。
- 没有确认的记录已经撤销了证书。
PoA在我们的账本设计中是一个差异使能器,因为它允许系统区分不同实体生成的记录。如本节后面所述,联锁策略和共识过程都基于此属性。PoA提供了数据的真实性和完整性,但不足以防止恶意实体滥用分类帐。PoA的一个原因是它的轻量级。考虑到像ATECC508A这样的ECC芯片在物联网中的广泛使用,在短时间内生成大量PoA并不困难,即使是受限的设备。因此,DLedger采用安全策略来强制实体行为。
贡献的政策
贡献策略强制对等点验证未确认的记录,更确切地说,在创建记录时跟踪记录。该政策在以下几个方面增强了稳健性。
- 确保新记录的不断验证和确认,防止未确认记录规模的扩大。
- 防止懒惰的对等点批准旧记录并且对安全性没有贡献。
当收到一个新记录R批准n个现有记录时,理想情况下这n个记录应该是尾随记录:
其中,wi为第i条已批准记录的权重。然而,网络延迟和并发审批使得他们不再在到达时跟踪记录成为可能。为了避免意外拒绝,我们引入了一个阈值Wcontribution w.r.t:
当验证一条新记录时,对等体不使用规则1,而是检查它是否满足:
对于实体来说,安全的选择是在生成记录时随机选择n个尾随记录来审批,但在尾随记录不足的情况下,权重不超过w贡献的最近记录也允许选择。对于任何违反条件的记录,除非超过Wconfirm实体接受它忽略政策,否则它永远不会增加足够的重量来被确认。因此形成(k,N), k=Wconfirm格式。类似的声明也适用于另一种策略。
联锁政策
联锁策略可以防止对等体P对自己生成的记录进行批准。换句话说,同一对等体不应该产生相邻的两条记录:
,和是紧邻的,可以推出。
任何符合上述条件的到货记录将被拒绝,无论是否为跟踪记录。
与缴费策略类似,我们有方案(k,N), k=Wconfirm成立。
联锁策略通过引用名称的批准强制来自不同实体的记录相互联锁。如图4所示,由于每个记录名称都包含块的哈希值,修改一条记录(图中的记录a)将使对它的所有批准无效(实际上是雪崩效应)。注意,这些批准是由poa保护的,并且根据联锁策略,B、C和D是由不同的实体从A生成的。因此,没有人可以在不知道所有其他实体的私钥的情况下修改记录。
此外,互锁策略限制了任何对等体最多只能增加一条未确认记录的深度,从而消除了被攻击实体无休止地添加新记录、增加未确认深度并给其他对等体带来负担的攻击场景。
通过记录权重达成共识
当一个实体批准一个记录时,它承认它的有效性和它直接或间接批准的记录,直到达到确认的记录。图5显示了n = 2时这种过程的示例。更具体地说,该实体必须验证所有涉及的记录满足以下四个要求。
- 他们携带有效的PoA。
- 跟踪记录不能批准根据贡献策略权重过大的记录。
- 给定联锁策略,一条记录不能批准同一实体生成的另一条记录。
- 这些记录中携带的有效负载满足应用程序级语义。
前三个需求由DLedger定义,而最后一个需求由应用层控制。应用程序级规则的一个典型示例是,要验证比特币交易,对等方需要追溯买家的交易历史,以确保它有足够的比特币用于购买。在本文中,我们主要关注分布式账本和网络解决方案,将应用程序级规则留给特定的用例。
DLedger系统通过记录重量实现共识。一条记录的权重是直接或间接批准它的实体数量,这里用w表示。新生成的记录的权重为零。在通过P2P网络进行宣传和传播后,它得到了批准,并伴随着其权重的累积增加。图6显示了一个简单的示例。记录按其重量是否超过阈值分为两种状态:
- 未确认的记录:w<Wconfirm。
- 确认的记录:w≥Wconfirm。
创造纪录的最终目标是增加足够的体重以获得确认。但是,如果不能,则可以在应用程序定义的期限后撤销。相比之下,确认的记录意味着系统对记录的有效性达成了共识,并将永久保存它。
减少本地账本的存储
记录的单调追加继续消耗空间。为了将DLedger放入存储约束的物联网设备中,当供应空间接近耗尽时,实体可以通过以下方式减少本地DAG的大小(i)修剪所有在一段时间后仍未确认的记录,以及(ii)取出远离尾随记录的古老确认记录。对于从DAG中取出的古老的确认记录,一个实体可以根据特定的用例有以下选项。
C1的加入使A1和B1的权重增加了1。那么A3的插入会增加C1和A1的权重,因为分别是直接批准和间接批准,而B1则不会增加,因为B1已经被A批准了。
图6:权重增加的一个例子
图6:权重增加的一个例子
(ii)取出与尾迹记录距离较远的古代确证记录。对于从DAG中取出的古老的确认记录,一个实体可以根据特定的用例有以下选项。
- 实体可以将其传输到某些存储服务(如云服务器)进行备份。
- 如果服务提供者部署了指定节点来存储DAG的完整副本,则可以删除这些记录。由于记录是联锁的,并且受到PoA的保护,服务提供者不能修改现有DAG中的内容。
- 在没有可用备份服务和部署指定节点的情况下,如果这些记录不再有用,实体仍然可以安全地删除这些记录。以太阳能网关系统为例,在服务提供商正确地向客户支付账单后,每个实体的本地分类帐中的旧记录就可以删除了。
数据中心网络上的DLedger
DLedger需要两种基本的网络功能:通知和同步,这对缺乏连续连接的异构物联网构成了巨大的挑战。通知使实体可以发布新记录,而同步使节点的本地状态与其他节点一致。一个实体不保证总是在线的;一个记录不能保证总是被接受。因此,对等体需要及时和已知故障(如链路故障、设备故障、低功耗模式等)后,将其DAG与P2P网络进行同步。
介绍NDN的概念,以及DLedger如何利用NDN协议在物联网网络中传播数据,简化实现过程。特别是,DLedger在三个方面利用了NDN以数据为中心的特性。
- DLedger利用网络内缓存和内置的内容组播来提高数据传输效率,特别是在网络不稳定的情况下。
- 由于NDN在网络层提供了应用语义,使得物联网中的无线组播可以受益于更精确的分组抑制机制。
- 通过在以数据为中心的网络上开发DLedger,可以显著简化它的实现。
如果业务系统处于大规模(广域网)中,另一种方法是在TCP/IP架构上构建一个覆盖NDN网状网络(图7b),类似于比特币中TCP上的互联网中继聊天(IRC)。DLedger可以按预期运行,但在这种部署中无法受益于NDN,每个实体都需要维护第一跳邻居的IP地址列表,并遵循八卦协议像比特币一样进行广播。
命名数据网络
NDN直接在网络层使用应用程序数据名称进行路由和报文转发。与IP报文不同的是,Interest报文和Data报文都不携带地址。NDN利用自己的状态转发平面[29]在网络中传递报文。当接收到一个兴趣(例如,“/DLedger/gtw-node0/f46…1ace”),NDN转发器将根据它的名称将数据包转发到相应的接口,并记录它的路径-入接口和出接口。当匹配的数据包到达时,转发器将按照Interest采取的反向路径将其转发给请求者。同时,转发器将缓存数据包,以满足未来针对相同数据的潜在利益。去掉地址可以更有效地传播数据:
- 网络内缓存:路由器缓存数据包以满足未来的利益,
- 兴趣聚合:可以将针对相同数据的多个兴趣聚合为一个兴趣。
为了在特定的前缀(例如,“/DLedger”)下提供数据,节点将需要向网络注册这个名称前缀,以表明其愿意接收此类兴趣包。在DLedger中,每个实体将向网络注册两个名称前缀,以便无线接口接收Interest包:
- 前缀“/DLedger”接收多播利益。
- 前缀“/DLedger/<entity's name>”接收单播权益,其中“<entity's name>”对每个实体都是唯一的。
DLedger建立在NDN的兴趣和数据包交换之上,直接使用NDN数据包作为记录,从而摆脱封装开销。如图3和图2b所示,记录名称是数据名称,批准的记录和有效负载字段是数据内容,PoAs是数据签名。特别是,一条记录在结构上被命名为“/DLedger/<Generator ID><record hash>”,前两个组件显示了从哪里获取它。在太阳能网络的例子中,记录“/Dledger/gtw-device0/f46…”“1ace”由实体“/DLedger/gtw-device0”创建。因此,NDN支持包包装和网络功能,极大地简化了DLedger的实现。
通知协议
在生成一条记录后,为了通知其他对等体去获取它,对等体通过一个带有名字的Notification Interest (Notif Interest)来发布它
“/DLedger/NOTIF/<Generator ID>/<Record hash>”
由这个兴趣触发,对等体可以简单地删除“NOTIF”组件,为新记录组成一个兴趣,并从网络中获取新记录。
为了防止滥用Notif Interest可能导致的拒绝服务攻击和反射攻击,业务服务提供者可能要求每个实体在组播Notif Interest时携带新记录的PoA。由于PoA是根据记录名称计算的,因此对于Notif Interest接收者来说,通过从Notif Interest名称恢复记录名称(通过删除“Notif”组件)来验证这个PoA就足够了。将PoA嵌入到Notif Interest中不会导致额外的开销,因为在接收Notif Interest时,PoA已经被验证,因此在获取实际记录数据包后,实体不需要对PoA进行双重验证。相反,实体只需要确保记录与前一个Notif Interest中携带的名称和PoA匹配。
同步协议
在DLedger中,实体通过向其邻居广播同步兴趣来触发同步进程。Sync Interest在节点本地分类帐的当前视图中携带尾随记录列表,作为Interest参数[22],命名约定如下:
“/DLedger/SYNC/<tailing records digest>”
当另一个节点接收到同步兴趣Isync时,它将Isync中的列表与它的本地跟踪记录列表进行比较,找出是本地分类账还是发送方的分类账过期了。如果有尾随记录在本地丢失,对于每一个丢失的记录,它发送一个兴趣来获取它。被检索到的记录批准的祖先记录也将被递归地检查和获取。另一方面,如果issync中的一条记录不再是本地分类账中的跟踪记录,它将发出一个Sync Interest,声明发送方的分类账已经不同步。
由于DAG,同步能够在从网络分区恢复后无缝地合并多个账本。使用区块链时不会导致分叉,DLedger中的聚合不会暴露冲突。一旦同步,一个实体就可以创建一个记录来批准来自不同子网组成的多个分支的现有记录,从而将多个分支合并在一起。
注意,贡献策略不会阻塞同步进程,因为它只应用于跟踪记录,但是联锁策略仍然会应用。如果在同步过程中获取的记录进行了自我批准,那么该记录在以后将不会被良好的对等点批准。
DLedger中的高效数据传播:一个案例研究
我们以通知流程和记录抓取流程为例,说明NDN如何帮助DLedger在异构物联网网络中实现高效的数据传播。
如图8a所示,当记录产生器A将Notif Interest组播给它的第一跳邻居B、C和D后,它们会将组播转发到进一步的节点e。重复的兴趣在这里被抑制,即如果B或D听到C组播的相同的Notif Interest,它们可以避免再次发送报文。基于IP或其他网络协议(如Zigbee、Thread等)的组播解决方案中不存在此特性,因为B、C或D无法识别网络层组播包中携带的内容。
当实体收到通知后,会在短时间内对相同的数据发送兴趣,中间节点可以聚合这些兴趣,回复的数据可以缓存,以满足未来的兴趣,节省网络带宽。例如,如图8b所示,假设C有新记录,当F和G要取新记录时,他们的两个interest可以在E合并,由C的内容存储来满足,而不是A。
在间歇性连接或包丢失的情况下,兴趣可以重传。例如,当C将记录返回给F和G时,E和F, G之间的链接就不可用了。然后,当连接恢复时,F和G可以重新传输获取的Interest,并从E上的缓存中获取数据,尽管E只是一个转发器,没有运行分类账。
DLedger系统的安全评估
本节将根据DLedger的安全属性对其进行安全评估,以及我们的设计如何减轻各种攻击场景和潜在漏洞。
安全属性
表1:DLedger的安全属性
安全属性 | DLedger的方法 |
可用性 |
分类账的去中心化复制 |
完整性 |
PoA使确认的记录不可变 |
真实性 |
在分布式账本中附加了所有已签发/已撤销证书的PoA |
保密性 |
加密的内容,对非对等实体不可见 |
表1总结了提供的安全属性,并简要解释了DLedger的方法。DLedger通过分布式账本和PoA提供前三个安全属性。
使用假名隐藏实体的身份不是DLedger设计的主要考虑因素。首先,DLedger是为私有业务网络设计的,身份管理器或业务服务提供商知道其客户的身份。其次,与比特币中的匿名不同,比特币中的矿工是匿名的(即隐藏在任意的钱包地址后面),一个实体及其所有记录都与它的PoA关联。此外,正如许多著作[25,19]指出的那样,在比特币和其他加密货币系统中,当攻击者可以将网络外信息与交易的开放性结合起来时,假性很容易被破坏。
然而,由于用例是私有业务系统,内部记录不应该向公共Internet公开。为了防止数据泄露到外部网络,实体可以对内容进行加密。这需要部署适当的密钥管理和访问控制。我们认为,在系统实体之间已经建立了信任关系的私有业务模型中,这是相对容易的。例如,DLedger可以利用基于名称的访问控制(NAC)[34],其中身份管理器可以充当解密密钥分发者,仅向内部实体授予访问权限。
威胁缓解
懒惰
DLedger利用它的安全策略来消除对等点的惰性。例如,如果一个对等体批准了已经确认的记录,其他对等体将通过贡献策略放弃这些记录。由于证书撤销也附加到分类帐,它是重要的所有对等体同步,获得最新的安全信息,并避免批准一个被撤销的对等体的记录。
垃圾邮件记录攻击
即使对受限设备,PoA也是有效的,使恶意节点能够使用有效的PoA伪造垃圾邮件记录。这种垃圾邮件攻击可能通过无限增加未确认记录(即从跟踪记录跳转到确认记录)和利用合法对等点的资源进行验证和存储来滥用系统。它还会增加网络开销,并导致网络延迟。DLedger从其设计中防止了这种滥用,因为(i)随着PoA揭示了创建者的身份,攻击者将在攻击时留下其足迹。(ii)联锁策略通过批准自己来防止攻击者添加未经确认的深度。此外,应用程序级语义可以帮助减少滥用。例如,一个节点可以测量来自每个节点的传入通知兴趣的速率,以检测恶意节点,然后将它们报告给服务提供者以进行进一步检查。
拒绝服务攻击和反射攻击
由于Notif Interest将触发系统实体向“/DLedger/Generator ID/<Record hash>”发送包,如果没有保护,行为不当的实体或外部攻击者可能会通过伪造不存在的“<Generator ID>”和“<Record hash>”或使用受害者的“<Generator ID>”来滥用该Interest进行拒绝服务攻击和反射攻击。如第5.2节所述,系统可以强制每个实体将其PoA附加到Notif Interests中。通过这种方式,如果PoA无法验证或与生成器的名称不匹配,接收者应该拒绝Interest。如果业务提供商部署了入侵检测系统(IDS),对等体也可以向入侵检测系统(IDS)报告此类利益。
共谋攻击
当P2P系统中多个实体希望通过对彼此的无效记录进行批准和验证来实现利益最大化时,就可能发生串通攻击。PoA只能确保数据的真实性,不能防止恶意实体滥用其审批。并且无论是联锁策略还是贡献策略都不能阻止勾结的对等点的协作。
DLedger阻止共谋攻击的程度,除非Wconfirm或更多的实体勾结,攻击不能成功。特别是,一项记录需要有至少Wconfirm的重量才能被确认。因此,只要被串通的对等体数量不超过Wconfirm,伪造记录就无法获得系统对其有效性的共识。
身份管理器的机器人攻击
DLedger中的所有对等点信任指定的身份管理器和它们颁发的证书。这些指定的身份管理器可能通过旋转许多虚拟节点并为它们分配有效的身份证书来显示恶意行为。这样,这些虚拟节点通过让Wconfirm虚拟节点来批准无效记录,就可以很容易地确认无效记录。
然而,DLedger的公开安全防止身份管理员滥用其权力。如4.1节所述,身份管理器必须通过将证书附加到分类帐系统来颁发证书。这种机制要求身份管理人员的所有干预都被记录下来,以便在发现可疑批准后进行检查。
轻节点的脆弱性
在分布式账本系统中,轻节点本身不验证区块或存储账本副本,而是将其外包给完整的节点,这导致了严重的安全漏洞。以比特币的轻节点[3]为例:轻节点依赖于全节点来验证交易;因此,在没有full node帮助的情况下,它会接受假的或无效的硬币,从而导致该节点破产。更糟糕的是,轻量级节点没有隐私,因为它发送钱包地址到它依赖的完整节点,并从完整节点接收余额和交易历史。
DLedger通过使每个实体更容易“挖掘”新记录和保存本地分类帐来缓解这一漏洞。在这里,即使对于受限的物联网设备,PoA也是轻量级的,因此鼓励实体执行自己的计算,而不是出租。此外,DLedger的去中心化归档机制(如4.5节所述)允许高效使用存储容量,而不会丢失任何所需的分类帐数据。作为底层网络的NDN也有助于解决这一挑战,因为可以从任何节点(而不是某些特定的完整节点)检索任何记录,而不需要暴露请求者的身份。
DLedger的评估
在本节中,我们通过理论分析和我们在ndnSIM[18](一个基于NS-3的NDN仿真平台)上的仿真结果,评估DLedger的鲁棒性、可扩展性和处理网络分区的能力。
未确认记录大小
DLedger的一个重要问题是它的健壮性:当系统运行时,未经确认的记录的大小会无限大,从而导致系统崩溃吗?由附录A.1可知,尾砂记录尺寸集中在常数附近:。
其中T为系统接受新记录的平均延迟时间,l为系统遵循泊松分布的新记录生成速率。此外,附录a .2显示了一个记录被确认的时间也是一个常量。因此,由于DAG的未确认记录的边界(尾随记录)和深度(待确认时间)都是恒定的,因此未确认记录的大小也是恒定的。
随着DAG的增长,我们根据未经确认的记录大小来模拟评估DLedger。具体来说,我们建立了一个50个实体的P2P网络,Wconfirm=20,每个实体的记录生成速率为0.2条记录/秒。如图9所示,未确认的记录数量不会随着DAG的增长而增加。相反,未经确认的记录数轴在启动后会增加一段时间,然后在一个常量附近波动,确认数学证明。
图10展示了在实体总数相同的情况下,Wconfirm设置与未确认记录大小的关系:将Wconfirm从5调整为20,未确认记录大小仅增加约100%。
系统可扩展性
我们认为DLedger具有更好的可伸缩性,因为以下两个原因。首先,DLedger利用DAG来保存记录。DLedger不再只允许区块链中有一个成功的下一个块,而是接受多个有效的下一个记录,从而允许多个实体并行地为系统提供服务。这消除了计算的浪费,并释放了对记录处理速度的限制。其次,采用PoA作为门控函数。与PoW的高度CPU限制不同,PoA即使在受限的物联网设备上也更便宜和高效,大大提高了系统效率。
我们还展示了当实体数量增长时DLedger的性能。如图11所示,Wconfirm固定后,参与的实体越多,记录被确认的速度越快。因为对于任何具体的记录,更多的实体意味着审批它的更多努力。
网络分区
我们在网络分区的情况下评估DLedger的性能:在模拟中,我们通过删除它们之间的链路将网络划分为两个独立的子网。在此之后,分区再次花费100秒和两个网络单元。图12显示了在模拟结束时由实体维护的DAG。如图所示,形成了两个分支,然后合并,显示了DLedger从网络分区恢复的能力,最终确认了每个子网的记录。
讨论
系统引导
业务服务提供者应该引导DLedger以供实体使用。服务提供者需要生成最初的几条记录作为生成记录,以供以后的记录审批。系统常量,比如Econfirm和Econtribute,也应该得到正确的配置。这些配置可以通过软件更新动态调整,软件更新可以通过DLedger中的记录交付。启动后,身份管理器可以脱机,除非有新的实体加入或需要证书撤销操作。
要加入DLedger P2P网络,新实体应该有身份管理器颁发的证书。发行是通过在DLedger中插入一条记录来完成的,让其他对等点知道。然后,新实体可以开始使用同步。
要加入DLedger P2P网络,新实体应该有身份管理器颁发的证书。发行是通过在DLedger中插入一条记录来完成的,让其他对等点知道。然后,新实体可以开始使用同步。
PoA与其他共识算法
与其他分布式账本系统使用和提出的共识算法相比,PoA不像一个共识算法。实际上,PoA只将实体的公共身份与它生成的记录关联起来,并确保数据的完整性。这解释了为什么PoA比任何其他共识算法都要便宜得多。在DLedger中,对已确认记录的共识是通过依赖足够多的不同实体来批准它来实现的,其中PoA在区分有多少不同实体批准了该记录方面起着关键作用。
这也是IOTA和DLedger之间的根本区别。在IOTA中,矿工是匿名的,因此足够多的批准并不一定意味着系统中有足够多的实体识别记录的有效性。
PoA与其他共识算法的另一个显著区别是,PoA要求身份管理器对系统中的对等体进行认证。这个前提条件决定了DLedger适合于私人业务系统,如银行会计、医疗记录和电网系统,但不适用于公共网络系统。PoA与其他共识算法的比较如表2所示。
这也是IOTA和DLedger之间的根本区别。在IOTA中,矿工是匿名的,因此足够多的批准并不一定意味着系统中有足够多的实体识别记录的有效性。
PoA与其他共识算法的另一个显著区别是,PoA要求身份管理器对系统中的对等体进行认证。这个前提条件决定了DLedger适合于私人业务系统,如银行会计、医疗记录和电网系统,但不适用于公共网络系统。PoA与其他共识算法的比较如表2所示。
记录快照
第4.5节介绍了一个实体减少其本地分类帐规模的机制。在本节中,当来自多个记录的数据是可聚合的,因此可以汇总到一个记录时,我们将讨论另一种称为记录快照的机制。例如,在太阳能网关网络中,记录保持每个实体的居民用电生产/消耗,以获得电力平衡。在这种情况下,可以通过使用已确认的记录计算每个实体的最终余额来执行快照过程,以便删除这些已确认的记录以节省空间。请注意,快照是一个单独的行为,不需要与其他对等点同步快照记录。
证书撤销的分类记录
除了插入的申请记录,DLedger还保留了证书的签发和撤销。介绍如何撤销证书。
当检测到垃圾邮件等入侵时,身份管理器可以通过签署吊销通知并将其附加到DLedger来撤销恶意节点的证书。与生成常规记录类似,身份管理器需要验证n条现有记录,并向整个P2P网络多播通知。
为了方便查询撤销状态,可以使用覆盖指针。例如,如图13所示,R1和R2是携带撤销通知的DLedger记录。除了批准之外,它们还有一个应用程序级指针指向负载中先前的撤销,从而加速对撤销的搜索。在这个例子中,节点只需要维护最后的撤销记录R2,并使用它来跟踪所有的撤销。
当检测到垃圾邮件等入侵时,身份管理器可以通过签署吊销通知并将其附加到DLedger来撤销恶意节点的证书。与生成常规记录类似,身份管理器需要验证n条现有记录,并向整个P2P网络多播通知。
为了方便查询撤销状态,可以使用覆盖指针。例如,如图13所示,R1和R2是携带撤销通知的DLedger记录。除了批准之外,它们还有一个应用程序级指针指向负载中先前的撤销,从而加速对撤销的搜索。在这个例子中,节点只需要维护最后的撤销记录R2,并使用它来跟踪所有的撤销。
DLedger的其他用例
本文中显示的DLedger设计服务于两个不同的用例:(i)应用程序记录分类帐和(ii)身份管理器的证书管理。
DLedger还可以用于在配置和信息共享方面促进物联网系统。举个简单的例子,通过TCP/IP组网构建DLedger时,系统需要维护NDN名称前缀与IP地址的映射关系。类似于比特币的IRC覆盖维护邻居的IP地址,DLedger可以在这里使用。例如,当一个实体加入P2P网络时,它可以插入一条包含其地址的记录。每当它的IP地址改变时,它会附加一条包含指针的记录,以废弃旧记录。
DLedger还可以用于在配置和信息共享方面促进物联网系统。举个简单的例子,通过TCP/IP组网构建DLedger时,系统需要维护NDN名称前缀与IP地址的映射关系。类似于比特币的IRC覆盖维护邻居的IP地址,DLedger可以在这里使用。例如,当一个实体加入P2P网络时,它可以插入一条包含其地址的记录。每当它的IP地址改变时,它会附加一条包含指针的记录,以废弃旧记录。
结论
我们提出了分布式账本系统DLedger,以满足私有业务场景对物联网友好账本的需求。利用DAG和PoA,即使是受限的设备也可以通过“挖掘”它们自己的记录并得到确认来参与进来,这提高了数据的可用性、完整性和真实性。在NDN上的构建进一步使数据能够在不稳定的物联网网络中有效传播,并简化了实施。
通过设计DLedger,我们想要证明分布式账本不同于现有解决方案的力量。也就是说,DLedger没有将数据开放性与匿名性或假性结合起来,而是利用私有系统中已知的可验证身份,提供了一种通过批准人数来衡量记录有效性的明确方法。通过记录攻击者的足迹,将记录与它们的生成器相关联还可以使实体表现良好。因此,即使有很大的权威,服务提供商也不能随意添加机器人,因为它们的证书对整个系统是公开的。这是对在不损害物联网友好性和效率的前提下简化安全实现的方法的重新思考。