首页 » Web前端 » phpgetheaders超时技巧_TendrilStaller比特币块延迟进击

phpgetheaders超时技巧_TendrilStaller比特币块延迟进击

访客 2024-11-23 0

扫一扫用手机浏览

文章目录 [+]

先容了TendrilStaller,这是一种针比拟特币对等网络的日蚀攻击。
TendrilStaller使攻击者能够将块传播到受害者的韶光延迟10分钟。
攻击者阻碍了受害者获取最新的区块链状态。
仅须要一个比特币完全节点和两个轻量级节点即可实行攻击。
轻量节点实行完全比特币节点功能的子集。
该攻击利用了2016年4月引入的最新块传播协议。
该协议规定一个比特币节点选择3个邻居,这些邻居可以主动发送新块。
这些邻居是根据它们最近在快速供应块中的性能来选择的。
攻击者通过使攻击节点比其他邻居更快地向受害者发送有效块,从而诱使受害者选择3个攻击节点。

phpgetheaders超时技巧_TendrilStaller比特币块延迟进击

为此,攻击者支配了一些轻量级的节点,以便攻击者本身更快地吸收新的区块。
然后,攻击者进行攻击,以延迟传播到受害者的信息块。
在当前默认比特币协议之上履行攻击,在环球多个位置支配攻击节点,并随机选择受害者节点。
根据攻击者和受害者之间的来回韶光,可能会将50%-85%的块延迟给受害者。
进一步表明,采取轻量级节点均匀可使攻击概率均匀提高/ 5%。
末了,提出了几种缓解日食攻击的对策。

phpgetheaders超时技巧_TendrilStaller比特币块延迟进击
(图片来自网络侵删)

0x01 Introduction

截至2019年3月,比特币是利用最广泛的加密货币,流利的比特币超过/ 700万,市值达到760亿美元。
比特币的根本技能区块链被认为可用于智能合约,医疗保健,供应链,审核系统和数据存储系统。

早期的作品剖析了比特币的安全性和可靠性。
Nakamoto表明,如果一个参与方拥有超过51%的总挖矿能力,则比特币将被彻底毁坏。
自私挖矿使攻击者仅能指挥总采矿能力的33%以得到显著上风。
双花攻击,扣块攻击和谢绝做事攻击都是利用比特币的弱点牟取暴利。
这些研究大多数都假设大多数矿工险些都可以立即利用比特币网络中的区块。

网络层面攻击针比拟特币的点对点网络。
网络层面攻击的受害者可能无法及时收到最新的区块链状态,从而导致他们将采矿能力摧残浪费蹂躏在迂腐的区块上。
因此,攻击者可以得到更大的上风。
Heilman等人提出了比拟特币对等网络的日蚀攻击[1]。
攻击使攻击者将受害节点与网络的别的部分隔离开。
攻击者须要掌握大量IP地址并操作大量攻击节点。
攻击节点不断启动与受害者的连接,并向受害者发送精心制作的addr。
受害者的未来邻居表中将添补由攻击者掌握的IP地址。
受害者重新开始之后,所有邻居都将受到攻击者的掌握,可能性很高。
攻击者然后修改发送给受害者的,以操纵其对区块链的意见。

Apostolaki等人提出了一种BGP挟制攻击[2],该攻击类似地导致比特币网络的划分,从而导致特定受害者的隔离。
该攻击利用BGP挟制来拦截受害者节点的连接。
自治系统(AS)级别的攻击者发送恶意路由公告。
目的地为受害者或来自受害者的流量被发送到缺点的位置。
攻击者通过丢弃流量隔离受害节点。
攻击者还可以通过操纵少量的比特币来延迟发送给受害者的信息。

以上两种攻击适宜具有足够IP资源或网络带宽的AS级攻击者。
成功攻击的本钱可能很高。
[1]中的攻击哀求攻击者操作大量具有不同公共IP地址的比特币节点。
[21]中的攻击哀求攻击者吸收并中继所有被挟制的AS(不仅是受害者节点)的互联网流量(不一定与比特币干系)。
与[1,2]不同,本文攻击只须要3个比特币节点即可实行攻击。
这些攻击节点不须要具有不同的公共IP地址。
可以从防火墙后面的节点实行攻击。

