http://www.7klian.com

日蚀进攻:区块链世界的中间人进攻



· nodeIP:节点IP
Ethereum以ECDSA公钥作为节点ID,其ID长度为512bits。同一台呆板(同一个IP)可以运行数个Ethereum节点,亦即一个IP可以发生数个节点ID,这是日蚀进攻可以或许生效的因素之一。


Ethereum的P2P特色


Ethereum的TCP连线可分为两种,一种是由本机节点发出请求给其他节点的outgoing连线,另一种是其他节点提倡请求给本机节点的incoming连线。一个Ethereum节点同一时间最多可答允25个TCP连线存在( maxpeers ),而在geth 1.8.0版之前,这25个TCP连线可以全部都是incoming连线,这也是日蚀进攻可以或许生效的个中一个因素。
别的,在每一个Kademlia的节点里,包括一种称之为桶(bucket)的资料布局。桶里所储存的是网路中的节点资讯,桶的数量即为识别码的长度( b ),每一个桶里最多会储存k个节点的资讯,因此这种资料布局又被称为k桶( k-bucket ),如下图:
在此篇论文中,作者提到无法领略Ethereum的P2P协定为何要利用Kademlia。




· failedTimes:以findnode实验询问该节点却失败的次数
以上栏位名称并非Ethereum geth原始码中所界说的名称,只是为了利便本文后续说明而界说的名称。
由于Ethereum中的底层资料布局(chaindata等资料),并未支解成差异的小片断去作分手式储存,因此也就无法操作到Kademlia中寻找档案的特性。
ID₂ = 10011...10

为了防止重放进攻(replay attacks),UDP通报的这些资讯,城市加上时间戳记(timestamp),当节点发明某一个UDP讯息那时间比本机时间还老旧(比本机时间早20秒) ,就会扬弃该讯息。

A. 基于Kademlia设计的P2P协定

在撰写此篇文章的时候,最新geth版本为1.8.0,而日蚀进攻论文的尝试工具为geth 1.6.6 ,本文所描写的各类Ethereum情况,若无出格提及,则视作与日蚀进攻论文一致。

· latestPing:最近一次实验打仗该节点的时间(亦即ping讯息送出的时间)
D. 储存P2P节点资讯的资料布局

bucket内的每笔节点资料城市凭据插手顺序而排序,当一个bukcet已经额满却尚有新节点资料要插手的时候,本机节点会传送ping讯息给bukcet中最早插手的节点,若是最早插手的节点没有回应pong讯息,则移除最早插手的节点,并将新节点插手,反之则扬弃新节点。



Ethereum UDP所通报的资讯可分为四种:ping,pong,findnode以及neighbor。
· findnode and neighbor:findnode讯息会附带一个节点ID(假设为 t ), findnode将会向另一个节点(假设为 x )询问间隔 t最近的节点资讯,亦即询问 x的节点列表中间隔t最近的节点。x会将这些间隔 t最近的节点资讯,以 neighbor讯息返回,最多会返回16笔节点资讯。


· nodeIP:节点IP


按照上式,机率漫衍图如下:


C. UDP协定与TCP协定认真差异层级的讯息互换
另一种布局是短期储存,称之为table,每次重启节点时,table城市是空的。table含有256个bucket,每个bucket又包括16笔其他节点的资料,每笔资料的栏位如下:
i.e. r is number of most significant bits that H˪ and Hₒ are the same
d = ID ₁ ⊕ ID ₂ = 10011...01 ⊕ 10011...10 = 00000... 11 = 3

一个简朴典型如下:

这篇先容文估量分成两部门,第一部门(即本文)将会对Ethereum的P2P做一个简朴的先容,如此才气相识日蚀进攻为何可以或许生效。第二部门将先容波士顿大学团队论文中关于日蚀进攻的实现道理。



在Ethereum中,P2P资讯的互换是藉由UDP来举办,而区块资讯的互换则是在TCP长举办。

按照日蚀进攻此篇论文的整理,Ethereum的P2P有以下几点特色(A~G):

Ethereum本机节点会按期查抄db内的每笔节点资讯,若是某节点的latestPong与当下时距离断已经高出一天,则将该节点从db中移除。
· tcpPort:TCP Port number
Hₒ = SHA3(IDₒ) ,where IDₒ is the ID of other node


B. ECDSA公钥作为节点ID

在传统的client-server网路架构中,存在着所谓的

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读