- 區塊鏈實戰:金融與貿易落地案例分析
- 陀前途
- 1320字
- 2020-08-10 18:04:38
2.3 雙花攻擊
雙花是指雙重支付,即一筆錢花了兩次。雙花攻擊一般是惡意的黑客攻擊,其攻擊的方式主要有51%攻擊(Majority Attack)、芬尼攻擊(Finney Attack)和種族攻擊(Race Attack),最著名的是51%攻擊。了解雙花攻擊必須先了解比特幣的網絡運行流程。
比特幣的網絡運行流程如下。
(1)新的交易在打包后向全網廣播。
(2)每個節點都將收到的交易信息寫入一個區塊。
(3)每個節點進行挖礦,即工作量證明,如在SHA-256中,運算的哈希值必須以幾個0 開頭,通過不斷地進行哈希運算來找到一個符合的值,找到這個值需要大量的計算,即工作量證明。
(4)當一個節點挖礦,即哈希計算成功時,它會向全網進行廣播。
(5)若區塊中的所有交易都是有效且之前不存在的,則網絡上其他節點應認可該區塊的有效性。
(6)網絡上其他節點表示接受該區塊,表示接受的方法是跟隨在該區塊的末尾,把新的交易打包到新的區塊,從而不斷延長該鏈。
因為網絡上的節點會競爭著解哈希謎題,所以有一定的概率會出現并發情況,當多個節點廣播自己已經成功時,網絡上的其他節點會通過廣播接收到不同的新區塊。廣播并發如圖2.4所示,記賬成功的節點1和節點2都向網絡廣播,因為不同節點間存在網絡延遲,所以節點3先接收到節點1的廣播,節點4和節點5先接收到節點2的廣播,這樣不同節點就開始進行不同的區塊鏈記賬。該僵局需要在下一個工作量證明中才會被發現,當其中一條鏈條變成了網絡中最長的那一條時,短的分支將被廢棄。假定節點3所在的分支短于節點4、節點5所在的分支,那么節點3所在的分支將被廢棄。之后節點3會向附近的節點請求同步區塊,形成新的分支,即形成與節點4、節點5所在的分支相同的分支,然后繼續記賬。

圖2.4 廣播并發
在了解了比特幣的網絡運行流程后,雙花攻擊就很容易理解了。
51%攻擊是指黑客控制了全網超過50%的算力,可以實現區塊鏈的逆轉,簡而言之就是黑客可以創造一條更長的新鏈,使舊鏈被廢棄。最著名的是黑客控制了51%的全網算力后攻擊比特幣黃金(BTG)。黑客先向交易所轉賬BTG,生成了分支A,同時他又把這些BTG發送到自己的私有地址,生成了分支 B。接著他馬上在交易所賣掉所有的 BTG,從而獲得了大量的真實貨幣。因為他控制了51%以上的算力,所以分支B很快就變成了最長鏈,成為合法的鏈,他在分支B上的私有地址依舊擁有BTG,通過這種方法實現了雙花攻擊。從本質上來說,雙花攻擊利用了區塊鏈網絡作為一個分布式網絡的數據同步延遲。
芬尼攻擊是指通過控制網絡的廣播時間來實現雙花攻擊。其攻擊對象是那些接收0確認的節點,前提是黑客已經打包了一個區塊,但是不向網絡廣播,該區塊包含了黑客向自己的私有地址轉賬的一筆交易,然后黑客馬上向商家發起轉賬、購買物品,并在商家發貨后馬上廣播前面打包好的區塊,這樣有一定的概率能實現雙花攻擊。芬尼攻擊流程如圖2.5所示。

圖2.5 芬尼攻擊流程
種族攻擊是指利用礦工費用來實現雙花攻擊。它的流程與51%攻擊的流程是類似的,都發起了兩次轉賬,一次轉給自己,一次轉給商家。不同的是種族攻擊中轉給自己的礦工費用會高于轉給商家的,因為黑客沒有控制全網51%的算力,而礦工(記賬節點)會優先打包礦工費用更高的交易,所以黑客通過提高礦工費用使轉給自己的交易有一定概率在最長的區塊鏈上,即通過礦工費用變相控制了全網51%的算力。