比特币中常见的几种攻击(Several common attacks in Bitcoin)

blank

New Member
#1
比特币已经成功运行了8年多,期间经历过各种各样的程序bug和安全攻击。今天我们来认识一下存在于比特币网络中的几种常见的攻击。

1、51%攻击

51%攻击(51% Attack)是指攻击者控制了全网一半以上的算力,在这种情况下攻击者可以制造任何想要的结果,例如双花。当出现分歧时比特币网络以最长的一条链为最终的区块链(best blockchain),因为攻击者控制着51%以上算力,总是可以制造出更长的一条链。此时整个网络就被破坏了,网络里的交易都不值得信任。

所有区块链系统都要求至少一半以上的节点或算力是诚实的(Most majority honest),因此51%攻击也是一个无解的攻击。

想要制造51%攻击并不难。例如当前BTC网络的算力为10E左右,而BCH网络的算力为0.6E左右。因此只要部分矿工联合起来,从BTC网络上切换0.7E的算力至BCH网络上,就可以发起51%攻击,使BCH网络完全失效。

2、Finney攻击

Finney攻击由比特币的第一个用户Hal Finney定义,它是一种利用比特币中未确认交易来欺诈接受比特币支付的商家的一种攻击。该攻击的前提条件是:
商家信任未确认交易(Unconfirmed Transaction),并且在收到未确认交易后便立即发货,且无法撤销;
攻击者需控制或自己拥有至少一个可以挖到矿的矿机;

Finney攻击的流程如下:
攻击者的矿机挖到一个区块(抢到一个打包权),在该区块中他将自己的比特币从地址a转到自己的地址b上;
他并不将该区块广播到网络上;
他打开某商家比特币付款页面,将自己a地址上比特币付给该商家;
该商家收到一笔未确认交易,并立即显示收款成功开始发货;
攻击者将步骤1中的区块广播至网络上;

整个网络会接受步骤1产生的区块,而抛弃步骤3中生成的交易。因此商家之前收到的未确认交易被取消了,而商家却已经发货了,且不能退回。以上攻击的另一个前提是在步骤1和步骤5之间没有其它任何矿工挖出区块。

Finney攻击是一个危害比特币支付安全的攻击。当前接受比特币支付的商家绝大部分都是信任未确认交易的,通过拥有一个区块的打包权就可以发起Finney攻击。

3、Sybil攻击

Sybil攻击(Sybil Attack)是通过在网络上冒充身份的一种攻击方式。比如攻击者可以启动很多的机器,冒充比特币的全节点(Full Node)。SPV节点(例如手机钱包)需要通过连接全节点才能正常收发比特币,当SPV节点连接至这些假的全节点时,它们将不能正常工作。

Sybil攻击可以扰乱比特币网络的正常工作。

4、重放攻击

重放攻击(Replay Attack)是当比特币网络发生硬分叉时所产生的攻击方式。因为分叉后两条链一模一样,所有的地址、签名、交易在两条链上都有效。只需要简单地将一个网络上的交易广播到另一个网络上即可以实施重放攻击。实施重放攻击的前提是分叉链未做任何重放保护。