Gervais等人[3]提出了一种块延迟攻击。
攻击者可以在相称长的韶光内延迟将块传播到特定节点,而不会引起网络分区。
该攻击利用了历史块传播协议。
比特币节点广播新区块的广播。
当节点收到同一块的多个广播时,它仅向发送广播的第一个邻居要求该块。
因此,[3]中的攻击节点试图成为最早向受害人发送新区块广播的节点。
一旦受害者从攻击节点要求阻挡,受害者就会暂时放弃向其他邻居要求相同阻挡的要求。
在攻击节点实际发送该区块之前,受害者将不会得到新的区块。
getdata要求的超时为20分钟。
因此,攻击者可能会将向受害者供应新块的韶光延迟20分钟。
此攻击对运行版本高达vO.IO的比特币软件的受害节点有效。
比特币已经发展了多年。
已经采取了新的块传播协议,该协议使[3]中的攻击变得过期了。

新的块传播协议许可节点V选择最多3个高带宽(HB)模式邻居[4]。
HB邻居列表称为HB邻居(HBN)列表。
HB邻居不发送新区块的广播;取而代之的是,他们一收到V,便立即向V发送一个新的,未经要求的块。
此变动减轻了原始攻击。
纵然攻击节点设法第一个将广播发送给V,然后延迟了对V的getdata要求的相应,V的非攻击HB邻居之一也可以稍后将块自动发送给V。
只管有A的延迟,V仍旧收到该新块而没有明显的延迟。

上图显示了TendrilStaller的设置。
将攻击节点定义为攻击者掌握的节点,将非攻击节点定义为公共比特币网络中的所有其他节点。
攻击者支配两种类型的攻击节点,即,完全攻击节点和轻型攻击节点。
完全的攻击节点建立与受害者的连接并实行实际攻击。
轻量级攻击节点以两种模式中的任何一种进行操作。
在模式1下,轻量级攻击节点不会连接到受害者。
它们充当完全攻击节点的代理,以更快地吸收新块。
在模式2中,轻量级攻击节点也参与了攻击。
上图和下图描述了在模式I下运行的轻型攻击节点的攻击。

共有3个完全攻击节点,分别称为a1,a2和a3。
攻击分为两个阶段。
每个完备攻击节点都会启动到受害者节点V的连接。
在阶段I中,攻击者诱使受害者选择所有3个完备攻击节点作为其HB邻居。
节点V根据最近发送块规则选择其HB邻居。
如果邻居向V发送了新的有效块,则V将该邻居添加到HBN列表中。
如果已有3个HBN邻居,则最早的邻居将从HB列表中删除。
a1,a2和a3连续向受害者发送新的有效块,直到受害者的HBN列表由3个完全的攻击节点组成,如下图a和下图b所示。
在阶段2中,完全攻击节点的行为与[3]中的攻击类似。
由于在第2阶段中没有非攻击邻居向V发送未经要求的块,因此完全的攻击节点会延迟将块传播到受害者。

•先容了TendrilStaller,这是一种阻挡延迟攻击,可能会在相称长的韶光内延迟将阻挡块传播到受害者。
实现了 https://github.comlkewangcmu/block_delay_attack 中发布的攻击代码。

•在公共比特币网络中验证攻击算法。
证明在攻击过程中,可能有多达50-85%的块延迟给受害者。
进一步表明,采取轻量级节点可使攻击概率均匀提高15%。

•提出了一些缓解TendrilStaller的对策。
表明这些对策可能会使块延迟攻击变得不可行。

0x02 Historical Mechanism of Block Propagation and Block Delay AttackA.比特币

比特币履行了一个区块链协议来记录和序列化用户之间的交易。
上图显示了每个块与上一个块的关系,每个块都包含前一个的哈希。
通过找到令人满意的随机数,打算节点(或矿工)彼此竞争,成为第一个构建新区块的人。
矿工通过点对点网络相互连接,通过该网络广播新建的区块。
矿工然后独立验证区块并开始处理下一个区块。
在本文的别的部分中,将矿工和节点互换利用。
每个矿工都保留区块链确当地副本,称为矿工所感知的视图。
由于区块传播延迟,矿工对区块链的意见可能不同。
区块链的不同视图包含不同顺序的不同交易集。
如果一个矿工没有及时收到最新的区块,其不雅观点将与大多数矿工的不雅观点不同。
该矿工将摧残浪费蹂躏其采矿能力,纵然该矿工成功地成功建造了一个新的区块,该区块也不会被其他矿工接管,并且不会对该区块给予任何褒奖。

B.比特币对等网络

比特币节点通过TCP / IP相互连接。
每个节点掩护一个考试测验过的新表来存储公共IP。
考试测验表存储节点最近建立连接的邻居的[P个地址。
新表存储可能与之建立将来连接的节点的地址。
当节点首次加入网络时,最初会利用DNS做事器的信息添补新表。
节点还通过addr交流已知节点的P个地址,以定期更新其新表。
当节点须要建立新连接时,它会从两个表中随机选择。
在默认配置中,一个比特币节点从两个表中最多选择8个节点来建立连接,称为传出连接。
一个节点还接管其他节点发起的连接,称为传入连接。
一个节点统共可以有125个连接。

C.矿池

成为第一个开采块的人的可能性很小。
单个矿工的收益是惊人的。
因此,矿工组成了矿池。
池的成员不与池外的节点建立连接。
相反,它们仅从池管理器吸收信息。
采矿池支配了多个池网枢纽关头点,以将采矿池与公共比特币网络连接。
已知池网枢纽关头点比默认节点具有更多的连接,由于它们必须确保挖掘池的低延迟中继块和事务。

D.历史块中继模型

比特币协议实现了各种方法来最小化带宽花费。
首先,比特币采取如上图所示的基于广播的块中继机制。
当节点cfl通过挖掘新块本身或从其邻居那里吸收到一个新块来获知新块时,它会向其其他邻居广播inv,以便宣告新块的存在。
对付邻居N,如果它还没有该块,则将getdata发送到cA以要求该块。
然后,节点cA用实际块相应N。
与在吸收到新块后直接发送新块比较,通知布告优先方法减少了邻居已经拥有的块的冗余块传输。
一个块可以大到1MB,而inv仅包含40字节块的哈希。
其次,节点仅相应其收到的第一个广播。
它暂时停滞从其他邻居要求相同的块,直到先前的getdata要求超时。
这样可以节省邻居的出站带宽。
末了,比特币对getdata要求采取20分钟的超时时间(现在减少到10分钟)。
比特币节点配备了不同的网络带宽。
出站带宽有限的节点须要更长的韶光来传输块。
在网络或网络拥塞较慢的情形下,较长的超时可以避免不必要的块重传。

E.原始块延迟攻击

块延迟攻击如下进行。
攻击者cA首先设法成为向受害人V发送块B(inv)的广播的第一个节点。
攻击节点实现了两种方法,以便第一个发送广播。

•首先,攻击节点比默认的比特币节点建立更多的连接。
更多的连接使攻击节点可以在挖掘新块时更快地理解它。

•其次,攻击节点在收到新块后立即对其进行公告,而无需验证其精确性。

默认的比特币节点在向邻居宣告新区块之前会对其进行完备验证。
验证可防止在网络中传播格式缺点的块。
验证过程涉及一系列步骤,并且须要花费大量韶光。
它检讨该块是否包含精确的事情量证明,是否精确设置了该块的挖掘难度等等。
对付该块中的每个事务,验证还检讨事务格式是否精确以及事务的所有输入是否有效,未花费的事务输出(UTxO)。
在Amazon EC2双核实例上,验证均匀须要174毫秒。
绕过验证过程均匀可使攻击者得到174毫秒的上风。

如果攻击节点成功成为第一个发送inv的节点,则受害人V然后向A发送一个getdata要求,并暂时阻挡其他邻居要求B。
攻击者A在收到受害者的getdata后等待了足够长的韶光。
getdata要求的超时常日为20分钟。
攻击者可以将对受害者的阻挡交付延迟至少20分钟。
均匀而言,每10分钟开采一次区块。
到受害者收到块时,它会比最长链条掉队2个块。

0x03 New Model of Block Propagation

比特币协议已经发展了多年。
新的块传播协议已被采取,以使网络更具可扩展性,感兴趣的是四项新方法。

A.新方法1:直接块头公告

由于20 IS中的v0.1 0.0版本,节点仅在收到该块的有效头后才要求该块。
收到inv后,节点N首先发送agetheaders以要求该块的头。
N吸收并验证头后,它发送getdata要求。
有效的头应包含具有精确事情量证明并构建在当前区块链之上的块头。
以前的1.5来回韶光(RTT)增加到2.5 RTT。
为了减少传播延迟,从v0.12.0版本开始,建议直接头声明并将其添加到比特币协议中。
如上图所示,节点A在获知新块时会直接发送头。
与以前一样,来回韶光减少到1.5 RTT。

B.新方法2:紧凑块中继

对付在邻居之前收到一个块的节点,块中继会导致明显的出站带宽峰值。
一个节点吸收到比其邻居更早的块须要多次发送新块,一次发送给每个邻居。
这样的带宽尖峰延迟了块的传输。
结合一个节点一次仅向一个邻居要求同一块的事实,块传播韶光将增加。

提出紧凑块中继以节省带宽,高达1 MB的完全块包含一个80字节的头和一个事务列表。
这些大多数事务在块传播之前已经可供其他节点利用。
代替发送完全的块,节点可以发送该块的精简版。
紧凑块由块头,交易ID列表和一小部分预添补交易组成。

•块头包含80个字节,与常规块相同。

•交易ID是交易的哈希值。
当吸收到一个紧凑块时,吸收者该当从吸收者自己的内存中事务表中查找实际事务。

•预设交易是常规交易。
布局紧凑块时,如果发送方认为吸收方未看到某些交易,则发送方会将实际交易放入紧凑块中,而不是交易哈希中。

紧凑块中继的目的是发送最少的数据,同时为吸收器供应足够的信息以重构块。
如果吸收者不知道某个交易ID,并且该交易不在预添补交易集中,则吸收者随后会要求该特定交易。
在最佳情形下,仅需0.5 RTT即可中继一个块。
在最坏的情形下,紧凑块中短缺事务时,须要进行一次额外的来回。
它统共须要1.5个RTT,与直接头通知布告相同,但是带宽花费要少得多。
紧凑块是相应getdata要求而发送的,或者是在HB模式下主动发送的(下一部分)。

C.新方法3:高带宽(HB)模式邻居

节点选择3个邻居作为高带宽(HB)邻居。
将HB邻居列表称为HBN列表。
节点N指示其HB邻居主动发送紧凑块。
将此类块称为未经要求的紧凑块。
将邻居添加到HBN列表时,N向该邻居发送sendcmpct(true)。
类似地,如果从HBN列表中删除了邻居,则N向被驱逐的邻居发送sendcmpct(false),指示其停滞发送未经要求的紧凑块。
将HBN列表限定为仅3个邻居可以减少带宽花费。
选择m个HB邻居会导致传输m-1个冗余紧凑块,由于所有HB邻居在吸收到它时都会发送一个新的紧凑块。

如上图所示,HB邻居cA通过直接发送紧凑块将新块中继到N。
如有必要,节点N进一步发送getblocktxn以要求丢失的事务。
然后,CA用blocktxn进行相应。
节点N验证该块,然后更新cA的末了一个块发送韶光。
发送的末了一个块韶光戳记录了cA向节点N发送新的有效块时的末了一次韶光戳。
在将新的HB邻居添加到列表中的情形下,此韶光戳用于确定将淘汰哪个HB邻居。
如图所示,当非HB邻居B获知一个新块时,将发生以下事宜序列。

1.B发送块头以通知布告新块。

2.如果节点N之前从未听说过此块头,则N随后发送一个getdata要求以要求紧凑块。

3.B相应紧凑块。

4.如果节点N错过紧凑块中的某些事务,则将交流getblocktxn / blocktxn。

N更新其HBN列表以包括节点E。
根据其上一个发送的上一个韶光戳,将先前的HB邻居从列表中逐出。

其余,如果知足以下附加哀求,则HB邻居cA仅向其邻居N发送紧凑块。

•RI:节点cA认为N没有当前块。
例如,N一定没有将此块通知布告给A。
这是为了避免发送不必要的紧凑块。

•R2:节点cA认为节点N知道当前块的前一个块。
例如,节点N已将前一个块关照给节点A,或者节点A之前也已将前一个块发送给节点N。
这是为了确保节点N在吸收紧凑块时能够验证和重修实际块。

D.新方法4:缩短块下载超时

自v0.10.5版本以来,比特币协议缩短了块下载超时。
基本超市价为10分钟。
对付每个额外的并行getdata要求,超时将增加5分钟。
这是为了防止由于节点自身的下贱链路饱和而导致对等节点超时。

E.对原始攻击的影响

利用新的块传播协议不可能在块延迟攻击。
攻击节点不知道受害者是否选择了其HB邻居。
在常见情形下,如果有HB邻居向受害人V发送未经要求的紧凑块,则攻击将失落败。
如上图所示,攻击节点A设法成为第一个发送块头的工具,然后延迟了对受害者的getdata要求的相应。
HB邻居N随后向受害人V发送未经要求的紧凑块。
受害人仍旧吸收新块而没有明显的延迟。
仅在极少数情形下攻击成功了,在这种情形下,没有邻居能够直接发送紧凑块,即受害人V的HB邻居都没有同时知足哀求RI和R2。
仅当V最近加入网络时才会发生这种情形。

[3]中的攻击还能够将块延迟更长的韶光,超过了getdata要求的超时时间。
新的比特币块传播协议都不可行。
一旦受害者V向攻击节点发送getdata要求,而V不相应后续的块头,它就会记录谁发送了这些块头。
如果攻击节点A将阻挡延迟了10分钟以上,则受害人V与A断开连接。
然后V在传出同一块的块头的传出连接中选择邻居。
V根据建立出站连接的韶光选择邻居。
最早连接的邻居当选中。
由于攻击节点位于V的传入连接上,并且攻击者不知道V的传出连接建立韶光的顺序,因此V很有可能选择一个非攻击节点并在不久后从该邻居吸收到阻挡。
因此,不可能将块延迟超过getdata要求的超时时间。

0x04 Tendrilstaller Attack Algorithm

TendrilStaller可以在有或没有轻型攻击节点的情形下运行。
因此首先描述仅具有完全攻击节点的Tendri IStaller。
然后,先容轻量级攻击节点并谈论TendrilStaller的完全操作。

A.仅具有完全攻击节点的攻击

TendrilStaller须要最少3个攻击节点。
攻击分为两个阶段。
在阶段I中,攻击节点考试测验当选择为受害者的HB邻居。
三个不同的攻击节点建立了与受害者的连接。
每个攻击节点都会不断向受害者主动发送新的压缩块,纵然它尚未涌如今受害者的HBN列表中。
根据比特币源代码,当节点V收到来自非HB邻居的未经要求的压缩块时,如果知足以下两个条件,V仍将考试测验重修该块。

•条件C1:V之前没有看到块。

•条件C2:V在之前已经在此紧凑块中吸收到所有交易。

不雅观察到,对付大多数加入对等网络的受害人V,C2大部分韶光都霸占足够长的韶光,以不雅观察到一些新近开采的区块。
如果重构的块有效,则受害者将发送攻击的节点添加到HBN列表中。
受害者向发送者发送一条sendcmpcutrue。
攻击节点采取三种方法来增加其成为第一个将新紧凑块发送给受害者的节点的机会。

•方法O1:攻击节点建立的传出连接比协议中定义的默认8个连接更多。
只要其邻居中的任何一个吸收到新块,攻击节点也将在不久后吸收到该块。
因此,攻击节点可能会与更多的邻居更快地得到新开采的区块。

•方法O2:攻击节点指示所有邻居发送未经要求的紧凑块。
攻击节点不限定其自身HBN列表的大小。
攻击节点更有可能更快地吸收新块。

•方法O3:收到新的压缩块后,攻击节点会将其发送给受害者,而无需完备验证该块。
与[3]中的攻击类似,绕过验证过程可以使攻击节点将新块传播给受害者的韶光减少数十毫秒。

攻击节点从受害者那里收到sendcmpcutrue / false)。
当攻击节点收到sendcompact时,它将关照所有其他攻击节点。
因此,每个攻击节点都知道受害者的HBN列表中当前存在哪些攻击节点。
尚未在V的HBN列表中的攻击节点会连续向V发送紧凑块,直到将其添加到列表中。
一旦将攻击节点添加到列表中,它就不会将压缩块中继到V,从而使其他攻击节点有更好的机会被添加到HBN列表中。
当HBN列表中有三个攻击节点时,所有攻击节点都进入阶段2。
每个攻击节点根据状态转换图独立运行,如下图所示。

在阶段2中,攻击节点实行实际的块延迟攻击。
攻击节点考试测验成为第一个向受害人V发送新块的广播(头)。
收到新的压缩块后,攻击节点将提取块头并将其发送给受害人,而无需进行验证过程。
如果V相应agetdata要求,则表明攻击节点的广播确实是V吸收并接管的第一个广播。
然后,攻击节点将发送该块的韶光延迟了10分钟。
如果没有攻击节点从受害方吸收到getdata要求,则表示无攻击节点已在攻击节点之前将头发送给V。
受害者随后向非攻击节点要求新的阻挡。
结果,该非攻击节点将被添加到受害者的HBN列表中,而攻击节点之一将从列表中删除。
攻击节点监视来自受害者的sendcmpct(false)。
从HBN列表中删除至少一个攻击节点后,攻击将转换回第一阶段,如图所示。
攻击节点再次开始发送紧凑块。

B.轻量级攻击节点

轻量级攻击节点花费更少的CPU,带宽和磁盘空间,并且在云环境中支配的本钱更低。
详细而言,轻量级攻击节点不会在磁盘上存储任何事务或块数据。
与完全的比特币节点相反,它不实行初始块下载过程。
轻量级攻击节点的磁盘大小哀求可以小于IG。
相反,一个完全的比特币节点须要存储至少230G的数据,并且每个新块都会增加存储的数据量。
此外,轻量级攻击节点不实行块验证,从而大大降落了必要的打算能力。
他们不掩护任何区块链状态。
轻量级攻击节点可以两种办法中的任何一种进行操作。
在模式I中,轻量级攻击节点实现了完全比特币节点功能的最小子集。
在模式I中,轻量级攻击节点仅实行一项紧张操作:当它从邻居那里收到新的压缩块时,它将立即将压缩块发送到完全的攻击节点。
类似于完全攻击节点,轻量级攻击节点指示其所有邻居发送未经要求的压缩块。
此外,轻量级攻击节点还实行基本例程,例如相应来自邻居的心跳以使连接保持活动状态。
他们还与邻居交流地址以定期更新地址表。

模式I中的轻量级攻击节点充当完全攻击节点的代理。
每个轻量级攻击节点都连接到公共比特币节点的随机且至少部分不同的子集。
轻量级攻击节点也将紧凑块直接中继到完全攻击节点,而无需验证块。
结合所有轻量级攻击节点的邻居,一大群比特币节点距完全攻击节点仅一跳。
因此,均匀而言,完备攻击节点可以更早地吸收到新挖掘的块。

轻量级攻击节点也可以在模式2下运行,在个中参与攻击并与受害者建立连接。
轻量级攻击节点实现与完全攻击节点相同的两阶段攻击逻辑。
其余,由于轻量级攻击节点不存储任何块,因此它须要实现逻辑,以将来自受害者的getdata要求中继到完全攻击节点,并将来自完全攻击节点的相应相应中继回受害者。
如下图所示,攻击节点m的重量较轻。
成功在阶段2中成功发送了头,受害方以getdata要求进行回答。
由于不想实际延迟对受害者的块,因此m须要及时相应实际的阻挡。
为此m将要求中继到完全的攻击节点A。
A做出相应的相应,将实际块发送给m。
末了,m将相应转发回受害者。

当轻量级攻击节点以模式2运行时,攻击者可以用轻量级节点更换原始的完全攻击节点,而只剩下一个完全的攻击节点。
在云中支配轻量级节点比完全攻击节点便宜。

