閃電小費

2026年8月4日 星期二

硬體錢包隱私指南:如何避免將 xpub 洩露給第三方?

硬體錢包隱私指南:如何避免將 xpub 洩露給第三方?

使用硬體錢包(如 Trezor、Ledger)時,隱私洩露是絕大多數使用者最初會忽略、但後續極為重視的議題。這篇文章將剖析預設官方軟體的隱私風險,並深入比較解決此問題的兩大核心技術方案。

為什麼預設軟體會洩露隱私?

當你使用 Trezor SuiteLedger Live 時,為了顯示錢包餘額與交易紀錄,你的客戶端軟體必須向硬體廠商(或其合作方)的伺服器發送查詢請求:

  1. 導出 xpub(主公鑰): 軟體會將你的 xpub 上傳給伺服器。伺服器因此知道你該硬體錢包派生出的所有歷史與未來地址
  2. 身份綁定與鏈上追蹤: 廠商伺服器記錄了「xpub + IP 地址 + 訪問時間」。若你的 IP 或購買紀錄(如 Ledger 官網訂單流出)與 KYC 交易所關聯,你的真實身份、資產總額與所有交易行為將完全透明。
💡 核心概念: 為了避免將 xpub 暴露給第三方伺服器,解決思維只有一個 — 將「查詢與驗證」的節點收回自己掌控

思路一:Electrum 伺服器生態(EPS / electrs / ElectrumX)

這套架構的核心思想是:「將查詢伺服器架在自己的家裡」

1. 運作方式與組件差異

  • EPS (Electrum Personal Server): 專為單人/單家戶設計。它不需要為整條區塊鏈建立龐大的索引資料庫,而是向 Bitcoin Core 註冊「只追蹤你自己的 xpub/地址」。
  • electrs (Rust) / ElectrumX: 會為整條比特幣區塊鏈的所有交易建立完整索引。回應速度極快,且能支援多個錢包與多使用者連接。

2. 優缺點分析

優點

  • 可以使用極強大的第三方錢包 GUI: 你可以使用 Sparrow Wallet、Specter 或 Electrum。這些錢包提供豐富的功能(UTXO 標籤管理、Coin Control、進階多簽 Multisig、CoinJoin 等)。
  • 極佳的資源彈性 (EPS): EPS 資源消耗極低,甚至可以在樹莓派(Raspberry Pi)上配合修剪節點(Pruned Node)運作。
  • 完全的查詢隱私: 所有的 xpub 查詢都在你的區域網路內完成,零數據外洩給第三方。

缺點

  • 維護成本: 需要運行額外的軟體層(Node + Electrum Server + Wallet Client)。
  • EPS 的導入延遲: 如果你在 EPS 中新增一個全新 xpub,需要觸發 Bitcoin Core 進行區塊重掃(Rescan),過程可能耗時數小時。

思路二:Bitcoin Core + HWI (Hardware Wallet Interface)

這套架構的核心思想是:「摒棄中間伺服器,直接讓全節點與硬體簽名器對話」

[硬體錢包] <---> [HWI 橋接器] <---> [Bitcoin Core 錢包 (GUI / CLI)] │ (直接讀取本地區塊鏈)

1. 運作方式

  • HWI (Hardware Wallet Interface): 是一個由 Bitcoin Core 社群維護的 Python 命令行工具。它扮演「翻譯官」,將 Bitcoin Core 的 PSBT(部分簽名的比特幣交易)格式與各家硬體錢包(Trezor, Ledger, Coldcard, BitBox02 等)的 USB/HID 協定進行轉換。
  • Bitcoin Core: 直接將你的 xpub 匯入為 Descriptor Wallet(觀察錢包 Watch-only),並在本地掃描區塊鏈。

2. 優缺點分析

優點

  • 架構最精簡、信任鏈最短: 完全消除 Electrum 協定中間層,直接使用比特幣的參考實作(Reference Implementation)驗證與發送交易。
  • 無需額外索引資料庫: 不需要運作 electrs 或 ElectrumX 所需額外的硬碟空間(完整索引通常額外需要 50GB~100GB+ SSD 空間)。
  • 極致的共識安全性: 你的交易驗證 100% 依賴你自己的 Core 節點規則。

缺點

  • UI 與互動體驗較為原始: Bitcoin Core GUI 的介面功能較基礎,缺乏高級的 UTXO 分析工具或直觀的多簽流程。
  • 本地明文資料風險: Bitcoin Core 的觀察錢包(Watch-only wallet)預設會在本地磁碟上記錄你的 xpub 與交易歷史,且無法設定密碼加密(只有私鑰能加密,但 Watch-only 沒有私鑰)。若電腦實體遭入侵,資產隱私可能曝光。

兩者綜合對比

比較項目 思路一:Electrum 伺服器 (EPS / electrs) 思路二:Bitcoin Core + HWI
網路隱私 100% 本地查詢,無數據外洩 100% 本地查詢,無數據外洩
介面體驗 (UI/UX) 極佳 (可搭配 Sparrow / Electrum,支援進階 UTXO 管理) 普通 (僅 Bitcoin Core 原生 GUI)
硬碟空間需求 EPS: 低 / electrs: 需額外 50~100GB+ 索引 (僅需 Core 本身空間)
系統複雜度 較高 (需維護 Node + Server + Client 三層) 較低 (僅需 Core + HWI 驅動)
多簽與進階功能 非常完善,操作簡單 可行,但需依賴 CLI 或複雜設定

💡 總結與建議

  • 若追求「最佳使用體驗與進階功能」:
    推薦使用 Bitcoin Core + electrs (或 EPS) + Sparrow Wallet 的組合。這是目前極客與極致隱私玩家最推崇的黃金組合,兼具強大的圖形化管理工具與完美的網路隱私。
  • 若追求「極簡架構、不想多開軟體」:
    選擇 Bitcoin Core + HWI,用最純粹的方式直接驗證與簽署交易。

2026年8月3日 星期一

SLP97 — 每款比特幣硬體錢包都很爛 (Every Bitcoin Hardware Wallet Sucks)

SLP97 — 每款比特幣硬體錢包都很爛 (Every Bitcoin Hardware Wallet Sucks)

來賓 (Guest): Michael Flaxman

日期 (Date): 2019-08-08

時長 (Duration): 01:53:09


[00:00] STEPHAN: Michael,歡迎來到節目。

[00:04] MICHAEL: 嗨。很高興來到這裡。謝謝你邀請我。

[00:09] STEPHAN: Michael,覺得你是那些真正被低估或關注度不夠的大神之一。許多資深的比特幣玩家(Hardcore Bitcoiners)都認識你,但還有很多人不了解你。你要不要向大家自我介紹一下?

[00:26] MICHAEL: 沒問題。我平時比較低調,這對我來說挺好的,所以我暫時沒打算改變。簡單介紹一下背景,我曾創辦過三家獲得風險投資的公司。最著名的是我的第一家公司 thumbtack.com,上週它剛登上新聞,因為它的估值達到了 17 億美元,這真的很棒。我的下一家公司是 Y Combinator 孵化的,雖然沒有第一家那麼成功,但依然在營運。到了 2013 年,我迷上了比特幣,並開了一家比特幣公司,不過很快就倒閉了。現在回想起來,在我掌握了所有比特幣知識後,覺得當時挺尷尬的。當你對新事物感到興奮時,就會想做點什麼。那時我們以為「冷儲存即服務(Cold storage as a service)」是個絕妙的主意。但現在我要告訴大家,為什麼你們應該自己保管比特幣。我從 2013 年開始開發比特幣應用程式,曾是 pycoin 的次要貢獻者。2015 年,我寫了 BlockCypher 的區塊瀏覽器,我不確定現在還有沒有在維護,但我知道現在還是有人用它來查東西。我應該去查看一下流量數據,因為我應該還有 Google Analytics 的權限。上次看的時候,每月的頁面瀏覽量達到八位數(數千萬),這太狂了。不過我已經很多年沒有參與這個專案了。2016 年,我寫了他們的命令列錢包(command line wallet),這些年我也寫過不少比特幣錢包。BlockCypher 的命令列錢包純粹是寫好看的,不建議用來放真正的資產,不過它支援測試網(testnet),所以我推薦可以用來當測試網錢包。它最大的特點是程式碼行數是所有比特幣錢包中最少的。在當時它還實現了一些很酷的高級功能,在 2016 年就能做手續費偏好設定(fee preference)真的很前衛。

[02:42] STEPHAN: 那絕對是超前時代了。

[02:46] MICHAEL: 你能從中真正看到比特幣是如何運作的。現在資源豐富多了,你可以去上 Jimmy Song 的 Programming Blockchain 課程,或者 Justin Moon 的 Buidl Bootcamp。有非常多的資源教你怎麼做。但在以前,你只能去讀比特幣 Core 的程式碼(那非常難懂且冗長),或者在網路上漫無目的地摸索。所以能有資源教你如何生成比特幣地址、如何給交易簽名,這些真的很酷。

[03:23] STEPHAN: 太棒了。我知道你最近也在 Jimmy 的 Programming Bitcoin 課程擔任助教,提供技術審查和反饋。

[03:34] MICHAEL: 對,我在 Jimmy 還沒成為加密貨幣大師(如果可以用這個詞的話)之前就認識他了。2013 年我們都是 Richard Kiss 的 pycoin(Python 比特幣庫)的次要貢獻者。2014 年 2 月我們在德州比特幣大會上見面,這挺奇妙的。後來我們還一起在 Paxos 工作過。他寫的程式碼真的很優秀,作為軟體工程師,跟他合作非常愉快,他非常有天賦。有時候覺得他現在不怎麼寫程式了還挺可惜的。也不能說完全不寫,他還在教學,也會寫一些其他的東西,但他真的很有天分。看到我和他現在都沒有全職寫程式,其實有點小感傷。總之這就是我認識 Jimmy 的經過,我讀過他的第一篇部落格文章,之後的每一篇幾乎都看過。看到他現在擁有 10 萬(甚至更多)的 Twitter 追蹤者、經營 YouTube 頻道、世界各地巡迴教學比特幣,覺得太棒了。我幫他當過幾堂課的助教,但這從來不是我的事業,我是免費幫忙的。我的原則就是商務艙機票加肋眼牛排大餐,這樣我就很樂意去其他城市見見比特幣社群的人,這很有趣。我同時也是他出版的 O'Reilly 書籍的技術審稿人。

保護比特幣安全的難點 (Difficulty of securing Bitcoin)

[05:10] STEPHAN: 太棒了。那我們來進入今天的正題:硬體錢包,以及為什麼很多硬體錢包其實並不安全。當然我們後面會聊到一些緩解措施,但首先讓我們聊聊其中涉及的一些困難點。為什麼保護比特幣安全會這麼難?

[05:31] MICHAEL: 在我們開始這一集全力痛批硬體錢包之前——雖然我立場堅定地支持這個觀點,但對於大多數人來說,硬體錢包依然是最好的選擇。如果你擁有比特幣,我強烈建議你自己掌握私鑰;除非你是專家,否則你應該使用硬體錢包。如果你是專家,你應該用開源軟體和自己採購的設備來組裝你自己的硬體錢包,但那已經超出我們今天的討論範圍了。對大多數人來說,就易用性、安全性和合理價格而言,硬體錢包仍是首選。我們談論的是 100 美元左右的設備,但它們依然非常難搞。我不想把大家嚇得去使用更不安全的方案,但你必須睜大眼睛清楚知道:比特幣世界裡沒有救濟機制。沒有撤銷按鈕。如果你搞砸了,你的錢就沒了。這真的很殘忍。許多入行很久、經驗豐富的比特幣老手,都有過自己的血淚史,比如「幾年前我弄丟了……」數字可能是 0.1 個比特幣,但有很多人跑來跟我說他們丟了 100 個比特幣,我只能心疼地說:「糟糕,這太慘了。」 請善用測試網(testnet),所有操作先在測試網上做一遍。多試幾次,重置你的設備,嘗試恢復。測試網是非常棒的資源,因為它的運作機制一模一樣,只是上面的代幣一文不值,所以你可以盡情練習。請先使用硬體錢包在測試網上操作。

話說回來,你剛才的問題是:為什麼即使使用硬體錢包,儲存比特幣依然這麼難?歸根結底,你得思考搞砸這件事的機率有多大?機率其實非常低。如果只是使用普通硬體錢包,不需要任何特別技能,只要保持警惕和謹慎來發送交易,我猜失誤丟錢的機率大概在 0.01% 到 0.1% 之間。這數字非常低。如果我告訴你,你點擊 Facebook 的讚按鈕,只有 0.01% 或 0.1% 的失敗率,你根本不會去想:「我用的是什麼瀏覽器?我有驗證軟體嗎?我點按的方式對嗎?我要按住多久?」你只會直接按下去,因為那無傷大雅。而且如果讚沒點成功,你也不會在意。

但是,如果你正在轉移一筆對你極其重要的資金,也許你要離開家鄉,這是你一生的積蓄,卻發現有 0.01% 的機率會失去所有財產,這絕對是無法接受的。這把我們帶到了一個奇怪的境地:如果你跟我說,只要多付 0.01% 的交易手續費,就能保證絕對不會出事(這只是假設,現實中沒有絕對的保證)。如果真有這種保證,我大概會說:「沒問題,這筆手續費我付定了。」 如果能拿到這個保證,就算直接損失 0.01% 我也願意。但不幸的是,如果你正好碰上了那 0.01% 的不幸事件,那就是 100% 的打擊。這就是為什麼這件事如此令人恐懼。

如果你曾經做過大額電匯,比如買房,你可能會打電話給產權公司確認:「嘿,這是電匯資訊,我收到這個人的郵件,以為他是產權專員,但我還是打總機確認一下這是不是家真實公司。」 就算電匯根據不同情況可能還有挽回的餘地,你都會有那種時刻。而在比特幣的世界裡,你同樣有這種恐懼,而且它是專為儲存巨額價值而設計的,所以這種恐懼會放大。每個人在打開冷儲存進行交易簽名時,都會經歷那種極度恐懼的時刻。如果沒有,那他們可能太魯莽了。很多人當初沒有領取 Bcash 或其他分叉幣的空投,就是因為覺得「為了那 10% 的收益,我才不敢動我的冷儲存」。無論當時分叉幣價值多少,對某些人來說,承擔風險根本不值得。這真的很難。

回到你的問題,關於你必須做對的事情:這段程式碼是否如我所想地在運作?以及,我執行的到底是不是我想執行的程式碼?這兩件事都極難驗證。歷史上有太多著名的駭客攻擊和 Bug 案例,多到指不勝指。許多演講都列舉過這些例子。重點是,你必須保持謹慎和偏執,因為這真的很難。

2013 年 SecureRandom 的 Bug (SecureRandom bug in 2013)

[11:14] MICHAEL: 我最喜歡的一個例子是,2013 年 Android 在 Java 的 SecureRandom 實現中出現了一個 Bug。顧名思義,SecureRandom 是一個用於安全獲取隨機位元資料的函數。在比特幣簽名中,你需要一個隨機組件,這是 ECDSA 簽名證明的一部分。如果那個數值是隨機的,你就永遠不需要再去理會它。你可以把它想像成一個 Nonce(只使用一次的隨機數),它只是用來證明你擁有該私鑰。但如果那個 SecureRandom 資料實際上「不隨機」,那麼其他人就能瞬間推導出你的私鑰。從任何角度來看,這都不是什麼高難度的攻擊。網路上有很多開源程式碼,只要看到你的簽名就能做到。只要他們看到交易簽名被廣播,就能立刻知道你的私鑰,這太可怕了。2013 年,許多使用 Android 錢包的人因此損失了資金。這種事情是任何人都不可能提前預防的。開發者使用了名為 SecureRandom 的官方隨機數庫,他們做了正確的事。然後突如其來地,你的錢就沒了。這就是典型的例子。雖然他們在 2013 年後修復了這個漏洞,但這反映了問題所在。

2015 年 BitGo 恢復腳本的 Bug (BitGo recovery script bug in 2015)

