請輸入關鍵字:

熱門搜尋:

比特幣安全漏洞:時間扭曲攻擊

日期: 2025年4月7日 下午12:00

比特幣安全漏洞:時間扭曲攻擊

概述

2025年3月26日,比特幣開發者Antoine Poinsot發佈了一個新的比特幣改進提案。這是一個被稱為"大共識清理"的軟分叉提案。該升級修復了多年來一直存在於比特幣協議中的幾個漏洞和弱點。其中一個漏洞是我們最近討論過的重復交易問題。另一個將被該清理軟分叉修復的更為嚴重的漏洞被稱為"時間扭曲攻擊",這正是本文要討論的主題。

比特幣區塊時間戳保護規則

在討論時間扭曲攻擊之前,讓我們回顧一下當前的時間操縱保護規則:

中位過去時間(MPT)規則 — 時間戳必須比最後十一個區塊的中位時間更靠後。

未來區塊時間規則 — 基於MAX_FUTURE_BLOCK_TIME常量,時間戳不能比節點對等體的中位時間超前超過2小時。節點提供的時間與本地係統時鐘之間允許的最大差距是90分鐘,這是另一個安全保障。

MPT規則旨在確保區塊不會太過於回到過去,而未來區塊規則則防止它們進入未來。請注意,不能實施類似於未來區塊規則的規則來防止區塊有過去的時間戳,因為這可能會影響初始區塊鏈同步。時間扭曲攻擊涉及僞造時間戳,使時間戳遠遠回到過去。

中本聰的"差一"錯誤

在比特幣中,一個難度調整周期包含2016個區塊,以10分鐘區塊目標計算,這大約是兩周的時間。為了計算挖礦難度調整,協議計算相關2016區塊窗口中第一個和最後一個區塊之間的時間戳差。這個2016區塊的窗口包含2015個區塊之間的間隔(即2016減一)。因此,使用的相關目標時間應該是60秒 * 10分鐘 * 2015個間隔,等於1,209,000秒。然而,比特幣協議使用數字2016來計算目標。60秒 * 10分鐘 * 2016 = 1,209,600秒。這是一個差一錯誤。這是一個容易犯的錯誤,中本聰似乎混淆了區塊與區塊之間的間隔。

原始中本聰代碼

比特幣安全漏洞:時間扭曲攻擊

來源:https://sourceforge.net/p/bitcoin/code/1/tree//trunk/main.cpp#l687

這個錯誤意味著目標時間比應有的長0.05%。因此,比特幣目標間隔時間實際上不是10分鐘,而是10分鐘零0.3秒。這個漏洞並不重要,實際上自比特幣啓動以來,平均間隔一直是9分鐘36秒,明顯少於10分鐘。這是因為自2009年以來,平均算力一直在增加。這就是為什麼最後的減半發生在2024年4月,而不是2025年1月。我們提前了進度。無論如何,中本聰這0.3秒的錯誤在整體上相當無關緊要。也許有一天,在遙遠的未來,當價格和算力停止增長時,這個漏洞會讓我們重新回到進度上。

比特幣安全漏洞:時間扭曲攻擊

雖然0.3秒的漏洞本身不是重大問題,但存在一個相關的問題,這是一個較為嚴重的漏洞。難度計算基於每個2016區塊窗口内的第一個和最後一個區塊。這也是錯誤的。在我們看來,相關周期應該是前一個2016區塊窗口的最後一個區塊與當前窗口的最後一個區塊之間的差異。這似乎是計算難度調整窗口長度的最合理方式,其中關鍵是時間跨度覆蓋不同的調整窗口。如果這樣做,那麼2016也將是計算目標的正確間隔數。也許中本聰犯這個錯誤的原因是他必須考慮第一個難度調整周期,而該周期從未有過前一周期的最後一個區塊可用。

時間扭曲攻擊

比特幣的時間扭曲攻擊約在2011年首次被發現,利用了中本聰在難度計算中犯的錯誤。要進行攻擊,假設挖礦是100%中心化的,礦工可以設置協議允許的任何時間戳。在攻擊中,對於幾乎所有區塊,礦工將時間戳設置為比前一個區塊前進一秒,因此區塊鏈在時間上向前移動,並遵守MTP規則。為了盡可能慢地向前移動時間,礦工可以連續六個區塊保持相同的時間戳,然後在下一個區塊中將時間增加一秒,以此類推。這意味著區塊時間戳每六個區塊向前移動一秒。

這種攻擊意味著區塊鏈會越來越落後於真實時間,難度會增加,使挖礦變得越來越困難。然而,為了增強攻擊效果,在每個難度調整周期的最後一個區塊中,礦工將時間戳設置為真實世界時間。下一個區塊,即每個難度調整窗口的第一個區塊,然後被設置回過去,比前一個難度調整窗口的倒數第二個區塊提前一秒。這仍然符合MTP規則,因為在這種情況下,一個異常不會影響11個區塊的中位數。

當進行這種攻擊時,第一個周期後的難度不會受到影響。然而,在攻擊開始後的第二個調整周期後,難度將向下調整。然後礦工可以以極快的速度創建區塊,可能創造大量比特幣,然後可能出售這些幣並獲利。

簡化說明

由於難度周期是2016個區塊,在圖表中說明這種攻擊可能很困難。因此,我們創建了以下場景來嘗試解釋這種攻擊。

  • 每個難度調整窗口有五個區塊
  • 目標間隔為10分鐘
  • MTP規則基於最後三個區塊
  • 每個區塊的時間戳增加一分鐘,除了每個周期的最後一個區塊,它使用真實時間戳

說明性時間扭曲攻擊

比特幣安全漏洞:時間扭曲攻擊