0x05 Experiment

在云中设置了3个具有不同地理位置的完全攻击节点,以展示攻击的可行性。
在环球范围内随机选择受害者,并对他们进行“部分”攻击。
证明随着攻击节点更靠近受害者,攻击会更加有效。
利用3个完全攻击节点和一组轻量级攻击节点实行攻击。
轻量级攻击节点在模式I下作为完全攻击节点的代理运行。
证明采取轻量级攻击节点可以比其他办法延迟更高的块百分比。
利用一个在模式2下运行的完全攻击节点和多个轻量级节点实行攻击。
证明与仅利用完全攻击节点的攻击比较,该攻击可能更具本钱效益。

A.仅具有完全攻击节点的攻击

表明只要受害者适度位于攻击节点附近,攻击就很有可能成功。
设置了3个完全的攻击节点,每个节点都连接到200个邻居。
这三个攻击节点已支配在Google Cloud Platform中。
分别在美国东部,欧洲和亚洲3个不同地区重复实验。
这是为了肃清攻击的任何地域偏见。
在环球范围内随机选择受害者,并在不实际延迟块的情形下对选定的受害者实行“部分攻击”。
将实验限定为“部分攻击”,以验证攻击而不会实际影响比特币节点的运行。
在攻击阶段2中,当攻击节点设法首先发送头并吸收来自受害者的getdata要求时,攻击节点将立即相应当要求。
将阶段2中的每个getdata要求视为成功攻击的验证。
以攻击节点可以并行针对多个受害者的攻击办法履行攻击。
节点为每个受害者掩护一个单独的攻击状态,当吸收到新的块时,节点针对每个受害者独立地采纳相应的动作。

将成功率定义为攻击过程中延迟阻挡的百分比。
上图显示了攻击节点和受害者之间具有不同来回韶光的成功率。
每个数据点代表一个包含/ 50到200块的试验。
丈量从攻击发起后的第一个块开始,到从受害人的HBN列表中删除攻击节点的一个块结束。
下表总结了每个区域的结果。
由于攻击节点间隔受害者更近,因此攻击成功率更高,可能会更有效。
当来回韶光小于80ms时,成功率可高达85%。
考虑到环球云供应商的广泛可用性,可以轻松支配TendrilStaller。