[12:48] MICHAEL: 還有 BitGo,這是一家聲譽非常好的公司,我並不是要針對他們說壞話。他們提供了一個恢復腳本,以便在他們倒閉時讓用戶能夠提取資金,這本來是非常好的舉措。腳本是開源的,他們雇用了非常聰明的軟體工程師,公司成立很久,程式碼也公開了很久。結果有人執行了那個腳本,直接丟失了 85 個比特幣。那是 2015 年 4 月的事。值得表揚的是,BitGo 承擔了責任,自己掏腰包補償了那個人的損失。但想想看,前一秒你還在執行程式碼想著:「好,我要把錢發出去」,下一秒你卻驚呼:「我的 85 個比特幣去哪了?」,這真的太痛了。你永遠不該經歷這種時刻。飛機起降時,我們不會說:「墜機機率只有 0.1%,你大概會沒事的。」 我們有各種冗餘機制和檢查清單。這完全是兩碼事。雖然比特幣領域還沒達到那種嚴謹度(目前還是快速迭代、允許出錯的階段),但它運作得越來越好,每年都在進步。

2018 年 Electrum 的漏洞 (Electrum bug in 2018)

[14:14] STEPHAN: 有些例子是無心之過,但有些則完全是出於惡意,有駭客試圖通過各種方式入侵,誘騙你執行可能含有惡意軟體的程式碼。

[14:29] MICHAEL: 沒錯。比如 2018 年 12 月在 Electrum 上發生的事件。Electrum 是一款優秀的軟體,我很推薦它,我不是說它不好。但有人發現了一個機制,如果你運行一個 Electrum 伺服器(補充一下,我們不知道是誰在運行這些伺服器,可能很大一部分是 Chainalysis 運行的,大家最好假設連接 Electrum 伺服器時就是在連接政府的地址資料庫)。如果你使用 Electrum,強烈建議運行自己的 Electrum 伺服器,雖然這很麻煩。總之,當你連接到伺服器時,伺服器可以向你發送任何訊息。當時有惡意伺服器發送了極具欺騙性的訊息:「嗨,你的 Electrum 版本過舊,請點擊此處更新。」 而你下載的所謂更新版本,其實是偷錢的惡意 Electrum 軟體。這個漏洞直到今天仍在以一種奇怪的方式影響著 Electrum。現在,新版的 Electrum 伺服器無法再發送那種惡意訊息了。而且為了強制用戶升級,Electrum 伺服器會拒絕連接舊版的 Electrum 客戶端,所以你必須升級你的 Electrum 客戶端,否則你只能連上那些惡意伺服器。

安全地安裝比特幣軟體 (Securely installing Bitcoin software)

參考資料: Luke Dashjr 關於如何安全安裝 Bitcoin Core 的文章: https://medium.com/@lukedashjr/how-to-securely-install-bitcoin-9bfeca7d3b2a

[16:06] STEPHAN: 我的聽眾水平各异,有初學者,也有中高級玩家。但在那個例子中,理論上大家在下載新軟體時,應該要進行 GPG 簽名驗證,對吧?大家應該驗證發行的軟體是否由已知開發者(例如 Thomas Voegtlin)的私鑰簽名。理論上,人們應該檢查更新簽名是否匹配,但實際上沒多少人會這麼做。

[16:38] MICHAEL: 沒錯。這就是私鑰管理變得極其困難的地方。對於每一件事,你可能會想:「算了,應該沒事吧,我是在 Electrum 官網下載的。」 但你真的能確定嗎?那是真正的 Electrum 官網,還是山寨網站?當時有 SSL 證書嗎?如果沒有,是不是有中間人攻擊(Man-in-the-middle)向你提供了一個惡意複製版的 Electrum 客戶端?這些都不是遙不可及的科幻攻擊。駭客有極強的經濟動機去做這件事。如果你是一個有天賦的駭客,又不是幫公司做防禦的白帽駭客,你想做黑帽駭客去偷錢,那加密貨幣絕對是最佳目標。

以前如果入侵了別人的電腦,你頂多只能給他們的朋友發垃圾郵件說:「嘿,快來買這個勞力士。」 幾乎沒人會上當,因為太明顯是垃圾郵件了。就算他們發送了幾十億封郵件,絕大多數都會被垃圾郵件過濾器攔截;剩下的一小部分人中,只有極少數會用 iTunes 禮品卡去買假勞力士。那種將惡意軟體變現的方式太艱難了。但現在,聰明的駭客會直接盯上人們的比特幣軟體。攻擊手段太多了。我可以給某人提供一個惡意比特幣錢包,讓他們完全受我控制。或者做一些更隱蔽的手腳,比如竄改顯示介面,讓用戶以為那是自己的接收地址,但實際上是攻擊者的地址。這是非常常見的攻擊。或者干擾他們的隨機數來源。雖然用戶還是在運行軟體,但沒有獲得正確的隨機性。

每一步你都必須極其小心。你絕對應該驗證所運行軟體的簽名,但這恰恰說明了這有多難。你只能提高系統安全的「機率」,永遠無法達到 100%。但當你進行比特幣交易時,往往是因為你依賴它來儲存資產,你極度渴望 100% 的安全性。

我們接下來要聊的就是「多重簽名(Multisig)」。多重簽的好處在於,如果你使用兩個不同的硬體錢包或兩種不同的設定,並且需要兩個簽名(具體門檻可以自訂,例如 3-of-5、4-of-5、2-of-3)。只要你使用超過一個簽名,攻擊者就必須同時破解這多個配置中的漏洞。你可以把一個成功率 99.9% 或 99.99% 的方案(比如 Trezor),結合另一個方案(比如 Coldcard)。多重簽名會產生疊加效應,現在駭客必須同時攻破這兩套系統。這不僅僅是難度翻倍,而是呈指數級增加。這就是我們待會要討論的——多重簽名的強大力量。

在硬體錢包上核對比特幣地址 (Checking Bitcoin addresses on the hardware wallet)

[20:27] STEPHAN: 讓我們梳理一下駭客試圖入侵的幾種常見方式。另一個例子可能是,惡意軟體讓你複製了錯誤的地址,並貼上了駭客自己的接收地址。這應該也是個典型案例。

[20:45] MICHAEL: 這個非常常見。對此,有一點非常重要:你必須永遠在最安全的地方——也就是你的硬體錢包上——核對地址。最簡單的攻擊就是誘騙你在電腦上複製貼上錯誤地址,然後直接在硬體錢包上按發送。但實際上,硬體錢包螢幕上記錄的才是你必須確認的。你應該打電話給對方,或者通過安全的管道溝通:「嘿,我要轉帳給你了。我在硬體錢包螢幕上看到的地址是這個,這是你的地址嗎?」

高明的攻擊者很聰明。他們會生成開頭幾位和結尾幾位完全相同的地址,因為人類很懶惰,習慣依賴直覺捷徑。沒人想去核對整串比特幣地址。大家往往覺得:「嗯,前 5 個字元一樣,後 5 個字元也一樣,那就是它了。」

[21:56] STEPHAN: 生成這種客製化地址(Vanity address)在計算上有多難?比如 Andreas 名下有個「1andreas」開頭的地址。生成包含特定字元的地址難度更高。如果駭客試圖利用這種心理捷徑,讓前幾位和後幾位字元匹配,你能告訴我們這對駭客來說難度增加了多少嗎?

[22:29] MICHAEL: 比特幣地址生成的底層邏輯是,背後有一個隱藏的指數(私鑰),這是一個介於 1 到 2^256 之間的龐大數字。這個數字大到難以想像,比宇宙中的原子總數還要多。如果有人能猜中這個數字,就能偷走你的比特幣,但因為數字太大了,就算算到宇宙毀滅也猜不到其中一小部分。這擁有極高的熵(Entropy)。你從私鑰開始,進行一連串操作,包括用 SHA-256 哈希兩次,用 RIPEMD-160 哈希一次。如果是早期的非原生 SegWit 地址,還會進行 Base58 編碼,加上校驗碼(Checksum),最後輸出一個看起來完全隨機的地址。

如果有人想生成像 Andreas 那樣的客製化地址,他們只需要進行海量的試錯組合。這在概念上非常類似工作量證明(Proof of Work),即嘗試大量組合,看看哪個區塊哈希開頭有一堆零。區塊哈希開頭總是有很多零,因為那是以十六進制表示的大數,前面的零就是達到比特幣難度門檻的算力證明。

客製化地址也是類似的概念,只是你不是在湊難度數值,而是在湊「能否拿到包含這幾個指定前綴或後綴的地址」。難度是字元數量的函數。每增加一個字元,難度就會呈指數級上升。這就是為什麼我們能看到「1andreas」,但看不到「1andreasantonopoulos」。我不敢說絕對不可能,因為這需要精確計算,但憑直覺來說,要湊出那麼長的指定字元幾乎是不可能的。通常我們看到的客製化地址最多大概到 9 個字元左右,再多增加一個字元成本都極其昂貴。雖然你可以把核對門檻設高一點,但最安全的還是把「整個地址」完整讀一遍。人眼容易出錯,可能會漏掉某些字元。如果攻擊者很聰明,給你的地址前 4 個字元有 3 個正確,後 4 個字元也有 3 個正確,你大概率就會上當。這真的很難防。

[25:30] STEPHAN: 這太硬核了。謝謝你的解答,因為這確實是很多人常用的簡化核對方式。

[25:39] MICHAEL: 你永遠應該假設攻擊者比你更聰明,擁有比你更多的硬體設備,因為你不是他們唯一的目標。他們是在撒網攻擊所有人。他們可能用 GPU 在批量生成客製化地址,當你看著地址想:「哇,這 8 個字元都對上了,不可能這麼巧吧」,但這可能恰恰是他們最擅長的事——利用龐大的財務誘因去湊齊這 8 個字元。

供應鏈風險 (Supply chain risk)

[26:13] STEPHAN: 這太可怕了。那供應鏈風險呢?這也是大家經常討論的一個大因素。

[26:21] MICHAEL: 供應鏈風險絕對令人毛骨悚然,因為它完全超出你的控制範圍。你可以採取一些措施來將風險降到最低。比如你說:「我只在硬體錢包公司親自出席的活動上直接向他們購買。」從該公司的員工手中接過設備,勝算肯定比在 eBay 上買二手貨要高得多(絕對不要買二手的)。這是降低風險的一種方式,但你無法得知上游供應鏈的風險。他們不是在自家地下室手工製造的,而是外包給第三方,使用現成的商業元件。上游留下了太多製造漏洞的空間。

最可怕的情境是:假設存在一個漏洞(我不是說現在一定有,但我們應該假設所有東西都已被破解),作為攻擊者,你在經濟上有強烈的動機去「等待」。讓大量的資金注入到你知道私鑰的硬體錢包 A、B 或 C 中。等到總金額積累得足夠大,比如超過 1 億美元時,就是實施「退休式攻擊」的時候了。你同時洗劫所有資金然後人間蒸發。沒有人能查出是誰幹的。晶片製造商會推卸給軟體,軟體開發商會推卸給韌體。大家互相甩鍋,真相永遠成謎。整個信任體系都會崩潰。

外面的世界很危險。我做盡了各種錫箔帽級別(極度偏執)的防護,但我依然假設自己所做的一切並非 100% 安全。我認為真正改變整個安全方程式本質的,是多重簽名。

硬體錢包支援多重簽名的好處 (Benefits of multisignature support on hardware wallets)

[28:24] STEPHAN: 一個優秀的硬體錢包應該是什麼樣子?覺得最好的切入點就是「多重簽名支援」。多重簽名究竟是如何提供幫助的?

[28:33] MICHAEL: 多重簽名剛出現時,很多應用場景集中在保護企業內部的私鑰資產和營運流程上。這意味著你可以把一把鑰匙放在家裡,一把放在辦公室,一把埋在你最喜歡地方的藏寶圖裡。如果你需要三把鑰匙中的兩把才能動用資金,那麼即使有人闖入你的家、你的辦公室,或者找到了你埋藏的寶藏,他們也拿不到你的比特幣。這是一個使用場景。

另一個場景是公司營運:假設你們公司有三個人,採用 2-of-3 模式,需要三個人中的兩個人授權才能動用資金。或者你可以透過像 BitGo 這樣的託管服務進行跨機構合作,設定 2-of-3,其中一把鑰匙由 BitGo 掌握……或者舉個更好的例子:Unchained Capital(如果我沒記錯的話,他們好像是你們讚助商)。

[29:43] STEPHAN: 對,沒錯。

[29:47] MICHAEL: 他們總部就在奧斯汀。假設 Unchained 掌握一把鑰匙,你掌握一把,另一個託管商掌握一把。在 2-of-3 的架構下,必須有兩個實體同時被駭才會出事。這確實是事實,多重簽名能為此提供保障。

但我對多重簽名真正感到興奮的是:你可以擁有**獨立的硬體和軟體技術棧**。這些簽名可以來自放在你桌上的兩個硬體錢包。但如果一個是 Trezor,另一個是 Coldcard,攻擊者現在必須同時破解這兩家公司的供應鏈。攻擊者必須同時攻破這兩家公司的軟體實現。既然這些設備存在的意義就是「不信任主機電腦」,它們就應該自己驗證一切。這對你的安全性大有裨益。

使用硬體錢包時,這是一個非常重要的思考點:我們之所以使用硬體錢包,是因為我們**預設主機電腦已經感染了惡意軟體**。這才是我們買硬體錢包的原因。如果我們認為桌上型電腦絕對安全,我們根本不需要硬體錢包。硬體錢包提供了那一層額外的防禦。抱歉,我好像有點偏離你的問題了。

[31:10] STEPHAN: 沒關係,講得很好。你剛才提到的另一個重點是「你必須把所有事情都做對」。如果只用單一硬體錢包,你必須保證每個環節都萬無一失才能獲得安全性。你能詳細聊聊多重簽名在這方面是如何提供幫助的嗎?舉例來說,假設你同時使用 Trezor 和 Coldcard,而在公司不知情的情況下,其中一個團隊的軟體或底層程式碼出現了漏洞,在 2-of-3 的機制下,用戶為什麼依然是安全的?

[31:52] MICHAEL: 這通常被稱為 $m$-of-$n$ 門檻機制。在總共 $n$ 個可能的簽名中,你需要 $m$ 個簽名。這是可以由用戶自由配置的。你可以選擇 2-of-3,這是市面上最常見的組合。你會說:「好,我有這三個硬體設備(比如一個 Trezor、一個 Coldcard 和一個 Cryptosteel 備份),我需要三者中的兩個來簽名。」嚴格來說,不是設備本身簽名,而是這些設備所持有的公鑰進行簽名。你擁有這三個設備,需要其中 2-of-3 進行簽名。

即使其中一個設備被**徹底破解**——不是那種只在極端情況下出錯的輕微漏洞,而是直接把你的私鑰發回駭客的伺服器,讓他們可以為所欲為;甚至遠端更新了設備,讓駭客能直接控制它。這是擺在你桌上的一塊完全被控制的硬體,最壞最壞的情況。但因為你的門檻是需要 2-of-3 簽名,單靠這一個設備對駭客來說根本毫無用處。他們必須同時攻破第二個設備。

發生第一種極端情況的機率已經很低了;要同時發生第二種,更是難上加難。你不太可能成為那種專門的個人目標。駭客並非精心策劃了一套不可思議的方案專門來破譯你的比特幣積蓄。他們是在對大眾進行無差別攻擊,因為最好的攻擊是那種可以在異國遠端實施、完全不需要物理接觸的攻擊。

如果有人闖入你家,因為他們拿到了一把鑰匙,還需要第二把,這對他們來說風險太高了。雖然仍有可能(所以你不該告訴別人你的比特幣放在哪,可能還需要裝警報器或準備槍支)。但這與有人說「嘿,我可以在這裡植入惡意軟體直接偷走幾千萬美元」完全是不同層級的攻擊。對於缺乏實體入侵能力或不想冒險實體作案的駭客來說,網路攻擊太有誘惑力了。這是完全不同的風險型態。

[34:31] STEPHAN: 另一個要素是,不同的硬體錢包之間是否存在某些共同的軟體底層?據你的經驗,它們大部分是獨立隔離的,還是有共同風險?

[34:43] MICHAEL: 這點其實挺嚇人的,因為代碼複製貼上的現象非常嚴重。密碼學真的很難。如果在你使用的程式語言中有一個現成的庫,你很可能會大量借用它。不幸的是,幾乎所有的硬體錢包都是用 Python 和 MicroPython 寫成的。這並不理想,但我認為這是次要問題。

同樣地,你可以追求極致安全的系統,用三種不同的語言編寫。我生成的每一個接收地址,都會用兩種不同的程式語言進行驗證。我只是不想對自己是否擁有該地址的私鑰產生任何懷疑。但這種做法可能很不主流。我希望有一天能有足夠多的硬體錢包,你可以直接選擇「嘿,我要一個用兩種不同語言開發的組合」,並且依然有五種優質產品可選。但很遺憾,我們現在還沒生活在那樣的世界裡。

[35:48] STEPHAN: 關於軟體和硬體之間的互動,據我了解,很可能軟體層面沒問題,但硬體層面出了差錯。硬體並沒有執行你以為它在做的事。你以為自己在軟體層很安全,但實際上在硬體層就被攻破了。也有這種情境對吧?

[36:20] MICHAEL: 對,這是非常棘手的問題之一。如果軟體編寫具備防禦性,那麼每個模組都不會盲目信任其他模組。例如,早期我們習慣直接信任 `/dev/random`(電腦上的隨機數源)來獲取隨機性。這本該是 SecureRandom 在做的事。後來我們學到,可以在簽名中使用決定性的 $k$ 值(Deterministic $k$-values),它們看起來是隨機的,但並不依賴隨機數生成器。例如在簽名時,你可以編寫軟體來規避硬體隨機數生成器劣質的風險。

在簽名時是這樣。但在生成私鑰時,你必須有隨機性來源。現在有些硬體錢包具備很酷的功能,允許你自己輸入隨機性,因為隨機性具有疊加性。你可以對位元進行 XOR(異或)操作,將自訂隨機性疊加到隨機數生成器上,這百利而無一害。

在我那個很短的 bcwallet(BlockCypher 命令列錢包,再強調一次不建議實際資金使用,僅供學習)中,我會要求用戶在鍵盤上亂敲。因為我假設電腦的隨機數生成器已被破解,所以讓用戶敲擊鍵盤提供額外的熵。我把用戶提供的隨機性與硬體隨機性結合起來,這樣即使硬體糟糕,軟體也能進行彌補。

理論上可以採用很多聰明的技巧。另一個常見的做法(據我所知 Coldcard 支援)是擲骰子。你甚至可以確定性地做這件事,雖然你需要擲很多次骰子,這很累也很麻煩。但如果你要接收大量比特幣,花幾塊錢買幾個骰子坐在那裡擲,這是另一個聰明的作法。

硬體與軟體互動的方式多不勝數。甚至硬體內部的硬體之間也是如此,硬體錢包裡可能有一個微控制器(MCU)和一個安全晶片(Secure Element)。如果你的 MCU 可以直接指揮安全晶片做事,那麼安全晶片其實沒有提供任何額外安全性,因為不安全的微控制器可以控制它。這就像一個無底洞,越挖越深。

再次強調,解決方案就是**來自兩個不同設備的兩個簽名**。為了說明這種疊加好處:假設我持有巨額比特幣,但我不想處理多重簽名的複雜性(不想多保管一份備份、不想記住它、不想交代家人如果我出事該去哪裡找),我只是想確保軟體正常運作,那我會選擇 2-of-2 模式。

對於第二個簽名,我可以使用一個並不怎麼安全的金鑰。我可以把它放在桌上,貼個大標籤寫著「2-of-2 密鑰在此」。它可以是一個沒有密碼(Passphrase)的助記詞。甚至可以是短長度的助記詞(不過最好還是用完整的 24 字)。我可以複製很多份,家裡放一份、公司放一份、家人那放一份、保險箱放一份,因為這只是 2-of-2 中的其中一把鑰匙。除了我的第一把核心簽名外,我用這把鑰匙來做第二個簽名。

儘管大家會說:「嘿,這太不安全了,明文放在桌上,完全沒好好保管」,但**在 2-of-2 中增加第二個不安全的簽名,比單簽名 1-of-1 更加安全**。如果你把你誓死守護的 1-of-1 設定,加上第二個看起來不安全的簽名,你反而提升了整體安全性,這是一個非常違背直覺的事情。想著「我要做一個很不安全的行為,結果卻增加了安全性」。我不是鼓勵大家不重視安全,但如果你對多重簽名猶豫不決,哪怕增加一個看似不嚴謹的多重簽名,你的狀況都會變好,因為攻擊者現在必須同時攻破兩個獨立的系統。

物理隔離 / 空氣隔離 (Air gaps)

[41:24] STEPHAN: 另一個話題是空氣隔離(Air gapping)。實現這一點有不同的方法。我知道 Coldcard 提供了 MicroSD 卡的選項,基本上可以用它在連線電腦和硬體設備之間傳輸未簽名或已簽名的交易。你能聊聊空氣隔離的概念嗎?為什麼它很重要?它有什麼幫助?

[41:52] MICHAEL: 當設備連接到網際網路時,我們稱之為「熱機器(Hot machine)」。當斷開網路連線時,我們稱之為「冷機器(Cold machine)」。你的筆記型電腦可能介於兩者之間,因為它大部分時間連網,但很容易拔掉網線。

熱機器非常危險,因為它的軟體可能會自動接收更新。假設攻擊者攻破了該服務的某個分發系統。想像一下,硬體錢包或軟體錢包公司的離職員工攻破了他們的 GitHub 帳號或發布管道,發布了受污染的軟體(這是完全做得到的)。然後他們可以推卸說:「天啊,是第三方幹的,跟我沒關係。」 如果他們做到這一點,而你的電腦正好連著網,自動下載並安裝了更新,你基本上什麼都沒做就被攻破了。

空氣隔離是第一道也是最重要的一道防線。你必須使用良好的空氣隔離,因為如果你的電腦是永久隔離的(從不連網、放在家裡、只安裝過一次軟體)。在那唯一一次安裝時,你用最好的方式(例如 PGP 簽名驗證,或者先在乾淨機器上下載)進行了驗證,那麼未來他們的軟體供應鏈發生什麼事都不重要了,因為你的機器壓根沒連網。空氣隔離非常強大。

核反應爐採用空氣隔離是有原因的。他們不希望有人點擊郵件附件安裝了病毒從而干擾核反應爐。大家都喜歡這種系統,但即使是空氣隔離也有漏洞。最著名的攻擊是 2010 年美軍發動的 Stuxnet(震網病毒),用來癱瘓伊朗的核反應爐。這簡直就像詹姆斯龐德電影裡的情節。他們把惡意軟體裝進數百萬個 USB 隨身碟裡,連接到普通電腦時什麼都不做,所以沒人注意到;但當它連接到特定系統(已知運行該核設施硬體和軟體的電腦)時,就會釋放惡意軟體。這據信讓伊朗的核計畫大幅倒退。成功了,他們用 USB 隨身碟跨越了空氣隔離。

如果這種技術已經存在,政府能做到,那麼個人攻擊者也能製造出能跨越空氣隔離的 USB 隨身碟。Coldcard 的 SD 卡空氣隔離是目前市面上能買到最好的現成空氣隔離產品。我玩過一些即將上市的新硬體錢包原型,他們使用 QR Code 進行空氣隔離,我迫不及待想等這些公司推出了,因為太棒了(譯注:2026年有提供QR Code 進行空氣隔離的硬體錢包已經非常多)。目前如果你想要適當的 QR Code 空氣隔離,幾乎只能用 Electrum 或者自己組裝。那不是很理想,你得把筆電倒過來去掃另一台筆電上的 QR Code。介面不夠友善,但 QR Code 極難被遠端用溢位漏洞攻擊;相比之下,SD 卡雖然機率極低,但理論上仍有可能。

最糟的就是直接把硬體錢包插進熱機器裡。再次強調,我們預設熱機器已被惡意軟體感染。這正是我們使用硬體錢包的原因。我們不是為了它好看的螢幕、按鍵或慢吞吞的處理器而用它,我們用它是因為它是隔離的,結果我們卻把它直接插進被感染的機器裡。目前的常見做法並不理想。QR Code 很棒,SD 卡也不錯。

如果這是你唯一的簽名來源,我會非常不安。但如果你有多重簽名,其中一個採用這種方式,我可以理解其價值。進行空氣隔離時要記住一點:你可以把主機電腦當作「完全被惡意軟體感染」來處理。這沒關係,因為空氣隔離設計初衷就是安全隔離。如果你透過 QR Code 將資料從受感染的機器傳輸到隔離的硬體錢包,其實沒有太大危險。它無法對你的離線機器做什麼。

當然你不該留著一台有惡意軟體的電腦,但我們可能多少都有。因此,如果你能把安全防護集中在空氣隔離的私鑰管理方案上(無論是硬體錢包還是自建方案),把所有防禦精力放在那裡,其餘部分就可以相對隨意一點。這是很好的「易用性與安全性」的權衡。你要集中精力保護最安全的核心,不需要太糾結熱機器或是否點錯了郵件連結(當然最好別點,但萬一點了,你的私鑰依然離線)。

PSBT 部分簽名比特幣交易 (PSBT BIP 174)

參考資料: BIP 174 規範: https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki

[48:17] STEPHAN: 聊到這個話題,我們必須提到 PSBT(Partially Signed Bitcoin Transactions,部分簽名比特幣交易)。Michael,能告訴我們為什麼這很關鍵,PSBT 對我們有什麼幫助嗎?

[48:31] MICHAEL: PSBT 也被稱為 BIP 174,它只是一種傳輸未簽名比特幣交易的標準化方式。表面上看它沒什麼令人興奮的,它只是一個編碼格式,標準化了「這是一個 2-of-3 交易」、「這是尋找此地址的推導路徑(Derivation path)」等資訊的傳遞方式。

硬體錢包通常不儲存真實數據,它們是無狀態(Stateless)的。你可能有一個種子(Seed),所有的私鑰都從中推導出來,但要找到對應的私鑰其實很難,因為一個種子可以生成幾十億個密鑰。如果我想找到與某個 UTXO 交易的密鑰,我不想把每一種組合都試一遍,我想知道該在樹狀結構的哪個路徑下尋找。

PSBT 或 BIP 174 的諸多好處之一,就是提供了一套標準指令:「嘿,使用你的擴充公鑰(xpub),這是找到你私鑰的推導路徑。」現在你有了一個可以推導私鑰的種子,順著路徑就能極快地推導出私鑰(大概只需要 50 到 100 毫秒)。

你的主機電腦(再次強調,可能已被惡意軟體感染)將這些指令發送給硬體錢包進行驗證:「是的,我在那裡有一個地址;是的,交易結構是這樣;是的,這個格式合規;這是手續費;這個找零地址屬於我;我可以計算輸入、輸出和找零的總和,算出我花了多少錢。」它可以非常直觀地展現給用戶。

我們常把比特幣交易簡化為「我發送 1 個比特幣給你」,但實際上可能包含 10 個輸入和 2 個輸出。作為人類,你很難在大腦裡快速計算「輸出總和減去輸入總和是多少?哪些是我控制的,哪些不是?」 如果有一個標準格式將這些資訊轉達給硬體錢包,讓硬體錢包能夠無信任地理解和驗證,硬體錢包就能直接顯示:「嘿,這是要簽名的交易,發送 1 個比特幣到地址 A。」你只需要確認地址 A 確實是對方的,這很容易,然後按下確認即可。

無論門檻是 2-of-2、2-of-3 還是 2-of-5,它都能顯示:「嘿,這是 2-of-5,你是其中之一。」不過這裡有一個小缺陷(希望未來能改進):存在一種新型攻擊。假設是 2-of-2 模式,我打開硬體錢包,顯示「需要兩個密鑰,你是其中之一」。我怎麼知道另一個密鑰是誰的?風險在於,另一個密鑰其實是攻擊者的。

我把資金發送到一個 2-of-2 地址,我擁有一把鑰匙,但攻擊者也有一把。雖然目前還沒聽說現實中有這種案例。當攻擊者在區塊鏈上看到這筆交易時,他們會說:「哈哈,你的錢被我綁架了。如果你想拿回資金,我很慷慨,跟你五五分」或者其他博弈論下的勒索方案。這會是很可怕的事。

有些錢包在這方面做得比較好,Trezor 會顯示「嘿,這是 2-of-2,你擁有其中一個」。Ledger 則直接顯示「祝你好運,請信任你那被感染的電腦」。這簡直瘋了,我真心希望他們修復這個問題,他們目前的立場非常愚蠢。多重簽名確實帶來了這一個新的潛在負面因素,但未來 UI 會改進,你可以驗證那是否真的是你的密鑰。(譯注:文章中提到 Ledger 當時「祝你好運,請信任你那被感染的電腦」的愚蠢立場,早已在幾年前透過韌體升級與比特幣 App v2 升級被修復。只要使用者有落實在 Ledger 螢幕上核對並註冊多簽錢包的步驟,這類勒索/綁架攻擊在硬體層面上就無法成立。)

[53:20] STEPHAN: 正如你所說,你應該使用硬體設備上顯示的地址,而不是電腦上顯示的。目前的困難之一是,早期的硬體錢包螢幕非常小,不一定有足夠的空間顯示所有細節。希望隨著新錢包和新產品……我知道 Crypto Advance 的 Stepan Snigirev(我之前的來賓之一)談過這個想法,即擁有更大的螢幕,可以顯示所有細節:「這些輸入、這些輸出、2-of-2 結構」。所有細節一目了然,讓用戶在簽名設備上記錄下到底簽署了什麼。

[54:12] MICHAEL: 對,我對一些新產品感到興奮。我看過他們的一些原型,Stepan 非常聰明。你跟他錄的那集很精彩。他做過一些關於硬體錢包漏洞的優秀演講,我非常推薦,之前也推特轉發過,我們可以放在節目連結裡。

你需要一個足夠大的螢幕來進行驗證。現實是,你不需要巨大的螢幕來做交易驗證,只要能清晰顯示「發送 1 個比特幣到地址 X,手續費為 Y」就夠了。如果你提供了足夠的資訊(PSBT 就是一個向硬體錢包提供資訊的好格式),硬體錢包就能驗證其餘的一切。

可驗證的資訊量其實很微妙。例如,如果你簽署的是 SegWit 交易,你會對輸入值進行簽名。你可以驗證輸入和所有輸出都在交易中,從而驗證手續費。但如果你簽署的是非 SegWit(Pre-SegWit)交易,驗證輸入值的唯一方法就是在區塊鏈上查詢它們。有些錢包會提供證明說:「這是你正在簽名的內容。」有些錢包則會覺得這太難了,因為資料量太大。

想像一下,你簽署的輸入恰好是一個挖礦區塊獎勵(Coinbase transaction)的輸出。那個交易給礦池發放收益,包含了 1,000 個接收者。我們必須向你展示這 1,000 個接收者的交易,才能向你證明你正在簽署的前一個輸出是什麼。這變得極不切實際。結論就是:「如果你要用硬體錢包,你應該使用 SegWit 錢包,因為那更好。」

因為 SegWit 在 BIP 143 中改變了序列化格式,使得你簽署的輸入同時包含了簽名內容和其數值的冗餘副本。硬體錢包可以檢查並確認:「嘿,我簽署的這個輸入裡有多少比特幣?」否則網路會拒絕它。SegWit 裡有很多聰明的設計是大多數人不知道的,因為之前的行銷太扭曲了(以為只是 Roger Ver 宣傳的那樣)。他們不知道 SegWit 修復了交易可變性(Transaction malleability),允許硬體錢包更精確地簽署輸入,而且它還相當於一次區塊擴容。

