真相還原:當年門頭溝事件的始作俑者原來是Ta

2014年2月25日,曾經最大的比特幣交易所MT.GOX(又稱門頭溝)停盤了。原因是遭受到黑客的攻擊,丟失了85萬個比特幣,按照當時的幣價,總價值為4.54億美金。在此事件中,黑客用的就是比特幣交易的延展性攻擊。

要說延展性攻擊,我們先來說說什麼是延展性

延展性,又稱為可鍛性,是指一個東西的形狀改變了,但其本質與質量沒有發生改變,其本質屬性仍然可以獲得大眾的認可。就如同一條含金量7G的項鍊,被高溫熔鑄後打造為一枚戒指,其黃金含量仍為7G,其價值仍不變(不將生產成本納入考慮)。

1、比特幣交易的可鍛性

先簡單說下比特幣交易,一筆交易裡由交易標識、版本號、鎖定時間、輸入、輸出組成,後四者經過哈希計算會生成一個哈希值,這個值就是交易標識,即TXID。每一個TXID就用來保證交易的唯一性。

真相還原:當年門頭溝事件的始作俑者原來是Ta


真相還原:當年門頭溝事件的始作俑者原來是Ta

每一筆交易的發起者都會用自己的私鑰進行蓋章,即常說的簽名。簽名也是一種算法計算,比特幣用的是橢圓曲線數字簽名算法(ECDSA)。礦工在驗證一筆交易是否有效的時候經常就需要檢查這個簽名,檢查的時候用的是openssl 庫校驗用戶簽名。

問題就在於openssl可以兼容多種編碼格式,ECDSA的計算方式又不止一種,如用戶用signature(r,s)和 signature(r,-s(mod N)) 生成的簽名數據是不一樣的,但礦工都可以驗證通過。這就是簽名的延展性,即使簽名數據改變了,但仍具有效性。

交易存在延展性,具體說來就是指一筆交易的簽名具有延展性。簽名改變了,簽名作為輸入的組成成分之一,交易裡“輸入”的組成數據也會有所不一樣,那麼哈希計算生成的交易標識TXID也會改變。

真相還原:當年門頭溝事件的始作俑者原來是Ta

2、延展性攻擊怎麼發生?

所謂的延展性攻擊,就是通過對簽名進行修改,但修改後的簽名仍有效,攻擊者可發起第二筆除了簽名之外,其他數據信息均相同的交易。延展性攻擊並不會阻止實際交易的進行,而是會引發二次轉賬交易。

具體說來,延展性攻擊的受害者通常是交易所。攻擊的主要流程是這樣的:

1. 黑客在交易所具有一個賬戶,其向交易所發出提款的請求,獲得一個TXID(先簡稱TXID1)。

2. 黑客根據交易信息,換另一種有效簽名,偽造一筆交易,交易標識為TXID2,發送到網絡。TXID2交易的交易信息和TXID1交易一樣,均是交易所向黑客轉賬。但交易所並不知道TXID2交易的存在。

3. TXID1交易與TXID2交易在網絡中競相處理,若TXID2交易先被處理,交易所的比特幣會轉入黑客賬戶中,TXID1交易則失敗。

4. 黑客向平臺表示TXID1交易失敗,再次發起提款請求,交易所確認TXID1交易失敗後就會再次發送交易。如此一來,黑客就獲得兩筆比特幣。

真相還原:當年門頭溝事件的始作俑者原來是Ta

關於第三點,黑客如何保證偽造的TXID2交易會先被處理的,這裡涉及到比特幣網絡的特性。比特幣網絡是去中心化的,節點與節點之間是點對點相連的,所有的交易請求都以網狀廣播的形式處理。黑客先查清楚交易所與哪些節點直連,用DDOS攻擊癱瘓這些節點,使之不能對外廣播交易信息。再偽造節點與交易所相連,用於廣播TXID2交易。這樣一來,TXID1交易不會被廣播到網絡,網絡中接收到的都是TXID2交易。

為了更形象的去理解,舉個例子:

1. 肖恩讓首飾店打造一條含金量為7G的金項鍊,首飾店向生產商發佈消息A----打造一條含金量為7G的金項鍊。2. 肖恩通過某種手段截獲了消息A,將消息A改為消息B----打造一枚含金量為7G的金戒指,再將消息B發送給生產商。3. 生產商接受消息B後,打造出金戒指,併發貨給肖恩。4. 肖恩向首飾門店發起投訴,表示並沒有收到金項鍊。首飾店向生產商對接,發現生產商的確沒發金項鍊產品給肖恩,首飾店就會讓生產商打造金項鍊,併發貨給肖恩。

這樣一來,肖恩就獲得了兩件含金量7G的產品。


分享到:


相關文章: