Bitcoin-Core

時間劫持如何實現雙花?

  • August 6, 2018

<http://culubas.blogspot.com/2011/05/timejacking-bitcoin_802.html>

我瀏覽了這個部落格,但我仍然不清楚這種攻擊是如何實現雙花的。根據我的閱讀,攻擊者向目標節點送出了錯誤的時間戳。在此期間,目標不會收到合法交易確認,因為目標節點落後於網路的中位時間。但是,我不清楚如何實現雙花。

您連結到的部落格討論了一種相當複雜的攻擊,涉及大規模網路操縱。

基本前提是:

  1. 您能夠辨識屬於您想要對其執行雙花的個人/實體的節點
  2. 您欺騙該節點認為網路時間遠遠落後於它的實際時間(與節點自己的系統時間相差最多 70 分鐘)
  3. 或者,您可以讓其他礦工相信網路比實際時間提前 70 分鐘。

這為我們提供了以下基本設置:

實際時間,T(與實際值無關)

大多數礦工的網路時間,T+70.

受害者的網路時間,T-70.

在比特幣中,當一個節點收到一個新塊時,它會通過一些驗證檢查。如果這些檢查中的任何一個失敗,則該塊被視為無效。其中一項檢查是驗證塊頭中的時間戳。

節點檢查以驗證此時間戳是否在節點認為的網路時間的 70 分鐘內(網路時間是節點連接到的對等點報告的時間的中值)。

為了執行攻擊,不良行為者創造了一種情況,即受害者比實際時間晚 70 分鐘,而世界其他地方正在挖礦,就好像實際時間比網路時間早 70 分鐘一樣。

因此,當找到一個有效塊時,當受害者的節點收到它時,它將被視為無效塊,因為從受害者的角度來看,它比網路時間提前了大約 140 分鐘(T+70 - T-70)。

然後,不良行為者使用他自己的算力(假設攻擊者擁有足夠的算力份額以每週產生幾個塊)在受害者可接受的時間參數內探勘一個塊。請注意,網路的其餘部分要麼已經在更長的鏈上,要麼很快就會找到更長的鏈,因為攻擊不會控制大多數雜湊算力。

通過將此區塊廣播給受害者,攻擊者可以說服他們該區塊中的某些交易已被確認。如果需要,攻擊者可以再探勘幾個區塊(這可能需要幾天時間),以誘使受害者相信包含交易的區塊已被多次確認。

同時,攻擊者將在其他礦工開采的更長鏈上花費相同的輸入進行另一筆交易。這也將得到確認,並收到比攻擊者專門為受害者節點創建的鏈更多的確認。

最後,一旦攻擊者說服了交易的受害者並獲得了任何好處,攻擊者就會讓受害者的節點連接到更誠實的節點。這將導致節點重新計算網路時間,得出更現實的值。

一旦發生這種情況,受害者的節點將能夠接受原始的、更長的、誠實的鏈,因為它是由多數算力開采的,所以它將有更多的塊(和更多的工作)。該鏈包含受害者被欺騙相信已確認的交易的雙花。

受害者確信交易的次要鏈將消失,被較長的鏈取代,只留下區塊鏈上的雙花。

引用自:https://bitcoin.stackexchange.com/questions/77972