扯遠了,重點是,你希望硬體錢包盡可能驗證所有能驗證的東西。螢幕能提供一部分幫助,但很多細節隱藏在實現過程裡。如果錢包不驗證找零地址是你的還是攻擊者的,螢幕再大也沒用,你根本不知道發生了什麼。如果不驗證輸入和輸出,你就不知道手續費是多少。魔鬼都在細節裡,老實說,沒有哪一款錢包做到完美。**兩個錢包就是你的答案**,因為這樣攻擊者就必須同時欺騙它們兩個。即使其中一個沒做到完美,另一個希望不會有完全相同的漏洞。

助記詞與密碼短語 (Mnemonics and passphrases)

[57:49] STEPHAN: 我們來聊聊助記詞和密碼短語(Passphrases)。用戶在初始化錢包時,會寫下 24 個單字的種子。也許他們會設定一個密碼短語,設備可能還有 PIN 碼。用戶可能面臨的困難是,如果需要恢復錢包,顯然不想把種子輸入到連網且可能帶有惡意軟體的電腦上。對此你有什麼建議?怎樣才是良好的做法?

[58:30] MICHAEL: 你的助記詞就是你的比特幣。擁有比特幣意味著擁有控制至少一個 UTXO 的私鑰,而助記詞讓我們能擁有一個分層確定性錢包(HD Wallet),從而管理海量的私鑰。在 HD 錢包出現前,我們使用「金鑰池(Key pools)」,那簡直是災難。金鑰池就像是:「我先生成 100 個地址和 100 個私鑰,做好備份,然後用它們交易。隨著交易增加,我再生成更多地址。」問題是,如果我在第一天創建了 100 個地址並做了加密備份,存放在保險箱、交給律師和家人,然後我進行了第 101 次交易。現在我的備份就過期了,我必須重新做一次備份。

解決方案就是 HD 錢包,這太棒了,現在每個錢包都應該是 HD 錢包。但問題是,我該如何記住我的主私鑰(xpriv)?它太長了,有 512 位元,你不可能記住。但 24 個單字的助記詞可以確定性地映射到你的主私鑰,這是可以背下來的。我們現在幾乎所有錢包使用的核心就是助記詞。通常是 24 個單字(雖然也可以更短,但除非你非常專業,否則別考慮更短的選項,堅持標準長度)。

有了這 24 個單字後,你可以選擇性地加上第 25 個單字——密碼短語(Passphrase)。這個密碼短語最酷的地方在於它賦予了你「合理的推諉性(Plausible deniability)」。如果有人用槍指著你的頭說:「快輸入密碼」,你可以輸入 `12345`,裡面有 1 個比特幣,劫匪拿走錢就跑了。但如果你輸入 `678910`,裡面其實有 10 個比特幣,你可以設定另一個密碼,甚至多個密碼。這是個很巧妙的功能,實現方式也很聰明。

不過覺得這有點太「詹姆斯龐德」化了。現實中最經典的攻擊是「5 美元扳手攻擊」——有人拿扳手抽你直到你吐出密碼為止。如果你想靠這種偽裝方案硬扛攻擊,祝你好運。我忘了是哪位名拳手說過:「每個人都有一個計畫,直到臉上挨了一拳。」

[01:01:21] STEPHAN: 麥克·泰森(Mike Tyson)。

[01:01:25] MICHAEL: 對,泰森說的。密碼短語是個好東西。它的核心價值在於保護你免受劣質硬體或軟體的害處。想像一下,如果你的安全晶片(在某些情況下由 PIN 碼保護)儲存了你的密碼短語,這是一種機制。另一種機制是像 Trezor 那樣沒有安全晶片,其設計初衷就是「不儲存密碼短語」。如果攻擊者拿到你的 Trezor 實體,他們依然需要手動輸入你的密碼短語。這非常巧妙。

這相當於雙重驗證:你需要你擁有的東西(Trezor)和你所知道的東西(Passphrase)。為了提升安全性,我非常推薦使用密碼短語。但那個「偽裝資金」的功能,噱頭大於實用。你應該牢記一個密碼短語,而不是記 10 個不同的……

[01:02:46] STEPHAN: 誘餌金額。

[01:02:50] MICHAEL: 對,否則你大概率只會自己忘掉。

[01:02:54] STEPHAN: 這又是安全性和易用性的權衡。你設定的獨立密碼短語越多,你需要備份的東西就越多。你的家人必須知道這些,而且得區分哪個是誘餌、哪個是真的。你可能有多套配置,複雜度呈指數級上升。

[01:03:19] MICHAEL: 俗話說,複雜是安全的天敵。我最初非常排斥多重簽名,因為它增加了複雜度,我不喜歡複雜。如果你用一個應用程式存放微不足道的比特幣,你可能會說:「就算有 0.01% 的機率丟錢我也無所謂,因為我只是用來做日常頻繁交易。」但現實是,比特幣主要被用來儲存價值,裡面的金額對你很重要。對於安全的冷儲存,你確實需要多重簽名。

過去多重簽名的另一個缺點是需要兩個簽名,這大幅增加了交易的位元組體積,而礦工是按位元組收取手續費的。多重簽名的交易手續費更高,這是系統現實帶來的遺憾代價。但有了 SegWit 後,我們獲得了「見證折扣(Witness discount)」。見證(簽名資料)在礦工計算是否打包交易時獲得了折扣。這背後的原理與運行全節點的激勵有關。現在,只要你使用支援 SegWit 的錢包,你就可以享受多重簽名,而不需要支付更高昂的手續費。

測試備份 (Testing backups)

[01:05:03] STEPHAN: 我們聊到了助記詞和密碼短語。用戶經常想做的一件事是測試備份。他們想假裝「我的 Trezor 丟了,Coldcard 也丟了,我能否用 24 個單字和密碼短語恢復?」 但難點在於,我不希望把這 24 個單字輸入到電腦上,因為可能有惡意軟體偷走它。你有什麼建議嗎?

[01:05:39] MICHAEL: 我會建議,在進行任何真實交易前,先在硬體錢包上使用**測試網(testnet)**進行演練。「嘿,這台電腦可能完全被惡意軟體感染了,如果有人偷走了我的免費測試網代幣,算他們厲害,我也就知道我的系統不安全了,而且我毫無損失。」你可以進行演練,完全不用擔心私鑰洩漏。

因為如果是真金白銀,你每做一步都會反覆確認:「我做對了嗎?是這個步驟嗎?為什麼問我這個?這句話是什麼意思?」 但如果是在測試網上,用著毫無價值的代幣,你可以操作得非常快。你可以嘗試四次不同的方法:「如果我輸入不同的密碼短語會怎樣?這裡為什麼有通知?現在來試試多重簽名吧。」在測試網上盡情嘗試,沒有任何成本。

對於大多數沒有安全晶片的設備(比如 Trezor),直接重置設備非常簡單。生成一個助記詞,故意不安全地記錄下來(存放在 iPhone、Android 或雲端都可以,因為只用來放測試代幣)。重置設備,發送一些測試幣給自己,看看能否恢復設備,更改密碼短語看看會發生什麼,一遍又一遍地測試。嘗試多重簽名,在測試網上盡情實驗。

覺得目前業界對測試網的支援太少了,這非常遺憾,因為它是極其寶貴的資源。過去比特幣手續費上漲時,有人說這對比特幣的推廣很不利,因為大家習慣直接在主網上操作,根本不在乎手續費。他們用比特幣做一些不需要抗審查的事情,純粹是因為簡單好用。當他們剩下一些比特幣時,就慢慢習慣了。最經典的故事就是,他們在絲路(Silk Road)上買東西,剩下一些找零:「這挺有趣的,怎麼運作的?」 但其實,你完全可以在測試網上獲得一模一樣的體驗——發送交易、瞭解運作原理、試錯破壞。等你到了主網,你根本不需要做頻繁交易去擔心手續費,因為你已經在測試網上免費做過 20 次演練了,主網上你只需要做一次正式交易。去玩測試網吧,它絕對是你的好幫手。

查詢第三方服務 (Querying a third party service)

[01:08:48] STEPHAN: 接下來聊聊「我們是否在向第三方服務發送查詢請求」。常見的例子:假設我使用標準的 Trezor 軟體,現在 Trezor 公司就知道我的 xpub(主公鑰)了。如果我使用標準的 Ledger 介面,也是一樣,Ledger 會知道我的餘額等資訊。據我所知,解決這個問題主要有兩種思路:使用 Electrum Personal Server(或 ElectrumX、Rust 寫的 Electrs);另一種是 Bitcoin Core 搭配硬體錢包介面(HWI)。你能聊聊這兩者及其好處嗎?

[01:09:32] MICHAEL: 這涉及個人隱私,也涉及安全問題——「這個 IP 地址擁有大量比特幣」,相當於在自己背上畫了個靶子。此外還有技術細節:如果錢包將擴充公鑰(xpub)發送給官方伺服器,不僅可以用來生成你的所有地址(對隱私極其不利),而且還有一個已知風險。

我不想稱之為漏洞,因為這是系統設計的一部分:如果我擁有的 xpub,再加上你的任意一個子私鑰,我就能推導出該 xpub 下的**所有子私鑰**。這聽起來沒那麼可怕,因為第三方怎麼會拿到你的子私鑰呢?但你可以想像這種情境:有人說「嘿,你的硬體錢包出問題了嗎?我幫你診斷。去硬體錢包高級設定裡,導出一個已花費地址的私鑰。別擔心,資金已經花掉了,沒風險。或者生成一個新私鑰給我。」這就足夠讓你破產了。

這些第三方服務可怕的地方在於,你拿著 xpub 去查詢硬體錢包數據,我假設他們會留存這些資料。也許他們的商業模式就是把數據賣給 Chainalysis。甚至可能有人在中間攔截這些資訊。你的 xpub 可能已經洩漏了。此時如果再洩漏一個子私鑰(雖然不該發生,但萬一發生了),你所有的資金都會面臨風險。這就是為什麼不應該查詢第三方服務的原因,它兼具隱私和安全風險。

你提到的兩個解決方案是 Bitcoin Core 和 Electrum。關於 Electrum,預設情況下,最大的兩家 Electrum 伺服器營運商是 Chainalysis(至少離職員工是這麼說的,如果他們不運行才奇怪,因為這樣就能以極低成本去去匿名化海量的比特幣流量,如果不做就是失職)以及 Bread Wallet(它作為 SPV 客戶端,過去運行了大量伺服器)。你不需要註冊帳號,系統就能運作,就是因為別人在背後運行伺服器。這太可怕了,你直接把隱私交給了雲端的陌生人。

你可以自己運行 Electrum 伺服器,可以是為了造福大眾,也可以只供自己私密連接,但這非常麻煩。你得運行一個完整的 Bitcoin Core 節點,上面再疊加 Electrum 來索引所有地址,還要設定 SSL 證書之類的東西。現在可以用 Docker 來做,簡單了很多。如果你懂 Docker,會覺得輕鬆不少,但這依然工程浩大。

不過,這是目前實現「多硬體錢包、多重簽名」最好的 UI 介面。你可以使用 Electrum,把它放在可能感染惡意軟體的熱機器上運行,這沒問題。你可以選擇是否運行自己的 Bitcoin Core 節點(不运行的話當然有缺點),現在就能實現多硬體錢包的多重簽名。

另一個選擇是 Bitcoin Core。有個東西叫 HWI(Hardware Wallet Interface,硬體錢包介面),這是個非常酷的專案。你之前邀請過相關的來賓。我非常喜歡它的地方在於,你能獲得 Bitcoin Core 的所有好處:驗證共識規則、確保收到的比特幣是真的、以最佳方式生成交易。你在參考實現(Reference implementation)中操作,享受優先級 RBF(可替換交易)、手續費加價(Bump fee)、找零地址隨機化、幣種控制(Coin control)等功能。你能獲得 Bitcoin Core 的所有最佳實踐,同時又不需要把私鑰安全性寄託在電腦上,因為私鑰是獨立隔離的。

目前這套方案依然偏向駭客和折騰玩家,還沒達到大眾普及的程度。我寄望於 BIP 174 能夠改變現狀,因為 BIP 174 提供了標準化的通訊規範,可以建構在 Bitcoin Core 之上。每個硬體錢包都應該支援 BIP 174。

我希望普及大眾的方式是透過 BIP 174,雖然 BIP 174 本身沒有突破性的新技術,它只是設備間通訊的標準,但現在所有硬體錢包都應該遵守這個標準,而不是自立門戶。任何不遵守標準的錢包,覺得未來可以直接說:「這跟比特幣不相容,這只是一個山寨幣錢包。你應該用比特幣錢包來存比特幣,這個只配拿去玩山寨幣。」我期待這一天的到來,相信他們很快就會跟進更新,因為這並不難。

[01:16:00] STEPHAN: 太棒了。在這個系列中,我也會邀請 Andrew Chow 來聊聊他在 HWI 方面的工作。那我們進入下一個主題。我們前面提到過,不要簽署未經用戶驗證的內容。比如螢幕不夠大帶來的困難。確認找零地址:硬體錢包擁有主種子(xpriv),可以為不同地址生成私鑰。當你生成發送比特幣的交易時,你要確保找零會回到你控制的地址上,也就是你有對應私鑰的地址。這樣總結對嗎?

[01:16:59] MICHAEL: 對。這會是一個非常巧妙的攻擊:我想花費比特幣,發送 0.1 個比特幣給你,找零發回給我自己。我的熱機器生成了一筆交易(記住熱機器已被惡意軟體感染),它把 0.1 發給你,找零發給我——但找零其實發給了攻擊者。我看著硬體錢包螢幕想著:「嗯,只有 0.1 個比特幣,看起來沒錯,我的資產沒被偷。」我點擊了確認,隨後卻發現所有的找零都跑到了攻擊者的口袋裡。

在任何優秀的硬體錢包實現中,這都是絕對不該發生的。據我所知,除了 Ledger 之外的所有錢包都會檢查這一點。Ledger 居然直接說「請自行驗證輸出」,這簡直瘋了,完全理喻不能,不知道他們怎麼想的。

覺得部分原因在於 $m$-of-$n$ 的複雜性。退一步說,假設是 2-of-2,我的錢包顯示我是兩把金鑰之一,但另一把金鑰其實是攻擊者的,他們可以藉此勒索我的資金。或者在 2-of-3 中,我是其中一把,但另外兩把都是攻擊者的,他們能直接搶走資金。Ledger 就覺得「這太複雜了,我們懶得處理」。因此他們把責任推給最終用戶去驗證輸入和輸出,而不是利用現有工具來自動驗證交易。這非常奇怪。在他們更新軟體之前,我強烈建議**不要使用 Ledger 進行多重簽名交易**,這基本上等於「不要使用 Ledger」。這真的很傻,因為如果他們支援了這個功能,它會是一個有競爭力的產品。

[01:19:15] STEPHAN: 在這個系列中,我也會採訪 Ledger 團隊的人,屆時我會試著提出這個問題。

[01:19:28] MICHAEL: 我不是故意要黑他們,我是希望他們做出一款更好的產品,逼著其他競爭對手也做出更好的產品。最早期的 Ledger HW1 甚至連螢幕都沒有。你能想像沒有螢幕的硬體錢包嗎?那還有什麼意義?你那感染了惡意軟體的電腦問:「你想把比特幣發送到這個地址嗎?」你在沒有螢幕的設備上按下按鈕,默默祈禱它執行了電腦叫它做的事,並且祈禱那是正確的事。現在我們有螢幕了,情況完全不同了。

開源硬體 (Open source hardware)

[01:20:15] STEPHAN: 我們現在生活在未來,硬體錢包都有螢幕了。關於硬體錢包還有其他要補充的嗎?關於「開源硬體」這一點,你怎麼看?因為知名硬體錢包之間存在不同的理念。Trezor 以開源硬體聞名,Coldcard 也非常推崇開源硬體。而 Ledger 則因使用閉源的安全晶片而聞名。你的觀點是什麼?

