北大學術 | 淺談“自私挖礦”攻擊
淺談“自私挖礦”攻擊
作者:李聰,馮新宇
Trias聯合“北大軟微-八分量協同創新實驗室”定期舉辦技術沙龍。該實驗室成立於去年9月份,以可信計算、區塊鏈等作為主要研究方向,致力於推動智慧互聯新時代下的人機互信問題的解決。
現在,我們會推出由實驗室教授、博士生以及碩士生主筆撰寫的系列文章。本期文章由北京大學的博士生李聰,馮新宇撰寫。
1.“自私挖礦”攻擊
傳統觀點認為,比特幣的挖礦協議是激勵相容的,它可以抵禦少數群體的合謀攻擊,並激勵礦工按照協議規定的方式進行挖礦。比特幣挖礦協議之所以能實現這一效果,是由於它基本可以保證礦工根據其算力佔全網算力的比例而獲得相匹配的收益。
激勵相容:在市場經濟中,每個理性經濟人都會有自利的一面,其個人行為會按自利的規則行為行動;如果能有一種制度安排,使行為人追求個人利益的行為,正好與企業實現集體價值最大化的目標相吻合,這一制度安排,就是“激勵相容”的。[1] |
但Eyal等學者在文獻[2]中表達了不同的觀點,他們認為上述傳統觀點是錯誤的,比特幣的挖礦協議並非是激勵相容的。為了論證其觀點,作者提出了一個挖礦策略,該策略可以讓少數礦池獲得比他們誠實執行挖礦協議更多的收益,而這一策略便是“自私挖礦”(Selfish Mining)。“自私挖礦”攻擊是一種針對比特幣挖礦與激勵機制的攻擊方式,它的目的不是破壞比特幣的執行機制,而是獲取額外的獎勵,並讓誠實礦工進行無效計算。
簡而言之,“自私挖礦”攻擊的核心思想是“自私挖礦”礦池(下文中簡稱為“惡意礦池”)故意延遲公佈其計算得到的新塊,並構造一條自己控制的私有分支,造成鏈的分叉。誠實礦工會繼續基於公開分支挖礦,而惡意礦池則基於其控制的私有分支挖礦。倘若惡意礦池計算得到了更多的塊,它們維護的私有分支長度自然領先於公開分支,此時,惡意礦池選擇不公開這些新塊,力求進一步提高挖礦收益。但由於惡意礦池的算力限制,私有分支的長度優勢將無法一直保持下去,當公開分支接近私有分支長度時,惡意礦池將公佈所得到的新塊,並獲得這些塊的獎勵。該攻擊直接導致了誠實礦工之前的計算變為了無效計算。當然,在攻擊過程中,無論是“自私挖礦”礦工(下文中簡稱為“惡意礦工”)還是誠實礦工都有進行無效計算的可能,只是誠實礦工浪費了更多的計算,而惡意礦工從收益上得到了回報。此外,為了獲取“超額”的挖礦獎勵,會有越來越多的“理性”礦工轉而加入惡意礦池。
2 攻擊策略與收益
首先我們假設初始狀態下,公開分支與惡意礦池構造的私有分支長度相同。下面就對“自私挖礦”的攻擊策略以及對應收益情況進行分析。(本章節圖片摘自文獻[3]或基於[3]中圖片進行修改,黑色部分代表公開分支,紅色部分代表惡意礦池維護的私有分支。其中紅色虛線方塊代表私有分支中未公開的塊,而紅色實線方塊則代表已公開的塊)
(1)當公開分支長於私有分支時,倘若僅通過惡意礦工的挖礦努力,由於惡意礦池與全網其他礦工的總算力差距,私有分支能夠追上並超過公開分支的機會是很小的。因此,此時惡意礦池採取的策略是,根據公開分支的變化,動態地更新私有分支,使得兩條分支長度相同,並進而基於更新後的私有分支繼續挖礦。在該情況下,惡意礦池無法獲得收益。(2)當惡意礦工計算得到一個新塊,並使得私有分支比公開分支長度多1個塊時,惡意礦池將選擇不立即公開該新塊,而是基於私有分支繼續挖礦。此時會產生兩種可能的情況。
a.在情況一中,誠實礦工基於公開分支計算得到了下一個新塊。此時,私有分支失去長度優勢。
b.在情況二中,惡意礦工計算出下一個塊,私有分支繼續保持對於公開分支的長度優勢。
(3)對於上述情況一而言,由於私有分支的優勢被消除,惡意礦池將立即公開私有分支,兩條分支進入競爭狀態,任何一條分支都有取勝的可能。此後,所有惡意礦工將基於私有分支繼續挖礦,而誠實礦工則會選擇其中的一條分支挖礦(誠實礦工的選擇取決於新塊通知的傳播速度)。
a.倘若惡意礦工首先計算得到下一個塊,惡意礦池將直接公佈私有分支,並獲得兩個塊的獎勵作為收益。
b.倘若下一個塊被基於私有分支挖礦的誠實礦工計算得到,則此時惡意礦池將得到第一個塊的獎勵,而該誠實礦工將得到第二個塊的獎勵。
c.倘若下一個塊被基於公開分支挖礦的誠實礦工計算得到,那麼這兩個塊的獎勵則分屬於計算得到他們的誠實礦工,而惡意礦池將一無所獲。
(4)對於上述情況二而言,惡意礦工繼續領先計算出下一個塊,此時私有分支就建立了兩個塊長度的優勢,這一優勢是惡意礦池比較舒服的一個“安全墊”。惡意礦池會選擇進一步擴大收益,也即是延遲公開這兩個新塊,並繼續挖礦。
a.接下來,每當誠實礦工計算得到一個新塊,作為應對,惡意礦池也隨之公開一個新塊。而倘若惡意礦工計算得到一個新塊,惡意礦池則繼續不公開該新塊。
b.由於在算力上,惡意礦池相較其他礦工的總和處於劣勢地位,故它所控制的私有分支的長度優勢大概率會逐漸變小,直至減少為1個塊。此時,惡意礦池會立即公佈這條私有分支,使其成為當前合法主鏈,系統再一次恢復到只有一條分支的狀態。而惡意礦池也將獲得其計算到得的全部新塊的獎勵。
3 攻擊效果
文獻[2]中給出了“自私挖礦”攻擊的模擬效果,實驗背景大致設定如下。首先作者利用模擬器模擬了1000個節點,這些節點以相等概率進行挖礦。在這1000個節點中,有1000(表示全部節點中“自私挖礦”節點的比例)個節點執行“自私挖礦”演算法,而其他節點則是執行比特幣挖礦協議的誠實節點。接著,假設兩條分支處於等長狀態,並將誠實礦工分為兩類,比例的誠實礦工基於私有分支挖礦,而剩下的比例的誠實礦工則基於公開分支挖礦。
圖1 不同γ下,“自私挖礦”收益隨礦池大小的變化情況[2]
從圖1中可以看到,γ等於0時,也即全部誠實礦工都基於公開分支挖礦的情形下,若想在挖礦收益上超過正常執行比特幣挖礦協議時的收益,惡意礦池最低大約需要掌握1/3的全網算力。而當γ等於0.5時,也即誠實礦工中,一半人數基於私有分支挖礦,而另一半則基於公開分支挖礦時,惡意礦池實現“超額”收益的門檻則下降至全網算力的1/4。可見,相較於實施51%攻擊的算力要求而言,實施“自私挖礦”攻擊的門檻要低出不少。
4 後續研究
介紹到這,有關“自私挖礦”攻擊的故事其實還遠沒有說完。此後,許多針對“自私挖礦”策略優化及擴充套件的工作相繼展開。2016年,Nayak等作者在文獻[4]中提出了一種新的挖礦策略“stubborn”,該策略對“自私挖礦”策略進行了擴充套件。基於該策略,惡意礦池的收益相較於使用“自私挖礦”策略將提高13.94%。不僅如此,在文中作者還進一步對“stubborn”策略進行了優化,並提出了兩個新的策略,即 “the EqualFork Stubborn”與“Trail Stubborn”。這兩個策略進一步提高了惡意礦池的挖礦收益。在文獻[5]中,Carlsten研究了交易手續費對於“自私挖礦”策略的影響。文獻[6]則進一步擴充套件了“自私挖礦”模型,即將惡意礦池與誠實社群之間的延時加入模型。基於此模型,作者提出了一種通過監測“孤立塊”比例來檢測“自私挖礦”異常行為的方法。文獻[7]則考慮了一個更加通用的假設,即利用貝葉斯博弈公式對“自私挖礦”礦工在策略中的選擇行為進行建模,進一步優化了挖礦策略。
5 總結
隨著區塊鏈技術的快速發展,針對它的攻擊方式也逐漸增多,“自私挖礦”只是諸多攻擊中的一種。其他常見攻擊方式包括針對區塊鏈網路層的BGP劫持攻擊與Eclipse攻擊等,針對POW共識演算法與交易過程的平衡攻擊與活性攻擊等,以及針對智慧合約的the DAO攻擊、“GovernMental” 攻擊等。在後續的文章中,筆者將為大家分析這些攻擊方式。
6 參考文獻
[1] 百度百科https://baike.baidu.com/item/激勵相容/2361065?fr=aladdin
[2] I. Eyal and E. G. Sirer. Majority is not enough: Bitcoin mining is vulnerable. In Financial Cryptography, 2014.
[3] Eyal I, Sirer E G. Majority is not enough: Bitcoin mining is vulnerable[J]. Communications of the ACM, 2018, 61(7): 95-102.
[4] K. Nayak, S. Kumar, A. Miller, and E. Shi, “Stubborn mining:Generalizing selfish mining and combining with an eclipse attack,”in 2016 IEEE European Symposium on Security and Privacy (EuroSP), Saarbr ¨ucken, Germany, Mar. 2016, pp. 305–320.
[5] M. Carlsten, “The impact of transaction fees on bitcoin mining strategies,” Master’s thesis, Princeton University, 2016.
[6] J. Gbel, H. Keeler, A. Krzesinski, and P. Taylor, “Bitcoin blockchain dynamics: The selfish-mine strategy in the presence of propagation delay,” Performance Evaluation, vol. 104, no. Supplement C, pp. 23 – 41, 2016.
[7] J. Beccuti and C. Jaag, “The bitcoin mining game: On the optimality of honesty in proof-of-work consensus mechanism,” Swiss Economics, Working Papers 0060, Aug. 2017. [Online]. Available: https://ideas.repec.org/p/chc/wpaper/0060.html
[8] Wang W, Hoang D T, Xiong Z, et al. A Survey on Consensus Mechanisms and Mining Management in Blockchain Networks[J]. arXiv preprint arXiv:1805.02707, 2018.
[9] Li X, Jiang P, Chen T, et al. A survey on the security of blockchain systems[J]. Future Generation Computer Systems, 2017.
[10] Yaga D, Mell P, Roby N, et al. Blockchain technology overview[J]. Draft NISTIR, 2018, 8202.