一、 雙花攻擊
介紹:
雙花攻擊顧名思義,同一筆錢給了不同的人消費了多次,如下圖所示:
攻擊的方式主要包含以下幾種:
1) Finney攻擊
礦工挖到了一個區塊(這個區塊中包含一個交易 : 張三向李四轉1BTC,其中張三和李四都是自己的地址),他先不廣播這個區塊,先找一個願意接受未確認交易的商家向他購買一個物品,向商家發一筆交易:張三向王五轉1BTC,其中王五是商家的地址,付款后向網絡中廣播剛剛挖到的區塊,由於區塊中包含一個向自己付款的交易,所以他實現了一次雙花。
2) Race攻擊
張三同時向網絡中發送兩筆交易,一筆交易發給自己(為了提高攻擊成功率,他給這筆交易增加足夠的小費),一筆交易發給商家。由於發送給自己的交易中含有較高的費,會被礦工打包成區塊的概率比較高。
3) 51% attack
攻擊者占有超過全網50%的算力,所以他可以創造一條高度大於原來鏈的新鏈。那么舊鏈中的交易會被回滾。攻擊者可以發送一筆新的交易到新鏈上。如下圖所示:
應對措施:
首先看下雙花攻擊成功的概率:
如果當礦工的算力超過50%的時候,網絡被完全控制,無法阻止雙花攻擊。但是掌握50%算力的成本還是比較高的,如下圖所示:
因此,在攻擊者算力不夠高的時候,增大確認數N可以有效防止雙花攻擊。
除此之外,還可以對交易進行監控,發現有雙花攻擊的情況及時報警。
二、 跳幣攻擊
首先看一下,比特幣難度調整算法:
跳幣攻擊的思路就是,有兩種幣A和B,兩種幣都有誠實的礦工,比如攻擊者的算力是誠實礦工的5倍,那么攻擊者就可以在兩個幣之間切換着挖,導致普通礦工很難挖到幣,如下圖:
BCH被跳幣攻擊的案例:
這種情況,會導致算力不平均,時高時低,誠實的礦工挖不到礦會選擇離開,導致整個網絡更加不安全。
應對措施:
變種DAA算法:
Zawy算法
Digsheild算法
Dark Gravity Wave算法
MIDAS算法
困難點:
1. 抵抗多種攻擊技巧
2. 數學上消除攻擊者優勢
3. 常數出塊時間
DAA攻擊仿真:
https://github.com/edwardz246003/DAA_simulator
三、自私挖礦
介紹:
應對措施:
類似於以太坊,運用GHOST協議,支持叔塊。
當然,以太坊的解決方案同樣也有漏洞,礦工可以隱藏自己的算力,使得自己和其他礦工的獲益更大,如下圖:
四、攻擊 礦池
介紹:
應對措施:
暫時沒有特別好的應對措施。