如上圖所示,有兩條曲綫:

  • 代表每個難度調整窗口最後一個區塊真實時間的曲綫。隨著礦工越來越快地找到區塊,難度降低,這條曲綫變得不那麼陡峭
  • 代表其他區塊操縱時間戳的直綫

比特幣時間扭曲攻擊計算

下表顯示了礦工如何以最極端的方式使用這種攻擊來操縱難度向下。

比特幣安全漏洞:時間扭曲攻擊

注意:協議允許的任何周期的最大難度調整是4倍,但在上表中沒有達到這個值

每個周期的難度向下調整漸近到略高於2.8倍。這是因為隨著每個周期在時間上變短,難度調整減速的速率降低。

在上表的第11個周期,在攻擊的第39天,每秒産生超過6個區塊,準確地說是每秒10.9個區塊。此時,分配給區塊的時間戳限制以不同的方式發揮作用。根據MTP規則,時間必須每6個區塊向前移動,最小的時間增量是1秒。因此,在這一點上,基於我們的理解,時間戳開始比真實時間前進得更快,區塊鏈時鐘開始向前移動,接近真實世界時間,但仍然遠遠落後。盡管如此,攻擊可以繼續,難度不斷降低,直到達到允許的最小值。

攻擊可行性

雖然理論上這種攻擊是毀滅性的,但實施它有一些挑戰。執行攻擊可能需要大部分算力。如果有誠實的礦工輸入誠實的時間戳,那麼攻擊變得更加困難。MTP規則和誠實礦工的時間戳可能會限制惡意礦工時間戳可以回溯的程度。此外,如果誠實的礦工産生任何難度調整窗口的第一個區塊,該周期的攻擊將無法工作。另一個可能使攻擊更難執行的緩解因素是,它對所有人都是可見的。任何人都可以看到時間戳,在難度向下調整之前必須操縱四周的時間戳,可能給我們時間推出緊急軟分叉修復。

解決方案

修復這個漏洞相對簡單,盡管可能需要軟分叉協議更改。通過改變難度調整算法來計算不同2016窗口中區塊之間的時間跨度並完全修復差一錯誤,直接修復這個問題相當復雜。這可能也是一個硬分叉。另一種修復方法是取消MTP規則,而是要求時間在每個區塊中總是向前移動,雖然這可能意味著時間可能會卡在太遠的前方,也意味著礦工可能會因為在係統時鐘上使用真實時間而遇到麻煩,如果另一個礦工的時鐘提前幾秒,這可能會有無效的時間。

幸運的是,有一個更簡單的解決方案。為了防止時間扭曲攻擊,我們只需要要求新難度周期的第一個區塊的時間不早於前一周期最後一個區塊之前的特定分鐘數。這個新限制規則的分鐘數已經被討論過,提案從10分鐘到2小時不等。就緩解時間扭曲攻擊而言,兩者可能都可以。

在Poinsot的大共識清理提案中,他現在確定為2小時。2小時僅約為難度調整周期目標時間的0.6%,因此操縱難度向下的能力受到嚴格限制。我們在下表中總結了關於應使用的寬限期的討論:

  10分鐘限制 兩小時限制
積極方面

這具有抵消"差一"錯誤影響的良好特性。如果進行攻擊,其影響正好被中本聰的錯誤所抵消。這是一個足夠長的時間段,可以最小化意外無效區塊的風險。

這是一個足夠長的時間段,可以最大限度地降低意外無效區塊的風險。這是 Fabian Jahr 在測試此功能時為 testnet4 選擇的時間段這 2 個小時的時間段與未來區塊時間戳規則相匹配,因此允許礦工始終在一個區塊中糾正最大允許的未來時間誤差與當前規則集相比,這是一個更為保守的變化,在正常情況下可能沒有 MTP 規則那麼嚴格0.6% 是一個相當小的數字 
消極方面
  • 如果礦工使用真實世界時鐘生成時間戳,無效區塊的風險會增加
  • 這條規則是一個更重要的協議更改,在正常情況下可能比MTP規則更嚴格,進一步增加復雜性
這仍然允許攻擊礦工每個周期將難度向下操縱約0.6%,但這只會是一次性變化,無法復合

内容來源:PANews

財華網所刊載內容之知識產權為財華網及相關權利人專屬所有或持有。未經許可,禁止進行轉載、摘編、複製及建立鏡像等任何使用。

如有意願轉載,請發郵件至 content@finet.com.hk,獲得書面確認及授權後,方可轉載。

下載APP 下載財華財經APP,把握投資先機
更多精彩内容,請點擊: 財華網(https://www.finet.hk/) 財華智庫網(https://www.finet.com.cn) 現代電視FINTV(http://www.fintv.hk)

視頻

快訊

13:30
【異動股】港股跌幅榜前十,大昌微綫集團(00567.HK)跌19.72%,德斯控股(08437.HK)跌17.65%
13:30
【異動股】港股漲幅榜前十,天保能源(01671.HK)漲44.07%,玖源集團(00827.HK)漲30.36%
13:28
恆宇集團(02448.HK)終止建議重組 上市地位2月26日取消
13:15
【異動股】钛白粉板塊拉升,安寧股份(002978.CN)漲10.01%
12:10
【盈警】思捷環球(00330.HK)料2025年股東應佔綜合虧損收窄至700萬港元
11:55
佑駕創新(02431.HK)累計回購634.42萬股 涉资約9980.13萬港元
11:42
RAFFLESINTERIOR(01376.HK)復牌 接獲解除禁制令判決
11:31
晶科電子股份(02551.HK)擬出資2.68億元參設基金
11:23
陳茂波:預測香港經濟2027年至2030年間基本通脹率為平均每年百分之二
10:53
春節黃金週約177萬人次訪港