寫在前面:康奈爾大學以及IC3組織的的研究人員宣布,他們發(fā)現(xiàn)了一種針對中本聰共識協(xié)議區(qū)塊鏈的拒絕服務攻擊,并稱之為BDoS,這種攻擊遠比此前的DoS攻擊要便宜得多(只需20%的算力)。研究者展示了攻擊者如何誘導理性礦工停止挖礦,并提出了一個緩解措施。
這一研究也引起了加密社區(qū)的關注,以太坊創(chuàng)始人vitalik對其表示了認可,獨立區(qū)塊鏈安全審計員Sergio Demian Lerner則表示這一研究是有趣的,他提到RSK可以提供額外的激勵以減少礦工問題(RSK相當于提供了叔塊獎勵),因此不受此攻擊的影響。
原論文作者:Michael Mirkin, Yan Ji, Jonathan Pang, Ariah Klages-Mundt, Ittay Eyal(自私挖礦提出者), Ari Juels (康奈爾大學計算機學教授)
以下是簡化版博文譯文:
自互聯(lián)網(wǎng)誕生以來,拒絕服務(DoS)攻擊一直是個讓人頭疼的問題。DoS攻擊者以各種服務為目標,旨在獲取樂趣和利潤。最常見的情況是,他們會向服務器發(fā)送大量的請求,這些請求會導致服務器太忙,以至于無法為正常用戶提供服務。
而應對措施通常是通過識別洪泛源來防止這類攻擊。因此,在所謂的分布式拒絕服務(DDoS)攻擊中,攻擊者必須協(xié)調(diào)來自多臺計算機的洪泛(Flooding)。
有趣的事實:分布式源通常是普通用戶們的機器,它們形成了機器人網(wǎng)絡或僵尸網(wǎng)絡。
而比特幣等加密貨幣,則是DoS攻擊一個特別有利可圖的目標。理論上,期貨市場和保證金交易允許攻擊者做空一種加密貨幣,通過壓低該貨幣的價格來獲取利潤。而競爭加密貨幣,以及擔心加密貨幣對金融主權影響的政府,則是其他潛在的攻擊者。
然而,據(jù)我們所知,在實際操作中,并沒有人對重要的加密貨幣進行過成功的拒絕服務攻擊。
原因就是區(qū)塊鏈協(xié)議的去中心化特性。在區(qū)塊鏈中,并沒有可攻擊的中心服務器。操作區(qū)塊鏈的機器被稱為礦機,它們會完全復制區(qū)塊鏈數(shù)據(jù)。雖然對個別機器的攻擊是已知發(fā)生過的,但幾臺機器的完全關閉(甚至是控制),對整個系統(tǒng)的可用性而言幾乎沒有什么影響。
更有趣的事實:比特幣的點對點網(wǎng)絡是為了抵御攻擊而構建的,它吸取了僵尸網(wǎng)絡的教訓。
事實上,已知針對比特幣這類區(qū)塊鏈的DoS攻擊是非常昂貴的。中本聰提出的比特幣協(xié)議依靠工作量證明機制(PoW)來保證安全,礦工只有證明他們在系統(tǒng)外花費了資源(即計算能力)才能創(chuàng)建區(qū)塊。只有當系統(tǒng)中的大部分計算能力表現(xiàn)適當時,才能維護區(qū)塊鏈的安全。因此,攻擊者要進行DoS攻擊,其擁有的計算能力就要比其他參與者的總和都要高,即51%攻擊。對于主要的加密貨幣來說,51%攻擊對于大多數(shù)實體而言都是非常昂貴的。
這類攻擊在2018年底Bitcoin ABC和Bitcoin SV之間的“哈希戰(zhàn)爭”中有過嘗試,但成功是有限的。
BDoS的提出
我們發(fā)現(xiàn),中本聰協(xié)議的固有特性,會使其暴露在明顯更便宜的DoS攻擊當中,我們利用了區(qū)塊鏈協(xié)議依賴于安全激勵的事實。在區(qū)塊鏈中,參與者(礦工)因參與加密貨幣挖礦而獲得獎勵。當這些激勵措施不再促進良好行為時,這個體系就會處于危險之中。我們將這種攻擊稱為區(qū)塊鏈DoS(BDoS),它利用了礦工的理性,使得他們違反規(guī)則要比遵循規(guī)則更有利可圖。
為了充分發(fā)揮效力,攻擊者需要讓礦工們意識到這種攻擊,以及意識到這種行為會增加他們的利潤。而這種策略行為顯然沒有在挖礦軟件中預先編程。因此,我們認為,這種攻擊并不會帶來迫在眉睫的風險,因為礦工們在面對攻擊時,必須重新規(guī)劃挖礦設備以最大化其利潤。
這種攻擊的存在,也許并不令人驚訝,它確實是Bryan Ford和Rainer B?hme提出的理論的一種表現(xiàn),他們認為,從理性主體的角度分析系統(tǒng)的效用是有限的,因為外在的激勵是無法與拜占庭行為進行區(qū)分的。
下面我們將概述這種BDoS攻擊的機制。但首先,對于不熟悉中本聰大陸的人們來說,讓我們先從背景開始講起。
背景
絕大多數(shù)加密貨幣都在使用中本聰為比特幣提出的區(qū)塊鏈協(xié)議。在中本聰共識區(qū)塊鏈中,系統(tǒng)中的所有交易都放在區(qū)塊當中,并形成一個不斷增長的數(shù)據(jù)鏈。礦工們通過新交易組成的新區(qū)塊來擴展這條鏈,并將其發(fā)布給所有其他系統(tǒng)參與者。區(qū)塊生產(chǎn)的速度,是通過要求礦工在他們的區(qū)塊中包含工作量證明(密碼難題的解決方案)來調(diào)節(jié)的。(而沒有PoW的區(qū)塊在定義上是無效的)為了補償?shù)V工們的努力,生產(chǎn)區(qū)塊就會伴隨一些固定的獎勵(例如,當前比特幣的固定區(qū)塊獎勵是12.5 BTC)。如果礦工誠實挖礦,那么他們就會被激勵來延長區(qū)塊鏈,并獲得相應的獎勵。
由于礦工遍布全球,偶爾會有兩個或更多的礦工同時生產(chǎn)區(qū)塊,而這些區(qū)塊有相同的父塊,這導致的結果就是分叉,也就是鏈出現(xiàn)了多個分支。而要確定哪條鏈是主鏈,中本聰提出的規(guī)則是:最長鏈就是主鏈,所有礦工都應該延長這個最長鏈,而與主鏈分離的區(qū)塊以及它們的回報都會被忽略。
為了避免失去獎勵,礦工們一旦在最新區(qū)塊的header中接收到它的元數(shù)據(jù),它們就開始對它進行挖礦。這樣就避免了在舊區(qū)塊上浪費挖礦資源,增加了挖取下一個區(qū)塊的機會。這通常不是好的做法,并引起了很多安全研究者的關注。在輕量級客戶端使用簡化支付驗證(SPV)協(xié)議進行部分區(qū)塊鏈驗證之后,這種基于區(qū)塊頭的挖礦方法便被應用了,并被稱為SPV挖礦。
攻擊
我們提出的BDoS攻擊,通過操縱對理性礦工的獎勵,從而可使區(qū)塊鏈停止運行。
攻擊者會使系統(tǒng)處于一種狀態(tài),在這種狀態(tài)下,理性礦工的最佳行動就是停止挖礦。
為了誘導這種狀態(tài)和相應的證明,攻擊者生成一個區(qū)塊,并只發(fā)布其區(qū)塊頭。而給定一個區(qū)塊頭,一個理性的礦工有三種可能的行動:
其可以延長主鏈,然后忽略區(qū)塊頭;
其可以擴展這個區(qū)塊頭(SPV挖礦);
其可以停止挖礦,既不消耗算力,也不贏得獎勵;
如果理性礦工遵循選項1并擴展主鏈,找到并廣播一個新的區(qū)塊,那么攻擊者礦工將使用其相對較高的連接性(如自私挖礦)并傳播與區(qū)塊頭BA相對應的完整區(qū)塊。這會導致兩組礦工之間的競爭,其中一組先接收到攻擊者的區(qū)塊數(shù)據(jù),另一組則先接收到理性礦工的區(qū)塊。
在一定概率下,理性礦工會輸?shù)舯荣悾瑓^(qū)塊Bi永遠不會被包含在主鏈當中。與“無攻擊”情況相比,這會降低在最后一個完整區(qū)塊上挖礦的預期回報。
如果理性礦工遵循選項2并成功地擴展了攻擊者的區(qū)塊頭BA,則攻擊者就不會發(fā)布完整的區(qū)塊BA。這導致理性礦工的區(qū)塊永遠不會包含在主鏈當中,從而導致該區(qū)塊的預期回報為零。
因此,如果“無攻擊”設置中的原始盈利能力不是太高,在這兩種情況下,攻擊者都可以確保誠實的礦工最終會賠錢。因此,BDoS攻擊者的威脅,意味著誠實礦工最好是放棄,而不是選擇挖礦,即選擇第三個方案。正如電影《戰(zhàn)爭游戲》中所說的那樣,“唯一能贏的途徑,就是不參與。”
BDoS攻擊在什么樣的條件下能成功
我們現(xiàn)在解釋BDoS攻擊者的成功條件是什么。具體來說,我們考慮對于特定的理性礦工i,無論其他參與者的行為如何,其停止挖礦要比繼續(xù)挖礦更有利可圖。答案取決于三個因素:首先,如果攻擊者持有的算力足夠多,那么攻擊將成功;其次,如果礦工i的算力足夠少,那么他將成功;最后,如果礦工i一開始利潤不高,那么他將成功;
礦工i的盈利因素是,如果沒有發(fā)生攻擊,其在挖礦作業(yè)投入的每一美元投資的回報。
下面的圖片顯示,對于不同攻擊者大?。╔軸)和礦工大?。ú煌€)的成功攻擊的最大收益率。
在我們的分析中,我們使用了一個稱為收益因子的屬性,它代表每美元投資的回報。這取決于挖礦設備以及電力成本,以及相關加密貨幣的價格。
舉個具體的例子,如果最大的礦工持有著全網(wǎng)算力的20%,那么一個擁有全網(wǎng)20%算力的攻擊者,就可以激勵所有的礦工在其盈利系數(shù)低于1.37時停止挖礦。
目前,對于比特幣而言,在電價為0.05美元/千瓦時的情況下,比特大陸S17 Pro礦機的收益因子接近2,而S9 的收益因子接近1。如果幣價大幅下降,攻擊者將能夠激勵現(xiàn)有的礦工停止挖礦,導致比特幣網(wǎng)絡完全停止運行。
此外,比特幣區(qū)塊獎勵預計將在2020年減半,這相應會降低礦工的盈利能力。
兩種幣模型
請注意,我們的模型是保守的,在某種意義上低估了攻擊者的機會。到目前為止,我們假設一個礦工在利潤為0的情況下可以繼續(xù)挖礦或停止挖礦。然而,加密貨幣礦工通常會將挖礦工作轉(zhuǎn)移到第二種加密貨幣上,甚至是暫時性的。如果兩種幣的初始盈利能力(在攻擊前)是相似的,那么在攻擊發(fā)生時,切換到另一種幣上,幾乎就是能盈利的。這意味著在這種情況下,我們稱之為兩種幣模型的攻擊威脅,甚至要比我們上面分析所顯示的還要高。事實上,兩種幣模型更符合現(xiàn)實場景。例如,有證據(jù)表明,礦工們經(jīng)常會在BTC和BCH之間進行轉(zhuǎn)換工作,這取決于盈利率。
緩解措施以及披露責任
我們沒有租用挖礦設備來進行攻擊,也沒有做空比特幣然后跑去躲避,而是遵循安全研究的最佳做法,這經(jīng)歷了一段負責任的披露期。我們向受影響的主要加密貨幣的開發(fā)人員發(fā)出了攻擊警報,并討論了緩解措施。
我們建議對共識規(guī)則進行一個小的修改,這樣礦工們就可以對區(qū)塊header在body在之前某個閾值時間(比如1分鐘)以上的區(qū)塊給予較低的優(yōu)先級。
這將增加攻擊者輸?shù)魠^(qū)塊傳播競賽的機會,因此可降低BDoS攻擊的有效性。
不幸的是,這一對策并不是根本性的。正如我們在論文中所解釋的,攻擊者可以使用智能合約或零知識(ZK)證明來證明其找到了一個區(qū)塊(而不是發(fā)布區(qū)塊頭)。使用這些技術,就會使得區(qū)塊傳播競賽中的攻擊者區(qū)塊與理性礦工區(qū)塊之間無法被區(qū)分,從而使緩解技術無效。
BDoS攻擊的另一個可能解決方案,是使用叔塊獎勵機制,正如以太坊采用的方案。叔塊獎勵機制將獎勵挖到非主鏈(但與主鏈直接相連)區(qū)塊的礦工。如果使用了叔塊獎勵機制,理性的礦工在BDoS攻擊中停止挖礦的的機會要低得多,因為即使其輸?shù)袅吮荣?,它也會得到獎勵(相當于以太坊完整區(qū)塊獎勵的7/8)。不過,這是一個折衷方案,因為叔塊會降低抵御自私挖礦攻擊的安全性。
結論
BDoS對中本聰共識區(qū)塊鏈而言是一種威脅,因為它允許攻擊者使用遠低于之前攻擊的算力執(zhí)行拒絕服務攻擊。我們已經(jīng)展示了攻擊者如何扭曲激勵機制,并引導追求利潤的礦工停止挖礦活動。我們提出的緩解措施很容易實施(不需要網(wǎng)絡分叉),但只會影響特定的BDoS攻擊。如果沒有更有力的緩解措施,中本聰共識區(qū)塊鏈的活躍性,就取決于礦工在收入損失的情況下是否愿意遵守協(xié)議,即利他主義。
責任編輯;zl
評論