还不雅观察到结果显著不同,纵然两个受害者对攻击节点的来回延迟相似。
由于无法访问受害节点,因此推测缘故原由如下。
首先,受害者之间的联系数量各不相同。
一些受害者可能仅连接到几个节点,而其他受害者则建立了更多的连接。
攻击具有更多连接的节点会更加困难,由于在攻击阶段2中,攻击节点须要与更多非攻击节点竞争。
第二,某些受害者均匀而言可能更靠近新区块的来源。
它们彷佛已连接到池网关,在这种情形下,受害者可以更快地收到新开采的区块。
攻击很难成功。
第三,受害者可能未遵照默认协议。
例如,受害者可能会增加其HBN列表的大小,或者永久不会从HBN列表中驱逐任何邻居。

B.在模式1中以轻量级攻击节点进行攻击

现在,以在模式I下运行的轻型攻击节点实行攻击。
在每个区域中,设置了3个完全攻击节点和5个轻型攻击节点。
选择在同一区域中支配轻量级节点,以最大程度地减少完全攻击节点与其轻量级对应节点之间的等待韶光。
这些轻量级节点设置为连接到网络中的200个随机节点,并指示其所有邻居仅发送紧凑块。
他们在收到后将压缩块中继到三个攻击节点。
仅从与攻击节点相同的地理区域中选择受害者。
同样,实行部分攻击,个中不会延迟对受害者的getdata要求的相应。
将受害者的getdata要求视为成功攻击的指标。
证明借助轻量级攻击节点,完备攻击节点可以更快地吸收新块。
因此,更多的块可能会延迟给受害者。

如图上所示,这三个区域的成功率都有显著提高。
由于轻量级节点充当代理,三个区域的成功率分别提高了13%,20%和13%。
通过记录完全攻击节点吸收到的新块的第一个发送者来进一步验证这一点。
如下表所示,轻型节点分别中继了约59%,49%和58%的新块。
如果不采取轻量级节点,这些块将在往后的韶光被吸收。

由于重量轻节点的低本钱特性,可以通过最小程度地增加资源来实现这种功效的提高。

C.在模式2中以轻量级攻击节点进行攻击

现在,以在模式2下运行的轻量级攻击节点实行攻击。
证明了用轻量级攻击节点(完备)攻击节点的(部分)更换可以降落攻击本钱,同时达到相同的攻击成功率。
在每个区域中设置了两个轻量级攻击节点和一个完全的攻击节点。
受害者是与攻击者位于同一地理区域中的随机选择的节点。

上图显示攻击成功率分别为56%,68%和58%,这与3个完全攻击节点的情形相称。
这表明可以结合利用轻量级攻击节点和完全攻击节点来有效延迟块,同时利用更少的资源。
下表比较了完全攻击节点和轻量攻击节点的资源花费。
由于轻量级攻击节点不存储块,因此操作所需的磁盘空间要少得多。
轻量级攻击节点不验证事务/块,从而减少了CPU花费。
配置了轻量级节点,除了完全的攻击节点和受害者之外,不将任何块中继到邻居。
因此,出站带宽花费较低。

攻击本钱的降落表明,攻击者可以在较小的,价格更便宜的实例上支配轻量级的攻击节点。
对付相同的资源本钱,攻击者可以设置更多的节点并同时攻击更多的受害者。
这将许可恶意实体在资源花费相同的情形下攻击网络的更大部分。

D.块延迟攻击的影响

阻挡延迟攻击有效地降落了受害者的采矿能力。
受害节点无法在新块上进行挖掘。
无效采矿功率的百分比可以如下打算。
假设最坏的情形是每个新开采的区块延迟10分钟。
两个块之间的韶光间隔遵照指数分布,均匀块间隔为10分钟。
受害者可能在最新的区块上进行挖掘的预期韶光为:

个中A = 0.1min ^(-1)。
这是受害者总采矿能力的36.7%。
这次打击还鼓励矿工组建采矿池,使采矿权集中化的问题更加严重。
众所周知,池网枢纽关头点可以运行修正后的比特币源代码,以增强安全性和更快地进行块中继。
例如,池网枢纽关头点常日会建立更多的连接。
根据不雅观察,对付具有更多连接或不遵照默认比特币行为的节点(例如池网枢纽关头点),攻击成功率将较低。
另一方面,当矿工加入矿池时,它仅与矿池管理器建立连接。
因此,在这些矿工上利用TendrilStaller攻击是不可行的。
鉴于这些不雅观察结果,单个矿工更乐意加入矿池以避免TendrilStaller攻击。