[01:20:52] MICHAEL: 終極聖杯是一個「開源的安全晶片」。這是大家夢寐以求的,但目前還不存在。我聽過最合理的解釋是,開發這東西需要花費 1000 萬到 2000 萬美元,目前還沒有人願意花這筆錢去開源一個安全晶片。如果真的有人做出來了,大家肯定會蜂擁而至。也許未來我們回頭看會說:「天啊,敢信我們以前用的比特幣錢包居然沒有開源安全晶片嗎?」

目前你要麼選擇在通用微控制器上運行開源軟體(沒有安全晶片),要麼選擇一個理論上非常安全的安全晶片。安全晶片有它的好處(我待會會講),但我們無法驗證它裡面到底運行了什麼,甚至看不到它的程式碼。這就是權衡所在。

我對這個問題的答案是:如果你在理念上偏向任何一方,那就選你支持的。但你完全可以**兩種各買一個,並要求兩者共同簽名**。現在攻擊者必須同時破解這兩者,這對我來說聽起來棒極了。

我對閉源的安全晶片有點排斥,因為任何閉源的東西都是極具吸引力的攻擊目標。宣稱在做一件事,結果背地裡在做另一件事。在我看來這需要盲目信任,但我依然很樂意把它作為多重簽名的一部分。這正是多重簽名的魅力所在——它只有疊加好處。你可以把一個好的錢包和一個差的錢包組合起來,這依然比單用一個好錢包要安全得多。而且你可能根本分不清哪個好、哪個差。明年我們可能會在某款主流硬體錢包中發現漏洞,原本以為很棒的東西變得不怎麼樣,而以為不好的東西反而更可靠。能夠混合使用多種設備,才是未來的趨勢。

[01:23:23] STEPHAN: 這個觀點很好。那軟體中的韌體以及程式碼審查呢?有種說法是「關注程式碼的人越多越好」,因為有更多雙眼睛盯著,發現 Bug 或惡意軟體的機率就越高。

[01:23:45] MICHAEL: 比特幣最酷的地方在於,它是全球最大的漏洞賞金計畫(Bug bounty program)。如果比特幣內部存在惡意軟體或漏洞,人們有強烈的經濟誘因去利用它,無論是為了名聲還是為了巨額財富,它都是全球最大的目標。至今沒出大事說明它運作得非常好,這給了我們更多安全感。比特幣每多存在一年,我們就可以說「這東西變得更難被破譯了」。

一般來說,軟體錢包的使用者越多、盯著的人越多、企業在其上建構的基礎設施越多,我們就可以說「它可能越安全」。如果明天有人推出了一款全新的硬體錢包,我們從未聽說過,我會非常懷疑,絕不敢把畢生積蓄放進去。

但多重簽名再次改變了遊戲規則。第二個簽名(甚至第三個簽名)帶來的疊加安全力量是如此巨大,以至於我寧願要一個「糟糕的第二簽名」,也不要單一金鑰簽名。我希望這是聽眾能帶回家最重要的訊息。

如果一個錢包無法與其他錢包良好相容、不接受簡便的安全提升,對我來說這就是個糟糕的產品。我希望隨著 BIP 174 的普及,大家都能採用它。一年後我們回頭看會覺得:「哇,不敢相信以前比特幣曾經這麼危險。」

這讓我想起了開頭想說但沒說的話:為什麼這件事如此重要?我們很容易陷入鑽牛角尖,討論各種可能被攻擊、被破解或丟失比特幣的極端情況。但通常這種討論的結果是,大家會說:「聽起來太難了,我還是用 Coinbase 吧。」

這太糟糕了!你最不該做的事就是把比特幣交給別人保管,因為那一刻起你擁有的不再是比特幣,而是「比特幣欠條(IOUs)」。Mt.Gox 的用戶給所有人上了慘痛的一課。「Not your keys, not your bitcoin(不是你的私鑰,不是你的比特幣)」,這是比特幣中最重要的一課。

我們很容易困在「我不知道怎麼運行自己的全節點、我不懂命令列、我不懂這個那個」的迷茫中。但如果演變成沒有人真正擁有比特幣,大家都只有比特幣欠條,只剩下少數像我這樣的怪人想自己管理私鑰,那我們將面臨三大危機:

  1. 託管損失 (Custodial losses): 這會不斷發生。怪異的是,超大型持有者在安全方面面臨著「規模不經濟」。對於你最初的 1000 萬到 1 億美元加密貨幣,你有很強的動力去好好儲存它。如果每年花 1 萬美元硬體成本、雇用頂尖顧問或工程師,為了保護這 1 億美元,你很樂意每年花幾十萬美元確保一切萬無一失。但如果你託管了 50 億美元(2017 年牛市頂峰時,某些大型託管商的資金量常被提及),你將成為一個超級大靶子。攻擊者只要能偷走你 50 億資產中的 1%,就是 5000 万美元。你將面臨來自各個角落的攻擊,你的員工隨時會萌生邪念(如果還沒有的話),他們會收到巨額賄賂。事實上,交易所最狂的事之一就是試圖去釣魚或賄賂自己的員工,看看他們會不會上鉤,這說明他們防備心有多強,這樣做很好。但靶子實在太大了。
  2. 回到傳統金融的弊端: 回顧黃金的歷史,黃金之所以被掌控,部分原因就是出現了可信第三方替你儲存黃金,這徹底改變了遊戲規則。追溯到羅馬帝國,他們可以削減黃金成色、印製沒有足夠黃金背書的硬幣,實行部分準備金制度。你還會遇到像 Coinbase、PayPal 甚至銀行那樣的帳戶凍結和交易報告。我們不希望比特幣變成那樣,所以自己掌握私鑰極其重要。
  3. 治理攻擊 (Governance attacks): 我們在 SegWit2x 事件中見識過了,當時有巨頭聲稱:「我們代表了所有比特幣持有者,我們來決定他們的比特幣是什麼。我們要支援一種新幣,並把他們所有的比特幣賣掉換成 SegWit2x。」他們敢這麼說,是因為他們確實掌握了相當大比例的比特幣託管權。這是非常可怕的事。想像一下未來出現了 ETF (譯注:比特幣現貨ETF已於2024年1月上市),該 ETF 控制了兩位數比例的比特幣供應量。他們說:「我們想改變比特幣,我們不喜歡 2100 萬上限,覺得對挖礦經濟不好,我們要修改它,並把所有比特幣賣掉換成新的挖礦幣。」這將引發多麼混亂的世界。也許比特幣能挺過去,因為私鑰持有者和全節點營運商會說:「那不是我的比特幣,我不在乎。祝你好運,你要賣我就低價回收你的比特幣。」相信我們能挺過風暴,但託管機構所佔經濟份額越低、我們自主掌控的份額越高,他們的威脅就越小。這不僅僅是理論探討,也不僅是為了你個人安全(雖然這是你會採納建議的主要原因),這真的對整個生態系統大有裨益。

[01:31:22] STEPHAN: 說得太好了,邏輯非常嚴密。歸根結底,市場上必須有足夠多的人親自掌握私鑰、運行自己的節點。你剛才提到的另一點是,即使你還沒運行自己的節點,至少先掌握自己的私鑰,情況也會好很多。我也一直是這麼認為的。正如 Andreas 所說,比特幣第一法則:Not your keys, not your coins。第二法則:Not your node, not your rules(非你節點,非你規則)。我們引導大家的方式(我的聽眾可能大多是中高級玩家)應該是循序漸進的。你不能要求人們直接從「資產放在交易所」一步跨越到「完美運行全節點」。你得引導他們:「邁出下一步:先提現到單個硬體錢包;現在有了硬體錢包,我們試試配置多重簽名硬體錢包;現在再來試試運行全節點。」這正是我們希望大家走的成長路線。

[01:32:40] MICHAEL: 完全正確,而且美妙之處在于人們會自發地走這條路。我在每個階段都會接到諮詢電話。我常見的典型路線是:有人在 Coinbase 或 Square Cash 的下單頁面上,問我:「我要把我的銀行帳號或簽帳卡 PIN 碼輸進這個網站,這是詐騙嗎?」我說:「這取決於你怎麼定義。你大概率能拿到比特幣,應該沒事。」然後他們說:「嘿,我在這網站上有 1 萬美元,感覺有點不踏實,我應該自己保管嗎?」我說:「當然,這裡有各種方法。」於是他們買了硬體錢包。這期間比特幣價格漲了,他們又跑來問:「嘿,這個硬體錢包知道我所有的交易記錄啊。」我說:「是的,這不理想,你應該配合自己的全節點來運行。」現在我們還會告訴他們:「而且你還需要第二個簽名。」人們會自然而然地這麼做,因為大家都不傻。我們不需要要求他們一步到位,只要比什麼都不做有所進步就很棒了。

[01:34:07] STEPHAN: 我同意,但這可能存在倖存者偏差。主動跑來問你的人本來就是有積極性的人,而不積極的人就把資產扔在交易所不管了。

[01:34:23] MICHAEL: 是的,我說的只是那些跑來找我的人。傳聞 Coinbase 在幕後託管著天文數字般的加密貨幣。

10x 比特幣安全指南 (10x Security Bitcoin Guide)

參考連結: https://btcguide.github.io/

[01:34:36] STEPHAN: 這確實是個挑戰,但關鍵在於如何簡化資訊,並提供他們所需的知識。你最近建了一個非常棒的網站 https://btcguide.github.io/。我會把連結放在節目註解裡。Michael,告訴我們你建這個網站想達成什麼目標?

[01:35:02] MICHAEL: 說來有些幼稚,這純粹是我個人極度熱愛的領域。多年來我一直渴望一款優秀的硬體錢包,不敢相信 10 年過去了,覺得市面上的產品依然相當平庸。就我個人而言,如果要推薦一款,我會說選 Coldcard。它是「最不爛的」,但絕不是那種你媽媽用了會說「哇,這太好用了」的產品。你必須具備一點技術背景才能使用它,而且我不太喜歡 SD 卡的設計,但它確實能用。我是透過這個研究過程發現它的,以前玩過但沒深入。

我發了一連串推文,表達我對硬體錢包缺乏安全產品必備功能的失望:多重簽名支援、空氣隔離、允許用戶自主輸入並進行無信任運行驗證、以及能從自己的全節點獲取數據的隱私機制。對於一個專為安全而生的設備來說,這些要求並不過分。

大家紛紛留言:「嘿,你沒提到我的錢包,我的錢包其實很好用。」我回復說:「細節很複雜,你的錢包有優點,但也存在致命的缺陷。」然後我開始一一整理這些資訊。所有的資訊原本散落於推文和回覆中,很難系統化。

於是我建立了這個對比網站(也許我該買個獨立網域)。網站根據這些標準,對主要硬體錢包進行星級評分。KeepKey、Ledger、Trezor 和 Coldcard 在多重簽名支援、空氣隔離、用戶輸入、隱私和無信任性方面都接受了評估。

當然還有其他硬體錢包。有人問:「你怎麼沒提到約翰·麥克菲(John McAfee)宣稱不可破解的 Android 手機錢包?」那種評分會低得可憐。我列出了未收錄某些錢包的原因。看到大家的關注點真的很有意思。

有個叫 Cobo Vault 的錢包,擁有漂亮的 QR Code 掃描功能,但它是為山寨幣設計的,對比特幣支援不佳,而且不支援與其他硬體錢包進行多重簽名。這其實不難,但他們就是不做。如果他們支援了,我倒不介意他們支援山寨幣,那只是附加功能,而且他們的 QR Code 螢幕真的很美。雖然很貴(大概 500 美元),但看起來很棒。我不想公開背書說它很棒,但它的 QR Code 和螢幕確實很讚,目前沒人做到這點。

市面上各種產品琳瑯滿目。有些產品把「信用卡大小」當作主打賣點(比如 CoolWallet S)。你會想:「但我只在乎安全性,根本不在乎形狀是不是像信用卡。」網站詳細列出了它們在各個指標上的評分,滑鼠懸停可以看到原因,還有 Q&A 拆解了我們今天聊的大部分內容。

我的目標是促使大家開發出更好的硬體錢包。我想讓拿高分變得更加困難。我希望未來形成一種標準:不支援與競爭對手透過 Bitcoin Core 進行多重簽名的,就不配叫硬體錢包。不支援這個簡直不可思議。你必須有體面的空氣隔離(至少像 SD 卡那樣,目前只有一家支援)。你必須允許用戶輸入種子和助記詞,KeepKey 只有一個按鈕,太瘋狂了;Ledger 有兩個按鈕,極難使用,如果要手動輸入會讓人發瘋,結果大家乾脆不輸入了,然後忘記內容。從隱私角度來看,它們都應該透過 BIP 174 直接連接到 Bitcoin Core。沒有理由做一款不與比特幣直接相容的硬體錢包。

公平地說,BIP 174 出現也才一年左右,我們需要給時間。但只要有兩家率先整合,我會公開公開點名其他人,讓他們的評分直下三千尺。我知道有兩款開發中的新硬體錢包會在發表時原生支援 BIP 174。他們說還有幾個月發表,誰知道呢,硬體開發很難,也許要更久,但我迫不及待了。我相信一年後回頭看,我們會說:「以前日子真艱難,現在終於變好了。」

[01:41:02] STEPHAN: 太棒了。我特別喜歡滑鼠懸停在星星上時顯示的解說。對於試圖理解「什麼是硬體錢包、為什麼這樣評分」的新手來說,這非常關鍵。適度的篩選 curation 很重要。市面上可能有幾十種硬體錢包,但你只需要列出大家熟知的主流產品。關於硬體錢包還有其他想補充的嗎?我們聊了很多,也許可以聊聊「選擇性 Nonce 攻擊(Chosen nonce attack)」?

選擇性 Nonce 攻擊 (Chosen nonce attack)

[01:42:02] MICHAEL: 如果有任何錢包在單金鑰簽名模式下實現了針對「選擇性 Nonce 攻擊」的防禦,它就會成為必買的硬體錢包。我們前面聊過隨機性和硬體隨機數生成器。這是 ECDSA 的客觀現實。ECDSA 是比特幣採用的橢圓曲線數位簽章演算法。你可能聽說過 RSA,那是另一種非對稱加密演算法(以 Rivest、Shamir 和 Adleman 三位數學家命名),你在瀏覽 HTTPS 或 SSL 網站時運用的就是 RSA。

在 ECDSA 中,簽名中的隨機性問題一次次浮出水面。在選擇性 Nonce 攻擊中,攻擊者以某種方式指定了 Nonce(密碼學中只使用一次的隨機數)。攻擊者挑選了那個隨機數,就能從你的簽名中輕而易舉地反推導出你的私鑰。這太可怕了。目前我們還無法證明你的硬體錢包沒有使用攻擊者指定的 Nonce。

關於這種攻擊已有論文發表,過程非常簡單直接。其中一篇就是你之前的來賓 Stepan Snigirev 寫的,他是個量子物理學家,極其聰明。關於這種攻擊我要說明一點:我必須看到你的簽名,且必須指定了你的 Nonce。我如何看到你的簽名?很可能是你在比特幣網路上廣播了交易,此時我得跟你賽跑去實施雙重支付(Double spend)。從這個角度看,它可能不算很強的即時攻擊。但如果我的惡意軟體感染了你的主機電腦,並且在與你的硬體錢包通訊,你可能直接把簽名發給了我。不需要拿到私鑰,只要拿到簽名,因為我指定了 Nonce 並攻破了你的硬體錢包,我就能輕鬆推導出私鑰。

[01:44:21] STEPHAN: 內容真多。澄清一下,在這種情況下,駭客反推出來的是單個地址的私鑰,還是主私鑰(xpriv)?

[01:44:37] MICHAEL: 在這種情況下,他們推導出的是單個私鑰。但假設他們能做到這一點,且手中擁有你的主公鑰(xpub),配合這個子私鑰,他們就能算出**所有的子私鑰**。

