近期刷屏的「雙花攻擊」除了51%攻擊,還有這四種

近期刷屏的「雙花攻擊」除了51%攻擊,還有這四種

近期受到51%攻擊的區塊鏈項目,基本都是分叉幣,再加上都處於項目早期,缺乏算力與技術支持。

文 | 齊明

據萊特幣現金(LCC)官方消息,LCC近日遭到了51%攻擊,LCC團隊已與交易所進行接觸。其實,不僅萊特幣現金,前不久的ZEN、比特幣黃金(BTG)還遭受到了51%雙花攻擊。

那麼,雙花攻擊究竟是什麼呢?雙花,就是同一筆錢花了兩次。

近期刷屏的「雙花攻擊」除了51%攻擊,還有這四種

通常來說,如果利用區塊鏈技術,雙花問題可以解決。因為區塊鏈只承認第一筆交易是有效的,第二筆交易會被忽略。

那麼如果發生雙花攻擊,會有哪幾種情況呢?

1. 51%攻擊

51%攻擊,又被稱為Majority attack。這種攻擊是通過控制網絡算力實現雙花。如果攻擊者控制了網絡中50%以上的算力,那麼在他控制算力的這段時間,他可以將區塊逆轉,進行反向交易,實現雙花。

近期刷屏的「雙花攻擊」除了51%攻擊,還有這四種

比如Bitcoin Gold發生的雙花問題就屬於51%攻擊。 攻擊者控制Bitcoin Gold網絡上51%以上的算力,在控制算力的期間,他把一定數量的BTG發給自己在交易所的錢包,這條分支我們命名為分支A。同時,他又把這些BTG發給另一個自己控制的錢包,這條分支我們命名為分支B。

分支A上的交易被確認後,攻擊者立馬賣掉BTG,拿到現金。這時候,分支A成為主鏈。然後,攻擊者在分支B上進行挖礦,由於其控制了51%以上的算力,那麼攻擊者獲得記賬權的概率很大,於是很快,分支B的長度就超過了主鏈,也就是分支A的長度,那麼分支B就會成為主鏈,分支A上的交易就會被回滾(回滾指的是程序或數據處理錯誤,將程序或數據恢復到上一次正確狀態的行為)。

近期刷屏的「雙花攻擊」除了51%攻擊,還有這四種

也就是說,分支A恢復到攻擊者發起第一筆交易之前的狀態,攻擊者之前換成現金的那些BTG又回到了自己手裡。當然,這些BTG就是交易所的損失了。最後,攻擊者把這些BTG,發到自己的另一個錢包。就這樣,攻擊者憑藉51%以上的算力控制,實現同一筆token的“雙花”。

2. 芬尼攻擊(Finney attack)

假設攻擊者挖到了區塊,在區塊中,包含了一筆交易信息,即地址1向地址2轉了一定數量的token,不過這兩個地址都是攻擊者的。但是攻擊者並不廣播這個區塊,而是立即找到一個商家,用他的地址1,把這些token發給商家的地址3。

發給商家的交易廣播出去後,如果這個商家接受0確認,攻擊者就把他自己之前挖到的區塊廣播出去,這時候發給自己的交易就先於發給商家的交易。對於攻擊者來說,通過控制區塊的廣播時間,就實現了同一筆token的“雙花”。

一般來說,為了節省時間而接受0確認,特別是對於大額交易而言,是非常不安全的,而且對於大額交易而言,多幾次確認,將會降低交易被回滾的風險。

3.種族攻擊 (Race attack)

這種方式主要通過控制礦工費來實現雙花。

比如,攻擊者把一定數量的token發給一個商家,我們命名為分支A。如果商家接受0確認,那麼攻擊者就會再把這筆token發給自己的一個錢包,我們命名為分支B。

不過,攻擊者在發給自己的這筆交易中,加了較高的礦工費,從而大大提高被礦工打包的概率(也可以說間接提高了攻擊成功的概率)。如果攻擊者發給自己的這筆交易被提前打包,這時候這筆交易就先於發給商家的交易,也就是分支B的長度超過分支A的長度,分支A上的交易就會被回滾。對於攻擊者來說,通過控制礦工費,就實現了同一筆token的“雙花”。

4. Vector76攻擊

