什么是日食攻击?
日食攻击是一种攻击去中心化网络的方法,攻击者通过这种方法试图隔离和攻击一个或多个特定用户,而不是攻击整个网络。
在这篇文章中将解释以太坊的一些特性,包括它的叔块机制,如何使它更容易受到这种攻击。
区块链中的数据结构
区块链是一个去中心化的协议,它将数据库分布在其网络中的多个节点上,为过去、当前和未来的交易建立共识机制。区块链中的数据结构表示为区块。
在一个去中心化的区块链网络中,参与者同意什么是正确的,而不是一个中央权威。区块链也是透明和不可变的,所有网络参与者都可以看到网络上发生的事情,而且交易日期不能被更改,除非通过一个商定的机制。
比特币区块链中的区块类型
创世区块
创世区块是任何区块链的第一个区块,该区块是系统的基本起点,并与所有未来的交易相连。世界上第一个创世区块是由中本聪创建的,在此过程中,他创造了比特币。
创世区块的存在使区块链能够通过允许新创建的区块与以前的区块相关联来生成它的交易历史。此外,创世区块在同步网络节点方面有一个重要的功能——它们的数据库中都必须有相同的创世区块。这确保了区块链的分布式交易簿对每个人都是相同的,从而提供了安全性。
主链区块
主链区块是所有经过验证并包含在区块链中的区块。为了实现这一点,区块必须通过节点解决其分配的密码谜题来获得网络的同意。一旦网络达成共识,该区块就包含在区块链中,并由所有节点传播。这样,网络的每个节点都有新的区块,并作为它的一个验证点。
每个有效区块内部包含一系列与该区块一起验证的交易。例如,在比特币中,每个有效区块平均承载2100笔交易。一个有效区块中的每一笔交易都被确认。
所有有效区块继续确认以前的交易,充分保护网络上的所有区块和交易。当然,每个有效的区块包含一个允许验证的数据结构。该结构包括区块的哈希值、它的时间戳、它的nunco和它的区块交易数据。搜索候选解决方案的过程称为挖掘,参与的节点称为矿工。为区块的密码谜题生成有效解决方案的每个矿工都成为领先者,并被允许确定未确认的交易集。然后将它们追加到区块链中。
孤块
孤块或陈旧块是不属于区块链的有效区块。当两个矿工几乎同时验证区块时,或者当具有足够哈希能力的攻击者试图逆转交易时,可以创建这些数据。在这些情况下,网络共识协议将起作用,以决定哪些区块将被包含在链中,哪些将被孤立。
实际上,一个区块链网络被编程成总是偏爱最长的区块链。也就是说,它将选择包含更多信息或处理过的交易的区块。在比特币区块链中,孤块被丢弃,矿工执行的工作是无用的。
此外,正是由于这种类型的区块,大多数交易所和一些钱包将自动等待额外的确认,才使资金可用。它们通过计算用户正在接收的交易和当前区块之间挖掘了多少区块来实现这一点。
>eth.getBlock(blockNumber)
}
>eth.syncing.highestBlock -eth.getTransaction(“ “).blockNumber
区块是如何验证的?
区块链系统使用Merkle树数据结构,这使得它们(在理论上)是不可变的。Merkle树是Ralph Merkle在1979年申请专利的,在密码学中被广泛使用。Merkle树是验证共享数据是否被更改、损坏或更改的基本方法,非常适合区块链,因为它是轻量级的。例如,由于比特币的Merkle树结构,用户的移动钱包不需要下载所有的比特币交易来验证它们。
给定区块中的每个交易对应于Merkle树中的一个叶子,通过哈希单个交易递归构建Merkle根。
对交易(叶)进行哈希以创建额外的叶节点,这些叶节点可能对应于区块链网络中的交易。尽管可以从大量的交易中创建Merkle树,但Merkle根总是对应于一个32字节或256位的字符串(例如,SHA256哈希算法总是输出32字节的固定长度,而不管输入的大小)。通过这种方式,我们可以使用小到32字节的数据来验证多达数千个交易。
根据案例,任何更改,无论多么小,都会阻止对Merkle根的验证,并使区块链的部分或全部历史失效。
以太坊区块链中的区块类型
以太坊与比特币的一个不同之处在于,它有一个更快的区块创建机制,旨在加快交易过程。但是,当区块生成之间的时间间隔非常短(大约15秒)时,会创建大量孤块,因为将所有这些区块都包含在区块链中是低效的。
这导致了矿工在没有奖励的情况下浪费时间在区块上工作的问题。为了解决这个问题,以太坊的开发者推出了GHOST协议。
GHOST代表Greedy Heaviest Observed Subtree,这个概念很简单。它奖励那些验证孤块的矿工,尽管其奖励低于标准区块。为了释放奖励,区块必须被主链中的区块引用——或者叔块。
该机制的另一个优点是解决了网络中心化的问题。当快速创建区块时,大型矿池很容易垄断区块验证,导致较小的竞争对手创建无数无用的孤块。
以太坊区块链中的区块类型
以太坊区块链中有两种类型的区块:
主链区块是包含在以太坊区块链中的区块。发现它的矿工将获得奖励。
叔块是经过身份验证但未包含在主区块链中的区块。矿工因此得到的报酬比有效区块低。
想象一下,两个在世界不同地方的矿工在同一时间开采同一个区块。然后它们在整个网络中传播它们的区块。这可能会在链中产生分歧,所以必须选择一个,而较大的区块总是获胜。未被选中的区块将成为孤儿(在比特币中)或叔叔(在以太坊中)。与比特币不同的是,以太坊矿工将获得 1/8 的完整区块奖励以挖掘叔块。
叔块奖励如何运作
主链区块的矿工可以引用叔块,当他们这样做时,一个额外的奖励分配给主链区块的矿工和叔块的矿工。主链中包含的每个区块可以引用最多两个叔块,并为每个引用的叔块提供1/32的完整区块奖励。然而,支付给矿工的报酬随着时间的推移而减少。
通过保证对浪费的计算工作的补偿,并通过使奖励随着时间的推移而减少,竞争链上的矿工有动力重新加入主链。这些叔块有助于链安全,也减少51%的攻击概率。
在以太坊矿池中,可以以多种方式分布:
比例支付计划
在这个简单的方案中,矿工将根据在池发现的两个区块之间的时间间隔内提交的股票数量获得相应的奖励。因此,一个区块奖励B将在池中的N个矿工之间根据他们各自提交的份额进行分配。
按最后 N 股支付 (PPLNS)
(PPLNS)计划按照最近提交的N股份额比例分配奖励。
基于队列的支付计划
Ethpool3是第一个引入基于队列奖励机制的以太坊采矿池。在这一机制下,矿工对提交给池运营商的每一份额累积信用。每次由池开采一个完整的区块时,区块奖励被分配给池中累积信用余额最高的矿工。然后,顶级矿工将其信用余额重置为他们自己和池中第二高的信用余额之间的差异。
引用关系创造了一个额外的铸造奖励,对于普通区块所有者是完整区块奖励的1/32,对于叔块的 (8 - i)/8。根据引用的区块高度,变量i的范围是1到6。
除了优化区块链的结构,以太坊还有另外两个安全改进。一个是随机打破平局规则。一个节点不是接受接收到的第一条链,而是在所有接收到的相同长度的链中随机选择一条链。γ的数目不再是固定的,等于竞争链数的倒数。另一个目标是免除叔块的采矿战略。
叔块和日食攻击
日食攻击是如何工作的?
日食攻击要求攻击者控制主机节点的僵尸网络(每个节点都有自己的IP地址),并计算出受害者的邻近节点,基本上是通过反复试验。实现这一目标所需的努力取决于网络的规模和性质,但如果成功,攻击者将在受害者注销并重新加入网络后控制所有连接节点。
在这个场景中,有三个参与者——攻击者、受害者和一个诚实节点。如果受害者发现了一个区块,攻击者就不会将此区块传播到网络。如果攻击者发现了一个区块,他们就和受害者分享。通过这种方式,攻击者为自己和被遮蔽的节点创建了一个私有区块链。
这样,攻击者可以获得比诚实挖矿多 96.4% 的收益。日食攻击是可能的,因为在去中心化的网络中,一个节点不能同时连接到网络上的所有其他节点。相反,为了提高效率,一个给定节点将连接到一组选定的其他节点,这些节点依次连接到自己的选定组。因此,仅使用两台具有唯一IP地址的计算机就可以发起日食攻击。
以太坊依赖于基于一种名为Kademlia的协议的结构化网络,该协议旨在让节点更有效地连接到其他节点。通过使用密钥生成算法,攻击者可以非常迅速地创建无限数量的节点ID(点对点网络上的标识符)。更糟糕的是,攻击者甚至可以创建节点 ID,使它们比随机节点 ID 对受害者更具吸引力,基本上将受害者吸引到他们身边。
以太坊有三个特征可能使其容易受到日食攻击。首先,快速创建区块会创造出无尽的松散区块,通过增加以太币的供应量间接侵犯了诚实矿工的利益。其次,叔块机制意味着节点可以从这些区块中获利。第三,以太坊增强的节点连接性为攻击者提供了动机。
女巫攻击
计算机安全方面的女巫攻击是指一个人试图通过在同一个网络上创建多个身份/账户/节点来接管网络,而这些身份/节点对该网络的其他参与者来说似乎是不同的唯一身份。女巫攻击背后的动机是破坏声誉系统中的权威/权力。用更简单的术语来理解这一点——目标是让网络中的大多数人按照引起这种攻击的个人的需要在网络中执行过程(与网络内的规则集不一致)。让我们通过现实世界的情况更好地理解这一点,该情况引起了很多紧张,但这将有助于使这个概念更容易,与它创造的情况不同。。
现在,在深入了解区块链与女巫攻击的关系以及如何阻止它们之前,先简要介绍一下女巫这个名字是如何被选择的。1973年《女巫》一书出版。它讲的是一个名叫 Sybil Dorsett的女人,她正在接受精神分析学家Cornelia B. Wilbur的治疗,她患有分离性身份识别障碍,也被称为多重人格障碍。由于这个概念的相似性,微软研究院的Brian Zill建议将其命名为Sybil Attack。
区块链网络是一个非常容易受到攻击的系统。区块链网络由不同的节点组成,这些节点使用工作证明(Proof of Work, PoW)等共识算法得出一个结论,即要添加的区块是否正确。由于共识要求大多数人对区块的真实性达成一致,因此要求这些节点不受单个实体的控制,这样就可以防止出现故障节点的增加。这就是 Sybil 攻击的位置:如果攻击者创建了足够多的假身份,攻击者就可以从网络中击败诚实节点。在这种情况下,甚至可以更改交易顺序;但是管理如此大量的计算能力被认为几乎是不可能的。
为了防止女巫攻击区块链网络,使用了不同的共识算法,如工作证明(Proof of Work, PoW)、权益证明(Proof of Stake, PoS)、委托权益证明(Delegated Proof of Stake, DPoS)。虽然它们不能直接阻止女巫攻击,但它们使攻击者几乎不可能进行女巫攻击。这些共识算法背后的共同概念是附加在网络中创建身份的成本。例如,在工作证明(PoW)共识算法中,用户必须执行一系列困难的计算,然后只有他们才能添加区块。一个试图用大量假身份淹没网络的攻击者将不得不解决相应次数的计算,在计算周期中花费金钱,使攻击更加困难和低效。这就是限制攻击者泛滥并接管网络的原因。
吸血鬼攻击
吸血鬼攻击的第一步是鼓励另一个平台的流动性提供者将他们的LP代币(代表所提供的流动性)抵押到一个新平台。
在Sushi的例子中,Uniswap的流动性提供者被激励将他们的LP代币放在SushiSwap上,这样他们就可以获得以SUSHI代币支付的额外奖励。SushiSwap一开始就为SUSHI代币制定了一个相当激进的发行计划——每个以太坊区块1000个SUSHI,分发给Uniswap的多个不同池的流动性提供者,如SNX-ETH、LEND-ETH、YFI-ETH、LINK-ETH。让多个DeFi社群参与进来的想法已经被Yam成功地采用,并被SushiSwap重复利用。
一旦协议吸引了足够的流动性,吸血鬼攻击的下一步就是将已抵押的LP代币迁移到一个新平台。这样一来,一个新平台就可以将迁移的流动性用于自己的自动做市商,不仅窃取了流动性,还窃取了第一个平台的交易量和用户。
流动性基本上是从第一个平台被吸走,转移到第二个平台,因此得名“吸血鬼攻击”。
说到Sushi,这就是Sushi的MasterChef合同发挥作用的地方。MasterChef合约一旦被触发,就能够将LP代币从Uniswap迁移到Sushiswap,基本上窃取了Uniswap的流动性。一旦流动性转移,就可以立即用于SushiSwap上的交易。
为了鼓励流动性提供者参与迁移,所以计划了一些额外的激励措施。首先,SUSHI流动性挖矿计划将在迁移后继续进行,但排放量会减少(每个区块100个SUSHI)。最重要的是,那些决定持有SUSHI代币而不是出售代币的人将从SushiSwap获得一大笔交易费用。
在一个成功的吸血鬼攻击结束后,一个新的协议理论上应该可以获取原始项目的大量流动性、用户和交易量。
这基本上就是吸血鬼攻击的计划。