這種攻擊的嚴重程度取決於實施方式。在一種情境下,你廣播交易,他們在網路上看到,知道你的 Nonce 和私鑰,試圖以更高的手續費廣播競爭交易進行雙重支付。但他們起步已經落後了,還要看你原始交易是否開啟了 RBF。這種攻擊不是最強的,但利潤極高。如果你發現了某款硬體錢包簽名時使用的 Nonce 漏洞,直接執行攻擊即可。

但一旦漏洞暴露,大家就會喊:「不要再用這款硬體錢包了,快升級或更換!」攻擊者只有很短的時間窗口去攔截傳輸中的交易。但如果他們同時掌握了你的 xpub,就能從那個子私鑰生成所有其他子私鑰,直接竊取你存放的所有資金,那就慘多了。

這是一個複雜且微妙的問題。針對選擇性 Nonce 攻擊有各種用戶體驗和計算難度層面的防禦手段。我預計未來會看到相關防禦,但目前**最好的防禦依然是多硬體錢包的多重簽名**。因為就算攻擊者對其中一款硬體錢包瞭如指掌,將其完全攻破,但只要需要兩個簽名,你依然是安全的。這就是它的神奇之處。我們可以深入討論這些可怕而隱蔽的攻擊細節,它們可能會影響你,也可能不會;但只要你擁有兩個來自不同廠商的硬體錢包並實施 2-of-2 簽名,你就能獲得巨大的安全屏障。

安全晶片的重要性 (Importance of having a secure element)

[01:47:12] STEPHAN: 安全晶片是必需品嗎?還是說它的重要性遠不如多重簽名支援?

[01:47:19] MICHAEL: 對我來說,多重簽名是**絕對必須**的。如果一款硬體錢包設計初衷不支援多重簽名,那它就不是安全產品。我不在乎它宣稱有什麼其他安全功能,它採摘的是最低垂的果實。支援多重簽名既不昂貴也不複雜。不支援多重簽名,等於在說:「我們的商業模式不是做安全產品,而是把你鎖定在我們的平台上。可能因為我們靠山寨幣交易賺最多錢,支援幾千種代幣,內建了 Shapeshift 兌換,或者有管道讓你向我們購買比特幣和山寨幣。」

這不是壞事,你想這麼做是你的權利,雖然我沒興趣,但完全沒問題。問題在於你賣的不再是安全產品,而我只想要安全產品。

我喜歡 Coldcard 的原因之一是他們不支援山寨幣,因為「複雜是安全的天敵」。硬體錢包運行的程式碼越多、功能越多,出現 Bug 或漏洞的機會就越多。保持簡單才是王道。這就是為什麼我前面提到,我的開源命令列錢包是所有比特幣錢包中程式碼行數最少的。到現在依然如此,發布時更是遙遙領先。覺得這很酷,展示了底層邏輯,讓大家更容易看出是否有異常。雖然不保證絕對安全,但這是一個優秀的特性。

我喜歡 Coldcard 這點,但 Trezor 支援很多山寨幣,我也很樂意使用 Trezor。多重簽名才是最重要的核心。至於安全晶片,如果有開源的我全力支持;既然沒有開源的,覺得有也不錯,但我沒有強烈偏好。**混合使用兩者吧**。

給最終用戶的建議 (Advice for end users)

[01:49:59] STEPHAN: 對於想要提升安全等級的聽眾,假設他們想在家里運行 Bitcoin Core 搭配 HWI,配置多重簽名硬體錢包並進行分散保管。這是個好目標嗎?你有什麼建議?

[01:50:21] MICHAEL: 目前就安全與易用性的權衡而言,如果你想做多硬體錢包的多重簽名,**你應該使用 Electrum**。我不太喜歡這個建議,因為 Electrum 在隱私和強制執行共識規則方面有缺點,但你可以額外運行自己的 Electrum 伺服器。

如果你轉用 Electrum 進行多硬體錢包多重簽名,會比直接使用廠商給的預設 App 安全得多(預設 App 毫無隱私可言,把所有資訊上交,連在熱機器上非常危險)。Electrum 對空氣隔離支援得非常好,你想用空氣隔離隨時可以切換。雖然多硬體多重簽名不一定非要空氣隔離,但如果你擔心,可以加上。我知道很多大戶在 Electrum 空氣隔離架構上記錄著八位數(數千萬美元)級別的交易。目前我推薦使用 Electrum。

但我希望很快能推薦「透過你自己的 Bitcoin Core 節點進行 PSBT (BIP 174)」,我看到相關開發正在蓬勃發展。那是運行 Bitcoin Core 更好得多的方式,因為你不用偏執地擔心:「這是我運行的真實 Bitcoin Core 嗎?作業系統有漏洞嗎?防火牆配置對嗎?」

如果私鑰留在硬體錢包裡,你運行 Bitcoin Core 的唯一風險僅限於隱私和可能處於錯誤的共識規則下。這些雖然不是小風險,但跟「直接丟錢」完全是兩碼事。現在你可以首先集中精力在硬體錢包端確保「不丟錢」,然後再根據意願集中精力在熱機器端選擇作業系統、驗證級別。人們應該有權選擇適合自己的防護等級。

但首要任務是保護好資產。資產損失對整個生態系統的打擊太大了。雖然作為持有者,別人丟錢客觀上讓總量減少,我能獲得一點微小的資產增值好處,但這不利於新手加入,讓大家覺得就算投資成功了也可能隨時血本無歸。

[01:53:14] STEPHAN: 關鍵在於讓普通人也能輕鬆保護比特幣,達到合理安全,而不是要求每個人都像擁有龐大資源的億萬富翁那樣去做防護。

[01:53:31] MICHAEL: 類比網站服務的 SLA(服務級別協議)可用性,大家常說「追求 9 的數量」。做到 99% 可用很容易,99.9% 也不難;99.99% 需要付出努力,但可實現;要做到 99.999%(5 個 9),你得非常專業;6 個 9 意味著一年只能停機幾秒鐘。

比特幣安全也是一樣的邏輯,只是方向相反:「我丟錢的機率是多少?」也許你覺得 0.1% 的風險可以接受,針對這筆金額你願意做這麼多功課。但如果你希望機率降到 0.01%、0.001% 甚至 0.0001%,你就必須做足每一個額外步驟。

從防範損失的角度來看,Bitcoin Core 是你最後才需要擔心的事。每個人都運行全節點固然很棒,但為了防止丟錢,你首先要聚焦在**硬體錢包端**,其次才是 Bitcoin Core 端。

我也希望現在就能告訴大家:「技術已經成熟了,你可以輕鬆在樹莓派(Raspberry Pi)上運行 Bitcoin Core,不需要任何命令列知識就能做多硬體錢包多重簽名。」相信一年後可以實現,但今天還做不到。

[01:55:24] STEPHAN: 太棒了,非常感謝。那我們為聽眾總結一下:兩大核心要點,第一,**多重簽名具有疊加效應**,儘量使用它;第二,**善用測試網**,讓自己對交易操作完全熟悉和安心。

沙米爾秘密共享方案 (Shamir’s Secret Sharing scheme)

參考資料:
* How to Share a Secret (Shamir 原始論文, 1979): http://web.mit.edu/6.857/OldStuff/Fall03/ref/Shamir-HowToShareASecret.pdf
* How to Share a Secret, Infinitely (論文): https://eprint.iacr.org/2016/194.pdf
* SLIP-39, Satoshi Labs 助記詞的沙米爾秘密共享規範: https://github.com/satoshilabs/slips/blob/master/slip-0039.md

[01:55:59] MICHAEL: 對,測試一切,測試網交易完全免費。還有一個很少人在用、但覺得很多人應該用的免費技術——**沙米爾秘密共享方案(Shamir’s Secret Sharing scheme)**。這是建構在硬體錢包和備份策略之上的工具,跟多重簽名有點像但又不太一樣。如果有時間我們可以聊聊。

[01:56:35] STEPHAN: 來吧,我們把它補充完整。

[01:56:39] MICHAEL: 沙米爾秘密共享方案源自 Adi Shamir 1979 年的論文。他就是 RSA 加密演算法中的「S」。他是密碼學界的神級元老,而且至今活躍(Merkle tree 的 Ralph Merkle 也還在)。Adi Shamir 在 1979 年發表了這篇只有兩頁紙的論文《How To Share a Secret》,閱讀並理解它非常快。

核心思想是:你可以設定一個 $m$-of-$n$ 的門檻來拆分你的秘密。這個秘密可以是比特幣私鑰、密碼短語、通用助記詞,或是解鎖存放所有秘密的 USB 隨身碟密碼。你可以把秘密拆分成若干碎片(Shares),只要收集到 $m$ 個沙米爾碎片,就能重構出秘密;但如果只拿到 $m-1$ 個,就**什麼都拿不到**。

這絕對優於任何粗暴切分密碼的做法(比如「我把紙切成兩半,一半放家裡,一半放公司」)。首先,切成兩半的話,丟失任何一半你就完蛋了,你顯然更想要 2-of-5 而不是 2-of-2。其次,切半並不安全,假設密碼有 16 個字元,兩邊各 8 個,拿到 8 個字元的人可以暴力破解剩下的 8 個字元;而沙米爾方案中,少一個碎片就完全無法暴力破解。

這是一個非常聰明的演算法,在比特幣邊緣領域應用了很久,但尚未普及。我常問比特幣玩家一個問題:「如果你被公車撞了,你的比特幣會怎樣?」對大多數人來說,答案是比特幣隨他們灰飛煙滅。這很悲傷,特別是如果你有家人的話。

另一種極端是有人把助記詞明文放在家裡保險箱、床墊下或藏寶圖裡。任何人只要看到那個種子(如果沒設 Passphrase),就能直接拿走資金。你需要備份以防火災、洪水或硬碟損壞,比如用 Cryptosteel 金屬板;但對於密碼短語,最聰明的拆分方式就是沙米爾秘密共享方案。

你可以把密碼短語拆分後交給值得信任的親朋好友,設定門檻(比如 2-of-5 或 11-of-20)。如果你不幸出事,只要他們沒有同時罹難(達到法定人數),他們就能拼湊出密碼短語。結合你在銀行保險箱裡留下的實體種子,你的比特幣就能被成功恢復。未來我們會看到這項技術被廣泛採用,畢竟過去比特幣玩家多為年輕小夥子,總覺得自己長生不老、不會出事。

[02:01:09] STEPHAN: 如何把沙米爾方案整合到硬體錢包多重簽名架構中?比如 Casa 採用無種子(Seedless)方案:他們的 3-of-5 包含三個硬體錢包、一個手機端錢包、以及 Casa 託管的恢復金鑰,沒有種子備份。但另一種思路是自己做 3-of-5 多重簽名硬體錢包,那沙米爾秘密共享應該放在哪個環節?

[02:01:48] MICHAEL: 這裡最棘手的依然是「複雜是安全的天敵」。而且繼承人得處理這一切,而你當時已經不在人世無法指導他們。當繼承人打開保險箱看到 Cryptosteel 金屬板,完全一頭霧水;聽到其他人手裡有沙米爾碎片,又搞不懂沙米爾的 $m$-of-$n$ 和多重簽名的 $m$-of-$n$ 是什麼關係。目前這方面的體驗非常混亂。

Trezor 提出了一個 SLIP-0039 草案,試圖標準化密鑰拆分的沙米爾方案。我希望看到類似 WIF(錢包導入格式)那樣標準化的序列化格式,掃描 WIF,任何錢包都能識別並導入私鑰。但在多重簽名和 HD 錢包架構下,情況極其複雜。比如:「我現在拿著一個 2-of-3 HD 錢包種子的沙米爾碎片,這是 6-of-10 沙米爾架構中的一片,我進行到哪一步了?我還需要什麼?資料齊全嗎?」

終極目標是將資料導入 Bitcoin Core,系統就能自動識別並顯示「我知道怎麼讀取,這是你的資產」。目前現狀還很混亂,這種複雜性甚至在逼著人們走向中心化託管。因為雖然 Coinbase 沒大肆宣傳,但法律上他們有義務將資產轉交給遺產繼承人(雖然過程據我所知非常繁瑣,但確實成功過)。

我們應該有更好的非託管解決方案。我知道有一家託管公司正在開發新標準:他們掌握一把鑰匙,你掌握兩把(2-of-3 模式)。憑死亡證明,他們可以用他們的鑰匙結合你剩下的一把鑰匙來恢復資產。你只需要確保家人能拿到剩餘的一把鑰匙。這時候就可以用沙米爾方案把那一把鑰匙拆分給多個家人。這樣即使家人合謀,也只有一把鑰匙,依然無法偷錢。

你可以把一份給律師,一份給託管機構,剩下的拆分給親友。不過這也會帶來奇怪的人性博弈:買人壽保險,受益人有動機殺你;把遺產的沙米爾碎片發給朋友,朋友也有動機殺你。所以,請選擇不會殺你的朋友。

[02:05:31] STEPHAN: 這絕對是金玉良言。

[02:05:35] MICHAEL: 而且門檻要設高一點,需要大多數人合謀才行。

[02:05:42] STEPHAN: 雖然有點複雜,但重要的是大家開始邁出第一步。目前很多人還把資產留在交易所,他們只需往前走一步,這正是我們製作這個 Podcast 的初衷。今天內容非常豐富,未來一定會再邀請你來。最後,請告訴聽眾可以在哪裡關注你和閱讀你的文章。

[02:06:28] MICHAEL: 我偶爾會在 Twitter 和部落格發布比特幣相關內容。我的 Twitter 是 @mflaxman,這是最方便找到我的地方。個人網站是 michaelflaxman.com

[02:06:40] STEPHAN: 太棒了。非常感謝你,今天的內容非常有教育意義,相信聽眾收穫頗豐。

[02:06:50] MICHAEL: 謝謝你,希望我帶給大家的幫助多過困惑。

2026年8月2日 星期日

你無法審計的那一層 (The Layer You Cannot Audit)

The Bitcoin Intelligence Essays · 特別隨筆 · TRUST

你無法審計的那一層
(The Layer You Cannot Audit)

我遵循了比特幣自主託管的所有規則,卻依然遭受了重大損失。到底哪裡出了問題?而我現在正在做出什麼改變。

作者:Oliver L. Velez  |  發布時間:2026 年 7 月

7 月 30 日晚上,我的錢包顯示著一筆已經不屬於我的比特幣。

餘額看起來正常,地址看起來正常,我的硬體錢包也照常簽署了交易。

但網路拒絕了這筆交易。

那些幣早已被轉走了。

我參與比特幣領域已有多年,一直以來都在教授資產所有權、自主託管(Self-custody),以及「真正擁有資產」與「僅擁有他人承諾」之間的本質區別。我沒有將助記詞輸入過電腦,沒有將它備份在雲端,也沒有把它輸入到手機、網站或密碼管理器中。助記詞是在完全離線(氣隙Air-gapped)的簽署設備上生成的,經過了妥善備份與驗證。我的 Sparrow 錢包設定為唯讀模式(Watch-only),並連接到我自己的全節點。

我嚴格遵守了所有的規則。

但我依然失去了數額重大的比特幣。

最讓人難以接受的,並不是比特幣失敗了——比特幣並沒有失敗。最難接受的是,我遵守了每一條被公認的自主託管法則,但這依然不夠。

我不會公開損失的具體金額。因為數字會模糊焦點,而數字並不是這件事的核心教訓。真正重要的是:這並不是因為我點擊了釣魚連結、洩漏了復原助記詞,或是把資產控制權交給了任何人。

這場失敗,從助記詞產生的那一刻就已經注定了。

只是我當時渾然不知。

我是本週浮出水面的 COLDCARD 隨機數生成器(RNG)事件的受害者之一。目前的調查報告顯示,數百個單簽(Single-signature)地址在短短數分鐘內、跨越連續數個區塊被清空。Coinkite 事後已直接承認了這項缺陷:設備的隨機數生成功能存在漏洞,導致產生的助記詞熵值(Entropy)遠低於設計標準;任何理解該漏洞的人,都能藉此重構私鑰。Coinkite 目前表示 Mk3 是受影響最嚴重的型號,較新的設備雖亦受影響,但程度較輕。根據官方估計,Mk3 的有效搜尋空間被降至僅約 40 位元(bits),Mk4、Mk5 和 Q 則約為 72 位元,而原本應有的安全標準是 128 位元。

Coinkite 已發布了關於熵值失效的技術背景說明;完整的技術審查仍在進行中,因此部分細節仍屬初步結論。

然而,這件事所揭示的結構性教訓,並不取決於最終的數位鑑識結果。

私鑰的安全強度,完全取決於創建它時的隨機性。

而使用者在事後,是完全無法審計這種隨機性的。

這正是幾乎沒有人討論過的那一層。

不再真實的餘額

我並不是因為親眼看著比特幣被轉走才發現偷竊事件的。

我是因為嘗試進行一筆無關的交易,結果網路返回了錯誤訊息——提示該筆輸入(Inputs)已經被花費掉了,我才赫然發現。

當時我自己的全節點暫時無法連線,Sparrow 錢包無法查詢最新的區塊鏈狀態,因此它只顯示了上一次成功記錄到的餘額。雖然該餘額已是一天前的數據,但在螢幕上看起來依然像是當前狀態。

我的簽署設備隨後執行了它該做的事:完成交易簽署。

那道簽名證明了我擁有相應的私鑰,但它無法證明那些私鑰曾經控制的比特幣是否依舊未被花費。

只有區塊鏈網路才能確認這一點。

錢包裡的餘額並非資產本身,它只是對帳本當前狀態的一份報告。當報告背後的資料來源過期時,螢幕上的數字只是一幅已經不存在的過去景象。

這項差異在當前極為關鍵,因為受此事件影響的人,自然會打開錢包軟體,看到非零的餘額,便以為自己倖免於難。

千萬不要抱持這種假設。

請務必根據當前的區塊鏈狀態,親自檢查實際地址。盡可能使用您自己同步完成的節點;否則,請交叉使用多家聲譽良好的區塊瀏覽器,逐一驗證各個地址。根據回報,部分受害者似乎遭受了「部分清空(Partial sweep)」,這意味著剩餘的餘額並不能證明底層的助記詞是安全的。

  • 餘額可能是過期的。
  • 剩餘的部分餘額可能會造成誤導。
  • 只有區塊鏈上的記錄才是唯一的真相。

究竟發生了什麼事

目前被報導的資產轉移模式呈現出異常高度集中。

迄今確認被掃空的輸出(Outputs)均為單簽地址(Single-signature)。在當前鑑識報告中描述的受影響地址中,並未出現多重簽名(Multisignature)。這些地址主要為原生 SegWit(Native SegWit),亦有極少數較舊的地址格式。有些錢包被完全清空,有些則似乎僅被部分轉走。

隨著調查深入,這些細節可能會有所調整。

但核心的事實極不可能改變:

如果攻擊者能夠重構控制單簽錢包的那唯一一把私鑰,該錢包就徹底淪陷了。

攻擊者不需要實體接觸設備,惡意軟體不需要穿透離線環境(Air gap),助記詞也不需要被拍照、複製或輸入到任何地方。如果私鑰是從不足的隨機性中生成的,那麼在第一筆存款進來之前,漏洞就已經存在了。

硬體錢包可以完好無損地放在保險箱深處。

而攻擊者可以在地球的另一端進行計算。

這正是這類失效如此危險的原因:它在使用者最缺乏透明度的地方擊敗了使用者——也就是「密鑰本身被創造的瞬間」。

你無法審計的那一層

比特幣給了我們極其強大的驗證工具:

  • 你可以在簽署設備的螢幕上驗證接收地址。
  • 你可以在簽署前驗證交易內容。
  • 你可以驗證韌體簽名。
  • 你可以驗證衍生路徑(Derivation path)。
  • 你可以驗證備份。
  • 你可以驗證多簽的法定人數。
  • 你可以運行自己的全節點並驗證整個區塊鏈。

但是,絕大多數使用者無法獨立驗證:當他們的助記詞生成時,隨機數生成器是否提供了足夠的熵。

復原助記詞看起來可能完全隨機,設備可能會正常運作好幾年,錢包可以毫無問題地接收和發送交易。這一切都無法證明最初的隨機性在密碼學上是健全的。

如果熵值過弱,復原助記詞就無法獲得人們通常與比特幣私鑰聯繫在一起的那種龐大理論搜尋空間的保護。它所受到的保護,僅限於那個有缺陷的生成器所能產生的極小型輸出集合。

一旦攻擊者掌握了該生成器的模式,看似堅不可摧的安全性就會瞬間崩塌。

這並非弱隨機性第一次危害加密貨幣使用者。過去的 Milk Sad 漏洞揭露了 Libbitcoin Explorer 因極度不足的熵所生成的錢包,攻擊者在網路上瘋狂利用了這些私鑰。近期,研究人員又披露了 Ill Bloom 類型的錢包資金抽離事件,原因同樣出自弱隨機數生成器創建的復原助記詞。雖然軟體與情境不同,但結構性的失敗如出一轍:一個秘密看起來隨機,卻是由可預測的過程所產生的。

這種事將來還會再次發生。

不一定會發生在同一家製造商,不一定會發生在同一款設備。但總有一天,在某個地方,另一個實作版本會出錯。

唯一持久的應對之道,是構建一種託管架構:讓單一隱蔽的實作失敗,無法演變成毀滅性的徹底損失。

哪裡出了問題

有些人會利用這次事件聲稱「自主託管已經失敗了」。

它沒有失敗。

自主託管並非只有一種架構。

由一台設備生成、控制單一錢包的單一助記詞,是自主託管。

使用來自不同製造商的獨立設備建立「三取二(2-of-3)」多重簽名,也是自主託管。

這兩者所承擔的風險完全不可同日而語。

這次事件證明的不是「個人沒有能力持有比特幣」,而是證明了:將重大財富集中在單一秘密背後,會創造出一個最終的單點故障(Single point of failure)——即使持有者嚴格遵循了所有被認可的規則。

底層協定沒有失敗。比特幣沒有撤銷任何有效的交易。區塊鏈網路沒有搞錯所有權。

有效的私鑰完成了簽名,而網路完全按照設計執行了該簽名。

失敗的是圍繞著所有權所建立的架構。

單簽託管假設了:單一密鑰是健全的、單一軟硬體實作是健全的、且生成秘密的過程是健全的。只要其中任何一個假設失效,在缺陷與資產之間,就没有任何第二重批准防線。

一個設計合理的多重簽名(Multisig)架構能改變這一點:光是知道一把被破解的私鑰是不夠的;光是破解一台設備是不夠的;光是單一製造商出錯也是不夠的。

這不是對自主託管的否定。這才是真正嚴肅看待自主託管。

交易所託管並未因此獲得洗白

目前有另一種觀點正在抬頭,而它同樣危險:「這證明了人們應該把比特幣留在交易所。」

這根本無法證明這一點。

平心而論,如果有人把這筆資產放在一個始終保持財務健全且誠實的合格託管商那裡,他今天確實依然擁有這些幣。求真求實的態度要求我們明確承認這一點。

但這絕不意味著交易所託管是安全的。

這只不過是用一種風險類型去交換另一種風險類型罷了。

歷史並非虛構。Mt. Gox、FTX、Celsius、Voyager、BlockFi 等無數歷史教訓,各自展示了同一個真理的不同版本:由中間人持有的加密貨幣,始終暴露在中間人的償債能力、內部控制、利益動機、治理水平及法律處境之中。

倖存下來的託管商在事後看來總是理所當然地安全。而在倒閉之前,那些失敗者往往看起來也同樣聲譽卓著。

交易所託管並沒有消除信任,它只是把信任轉移到了一家機構身上——而存款人對該機構內部狀況的審計能力,甚至可能比對一個硬體錢包還要低。

當加密貨幣放在交易所時,持有者在失去存取權的那一刻之前,可能根本無法知道這些資產是被完全儲備、被抵押、被借出、被混用、被凍結,還是面臨著比自己優先級更高的債權要求。

所以,不:這次事件絕不能成為將改變人生的重大金額留在交易所的藉口。

它也不該被用來當作恐嚇人們遠離自主託管的工具。

正確且更加成熟的結論是:

無論是託管機構還是簽署設備,都不配獲得無條件的信任。

我們的任務不是去尋找一個「風險完全消失」的神聖之地。

我們的任務是識別風險存在於何處,限制任何單一失敗所能造成的破壞程度,並建立一個能夠在單一元件失效後依然存活的結構。

只要設計得當,自主託管依然是長期持有重大比特幣資產的最佳歸宿。

但單簽集中託管並非自主託管的最高形式。它只是最簡單的形式。這兩者絕不能混為一談。

現在誰應該採取行動

根據目前回報的曝險情況,任何助記詞是在受影響的 COLDCARD 韌體關注點上記錄生成的人——尤其是上述的 Mk3 版本——都應該嚴肅看待此事件,特別是在該錢包為單簽且使用強大、獨特的 BIP-39 密語(Passphrase)的情況下。

技術調查仍在積極進行中,因此受影響的使用者應依賴製造商最新的官方指引與可靠的安全研究,而非僅憑社交媒體上的摘要。

但任何有合理理由懷疑助記詞可能洩露的人,都不該在資金仍冒風險時等待完美的確定性

在更新後的韌體(Mk3 4.2.0 或更高、Mk4/Mk5 5.6.0 或更高、Q 1.5.0Q 或更高)或您信任的其他設備上,生成一個全新的助記詞。

根據 Coinkite 的說明,更新至 4.2.0 後,空的 Mk3 可以透過手動輸入至少 99 次公正、獨立、私密的擲骰子結果來構建替代助記詞,從而完全繞過設備內部的隨機數生成器。

不要將舊的助記詞還原到新設備上並稱之為遷移。還原舊助記詞只會完整複製舊有的漏洞。

直接在目標簽署設備上驗證新的接收地址。轉移全部的曝險餘額,切勿在您認為可能受損的金鑰上故意留下零頭(Change)。

然後,識別並重新定向每一個可能繼續向舊錢包發送比特幣的系統:

  • 交易所提款地址
  • 定額定投(Recurring purchases)
  • 礦池收益發送
  • 客戶發票
  • 儲存的地址簿
  • 自動轉帳與固定指令

否則,受損地址在原始餘額轉走後仍會繼續接收資金,讓一場已經結束的災難變成持續性的「捐款」。

使用 BIP-39 密語(Passphrase)的使用者可能會獲得額外的保護,具體取決於該密語是如何創建與使用的。然而在精確的攻擊機制調查清楚之前,不要把潛在保護誤認為絕對的安全。Coinkite 聲稱,使用至少 50 次公正、獨立、私密的擲骰子生成的助記詞,單就此漏洞而言不被視為處於風險中。

當潛在損失金額重大時,請直接進行遷移。

如果不幸檢查時資金已被轉走,在做任何事之前請先記錄一切:受影響的地址、清空資金的交易 ID(TxID)以及時間戳記。這些記錄是未來進行分析、報案及任何可能追討的依據。隨後,將剩餘資金從該助記詞派生的每一個地址中移走(包括目前仍顯示有資金的地址)。

此類事件往往會吸引冒充者。任何製造商、錢包提供商或交易所絕不會向您索取助記詞,不會主動透過私訊聯繫您,也不會要您將資金發送到他們提供的地址。遷移過程僅發生在您已經控制的軟體內部、進入您自己掌握密鑰的錢包中。任何主動聯繫並聲稱協助您轉移加密貨幣的人,都是想騙走您的資產。

如果您的比特幣存放在包含受影響金鑰的多簽錢包中,在準備遷移期間有一個更快的臨時保護步驟(Nunchuk 本週公布了該機制):從某個地址花費資金會永久在鏈上揭露其公鑰,攻擊者重構受影響的助記詞後,僅凭公開資料就能比對並定位該地址。如果您從未花費過資金的地址則不具備這種直接曝險。將資金從先前使用過的地址中移出,能在幾分鐘內堵住最容易被利用的漏洞。

如果您是在幾個月或幾年後看到這篇文章,請不要以為危險是一模一樣的。具體的技術漏洞可以被修復,但結構性的教訓永不過期

我正在做出什麼改變

多年來我一直推薦 COLDCARD。

在 2021 年的短暫期間,我也曾是 COLDCARD 的推廣合作者(Affiliate)——這是我與 Coinkite 唯一的商業關係。在該關係之前、期間以及結束很久之後,我都一直在推薦這款產品,因為我當時認為它是市面上最強大的純比特幣(Bitcoin-only)簽署設備之一。

比特幣社群中許多非常嚴肅且受人尊敬的人士也達成了相同的結論。

當時的推薦並非失去理性,而是基於當時所能獲取的最佳資訊。

但這次的經歷徹底改變了我對「負責任託管」的認知。

不是因為每台 COLDCARD 都不安全,不是因為現在應該懷疑所有的硬體錢包,更不是因為自主託管是一個錯誤。

它改變我的觀點是因為:任何單一製造商、任何單一實作、任何單一設備,都可能以使用者無法察覺的方式默默出錯。

沒有任何聲譽可以消除這種可能性。沒有任何品牌應該作為唯一的授權點,托起無限數量的比特幣。

我正在採納三條原則:

原則一:重大資產採用「多廠商多重簽名」(Multi-vendor Multisig)

如果法定人數中包含相關聯的風險,光是多重簽名也是不夠的。

如果「三取二」架構中的兩把私鑰是由同一個型號、同一個韌體家族或同一家製造商生成的,它依然集中了實作風險。製造商範圍內的缺陷可能會影響法定人數中的一把以上的私鑰。

重大資產應使用來自不同製造商的獨立簽署設備。

這樣做目的不是追求視覺上的多樣性,而是追求失敗的獨立性(Failure independence)

如果一家廠商被破解、出錯、被脅迫、存在缺陷或純粹弄錯了,這場意外最多讓多簽法定人數失去一把金鑰——而不是失去整個錢包。

沒有單一設備能夠獨自動用資金,沒有單一設備能夠獨自弄丟資金。

原則二:為每個託管層級設定書面上限

一個只由「用途」定義而沒有「最高金額」限制的錢包,終究會發生「風險漂移(Risk drift)」。這件事就發生在我身上。

一個錢包一開始可能只是用來存放日常資金的便利場所。隨著時間推移,存款陸續進入,每一次單獨的轉帳看起來都很合理,沒有哪一筆大到足以觸發整個架構的重構。最終,錢包裡積累的金額,徹底脫離了保護它的底層架構所能承載的能力。

沒有最高配額限制的錢包,不叫階梯式託管,那是對風險漂移的公開邀請

每個錢包都應該有明確的書面上限。當餘額超過該上限時,超出部分應自動轉移到更強大的結構中。不是等到方便的時候,不是等下一筆存款進來後,也不是等市場上漲之後。而是自動執行

託管架構需要風險控制上限,這與投資組合需要風控的理由完全相同。危險極少發生在某個戲劇性的單一決定中,它往往累積於一連串單獨看起來都無害的決定之中。

原則三:單簽僅適用於「承受得起損失」的金額

這不是一條針對 COLDCARD 的規則,這不是一條針對任何特定製造商的規則。這是一條關於「結構」的規則。

單簽意味著:單一秘密可以授權一切。因此,單一未被發現的缺陷可以奪走一切。

對於日常消費餘額、戰術性持有、旅遊錢包,以及損失後不會實質改變你生活的金額,這種折衷是可以接受的。但對於足以改變人生的重大金額,這絕對不可接受

單簽不是用來存放「你預期會失去」的金額,而是用來存放「即使失去也不會毀掉你」的金額。

僅僅「擁有」是不夠的

多年來我一直寫道:比特幣是無需用於即時開支的資本的終極歸宿。我至今依然深信不疑。

這次事件完全沒有改變比特幣的貨幣特性:沒有改變其固定總量,沒有改變其無發行者的本質,沒有改變結算的終局性(Finality),也沒有改變無須許可即可擁有資產的能力。

但是在「擁有比特幣」與「正確持有比特幣」之間,存在著巨大的鴻溝。

本週,我以極其高昂的代價學到了這個教訓。

協定沒有失敗。比它更深的一層在暗中失敗了——甚至可能在偷竊顯現的數年之前就已經失敗。

我手握助記詞,我擁有設備,我有妥善備份,我嚴格遵守了規則。

但我唯一沒有的,是一個能在「一切所依賴的那唯一金鑰失效後」依然存活下來的架構。

自主託管並不意味著「什麼都不信任」。它的真正涵義是:明確決定信任保留在何處,並確保沒有任何單一被信任的元件能夠帶走一切。

這就是給我們的教訓:

  • 不是放棄自主託管。
  • 不是把你的未來交給交易所。
  • 不是去尋找一個「永遠不會出錯」的神級製造商。
  • 建立一個「即使單一製造商出錯,你依然能存活下來」的架構。
  • 建立一個「即使單一金鑰暴露,也不足以動搖資產」的架構。
  • 建立一個「沒有任何單一缺陷能成為最終絕響」的架構。

除此之外的一切,都不過是在賭「某一底層永遠不會失效」。

而這場賭局,我再也不會參與了。

The Bitcoin Intelligence Essays — 持續探索讓比特幣至關重要的核心原則。
結構性比特幣分析,每週日發布 — 完整紀錄請見 btcintelligencereport.com/issues/

2026年8月1日 星期六

當晶片隨機數不再可靠:從 Coldcard 低熵漏洞看主要冷錢包廠商的「熵安全」哲學

當晶片隨機數不再可靠:從 Coldcard 低熵漏洞看主要冷錢包廠商的「熵安全」哲學

標籤:加密貨幣安全 冷錢包 硬件錢包 Bitcoin 密碼學

2026年7月31日發生的 Coldcard 低熵漏洞事件,無疑給整個加密貨幣硬體安全領域敲響了警鐘。由於韌體在庫連結(libsecp256k1)時的編譯配置錯誤,導致多款機型產生的助記詞熵值(Entropy)大幅低於密碼學標準(甚至低至 72 位元以下),引發離線暴力破解的安全危機。

這起事件暴露了一個核心問題:「即使配備了高規格的安全晶片(Secure Element),我們還能完全信任硬體產生的隨機數嗎?」


一、 各大冷錢包廠商的技術立場與架構回應

面對「硬體 TRNG 故障或後門」的風險,產業內各大廠商展現了不同的防禦哲學與技術路線:

廠商 / 品牌 核心安全立場與架構 物理熵 / 外部熵支援機制
Keystone 主打開源與多源熵混合。採用獨立三晶片架構(3 SE),強調可重複編譯與社群稽核。 支援(螢幕觸控輸入)
可在螢幕上記錄擲骰子點數(Dice Roll)直接注入物理熵。
BitBox 強調「多源熵防禦」。預設強制結合 MCU TRNG + SE TRNG + 設備金鑰 + 用戶熵。只要單一熵源正常即可保證安全。 支援(微型觸控列)
允許用戶設定時透過微型觸控列手動注入額外熵值。
Trezor 強調「可重複編譯驗證(Reproducible Builds)」與程式碼審查,防止編譯鏈層面的隱形漏洞。 支援(SD 卡/軟體端)
支援透過 MicroSD 卡或命令行工具導入用戶自訂熵。
Blockstream Jade 主張物理世界噪點。認為單純依賴晶片 TRNG 存在密碼學盲點,鼓勵將實體世界變數導入金鑰生成。 支援(相機與骰子)
支援拍攝環境物理噪點(相機雜訊)或手動輸入擲骰子結果。
Ledger 堅守閉源高規格安全晶片(EAL6+),強調晶片 TRNG 通過 FIPS 140-2 / AIS-31 測試,硬體認證才是防禦關鍵。 不支援
完全由安全晶片內部生成隨機數,不開放用戶注入外部物理熵。
Tangem 採取 Seedless(無助記詞)架構,私鑰直接在晶片內生成且永遠不可導出,靠多張卡片互相備份。 不支援
因無螢幕按鍵且採用無助記詞設計,無法輸入外部物理熵。
CoolWallet 薄卡設計(CC EAL6+ SE 晶片),私鑰生命週期被嚴格鎖死在晶片內。支援導出助記詞,但簽署僅在晶片內完成。 不支援
受限於薄卡物理形態(僅單色電子紙與單一按鈕),無法進行擲骰子等複雜熵輸入。

二、 業界兩大安全哲學的對立

從上述廠商的表態可以看出,冷錢包產業已分化為兩大陣營:

  1. 極客 / 密碼學派(Keystone, BitBox, Trezor, Blockstream):
    核心邏輯是「不信任任何單一晶片或韌體」。他們認為硬體晶片可能包含後門,編譯器也可能出錯。因此必須透過開源審查,並提供用戶輸入物理熵(擲骰子)或多源熵(MCU + SE)混合的機制。
  2. 硬體隔離 / 防人為失誤派(Ledger, Tangem, CoolWallet):
    核心邏輯是「不信任用戶的人為操作」。他們認為人為擲骰子(骰子不公、輸入錯誤)或抄寫助記詞帶來的安全性漏洞,遠大於安全晶片故障的風險。因此選擇將私鑰與隨機數完全交給符合最高安全認證(EAL6+)的硬體 TRNG 處理。

三、 使用「擲骰子(Dice Roll)」輸入物理熵真的萬無一失嗎?

為擺脫對黑盒晶片的依賴,越來越多進階用戶選擇透過擲骰子來輸入物理熵。從密碼學角度來看,一顆標準的六面骰(D6)每次拋擲可提供約 2.585 位元的熵:

  • 50 次有效拋擲:可獲得約 129 bits 熵(滿足 12 字助記詞需求)。
  • 99 次有效拋擲:可獲得約 256 bits 熵(滿足 24 字助記詞需求)。

⚠️ 物理熵實務上的隱患與盲點:

  • 韌體哈希邏輯漏洞:若設備韌體有惡意後門或程式碼邏輯寫錯,即使用戶輸入了完美的骰子熵,韌體在將骰子熵與設備熵進行混合時仍可能丟失強度。
  • 物理偏誤:普通的桌遊骰子常有質量分佈不均的問題,導致拋擲結果並非完全隨機(建議使用賭場級精密骰子)。
  • Checksum 依賴:BIP-39 助記詞的最後一個字包含校驗碼(Checksum),依然需要透過設備晶片運算生成。

四、 結論:打造終極安全的最佳實踐策略

Coldcard 事件給我們的教訓是:「單一設備、單一供應商的防護永遠存在單點故障(Single Point of Failure)的風險。」

對於管理重大資產的冷錢包使用者,建議採用以下分層防禦架構:

  1. 物理熵 + 多源混合:若使用單簽,優選支援 99 次擲骰子手動輸入且程式碼開源可審查的設備(如 Keystone、Blockstream Jade)。
  2. 啟用強 Passphrase(第 25 個字):設定一個足夠強大的隨機 Passphrase(16 字元以上),這能在助記詞熵值遭硬體瑕疵削弱時,額外建立一道獨立的密碼學屏障。
  3. 跨品牌多重簽名(Multisig 2-of-3):這是對抗單一廠商韌體漏洞最徹底的手段。例如組合 Trezor + BitBox + Keystone 建立多簽,即使未來有任何一家廠商再度爆發隨機數生成漏洞,攻擊者取得單一私鑰也絕對無法轉走資產。

Coldcard 硬體錢包爆出重大亂數瑕疵,哪些機型受影響?

Coldcard 硬體錢包爆出重大亂數瑕疵,哪些機型受影響?

整理自 Block 工程團隊與 Coinkite(Coldcard 官方)最新公告,資料更新至 2026/7/31

這次出了什麼問題?(用白話講)

任何一個「錢包」的安全性,最核心的基礎就是產生私鑰時用的亂數夠不夠隨機。如果亂數不夠隨機、甚至可以被猜出來,攻擊者就能直接算出你的私鑰,錢包裡的比特幣就會被偷走。

Coldcard 硬體錢包的韌體中有一個底層程式錯誤:原本應該用晶片內建的「硬體亂數產生器」來生成私鑰,結果因為一行判斷式寫錯,系統誤判成「硬體亂數不可用」,於是自動退回使用一套軟體模擬的假亂數產生器(Yasmarang 演算法)。

這套軟體亂數的問題在於,它的「種子」(初始輸入值)來自晶片的固定序號、系統計時器等可被外部觀察或推算的資訊,而不是真正不可預測的物理亂數。只要攻擊者能掌握或縮小這些輸入值的範圍,就有機會離線重現整個亂數序列,進而反推出你的私鑰。

【最新】官方確認受影響範圍與修復版本

Coinkite(Coldcard 官方)在 7/31 發布正式公告,確認的受影響範圍比最初分析更廣,Mk4/Mk5/Q 也正式被列入受影響名單

裝置型號受影響韌體版本修復版本
Mk3v4.0.1 – v4.1.9v4.2.0 以上
Mk4 / Mk5(標準版)v5.6.0 以前v5.6.0 以上
Q(標準版)v1.5.0Q 以前v1.5.0Q 以上
Mk4 / Mk5(Edge 版)v6.6.0X 以前v6.6.0X 以上
Q(Edge 版)v6.6.0QX 以前v6.6.0QX 以上
⚠️ Standard 跟 Edge 是分開的版本序列,別被 Edge 版本號比較大搞混,一定要裝對應自己機型與版本軌道的修復版。

TAPSIGNER、OPENDIME、SATSCARD 完全不受影響,因為是完全不同的程式碼庫。

Mk4/Mk5/Q 在修復版本之前產生的種子,安全強度只有約72 位元,遠低於應有的 128 位元,官方用詞是「嚴重程度較低,但仍然嚴重(still serious)」。

關鍵提醒:判斷是否受影響,看的是「生成這組私鑰當時」所用的韌體版本,不是裝置的出廠日期或現在的韌體版本。升級韌體不會回頭修補已經產生的舊種子——一定要照下面流程重新產生新種子並搬家。

兩種可以暫緩遷移的例外情況

  • 有用「Add Dice Rolls」加骰子補充亂數:投擲 50–98 次獨立公正的骰子,等於額外貢獻至少 128 位元熵;99 次以上約等於 256 位元。只要骰子過程沒被記錄或外流,官方認為這種情況下的種子不受此次 RNG 問題影響。如果不確定自己當初擲了幾次、或骰子紀錄是否外流過,還是建議遷移。
  • 有加高強度、獨一無二的 BIP-39 passphrase:這是額外的一道防線,但短的、常見的、有規律的、或重複使用過的 passphrase 不能算安全。即使有 passphrase,官方仍建議儘快遷移到新種子。

官方遷移步驟(適用所有機型)

  1. 確認已安裝對應機型的修復韌體版本
  2. 已更新的裝置上產生一組全新種子
  3. 抄寫並核對備份,先別急著存錢進去
  4. 在裝置螢幕上驗證一個新的收款地址
  5. 先用小額做測試轉帳,確認新錢包能正常運作
  6. 測試沒問題後,才把剩餘資金全部搬過去
  7. 遷移完全確認前,舊的備份先別銷毀

如果只有一台 Mk3、沒有第二台裝置:升級到 4.2.0 後,可以在同一台機器上先驗證舊備份 → 產生新種子並驗證 → 用舊種子小額測試轉帳到新地址 → 確認無誤後把舊種子資金全部轉入新錢包,整個過程要小心在新舊種子間切換。

官方特別提醒:「遷移過程中犯錯,可能比漏洞本身造成更大損失」——急不得,每一步都要照順序核對清楚。

這會影響到哪些功能?

不只是主錢包的助記詞,同一套有問題的亂數還被用在:

  • 新建錢包種子、紙錢包私鑰
  • 種子的 XOR 分割備份
  • 裝置間複製(Cloning)、USB 加密的臨時金鑰
  • Key Teleport 傳輸功能
  • Web2FA 兩步驟驗證的密鑰
  • Secure Notes 密碼產生器
值得一提:就算你用的是多簽(multisig)方案,只要所有簽名裝置全部都是受影響的 Coldcard,這個弱點依然成立,必須至少有一把安全的金鑰在其中,才能真正發揮多簽該有的保護效果。

這篇整理自 Block 工程團隊與 Coinkite 官方公告,官方投資調查仍在進行中,正式技術報告尚未發布,後續細節可能持續更新。

資料來源:Block Engineering Blog〈Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware〉;Coinkite 官方部落格〈Mk3 Security Advisory〉,更新於 2026/7/31。

Coldcard 漏洞資金流向調查與鏈上分析

資安漏洞分析

Coldcard 漏洞資金流向調查與鏈上分析

主推文(@glxyresearch
我們根據 Block 工程師發現、並由 @clay_garrett 分享的模式,繪製了 Coldcard 漏洞的資金流向圖。
⏱ 關鍵時間視窗:
在 7 月 30 日 UTC 時間 01:10:20 至 01:51:26 之間(共 41 分鐘,區塊 960,183–960,191),共有 1,196 個地址被完全清空,總計 1,082.65 BTC(約 7,020 萬美元)。這比硬體錢包廠商公開發布安全公告早了約 30 小時。

🚨 攻擊特徵分析:

每一筆 sweep 交易都支付完全相同的硬編碼手續費 30.0 sat/vB(比當週中位數 0.4–1.0 sat/vB 高出 30–75 倍),且沒有找零輸出。這看起來像是自動化工具在使用它已經掌握的私鑰花費資金,而不是擁有者自己在移動資金。

📄 受害者地址類型:

  • 1,183 個 原生 SegWit(BIP-84)
  • 7 個 BIP-49
  • 6 個 BIP-44

與多路徑金鑰掃描(Multi-path Key Scanning)一致。



💰 收益彙整地址:
收益在幾分鐘內完成彙整,之後至今未再移動:

• bc1qq85v2c9…cu9r — 562.02 BTC
• bc1qx76cae2…fhe3 — 398.48 BTC
• bc1q8jy96fe…tp3q — 89.62 BTC
• bc1qnk4zh9q…fecp0 — 32.45 BTC (未移動)
💬 作者後續留言(依時間順序)
留言 1
雖然如果用戶不把資金從受影響的 Coldcard 生成地址中遷移出去,新的攻擊仍可能發生,但這次初始攻擊在鏈上是可識別的。請注意,本分析可能並不完整,但這是我們盡力評估初始影響範圍的結果。
留言 2 📷 附圖
這次事件最關鍵、最具辨識度的特徵是它的手續費。比特幣每天都有成千上萬筆彙整交易,單純「多個輸入匯入同一個目的地」本身是極弱的訊號(網路上每一家交易所都會產生這種模式)。讓這次事件與眾不同的是:手續費是固定常數

留言 3 📷 附圖
整個事件橫跨 6 個區塊、共 41 分鐘。中間有 3 個區塊完全沒有 sweep 活動,顯示這些交易是分批廣播,而不是持續串流發送。

留言 4 📷 附兩張圖
損失分布在數量上以低於 1 BTC 的地址為主,但在金額上則以 1–50 BTC 的地址為主。這是個人自我保管(self-custody)的典型樣貌,而非機構或交易所持有的模式。


留言 5
目前,本波攻擊中被識別出的資金正存放在以下 4 個地址:
bc1qq85v2c926eg6pgxhwp6q7lf6cnsz80qs3fcu9r
bc1qx76cae2706qd5q576feh7xq8rfcsjpf2htfhe3
bc1q8jy96fe5lf8vfugydnte3cguk92gpev7kwtp3q
bc1qnk4zh9qcnap2mycp56qjrgza3cc8ylrh8fecp0
我們正在監控這些地址。

精選文章

硬體錢包隱私指南:如何避免將 xpub 洩露給第三方?

硬體錢包隱私指南:如何避免將 xpub 洩露給第三方? 使用硬體錢包(如 Trezor、Ledger)時, 隱私洩露 是絕大多數使用者最初會忽略、但後續極為重視的議題。這篇文章將剖析預設官方軟體的隱私風險,並深入比較解決此問題的兩大核心技術方案...

熱門文章