長話短說
- 雙花攻擊是同一筆數字貨幣被支付或花費了兩次甚至多次的情況。
- 雙花攻擊在使用現金的消費中幾乎不可能出現,而只會出現在線上交易中,尤其是虛擬貨幣中。
- 可以通過健全共識機制、提高節點花費、產生時間戳等方式來預防和阻止雙花攻擊。
雙花攻擊是什麼?
雙花攻擊也叫雙重花費攻擊的簡稱,也可以被成為雙重支付、一幣多付,英文是 double spending 或 double spend attack。是同一筆數字貨幣被支付或花費了兩次甚至多次的情況。
想像一個人使用同一張 100 元的紙幣在 10 家不同的商店各消費 100 元,這個人只花費了 100 元就獲得了價值 1000 元的商品,這些商店就是收到了雙花攻擊。在實體貨幣的範圍內這樣的情況基本不可能發生,但是在虛擬貨幣的範圍內卻是可能的,因為其並不是能看得到摸得到的實體。
雙花攻擊是如何發生的?
假如你是一個虛擬貨幣的項目方,壞人可能會嘗試以下方式來進行雙花攻擊:
- 快速的連續交易:壞人可能會在交易被確認之前不斷提交新的交易,試圖快速地完成雙花攻擊,這樣可以讓系統無法及時偵測到並防止雙花攻擊。
- 使用多個身份:壞人可能會使用多個身份來提交交易,以增加成功進行雙花攻擊的機會。
- 控制多個節點:壞人可能會嘗試控制多個節點或參與多個礦池,以提高雙花攻擊成功的概率。例如進行 51% 攻擊來控制整個區塊鏈網絡,使得攻擊者可以傳輸虛假的交易來進行雙花攻擊。
舉例: 假設一個駭客要利用 1 BTC 來發起雙花攻擊。他會創建這個 BTC 的多個副本,再首先將其中一個 BTC 副本發送給商家 A 並獲得服務(比如賣成 USDT、法幣,獲得某些商品等)。同時,駭客也會將另一個 BTC 的副本發送給商家 B。
此時兩個商家都覺得自己收到了 1 BTC,但是其實這筆轉帳是沒有獲得礦工的確認,或者他們看到的礦工確認信息是虛假的,所以他們其實根本沒有收到這筆 BTC。而駭客在花費極低的情況下獲得了價值 2 BTC 的服務或商品,這就是雙花攻擊的情況。
雙花攻擊的種類
51% 攻擊 51% Attack
這是最常見的雙花攻擊手法之一。攻擊者嘗試控制區塊鏈網絡中超過 50% 的計算能力,從而能夠控制整個區塊鏈的共識機制。這使得攻擊者可以修改交易紀錄、阻止交易確認來進行雙花攻擊。
競賽攻擊 Race Attack
攻擊者會同時發送兩筆交易,一筆交易發給自己並提供較高的礦工費,另一筆發給商家並附帶較低的礦工費。
由於發送給自己的交易提供較高的手續費,礦工在打包交易時會優先選擇這筆交易。同時,商家可能已經看到攻擊者發送的交易,並認為該交易已被驗證,因此提供商品或服務給攻擊者。
然而,事實上攻擊者發送給商家的交易可能並未被確認,因為礦工更優先地打包了發送給自己的交易。這樣一來,攻擊者在不支付真正價值的情況下獲得了商家的商品或服務,從而實現了雙花攻擊。
芬尼攻擊 Finney Attack
主要針對那些願意接受未確認交易的商家。攻擊者首先挖掘一個新的區塊,但暫時不公開它。然後,攻擊者向商家發起一筆交易,商家接受並未等待該交易被確認就提供了相應的服務或商品。
接著,攻擊者將之前挖掘的區塊公開廣播。由於攻擊者可以控制區塊的廣播時間,這導致攻擊者發給自己的交易就先於發給商家的交易,從而完成了雙花攻擊。
如何預防雙花攻擊?
- 健全共識機制:在具有健全共識機制的區塊鏈中,永遠不會出現雙花現象。PoW、PoS 等共識機制使礦工或驗證者能夠正確履行維護網絡完整性的職責,其安全嚴密的邏輯和設計將默認防止意外或自願的雙重支出問題。
- Nonce (交易序號):Nonce 是一個隨機的加密值,在挖掘區塊之前必須進行雜湊運算。Nonce 的值只能使用一次,從而阻止雙花攻擊的發生。
- 時間戳記:每個成功的交易都有一個時間戳記,這證明了特定區塊在特定時間添加到鏈上。一旦區塊被時間戳記,就變得不可逆轉。
- 高節點運營成本:雙花攻擊通常要求攻擊者管理一個或多個節點。在 51% 攻擊的情況下,駭客需要支配網絡內超過一半的節點。所以區塊鏈可以通過提高節點運營的門檻來減輕雙花攻擊的風險。例如,以太坊要求抵押 32 個 ETH 才能成為節點管理員,這樣相當於提高 51% 攻擊的成本而讓攻擊者知難而退。
- 中央監督:傳統銀行系統很少發生雙花現象,因為有當局監控和批准每筆交易,所以你幾乎不可能將同一張紙鈔花兩次。區塊鏈也可以採用這種安全檢查機制。但是這種解決方案和區塊鏈“去中心化”的價值觀是衝突的,因此一些區塊鏈可能永遠不會採用這種方法。
- 區塊鏈協議和智能合約審計:雙花問題往往會利用區塊鏈協議和智能合約的內部 bug來發生,因此進行全面和專業的審計有助於發現和修復這個高風險漏洞。
區塊鏈中的雙花攻擊案例
- BTG 比特幣黃金:2018 年 5 月 16 日,比特幣黃金 BTG 遭到了第一次雙花攻擊,攻擊一直持續到 3 天後的 5 月 19 日。攻擊者總共獲取了 12,239 BTG,當時價值約 1800 萬美元。
- ETC 以太坊經典:2019 年 1 月 5 日,以太坊經典遭受了雙花攻擊,攻擊者總共獲取了 219,500 个 ETC,當時價值约合 110 万美元。
結論
隨著區塊鏈技術的不斷發展和改進,預防雙花攻擊的手段也在不斷加強。各種加密貨幣項目和區塊鏈平台都在積極尋求更安全、更可靠的解決方案。
但是,我們也要認識到,雙花攻擊是一個不斷演進的問題,攻擊者和駭客會不斷尋找新的漏洞和方法。因此,保持警覺並持續改進區塊鏈技術是至關重要的。只有通過共同的努力,我們才能在這個充滿挑戰的數位時代中建立更加安全和穩固的區塊鏈生態系統。
参考资料
- 維基百科 - Double Spending
- Hacken - Double-Spending in Blockchain and How to Prevent?