0x06 Countermeasures

[3]中提出的一些对策已经集成到当前的比特币协议中,例如块头优先公告。
节点仅在收到新块的有效块头后才发送getdata要求。
在本文中提出了一些对策,可以提高新引入的紧凑块传播协议的可靠性。

A. HB邻居的部分随机选择

根据当前协议,如果节点最近已发送了有效块,则默认情形下会选择其HB邻居。
就像提出的攻击算法一样,这使攻击节点有机会操纵受害者的HBN列表。
为了限定攻击节点对HBN列表的影响,一个比特币节点只能根据最近发送块规则选择2个HB邻居,并随机选择一个剩余的HB邻居。
然后,攻击节点无法完备掌握受害人的HBN列表,并且很有可能总是有一个非攻击节点可以向受害人主动发送紧凑块。

B. HB邻居在传出连接上

同样,一个比特币节点只能从传出连接上的节点中选择HB邻居。
由于攻击节点常日会启动与受害者的连接,因此不会选择它们作为HB邻居。
但是,攻击节点可能会诱使受害者连接到它们。
例如,攻击者可以实行繁芜的操作来操纵受害者的地址表,如[1]中的日食攻击一样。
这种过程既耗费资源又耗时。

C.更短的块下载超时

不雅观察到截至2018年12月,90%的块传播韶光已显著减少至不到4秒。
这表明供应给比特币节点的网络带宽已大大增加。
这也使getdata要求确当前10分钟超时过期。
减少块下载超时可减少攻击的影响。
给定一个k分钟的超时时间,由于块延迟攻击而降落的挖掘能力为e ^(-λk)。
如果将下载超时缩短到1分钟,那么攻击节点成功将受害者的每一个区块都延迟了,只能将受害者的挖掘能力降落到原始攻击力的90.4%。

0x07 Conclusion

本文提出了针比拟特币对等网络的TendrilStaller攻击。
攻击使攻击者能够将块传播到受害者的韶光延迟10分钟。
提出并实现了新的攻击算法,并证明了攻击成功率可以达到85%。
此外,采取轻量级攻击节点可以提高攻击成功率(在模式I下)或减少攻击的资源花费(在模式2下)。
此外表明,成功的攻击可能会使受害者的采矿能力降落至36.7%。
这使攻击者可以得到更高的采矿上风,还提出了一些缓解TendrilStaller攻击的对策。

Reference

[1] Heilman, E., Kendler, A., Zohar, A. and Goldberg, S., 2015, August.Eclipse Attacks onBitcoin’s Peer-to-PeerNetwork. In USENIXSecurity Symposium (pp. 129-144)[2] Apostolaki, M., Zohar, A. and Vanbever, L., 2017, May. Hijacking bitcoin: Routing attacks on cryptocurrencies. In Security and Privacy (SP), 2017 IEEESymposium on(pp. 375-392). IEEE[3] Gervais, A. , Ritzdorf, H., Karame, G.O. and Capkun, S., 2015, October.Tampering with the delivery of blocks and transactions in bitcoin. In Proceedings of the 22nd ACM SIGSAC Conference onComputer and CommunicationsSecurity(pp. 692-705). ACM.[4] https:l/github.comlbitcoin/bipslblob/master/bip-O I52.mediawiki

欢迎登录安全客 -有思想的安全新媒体www.anquanke.com/加入互换群113129131 获取更多最新资讯

原文链接: https://www.anquanke.com/post/id/211771

标签:

相关文章

介绍百度码,技术革新背后的智慧之光

随着科技的飞速发展,互联网技术已经成为我们生活中不可或缺的一部分。而在这个信息爆炸的时代,如何快速、准确地获取信息,成为了人们关注...

Web前端 2025-01-03 阅读0 评论0

介绍皮箱密码,开启神秘之门的钥匙

皮箱,作为日常生活中常见的收纳工具,承载着我们的珍贵物品。面对紧闭的皮箱,许多人却束手无策。如何才能轻松打开皮箱呢?本文将为您揭秘...

Web前端 2025-01-03 阅读0 评论0

介绍盗号器,网络安全的隐忧与应对步骤

随着互联网的快速发展,网络安全问题日益突出。盗号器作为一种非法工具,对网民的个人信息安全构成了严重威胁。本文将深入剖析盗号器的原理...

Web前端 2025-01-03 阅读0 评论0