online gambling singapore online gambling singapore online slot malaysia online slot malaysia mega888 malaysia slot gacor live casino malaysia online betting malaysia mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 ethfans|如何防範對智能合約的審查攻擊(分岔、合謀、DDoS、速攻)?

 

 

本文中,我的關注點是交互式 rollup 協議會用到的類似模式—— 由某一方提出「斷言(assertion)」,其他人如果覺得斷言有問題,可以在「挑戰窗口期」內提挑戰;如果挑戰期內沒有人提出任何挑戰,則這個斷言就會被視為有效的。

這種設計模式在實踐中會遇到的問題是審查攻擊(censorship attack)—— 攻擊者阻撓其他人在時間窗口內提出挑戰。在交互式 rollup 協議中,攻擊者可能會提出虛假的“斷言”,同時阻止其他人在窗口期發起挑戰,最終導致虛假的斷言反倒成為合法的。

我們也假設,攻擊者必須先投入一筆資金,一旦攻擊失敗,它會失去這筆錢;這樣一來,我們不需要讓系統被成功攻擊概率為零,而只要確保攻擊成功概率足夠小,就不會有人願意去嘗試攻擊整個系統。

審查攻擊的類型

審查攻擊主要有四種:

審查攻擊主要有四種:

我們一個一個分別討論。

分叉攻擊

分叉攻擊是指在工作量證明(PoW)區塊鏈上,攻擊者獲得大多數挖礦算力,並根據需求使用這些算力來孤立包含挑戰的區塊。

因為這類攻擊要求攻擊者控制絕大部分算力,所以很難發起——如果攻擊者能夠輕易獲得大部分算力,表示這條區塊鏈本身就有很大的問題。

或者換個角度想,一個能夠控制絕大部分挖礦算力的卡特爾,一方面會導致大家不信任他們所在的區塊鏈,另一方面,可能也會有比審查攻擊能更快從系統中榨出油水來的辦法。

你可能會說,慢著!算力壟斷者可能並不會高調地聲張,只是偷偷摸摸地搞審查;如果攻擊者有能力這麼做,他們可能會在避免整個區塊鏈信譽受損的前提下,通過分叉進行審查攻擊。

這裡引出第一個問題:審查攻擊對於旁觀者來說,是否易於察覺?

為了證明分叉攻擊是顯而易見的,我模擬了分叉。假設攻擊者控制了60% 的算力,在前三十個區塊中,出現三條分叉鏈,長度分別是1、6、5;這和一般的區塊鏈完全不同。

我又做了一次模擬,這次攻擊者控制55% 的算力,這時候一個較早期的分叉可長達48 個塊。根據簡單的數學模型預測,當壟斷了60% 的算力,則每2.5 塊會發生一次分叉,分叉導致的孤鏈平均長度為5 ;當壟斷了55% 的算力,則每2.2 塊會發生一次分叉,分叉導致的孤鏈平均長度為10。

可以看到,隨著壟斷的算力下降,分叉發生的頻率及孤鏈長度反而增加了;但無論分叉長短,它們的共同之處是(首塊共性):在孤立分支上的首個區塊一定包含有效挑戰,而最終成為主鏈的分支則絕對不會包含這個挑戰——提出該挑戰的人一定會發現這點!\n(攻擊者可能會試圖在更遠處進行分叉來避免首塊共性,但這會導致分支過長,而最終孤立的分支仍包含該挑戰。)所以審查攻擊一旦發生,就一定會被人發現。

我不知道你會怎麼想,但如果我發現區塊鏈中存在算力壟斷現象,而且壟斷者會時不時使用算力干擾應用層協議,我會感到非常擔憂。如果其他人也有這種疑慮,整個區塊鏈將不再被用戶所信任——任何51% 算力攻擊皆會導致這個結果。

換言之,這種攻擊的問題並不是有人會審查你的應用層的交易,而是你所處的區塊鏈存在算力壟斷者,它可以為了利益不受約束地破壞規則。對於任何區塊鏈應用來說,不論TA 是否採用窗口期設計模式,只要出現了這種算力壟斷,就是毀滅性的打擊。