Vector76攻擊,是種族攻擊和芬尼攻擊的組合,又稱“一次確認攻擊”,也就是交易即便有了一次確認,交易仍然可以回滾。

如果電子錢包滿足以下幾點,Vector76攻擊就容易發生。這幾點即錢包接受一次確認就支付;錢包接受其它節點的直接連接;錢包使用靜態IP地址的節點。

具體攻擊方式如下(感興趣的可以點此查看):

攻擊者控制了兩個全節點,全節點A只是直接連接到電子錢包這個節點,全節點B與一個或多個運行良好的節點相連。

然後攻擊者將同一筆token進行了兩筆交易,一個是發給攻擊者自己在這個錢包(接下來要被攻擊的)上的地址,我們命名為交易1,另一個是發給攻擊者自己的錢包地址,命名為交易2。但是攻擊者給交易1的礦工費,要遠大於交易2的礦工費。攻擊者並沒有把這兩筆交易廣播到網絡中去。

然後攻擊者開始在交易1所在的分支上進行挖礦,這條分支我們命名為分支1。攻擊者挖到區塊後,並沒有廣播出去,而是同時做了兩件事:在節點A上發送交易1,在節點B上發送交易2。

由於節點A只連接到電子錢包的節點,所以當電子錢包節點想把交易1傳給其它對等節點時,連接了更多節點的節點B,已經把交易2廣播給了網絡中的大部分節點。於是,從概率上來講,交易2就更有可能被網絡認定為是有效的,交易1被認定為無效。

交易2被認為有效後,攻擊者立即把自己之前在分支1上挖到的區塊,廣播到網絡中。這時候,這個接受一次確認就支付的錢包,會立馬將token支付給攻擊者的錢包賬戶。然後攻擊者立馬賣掉token,拿到現金。

由於分支2連接的更多節點,所以礦工在這個分支上挖出了另一個區塊,也就是分支2的鏈長大於分支1的鏈長。於是,分支1上的交易就會回滾,錢包之前支付給攻擊者的交易信息就會被清除,但是攻擊者早已經取款,實現了雙花。

5. 替代歷史攻擊(Alternative history attack)

如果商家在等待交易確認,alternative history attack就有機會發生,當然,這需要攻擊者有較高的算力,對於攻擊者來說,會有浪費大量電力的風險。

攻擊者把一定數量的token發給一個商家,我們命名為分支A。同時攻擊者又把這筆token發給自己的一個錢包,我們命名為分支B。在商家等待確認的時候,攻擊者在分支B上進行挖礦。

商家在等待了N次確認後,向攻擊者發送了商品。但是如果攻擊者憑藉高哈希率,挖到了N個以上的區塊,那麼,分支B的長度就超過分支A,分支A的交易就會被回滾,攻擊者實現雙花。如果攻擊者挖到的區塊數量沒有超過N個,那麼攻擊失敗。

Alternative history attack能夠攻擊成功的可能性在於兩方面,一個是攻擊者的算力在網絡中的比例大小,另一個是商家等待的確認次數。比如,攻擊者控制了網絡中10%的算力,如果商家等待了2個確認,那麼攻擊成功的概率低於10%;如果商家等待了4個確認,那麼攻擊成功的概率低於1%;如果商家等待了6個確認,那麼攻擊成功的概率低於0.1%。由於該攻擊存在的機會成本,所以如果代幣交易金額與塊獎勵金額差不多,才有可能實現博弈。

近期刷屏的「雙花攻擊」除了51%攻擊,還有這四種

橫軸:攻擊者的算力佔網絡算力的比例

縱軸:攻擊成功的概率,n:確認次數

綜合近期受到51%攻擊的區塊鏈項目來看,這些項目基本都是分叉幣,再加上都處於項目早期,缺乏算力與技術支持。

目前,幾個區塊鏈項目的官方給出的解決方式,主要有如下幾種:

1. 提高確認次數。比如LCC建議將確認次數提高為 100 個。

2. 在共識機制方面改善。比如 LCC表示可能會引入PoS機制。

3. 升級新的算法。比如Bitcoin Gold表示,正在開發新的 PoW 算法以替代原有的 Equihash 算法。

4. 與交易所等合作。比如Bitcoin Gold立即與合作交易所合作,阻斷黑客的套現渠道。


分享到:


相關文章: