寫在前面:本周的比特幣技術周報,主要關注的是影響硬件錢包的費用超付攻擊(
Feeoverpaymentattack)問題,而Trezor、Ledger等硬件錢包因此升級固件后而引發兼容性問題,對于這些問題,開發者們提出了一些解決方案,但對于硬件錢包面臨的兩次花費攻擊問題,目前依舊沒有好的解決辦法。此外,關于閃電網絡通道的安全性,上周開發者還提出了通過日蝕攻擊的方法來竊取通道資金,針對這一問題,研究者認為根本性的解決方案是提高主鏈對日蝕攻擊的抵抗能力。而在最后,我們還會關注上周當中發生的比特幣軟件基礎設施的一些重大更新。
(圖片來自:tuchong.com)
一、費用超付攻擊與硬件錢包的兼容問題
如果你的軟件或流程允許你使用硬件錢包來花費隔離見證輸入,請檢查你的系統是否與錢包的最新固件更新保持兼容。例如,Trezor的最新固件,要求升級與其連接的軟件,以繼續處理隔離見證輸入;Ledger的最新固件,將在處理從未更新軟件接收到的隔離見證輸入時發出警告;其他的硬件錢包可能會在未來發布類似的更新;請與硬件錢包制造商聯系,以獲取相關計劃的更多信息。有關此更改的原因,請看如下關于“費用超付攻擊”的解釋:
德國最大資管公司之一Dekabank正考慮投資比特幣:7月31日消息,德國最大資管公司之一Dekabank正在考慮在周一新法生效后投資比特幣,盡管它說\"還沒有做出決定\"。目前Dekabank管理著4030億美元資產。
此前消息,德國一項新的法律將于周一生效,該法律允許機構基金將持有的20%的資金投資于比特幣。根據這項新的立法,Dekabank將成為約4000家有資格購買比特幣的德國公司之一。(Bitcoin Magazine)[2021/7/31 1:26:10]
比特幣交易支付的費用,是交易所花費的UTXO金額,與其創建的UTXO金額之間的差額。交易顯式地說明了它們創建的UTXO數量,但它們花費的UTXO數量,只能通過查看創建這些UTXO的先前交易來找到。支出交易只承諾txid和它想要花費的UTXO的位置,這需要其他想要計算費用的軟件來查找每個UTXO的先前交易,或維護一個已驗證UTXO數據的數據庫。
由于硬件錢包不維護UTXO集,因此它們確定使用遺留UTXO交易所支付費用金額的唯一可靠方法,是獲取每個遺留UTXO先前交易的副本,哈希前一筆交易以確保其txid與UTXO引用匹配,并使用現在已驗證的UTXO金額執行費用計算。在最壞的情況下,遺留交易幾乎可以大到1MB,并且一筆花費交易可能引用數千筆以前的交易,因此金額驗證可能需要資源受限的硬件錢包處理千兆字節的數據。
而BIP143segwitv0中所做的幾個改進之一,是通過讓簽名commit它們所花費的UTXO數量來消除這個負擔。這意味著,任何承諾金額不正確的簽名,都將是無效的,包括BitcoinCore和硬件錢包的開發者都認為,這將允許簽名者安全地接受來自不受信任軟件的金額。
特斯拉和Square在比特幣的投資上盈利50億美元:市場消息:特斯拉和Square在比特幣的投資上盈利50億美元。(金十)[2021/2/23 17:42:58]
不幸的是,事實證明簽署單個UTXO的金額是不夠的。2017年,GregSanders描述了一種攻擊,它可以誘騙用戶大幅超額支付交易費用。首先,攻擊者將控制與硬件錢包對接的桌面或移動軟件,并等待用戶啟動付款。受破壞的軟件會創建所請求交易的兩種變體,每個變體都要花費相同的兩個隔離見證UTXO,這些UTXO受用戶連接的硬件錢包控制。在第一筆交易中,受損的軟件低估了其中一個UTXO的花費。這將導致硬件錢包以相同的低估金額低估交易費用。在第二筆交易中,受損的軟件低估了第二個UTXO的數量,這將導致硬件錢包也低估了第二筆交易的費用。
受損的軟件將第一筆交易發送到硬件錢包。用戶檢查金額、接收者地址以及計算過的交易費用。用戶授權簽名,簽名的交易返回到受損的軟件。第一筆交易在BIP143下無效,因為它的一個簽名提交了不正確的UTXO量。受損的軟件隨后聲稱,有一個小問題阻止了交易的廣播,并告知用戶他們需要重新簽署交易,但軟件不會重新發送第一筆交易,而是發送第二筆交易。根據硬件錢包顯示的信息,這第二筆交易也是BIP143無效的,因為它的一個簽名提交了錯誤的金額。然而,這兩筆交易中的每一筆,也都有一個有效的簽名,受損軟件能夠使用這兩個有效的簽名合成一筆有效的交易,從而超額支付其費用。
比特幣大漲 螞蟻S9再次開機:11月6日,比特幣近24小時漲幅8.26%,曾一度突破15900美元,截止發稿,暫報15470美元。伴隨著比特幣暴漲,礦機S9再次開機。根據F2Pool數據顯示,以0.34元/度的電費計算,螞蟻S9在比特幣當前難度(16.79T)的關機幣價為13200美元(約87000人民幣)。目前,按照目前螞蟻S9市場價格計算,螞蟻S9回本周期在45天左右。同時,據消息人士透露,路邊礦池近期一直在購買螞蟻S9礦機。[2020/11/6 11:50:01]
最壞的情況下,
攻擊提示用戶對控制n個UTXO的錢包進行n次簽名,并導致將錢包的所有資金用于支付除合法支付金額以外的費用。
與Sander在2017年所描述的其它攻擊類似,此攻擊僅影響無狀態簽名者,這些簽名者依賴于外部系統來告知他們所控制的UTXO。而跟蹤接收到的UTXO數量的網絡錢包,不會簽署不正確的UTXO數量,因此不會受到此類攻擊的影響。當然,網絡錢包也容易受到其他類型的攻擊,這也是硬件錢包可為用戶增強資產安全性的原因。
上周,Trezor宣布SaleemRashid在三個月前重新發現了這個漏洞,作為回應,Trezor已更新了固件,但破壞了直接或通過HWI與Trezor設備連接的多個錢包的兼容性。如果錢包有以前交易的完整副本或能夠獲得這些副本,恢復兼容性應該只是更新錢包代碼的問題。而在其他情況下,錢包可能無法存儲以前支付錢包的交易的完整副本,這可能需要重新設計錢包以存儲該數據,并且需要重新掃描過去的錢包交易的區塊鏈。創建或更新部分簽名比特幣交易軟件需要升級,以便將以前交易的完整副本包含到PSBT中。對于PSBT存儲在大小受限制媒介的情況,數據大小增加的問題,可能需要放棄該協議,或切換到容量更大的媒介。
動態 | 數據顯示:金礦開采成本比比特幣挖礦高出23倍:據zycrypto消息,一位名叫Asimov的Twitter用戶發布的數據顯示,金礦開采消耗的能量是比特幣挖礦的23倍。黃金開采每年花費約1050億美元,消耗約4.75億GJ,而比特幣挖礦僅花費45億美元,每年僅使用1.83億GJ。紙幣和鑄幣、銀行系統和政府等其他此類系統的成本都高于比特幣挖礦。[2019/3/24]
Ledger也做了類似的修改,但他們在文章中提到,他們僅在沒有完整拷貝先前交易的情況下使用隔離見證UTXO時,才會顯示警告。盡管要求以前的交易,可以最大限度地提高安全性以抵御該攻擊,但也存在理由允許硬件錢包有選擇地繼續使用隔離見證簽名UTXO值,而不是破壞現有的軟件并在傳統類型的值驗證上花費額外的資源。
這種攻擊在3年前就被開發者們所知道了:Sanders在大約三年前公開描述了這種攻擊,他在開發者郵件列表、BIP等其它討論中都有談及,其他人也都提起過這種攻擊,但在很多人看來,這種攻擊很難進行,并且影響也較小,然后獲得對硬件錢包的軟件控制器訪問權限的攻擊者,更可能會執行不同的攻擊,該攻擊會直接向攻擊者付款而不是進行超付費用攻擊。
雙重簽名也可能導致花費兩次:攻擊取決于使用受損軟件,讓硬件錢包用戶授權兩筆在用戶看來完全相同的,但稍有不同的交易。然而,同一個受損的軟件可以向用戶顯示兩筆完全不同的交易,它們看起來完全相同,從而導致向同一個接收者支付兩次費用。從用戶的角度來看,這兩種攻擊都是不可區分的,但是針對費用超付攻擊的修復方法,并不能解決兩次花費攻擊的問題。
動態 | 比特幣全網未確認交易18207筆:據btc.com數據顯示,目前比特幣全網未確認交易數量為18207筆,比特幣全網算力為43.07EH/s,24小時交易速率為3.62秒。截至目前比特幣全球均價為3836.3美元,最近24小時漲幅為5.74%。[2019/2/19]
多重簽名設置可能需要多個折衷方案:為了使用多個硬件錢包對多重簽名保護的資金進行攻擊,需要滿足最小閾值的每個簽名者都需被誘騙來簽署相同的兩個交易變體。對于包含在線錢包的情況,該錢包知道其所簽名的UTXO的價值,只有當該在線錢包也受到攻擊時,攻擊才起作用。
解決這種攻擊問題的一個長期解決方案,是更改交易摘要,以便每個簽名提交該交易中使用的所有UTXO的值。如果受損軟件謊報關于任何UTXO的數額,這將使簽名無效。
這是JohnsonLau在2018年提出的解決方案,其公開草案已被納入taproot的BIP341規范中。如果采用了taproot,那么對于像硬件錢包這樣的無狀態簽名者來說,在不評估以前交易的情況下為taprootUTXO簽名應該會更安全。不幸的是,這仍然無法修復兩次花費攻擊,這是大多數硬件錢包的無狀態設計所存在的一個問題,其阻止了它們在內部跟蹤自己的交易歷史。
二、針對閃電網絡的時間膨脹攻擊
GlebNaumenko和AntoineRiard在比特幣開發者郵件列表中發布了他們撰寫的論文的摘要,其描述了如何通過日蝕攻擊從閃電網絡通道中竊取資金。這篇研究論文擴展了Riard在第77期周報中所描述的分析。簡而言之,攻擊者可以控制LN節點與比特幣P2P網絡的所有連接,并延遲向受害者轉發新區塊的通知。在受害者對區塊鏈的看法,遠遠落后于公眾的共識看法之后,攻擊者會在過時的狀態下關閉與受害者的通道,日蝕攻擊用于防止受害者看到關閉的交易,直到爭議期結束,而攻擊者則將其非法收益提取到完全由其控制的地址。
這篇文章所描述的攻擊方式,可以在兩小時內從輕LN客戶端竊取用戶的資金。由于當前只有很少的服務器和節點可以向輕量級LN客戶端提供數據,因此,攻擊者可能很容易執行攻擊。而對于全節點支持的LN節點而言,攻擊需要花費更長的時間,并且可能需要創建更多的sybil。作者指出,這些攻擊還可能適用于其他對時間敏感的合約協議。而解決該問題的通用型方法,是提高主鏈對日蝕攻擊的抵抗能力,其中一個具體的改進是允許節點選擇使用其他傳輸協議。
論文地址:https://arxiv.org/abs/2006.01418
摘要文章:https://www.8btc.com/article/605757
三、比特幣軟件基礎設施更新
上周,最新版本的比特幣客戶端協議BitcoinCore0.20.0正式發布。此版本最顯著的改進包括:RPC用戶的默認bech32地址,為不同用戶和應用配置RPC權限的能力,在GUI中生成PSBT的一些基本支持,以及在輸出腳本描述符語言中添加了sortedmulti。為了消除錯誤、增強安全性并為將來的更改做準備,開發者還對代碼進行了很多不太明顯的改進。而一項備受矚目的前瞻性變化,是增加了一個asmap配置設置,該設置允許使用單獨下載的數據庫來提高BitcoinCore對Erebus攻擊的抵抗力。然而,正如發布聲明中所指出的,“目前這項更新是高度實驗性的,不清楚如何從中取得進展。收集和編譯ASN數據非常重要,并且這會帶來信任問題。”有關BitcoinCore0.20.0版本客戶端的更多信息,請參見發布說明。
LND0.10.1-beta是LND閃電網絡軟件的一個新的測試版。這一版本軟件并沒有添加新功能,而是修復了幾個漏洞。
除了這些之外,本周Eclair、LND以及BIP也發生了一些顯著變化:
引入Eclair#1440之后,可使用API一次更新多個通道。最初旨在通過批量更新通道的中繼費,來幫助節點運營商適應動態的鏈上收費市場,這一新增功能還可以實現批量關閉和強制關閉。
Eclair#1141增加了對option_static_remotekey通道的支持。在LN節點丟失數據的情況下,此功能允許通道交易方將當前余額支付給初始通道打開期間商定的未弱化密鑰,從而關閉通道,并允許節點的錢包正常支出其資金。有關此功能的更多詳細信息,請參見第67期周報。
LND#4251使其REST接口支持的非流式消息列表與gRPC接口的列表相等。以前,只有這些消息的一個子集可通過REST接口使用。該PR之后是LND#4141,它通過添加對WebSockets流響應的支持,使REST接口與gRPC接口完全對等。
BIP#920更新了taproot的BIP341規范,要求簽名直接提交所有花費UTXO的scriptPubKeys。這使得硬件錢包更容易且安全地參與coinjoin和其他協作生成的交易。有關詳細信息,請參見第97期周報。
特別感謝:
感謝PieterWuille幫助我們研究關于費用超付攻擊的歷史,也感謝AntoineRiard提供有關時間膨脹攻擊論文的更多信息。如果文章中有任何錯誤或遺漏,歡迎指正。
DeFi領域經過2019年的蓄力,2020年初步打開了局面,不管是借貸,還是DEX或衍生品領域,在鎖定資產量、借貸量、交易量、用戶量等方面都有了很大的提升.
1900/1/1 0:00:00本文來源:彩云區塊鏈 作者:ack123888比特幣挖礦難度在6月4日下降了9%以上,這使已經關機的礦工有機會再次參加挖礦競爭.
1900/1/1 0:00:00翻譯:PolkaWorld社區來源: PolkaWorld平行鏈是什么? 平行鏈是一種特定的應用程序數據結構,它是全局一致的,由Polkadot中繼鏈的驗證節點進行驗證.
1900/1/1 0:00:00撰文:LeftOfCenter 來源:鏈聞 Synthetix創始人KainWarwick最近發表一系列推文,闡述了加密貨幣市場從2017年以來發生的一系列動能趨勢和周期變化.
1900/1/1 0:00:00前言:以太坊的發展跟三年前相比已經有了天壤之別,之前以太坊上的主要用例是項目的代幣融資。而現在,以太坊上流通的ERC20代幣總價值已經接近于ETH.
1900/1/1 0:00:00硬件錢包提供商Ledger宣布整合DeversiFi。DeversiFi是一種去中心化交易所,旨在使交易者在快速發展的去中心化金融市場中占據優勢.
1900/1/1 0:00:00