如果你所在的區塊鏈可能出現分叉攻擊,你應考慮轉移到其他區塊鏈。

閃躲攻擊

如果算力壟斷者不採用容易被發現的分叉攻擊,還有別的詭計嗎?

有的,就是閃躲攻擊。惡意礦工只要在出塊時,拒絕打包包含挑戰的交易就行了;只要確保挑戰窗口期內所產的區塊,都由惡意礦工產出,攻擊就能成功。

閃躲攻擊成功的可能性有多大?可以這麼解釋:當壟斷者控制的算力比例為 f ,挑戰窗口期為 n 個區塊,則攻擊成功率為 f n。

舉例來說,壟斷者控制了90%的算力,挑戰窗口期為50個區塊,則攻擊成功率為0.5 %(如果控制了95%的算力,攻擊成功率還要維持在0.5 %,則窗口期要增加為100個區塊)。

如果攻擊者要為攻擊失敗支付大量罰金——就像rollup 協議所設計的那樣——他們就不會肆無忌憚地攻擊;而且如果罰沒的錢能返給受害者,大家還會喜聞樂見這些未遂的攻擊。

所以應對閃躲攻擊的辦法是確保挑戰窗口期足夠長,使得攻擊成功概率低至用戶能接受的範圍;假設你能接受的攻擊成功率為 r ,攻擊者至多能控制 f 的算力,則安全的挑戰窗口期為 log(r)/log(f) 個區塊。

這個建議在現實中也是合理的;假設攻擊者能夠壟斷99% 的算力,要保證攻擊成功率低至0.1%,則挑戰窗口期至少要等於log(0.001)/log(0.99) = 687 個區塊,對於以太坊來說只需要不到三小時。

干擾攻擊

在干擾攻擊情況下,攻擊者通過「傳統的拒絕服務攻擊」,來阻止其他人發出挑戰;也就是「以DoS 進行審查攻擊」。

對於攻擊者來說還有個壞消息是,其他利益相關方可能會暗中僱用監視者—— 一個暗中觀察協議運行的中間方,在參與者來不及或難以發出挑戰時介入,對無效的斷言發起挑戰。攻擊者沒辦法辨別這些潛伏的監視者,也就沒辦法對他們發起DoS。

綜上,對於攻擊者來說,干擾攻擊似乎不是個好選擇。

速攻

速攻指的是,攻擊者發布大量的斷言,使得其他人來不及在挑戰窗口期內檢查所有斷言。

任何的 rollup 協議都需要有防禦速攻的機制,其中一種方法是對提出斷言的頻率進行限制,保證協議在設定的挑戰窗口期內的任何時間點,全網都有足夠的能力去檢查待處理的斷言或挑戰。

這類機制會在一條rollup 區塊鏈上,針對智能合約的處理能力實施一種“速限手段” ——即使存在某個能快速提出大量斷言的人,他最終也不得不慢下來,確保其他正常參與者能跟上。

所以要衡量一個rollup 系統的可擴展性,其中一個很重要的指標就是它在保證安全的前提下的最大速度限制;速限指的是一個系統能安全處理事務的速率,而不是某個參與者能夠產出斷言的極限速率。

總結

綜上所述,有三種審查攻擊能夠通過合理的設計或實踐來避免。

關於分叉類型的審查攻擊則很難分析;因為某種程度上來說,成功的分叉攻擊會留下明顯的證據,證明該鏈上存在算力壟斷者,而這些算力壟斷者會更願意採取其他更快獲得收益的攻擊 —— 比如雙花。任何存在算力壟斷的區塊鏈都已經病入膏肓,那又何必為這種情況下的審查攻擊而操心呢?

 

轉貼自: 動區

若喜歡本文,請關注我們的臉書 Please Like our Facebook Page: Big Data In Finance

 


留下你的回應

以訪客張貼回應

0
  • 找不到回應

YOU MAY BE INTERESTED