区块链的设计必须能够抵御许多不同类型的攻击。尽管这些攻击很难完全防止,但其目标是通过使攻击变得困难、耗时,而且最重要的是代价高昂,从而遏制潜在的攻击者。区块链面临许多不同形式的攻击。
女巫攻击(Sybil Attack)
它是什么?
女巫攻击影响所有分散/无许可的网络。由于没有中心化实体对网络上的新用户进行审核,恶意参与者可以创建多个用户。然后,如果没有阻止机制,参与者可以使用这些身份在网络上强制执行他们的意志。例如,在区块链上,它们可以阻止交易(因为它们可以控制进行交易的路由),并创建比网络上其他用户所能创建的更多的块(这会打开了额外的攻击向量,比如双花攻击)。
如何预防?
像以太坊这样的无许可网络可以通过使用工作量证明来防止女巫攻击。工作量证明意味着参与者受限于他们所能带来的全部挖掘能力的份额,而不是他们所能创建的节点数量,从而确保创建数百万用户是毫无意义的。
双花攻击(Double Spend Attack)
它是什么?
有许多不同类型的双花攻击,但本质上都是允许相同的资金被花费两次。品种包括:
竞赛攻击(Race attack):一个用户同时向两个商家(或者商家和用户本身)发送两笔交易。因此,攻击者会收到两组货物或者收到货物和回收了原始交易成本。
芬尼攻击(Finney Attack):一个矿工挖到一个或者一系列的块,这些块里包含他把钱转账给自己其它地址的交易。被挖到的块没有被公布,而是在矿工向商家转账时被保留。然后,商人在矿工公布他们已经挖出的区块之前释放了矿工所支付的货物。随后矿工公布已经挖出的区块,这就会抹掉转账给商家的交易,让商家自掏腰包。
扣留攻击(Withhold Attack):当恶意行动者挖掘一个完全独立的区块链分叉时,会发生这种情况。他们在公共分叉上把钱支付出去,从不知情的商人那里得到商品。此时,攻击者发布他们的分叉,如果它包含的块比公共副本多,那么它将替换掉之前所有重复的交易。
如何预防?
用户在收到付款时等待的确认越多, 就越有信心确保交易无法逆转。以比特币为例,这通常被认为需要六个确认。但是,网络不会同等地遭受到双花攻击。网络越有价值,背后的挖矿算力越强大,成功实施攻击的难度就越大。
51%攻击
它是什么?
51%攻击是扣留攻击(Withhold Attack)的延伸。他们的名字来源于一个能够控制超过50%的网络采矿算力的个体。这样攻击者就可以比网络的其他部分更快地发布块。由于这通常是一个昂贵的操作,所以它通常用于攻击交易所。这方面的一个例子是在1月份,当时以太坊经典的51%攻击让gate.io交易所损失了约27.15万美元。
怎样预防呢?
防御51%的攻击是非常困难的,因为如果用户或实体完全控制超过50%的采矿算力,他们就可以有效地控制网络。最有效的防御就是确保攻击的成本高得惊人,这就是为什么在以太坊这样的网络上拥有大量忠诚的采矿算力对保护网络至关重要。
日蚀攻击(Eclipse Attack)
它是什么?
日蚀攻击类似于女巫攻击,只是针对的是用户而不是更广泛的网络。分散网络(如以太坊)上的节点不会连接到其他每个节点,而是只连接到少量节点(以太坊为13个节点),以防止网络变得过于缓慢和臃肿。
攻击者可能试图控制所有这些到其目标的传出连接。一旦实现了这一点,受害者就无法再看到区块链的真实状态。例如,这可以用来通过双花消费攻击瞄准商家。攻击者将eth发送到其控制的另一个地址,然后将相同的eth发送给商家。商家随后将货物交给攻击者,却没有意识到货物只是被骗走了。
如何预防?
可以通过限制每个IP地址可以操作的节点数量、增加传出连接的数量以及随机化这些连接以阻止攻击者能够定位特定节点,从而最最大限度地减少日蚀攻击。
拒绝服务攻击(Denial of Service Attack)
它是什么?
拒绝服务攻击是试图减慢网络速度。这可以通过同时创建大量的交易来实现,并最终使网络停止运作。因为确认新交易所需的时间可能会继续增加。积压的业务和用户如果希望他们的事务能及时处理就必须支付更高的费用。以太坊此前曾发生过两起类似事件: EXTCODESIZE 和 SUICIDE (自杀)攻击。拒绝服务攻击还可以用于针对矿池(使某些矿池脱机)或者以其他方式中断网络操作 (例如, 通过把节点作为攻击目标的方式)。
如何预防?
上面提到的以太坊拒绝服务攻击是攻击者利用一种可以创建许多廉价交易的方式进行攻击的结果。保护网络的方法之一是确保适当计算要处理的较大或较难的事务的成本。然而, 除了使其执行成本高昂外, 很难完全防止拒绝服务攻击。
网络分裂攻击(Network Split Attack)
它是什么?
网络分裂攻击是一种手段,顾名思义,是把网络分为两个或多个部分。它与“扣留攻击(Withhold Attack)”的不同之处在于它的范围和规模,以及它实现它的手段。网络分裂攻击的一个典型示例是将整个地理区域在物理上的分离 (例如, 由于整个区域与更广泛的互联网断开或阻塞)。这将看到两个区块链的存在。当两个区域重新连接时, 在较小的链上进行的任何重复交易都将丢失, 这意味着在分离期间能够在两个链上花费的攻击者可以随意利用双花攻击。
如何防止呢?
网络分裂攻击的代价高昂而且困难, 需要以某种形式把一个国家或地区与更广阔的世界在实际上分离。仅这一点就使它们难以执行。
Jwallet是以太坊和ERC20令牌最简单易用、最快捷、最安全的移动加密钱包。
iOS下载|Android下载