交易延展性是一種攻擊,其中比特幣交易的ID 在被網絡確認之前被更改。
這樣做的目的是模擬交易沒有發生,只要滿足必要的條件。
交易延展性如何運作?
在我們能夠準確理解這種交易延展性是如何工作的之前,有必要了解比特幣交易是如何工作的。
與銀行賬戶不同,資金被提取然後通過轉賬存入另一個賬戶,比特幣的情況有所不同。交易需要添加到一個塊中,然後再添加到區塊鏈中。
區塊鏈,或稱區塊鏈,基本上是一個大型會計數據庫,一個在大型網絡上運行的分佈式賬本。
它記錄了哪個地址將BTC 發送到了哪個地址,以及發送日期。
多虧了這個,一個人,或者更確切地說是一個錢包,可以通過分析他擁有的地址和他收到的比特幣數量來計算他擁有多少比特幣。
在交易完成之前,稱為確認,它需要由比特幣節點進行驗證和驗證。
當他們驗證時,他們會尋找要包含的以下信息:
輸入:資金來自的地址。出口:他們要去哪裡。金額:你要轉賬的金額。簽名:使用私鑰生成的數字簽名。
當然,一筆交易有更多的信息,但為了簡單易懂,這種類型的攻擊綽綽有餘。
每筆交易都有一個唯一的標識符,以後可以在區塊鏈中引用它。
這就是所謂的交易ID 或TxID,它是通過獲取交易信息並將其傳遞給哈希函數來實現的。
散列函數基本上是一種數學函數,它允許你輸入大量可變長度的信息,並始終返回固定長度的信息,稱為散列。
哈希的一個重要特徵是實際上不可能確定原始信息,因為它不是逆的。如果有人想確定該信息是什麼,他們將需要輸入數據,直到找出哪一個產生相同的哈希值。
也不可能從輸入信息中預測散列將是什麼。在該信息中更改的任何小細節都會產生完全不同的結果。
私鑰是交易的一個非常重要的信息,因為它可以證明它來自有權使用這些資金的人。
所有這些都使得交易ID 幾乎不可能被欺騙。每個事務應該只有一個可能的哈希值。
為了檢查交易是否有效,我們只需從中獲取所有信息並將其傳遞給散列函數,如果我們得到相同的散列,那麼我們已經知道問題的答案。
用戶的數字簽名用作哈希的一部分以簽署交易,旨在具有一定的格式。這種格式並不總是被審查,這意味著可以輸入不同的格式並仍然被接受。
以這種方式更改簽名可以為同一交易創建不同的哈希值。可以想像,造成嚴重的問題。
是什麼讓它成為可能?
交易延展性是可能的,因為包含數字簽名的解鎖算法或scriptSig 可以被攻擊者修改。
如果腳本被修改,被散列的信息會不同,因此,交易ID也會不同。但是,這是一種在被區塊確認之前可以自行執行的攻擊。
交易確認後,數字簽名和TxID 是不可變的。
它可能導致的問題
該問題主要影響交易所,比特幣用戶經常在交易所買賣他們的BTC。
他們可以將法定貨幣或比特幣發送到交易所,然後在交易所進行轉換。當他們想將比特幣從交易所賬戶提取到他們的個人錢包時,就會出現問題。
在幾種情況下,有人可以利用這種攻擊。
1.個人攻擊
假設我們在交易所有比特幣。當我們說要提取這種加密貨幣時,我們要求他們將其發送到某個地址。
當交易所向我們發送資金時,它會創建一個自動交易,該交易會報告給挖礦節點,以便他們在將其整合到一個區塊中時進行確認。
攻擊包括假裝交易所從未將其發送給我們。為此,使用了交易的延展性,它複製了原始交易,修改了簽名並產生了新的哈希值。然後你只需要用不同的ID 重新傳輸新的交易。
我們創建的交易有可能首先得到確認。如果發生這種情況,網絡將認為新交易是有效的,而使交易無效。
我們只需要告訴交易所我們還沒有收到我們的硬幣。當交易所檢查區塊鏈時,它將無法找到具有原始ID的交易,試圖創建另一個具有更多比特幣的交易。
2. 意外
如果我們使用自己的定制軟件來管理比特幣,它可能會錯誤地生成哈希。然後這些哈希值可以被其他錢包“修復”,從而正確格式化它們。
但由於該行為,TxID 可能會發生變化。如果我們的錢包不是為查找具有相同特徵但具有不同ID 的交易而設計的,那麼它可能無法檢測到這些交易。你甚至可能認為你還沒有花掉這些硬幣。
3. 大規模拒絕服務攻擊
如果同時在不同的交易所發起這樣的攻擊,它甚至可能給比特幣網絡帶來更大的問題。你所需要的只是用於創建修改交易的軟件。
一些交易所可能能夠處理適度數量的更改交易,但如果隨著時間的推移保持不變,或者數量過多,則可能會產生物流問題。
這也意味著市場在短期內會出現問題。而且我們知道,市場中任何類型的不穩定都會對價格產生影響,尤其是像比特幣這樣以波動性著稱的資產。
¿是比特幣漏洞嗎?
比特幣網絡使用的技術存在幾個問題,這導致了延展性問題。
其中之一起源於2014 年的比特幣基準測試軟件Bitcoin Core,由開發者團隊出品。這是人們在構建自己的服務時經常用作起點的實現。
特殊的問題是它在將簽名信息發送到網絡上的另一個節點之前沒有正確檢查簽名信息。
已經修好了?如何?
這種非常流行的比特幣實現的特殊問題是客戶端不能正確處理格式不正確的簽名。
儘管這不是Bitcoin Core 的開發人員引入的特殊問題,但確實他們沒有在客戶端中集成額外的驗證過程來了解簽名是否正確創建。
直到客戶端的0.8 版才終於看到這樣的實現。
就他們而言,並非所有交易所都使用此實現。那些沒有決定使用定制解決方案的人。
交易所用來處理這個問題的另一種方法是手動驗證比特幣提款,這大大減少了這個問題。
Mt. Gox 交易的延展性
在後期交易所Mt. Gox 的最後幾天,交易的延展性被用作限制從客戶提取資金的藉口。
這可能是它失去大部分用戶資金並最終關門的部分原因,但也是一個很好的藉口,可以在安全地管理客戶資金時消除其內疚和缺乏控制。
與雙花的區別
雙花和交易延展性不是一回事。雖然在可延展性方面,交易的TxID 在礦工確認之前已更改,但雙花包括在確認第一個交易之前使用相同的硬幣創建交易。
這件事的好處是讓欺詐交易在比特幣網絡之前得到確認,導致第一個無效。
這使我們可以兩次花費相同的資金。
這對比特幣有何影響?
現實情況是,我們正面臨著過去可能發生的攻擊,但今天卻不太可能。幾乎所有管理比特幣的軟件都已採取措施與你打交道。
這樣一來,它對比特幣的影響目前非常低或為零,讓我們不必擔心。
這篇文章的想法是了解交易的延展性是什麼,以及它可以對比特幣產生的影響。
錯誤存在於所有軟件中,但並非所有軟件都是平等的。有些是至關重要的,以至於可以檢查項目,而有些則不是。
這個特別的不是,因為比特幣並沒有停止工作。儘管某些交易所可能已被某些用戶濫用,但該網絡仍在繼續運行,這些用戶利用此漏洞獲利。
最好是早點發現,而不是在價格高得多的時候發現。
資訊來源:由0x資訊編譯自CRIPTOTARIO。版權歸作者Criptotario所有,未經許可,不得轉載