• 【超完整懶人包】認識比特幣!原理與應用全面解析|動區新手村
  • Account
  • Account
  • BlockTempo Beginner – 動區新手村
  • Change Password
  • Forgot Password?
  • Home 3
  • Login
  • Login
  • Logout
  • Members
  • Password Reset
  • Register
  • Register
  • Reset Password
  • User
  • 不只加密貨幣,談談那些你不知道的區塊鏈應用|動區新手村
  • 動區動趨 BlockTempo – 最有影響力的區塊鏈新聞媒體 (比特幣, 加密貨幣)
  • 所有文章
  • 最完整的「區塊鏈入門懶人包」|動區新手村
  • 服務條款 (Terms of Use)
  • 關於 BlockTempo
  • 隱私政策政策頁面 / Privacy Policy
動區動趨-最具影響力的區塊鏈新聞媒體
  • 所有文章
  • 搶先看
  • 🔥動區專題
  • 🔥Tempo 30 Award
  • 加密貨幣市場
    • 市場分析
    • 交易所
    • 投資分析
    • 創投
    • RootData
  • 區塊鏈商業應用
    • 金融市場
    • 銀行
    • 錢包
    • 支付
    • defi
    • 區塊鏈平台
    • 挖礦
    • 供應鏈
    • 遊戲
    • dApps
  • 技術
    • 比特幣
    • 以太坊
    • 分散式帳本技術
    • 其他幣別
    • 數據報告
      • 私人機構報告
      • 評級報告
  • 法規
    • 央行
    • 管制
    • 犯罪
    • 稅務
  • 區塊鏈新手教學
  • 人物專訪
    • 獨立觀點
  • 懶人包
    • 比特幣概念入門
    • 從零開始認識區塊鏈
    • 區塊鏈應用
  • 登入
No Result
View All Result
  • 所有文章
  • 搶先看
  • 🔥動區專題
  • 🔥Tempo 30 Award
  • 加密貨幣市場
    • 市場分析
    • 交易所
    • 投資分析
    • 創投
    • RootData
  • 區塊鏈商業應用
    • 金融市場
    • 銀行
    • 錢包
    • 支付
    • defi
    • 區塊鏈平台
    • 挖礦
    • 供應鏈
    • 遊戲
    • dApps
  • 技術
    • 比特幣
    • 以太坊
    • 分散式帳本技術
    • 其他幣別
    • 數據報告
      • 私人機構報告
      • 評級報告
  • 法規
    • 央行
    • 管制
    • 犯罪
    • 稅務
  • 區塊鏈新手教學
  • 人物專訪
    • 獨立觀點
  • 懶人包
    • 比特幣概念入門
    • 從零開始認識區塊鏈
    • 區塊鏈應用
  • 登入
No Result
View All Result
動區動趨-最具影響力的區塊鏈新聞媒體
No Result
View All Result
Home 技術 以太坊

ethfans|如何防範對智能合約的審查攻擊(分岔、合謀、DDoS、速攻)?

Ian Yeh by Ian Yeh
2020-03-01
in 以太坊
A A
ethfans|如何防範對智能合約的審查攻擊(分岔、合謀、DDoS、速攻)?
96
SHARES
分享至Facebook分享至Twitter

在智能合約系統的設計中,一種常見的模式是要求客戶端在某個時間節點前採取某些行為;如果客戶端超過這個時間點(如,某個區塊高度)沒有響應,則智能合約(Smart Contract)會採取一些替代行動,而且通常來說是對逾時的客戶端不利的行動。本文源自 Ed Felten 的文章《Fighting censorship attacks on smart contracts》,由專欄作者 以太坊愛好者 編譯、撰寫及整理。

本文目錄

  • 審查攻擊的類型
  • 分叉攻擊
    • 壟斷算力
  • 閃躲攻擊
  • 干擾攻擊
  • 速攻
  • 總結
    • Amazon與BTP合作,「智能合約」現已整合區塊鏈分類帳資料庫QLDB,可在AWS上運行
    • 文組也該知道的區塊鏈技術知識《2》:一次搞懂「以太坊智慧合約」如何運作
    • 文組也該知道的區塊鏈技術知識 <9> :淺談預言機 Oracle,區塊鏈與現實世界的橋樑

 

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

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

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

下文,我會總結有關審查攻擊的知識,以及如何對抗審查攻擊,最後給出我對這種風險的看法。

延伸閱讀:什麼是「閃電貸 Flash Loan」?十幾秒內從”借貸協議 bZx”狠賺 35 萬美元的 DeFi 策略

延伸閱讀:武漢肺炎|吹哨人李文亮醫生今晨逝世,以太坊區塊鏈「立起紀念碑文」永遠留存鏈上

審查攻擊的類型

審查攻擊主要有四種:

  1. 分叉:礦工串通(或被賄賂)棄置包含正常挑戰的區塊,並通過分叉,使另一條沒有包含任何挑戰的區塊鏈被接受。
  2. 閃躲:礦工密謀(或被賄賂)在出塊時不打包正常的挑戰。
  3. 干擾:攻擊者通過傳統的拒絕服務攻擊(DoS),使得其他人無法提出挑戰(無法發出包含挑戰的交易)。
  4. 速攻:攻擊者在很短的時間內提出大量的鏈上斷言,讓其他人來不及在時間窗口內對所有斷言進行檢查和挑戰。

我們一個一個分別討論。

分叉攻擊

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

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

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

延伸閱讀:中國多省封城停工,礦業巨頭延遲礦機出貨,讓部分礦工在「比特幣減半前」面臨風險

延伸閱讀:高調炫富到發文求助!一比特幣富豪 SIM 卡被駭,「13.7億」的 BTC BCH 遭竊引市場恐慌

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

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

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

壟斷算力

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

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

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

延伸閱讀:得天獨厚的中國礦工|三分之二的比特幣產出來自中國,66% 的算力貢獻持續攀升

延伸閱讀:比特大陸「螞蟻礦機E3」容量瓶頸 ETC 大受影響,4 月恐輪到「以太坊」停止挖礦運作

換言之,這種攻擊的問題並不是有人會審查你的應用層的交易,而是你所處的區塊鏈存在算力壟斷者,它可以為了利益不受約束地破壞規則。對於任何區塊鏈應用來說,不論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 個區塊,對於以太坊來說只需要不到三小時。

延伸閱讀:資安專欄:圖文拆解「交易挖礦始祖 FCoin」資產流向,鼎盛時期便埋下禍根?

延伸閱讀:存款年利率42%引爆擠兌危機!台灣技術團隊連夜打造 DeFi 逃脫裝置「拯救世界」的故事

干擾攻擊

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

干擾攻擊的問題是,攻擊者必須阻止“ 所有 ”可能提交挑戰的參與方,如果這些參與方足夠多,則干擾攻擊就很難成功。

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

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

速攻

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

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

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

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

延伸閱讀:新手科普|白話解讀即將到來 Ethereum 2.0,以太坊區塊鏈的革命性升級

延伸閱讀:觀點|以太坊潛在市值:ETH 將成為價值「數兆美元」的經濟帶寬

總結

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

  • 防範閃躲攻擊:評估攻擊者的資源和風險承受能力,制定合理的挑戰窗口期。
  • 防範干擾攻擊:自行僱用(或通過可信的權威方僱用)潛伏的監視者,當你出差池的時候這些監視者能夠代替你發起挑戰。
  • 防範速攻:更細緻的設計rollup 協議。

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

?相關報導?

Amazon與BTP合作,「智能合約」現已整合區塊鏈分類帳資料庫QLDB,可在AWS上運行

文組也該知道的區塊鏈技術知識《2》:一次搞懂「以太坊智慧合約」如何運作

文組也該知道的區塊鏈技術知識 <9> :淺談預言機 Oracle,區塊鏈與現實世界的橋樑


讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。

加入好友

加入好友



關於我們

動區動趨

為您帶來最即時最全面
區塊鏈世界脈動剖析
之動感新聞站

訂閱我們的最新消息

動區精選-為您整理一週間的國際動態

戰略夥伴

Foresight Ventures Foresight News

主題分類

  • 關於 BlockTempo

動區動趨 BlockTempo © All Rights Reserved.

No Result
View All Result
  • 所有文章
  • 搶先看
  • 市場脈動
  • 商業應用
  • 區塊鏈新手教學
  • 區塊鏈技術
  • 數據洞察
  • 政府法規
  • RootData
  • 登入

動區動趨 BlockTempo © All Rights Reserved.