閃電小費

2026年8月17日 星期一

Taproot 金庫:非託管式比特幣借貸究竟如何運作(Taproot Vaults How Non-Custodial Bitcoin Lending Actually Works)

 

Taproot 金庫(Vaults):非託管式比特幣借貸究竟如何運作

重點摘要(TL;DR)

過去十年間,每一種比特幣抵押貸款的運作方式都如出一轍:你把比特幣交給貸方,由他們持有,你只能祈禱他們會還給你。Celsius 沒有還、BlockFi 沒有還、Voyager 也沒有還。客戶的比特幣變成了別人的抵押品、別人的槓桿、別人的虧損。

但其實有另一種做法:把你的比特幣鎖進比特幣區塊鏈上的一段腳本(script),這段腳本精確定義了這筆資產「可以發生什麼事」——合作還款、自動清算,或者在貸方消失時你自己的逃生門。沒有裁量權、沒有資金混同、沒有再質押(rehypothecation),任何運行比特幣節點的人都能驗證。讓這一切成為可能的技術是 2021 年 11 月啟用的 Taproot,而將其用於借貸的方式,就稱為「Taproot 金庫」。

一、不斷摧毀比特幣貸方的那件事

每一家倒閉的比特幣貸方,死法都一樣:他們以「資金池託管」的方式持有客戶比特幣——把所有人的存款混進同一張資產負債表,然後做銀行會做的事:把它借出去。借給對沖基金、借給自家交易部門、借給關係企業、借給出價最高的任何人。

這種做法叫做「再質押」(rehypothecation)。它在幾乎所有地方都是合法的,幾乎所有傳統銀行都這樣運作,也是部分準備金制度的來源。在正常銀行環境中它能運作,是因為有存款保險、有央行作為最後貸款人、有數十年的監管基礎設施防止整個把戲崩盤。

但在加密借貸領域,這些全都不存在。音樂停止時,你那筆特定的比特幣已經沒了,混進了殘骸之中。你變成破產法庭上的無擔保債權人,有時只能拿回零頭,有時一等就是好幾年。

這不只是 Celsius 或 BlockFi 的問題,而是任何「由貸方自由裁量託管你抵押品」的借貸產品的結構性缺陷。唯一真正能修復它的方式,就是徹底移除裁量權。這正是 Taproot 金庫的用途。(如果你還沒管好自己的私鑰,建議先閱讀我們的冷儲存指南。)

二、Taproot 究竟為比特幣帶來了什麼

比特幣一直都有腳本。從第一天起,每個比特幣輸出(output)都由一支小程式鎖定,內容是「想花掉我,你必須證明這些事」。簡單錢包的腳本是「證明你知道這個公鑰對應的私鑰」;多簽錢包的腳本是「證明你持有 N 把指定金鑰中 M 把的簽名」。

在 Taproot 之前,複雜腳本有三個問題:

  • 公開:輸出可被花費的所有條件,從建立那一刻起就在鏈上完全可見。
  • 昂貴:複雜腳本佔用更多區塊空間,手續費更高。
  • 受限:比特幣腳本語言被刻意限制。

2021 年 11 月啟用的 Taproot 改變了這一切。一個 Taproot 輸出在鏈上看起來就像一把單獨的公鑰;複雜腳本被藏在一棵由可能的花費條件組成的 Merkle 樹裡,只有你實際使用的那條分支會在花費時被揭示。你只為用到的分支付費,其他分支保持不可見,而撰寫這些分支的語言(Tapscript)比舊版更有表達力。

實務上,你可以建立一個帶有 5 條、10 條甚至 50 條花費條件的比特幣輸出,每條各自綁定不同政策;在你真正動用某條分支之前,它在鏈上看起來就和普通的單鑰付款一模一樣。這正是「金庫」得以實現的原因。

三、金庫的概念

先忘掉實作細節。「金庫」到底是什麼意思?

金庫是一個可以用多種方式花費的比特幣輸出:每條花費路徑在不同條件下觸發,且有權觸發各路徑的當事人各不相同。

舉個簡單例子:想像一個存放家庭儲蓄的金庫,有三種花費方式:

  • 你的伴侶簽名,資金轉到雙方共同控制的提款地址;
  • 你單獨簽名,資金轉到你控制的地址,但要等 30 天的時間鎖;
  • 一位信任的家庭成員連同公證人簽名,資金可轉到任何指定地址——僅限緊急情況。

三扇門,各自有自己的政策。比特幣借貸金庫的運作邏輯完全相同。

四、比特幣借貸金庫的三扇門

一個非託管比特幣抵押貸款金庫通常有三條花費路徑:

門一:合作還款

借款人以美元(通常是穩定幣)償還貸款。貸方的簽名基礎設施驗證還款後,共同簽署一筆釋放抵押品的交易,借款人在建立金庫時指定的提款地址拿回比特幣。絕大多數貸款都應該走這條路——相當於還清房貸後拿回地契。

門二:清算

借款人的抵押品價值跌破清算門檻,或貸款到期未還。這扇門由貸方基礎設施簽名,不需要借款人簽名。腳本強制規定這條路徑只能把資金送往特定的清算地址,而不是貸方想去的任何地方。資金到達後進入荷蘭式拍賣(價格從高開始逐步下降,直到有買家接手)。價格不由貸方決定,由市場決定。拍賣所得用於償還貸款,剩餘部分退還借款人。

門三:單邊退出

這才是關鍵的一扇門。如果貸方消失了(破產、被駭、被監管消滅、或單純人間蒸發),借款人可以自行動用退出門:不需與貸方協調、不需法律程序、不需破產法庭。他們用公開工具構造交易、廣播到比特幣網路,資金就會回到自己的錢包。

有個但書:這條路徑受相對時間鎖(relative timelock)限制,通常約一年。存款後必須經過足夠時間才能走這條路。時間鎖給了貸方一個很長的窗口,在正常營運下使用門一或門二。實務上門三幾乎永遠不該被用到——它是煙霧警報器,不是大門。但這扇門確實存在、由比特幣腳本強制執行,任何人都無法推翻。

這才是比特幣抵押借貸語境下「非託管」的真正含義:不是「貸方承諾會還幣」、不是「貸方有保險」、也不是「貸方使用受監管的託管機構」——而是「即使經營貸方的所有人明天全部消失,你仍然只需一個比特幣節點和一套公開軟體,就能取回你的比特幣」。

五、上鎖的門:NUMS 技巧

每個 Taproot 輸出還有第四條我們尚未談到的路徑,稱為「密鑰路徑花費」(key-path spend)。

技術上,Taproot 輸出由一把單獨的公鑰鎖定,腳本路徑只是掛在旁邊的備案。大多數 Taproot 錢包把密鑰路徑當作便宜且隱私的轉帳方式,由各方持有對應私鑰的份額並協作簽名。

但在比特幣借貸金庫中,密鑰路徑是危險的。如果貸方和借款人共享一把可以繞過三扇門直接花費輸出的密鑰,金庫的意義就蕩然無存——貸方的簽名基礎設施可能串謀(或被攻破),在約定規則之外動用資金。

解法是使用 NUMS 內部密鑰。NUMS 代表「Nothing Up My Sleeve」(袖裡無乾坤)。做法是構造一把公鑰,並能證明沒有任何人知道對應的私鑰。標準做法是對一個已知的字串(例如「SURGE-NUMS」或「BIP-341-NUMS」)取 SHA-256 雜湊,用該雜湊值作為公鑰的 x 座標。任何人都能驗證這把密鑰確實由此生成;而沒有人能從雜湊輸出反推私鑰,因為那等於要攻破 SHA-256——那也等於攻破整個比特幣。

實際效果:構造正確的借貸金庫,其密鑰路徑花費可被證明是無用的。花費輸出的唯一方式,就是走三條腳本路徑之一。貸方即使想繞過規則也做不到。這正是區分「真正的非託管產品」與「行銷話術」的細節。在把比特幣託付給任何 Taproot 金庫之前,務必確認其密鑰路徑已被禁用。

六、誰來簽名:門檻簽名(Threshold Signatures)

門一和門二都需要貸方簽名。如果貸方是一家只有一把簽名金鑰的公司,那你只是把託管模式多包了幾層皮。金鑰外洩、內部員工舞弊、或監管機構扣押貸方基礎設施,全都成為單點故障。

解法是門檻簽名:把貸方的簽名金鑰拆分給多個獨立方,必須達到門檻人數才能產生有效簽名。3-of-5 門檻意味著 5 位簽名者中任意 3 位可共同簽署交易,但 2 位不行。簽名者之間不需要互相信任,只需遵循協議。

比特幣有幾種可用的門檻簽名方案,最常見的兩種是 FROST(Flexible Round-Optimized Schnorr Threshold)和 Lindell 2024:

  • FROST:研究充分、實作廣泛,產生的 Schnorr 簽名在鏈上與單方簽名無法區分。
  • Lindell 2024:較新,具備「可識別中止」(identifiable abort)的特性:若某位簽名者在簽名過程中作弊,協議會產生密碼學證據指明是誰幹的——當你想在經濟上懲罰作弊的簽名者時,這點很重要。

對任何宣稱採用門檻簽名的貸方,更難的問題是:簽名者到底是誰?如果 5 位簽名者全是同一家公司的員工,3-of-5 就毫無意義。要尋找獨立營運、地理分散、聲譽各自獨立的簽名者。如果貸方尚未公布簽名者名單,在去中心化主張兌現之前,先把它當作「待驗證」。

七、這對身為借款人的你意味著什麼

如果你正在考慮比特幣抵押貸款,上述架構改變了你評估產品的方式:

  • 託管是可驗證的:你應該能在比特幣區塊鏈瀏覽器(mempool.space 就可以)查到你的金庫地址,看到你的抵押品作為一筆普通 UTXO 靜靜躺在那裡。你應該能驗證腳本、看到三條花費路徑、確認密鑰路徑已禁用。如果貸方無法讓你在鏈上看到抵押品,你就回到了託管模式。
  • 再質押不可能發生:你的比特幣不在資金池裡、不會被借給交易員、從存入到取回之間完全不動——除非三扇門之一被觸發。你隨時可以在鏈上驗證這一點。
  • 逃生門是真實的:貸方消失時,你可以自己取回抵押品。事先測試它:在測試網金庫上運行單邊退出工具,確認它有效。不要只聽貸方的說詞。
  • 信任假設轉移了:你不再信任貸方的償付能力、託管安排或保險,而是信任:比特幣腳本確實如其所言運作、門檻簽名設置有足夠多的獨立簽名者以防串謀、以及(如果貸方使用的話)EVM 信貸合約已經過審計。
  • 智能合約風險是真實的:大多數非託管比特幣借貸產品用 EVM 鏈做信貸記帳層。比特幣這一側可能滴水不漏,EVM 那一側卻可能有漏洞。兩側的審計狀況都重要。
  • 清算行為不同:在託管型貸方那裡,清算通常意味著「貸方以內部能拿到的任何價格賣掉你的 BTC」;在非託管金庫中,清算通常意味著「你的 BTC 進入公開荷蘭式拍賣」。拍賣機制更透明,但也更慢。

八、真實世界的實作:Surge Credit

目前對上述架構發展最完整的實作是 Surge Credit——一個比特幣抵押的美元信用額度產品,於 2026 年 4 月上線主網公開測試版。

Surge 構建的 Taproot 金庫完全採用本文描述的三門模式:合作還款、在 Base(Coinbase 的以太坊 L2)上透過荷蘭式拍賣自動清算、以及附約一年 CSV 時間鎖的單邊退出。密鑰路徑使用由字串「SURGE-NUMS」的 SHA-256 雜湊派生的 NUMS 內部密鑰予以禁用。門檻簽名方案是 Lindell 2024,在「分散式託管網路」(Distributed Custody Network)上採簡單多數門檻。信貸記帳運行在 Base 上,USDC 透過 Circle 的 CCTP v2 跨鏈流動。

協議層的工作正由 Brandon Black(reardencode)審計——他是 BIP-349(OP_INTERNALKEY)的共同作者、BitGo 前 Taproot 錢包工程師。截至撰稿時,EVM 合約也在審計中。治理結構採雙實體模式(Amby Inc. 負責開發軟體,Surge Foundation 負責治理協議),類似 Aave 和 Morpho。

就本教學而言,Surge 是目前展示 Taproot 金庫模式如何落地為可用產品的最清晰範例:金庫構造有原則、密鑰路徑禁用正確、門檻簽名方案選擇得當、逃生門真實且可測試。類似架構的其他實作將會陸續出現,也應該出現。關於利率、條款、目前實績以及使用測試版產品的真實取捨,請參閱我們完整的 Surge Credit 評測。

九、評估任何比特幣抵押貸方時該看什麼

評估任何宣稱「非託管」的產品時的快速檢查清單:

  1. 你能在鏈上看到自己的抵押品嗎? 在 mempool.space 或任何比特幣瀏覽器查你的金庫地址。它應該是一筆由 Taproot 腳本控制的普通 UTXO,而不是貸方內部帳本上的一個數字。
  2. 密鑰路徑被禁用了嗎? 直接問貸方。答案應該是「是」,且他們應能指出 NUMS 構造方式。如果答案是否定的,或他們不知道你在說什麼,那這個金庫就不是真正的非託管。
  3. 單邊退出路徑存在嗎?你能測試嗎? 索取退出工具,若有測試網金庫就跑一遍,驗證時間鎖長度,驗證該路徑完全不依賴貸方基礎設施也能運作。
  4. 門檻簽名設置透明嗎? 有幾位簽名者?具名嗎?獨立嗎?未來有新簽名者加入的管道嗎?
  5. 審計狀況如何? 誰審計了比特幣腳本側?誰審計了 EVM 側?報告公開嗎?發現的問題修復了嗎?
  6. 清算時會發生什麼? 荷蘭式拍賣、內部出售、還是中心化訂單簿?拍賣所得流向何處?剩餘部分退還借款人嗎?
  7. 貸方的金鑰放在哪裡? 硬體安全模組(HSM)?熱錢包基礎設施?多雲?地理分散?
  8. 治理結構是什麼? 協議可升級嗎?誰控制升級金鑰?有基金會嗎?團隊除了對創投負責之外,還對誰負責?

在上述任一項失分的貸方不一定是壞貸方,但每一個缺口都是你在決定投入多少資金前應該了解的。今天在整份清單上表現良好的貸方很少見,未來幾年會逐漸變多。

十、前沿與尚待解決的問題

Taproot 金庫模式尚未完成,走向主流之前還有幾件事需要成熟:

  • 分散式託管網路(DCN)的規模化去中心化: 目前的分散式託管網路通常很小(3 到 10 位簽名者),且身分往往不透明。擴展到數十甚至數百位具公開聲譽、有經濟利害關係的獨立簽名者,仍是未解之題。
  • 跨鏈依賴: 大多數非託管比特幣貸方使用 EVM 鏈作為信貸引擎,因為單靠比特幣腳本難以處理利息累計、浮動利率計算或多資產記帳。如果信貸鏈停擺,日常借款流程就斷了——單邊退出路徑仍然可用,但即時體驗會降級。減少這種依賴是活躍的研究方向。
  • 比特幣原生的法幣出口: 目前大多數產品輸出的是 EVM 鏈上的穩定幣 USDC,要從 USDC 換成銀行帳戶裡的法幣,仍需中心化交易所或 MoonPay 這類服務。比特幣原生的法幣出口需要成熟,體驗才能像託管型貸方一樣順暢。
  • 稅務與法律明確性: 以比特幣為抵押品的非託管貸款,在法律分類上不同於傳統擔保貸款,各國稅法下的處理方式尚未塵埃落定。借款人應諮詢自己的稅務顧問。
  • 跨金庫隱私: 目前每個金庫在鏈上看起來都略有不同,老練的觀察者可能根據腳本模式或交易圖譜,把某家貸方的所有金庫聚類在一起。改善鏈上匿名集是持續進行中的工作。

結語

比特幣抵押貸款市場正處於轉型之中。定義了 2020–2022 週期的託管模式,已經吞掉了它最大的三個玩家。下一個週期建立在不同的地基上:貸方的承諾,被一段人人都能驗證的腳本和一扇沒有人能推翻的逃生門所取代。

它尚未完成:去中心化的故事還有缺口、使用者體驗還有摩擦、審計基礎設施仍在成熟。但方向是對的,而且這是唯一正對「比特幣貸方為何一再爆雷」根本原因的方向。如果你打算用比特幣借款,先搞清楚自己用的是哪種模式;如果你打算借出比特幣(或以比特幣為擔保的穩定幣),先搞清楚金鑰到底在誰手上。正確做這件事的技術今天已經存在,正確使用它的產品仍然稀少。但差距正在縮小,而「相信我們」這個答案,每經過一個週期就愈來愈不可接受。


常見問題(FAQ)

什麼是 Taproot 金庫?

Taproot 金庫是一個由 Taproot 腳本鎖定、具有多條可能花費路徑的比特幣輸出;每條路徑在不同條件下觸發,並由比特幣腳本(而非託管人)強制執行。在比特幣抵押借貸的語境中,典型金庫有三條路徑:合作還款、自動清算,以及貸方消失時借款人的單邊退出。金庫地址就是一筆普通的比特幣 UTXO,可在 mempool.space 等任何區塊鏈瀏覽器上查到。

什麼是再質押(rehypothecation)?為什麼對比特幣貸款重要?

再質押是指貸方拿走你的抵押品並用於自己的目的:借給交易員、作為自己貸款的抵押品、或以其他方式讓它暴露在風險中。這在幾乎所有地方都合法,幾乎所有傳統銀行都這麼做。在加密借貸中,它正是讓 Celsius、BlockFi 和 Voyager 破產的機制——當貸方的賭注失敗,你那筆特定的比特幣就沒了,混進他們資產負債表的殘骸裡,你成為破產法庭上的無擔保債權人。非託管 Taproot 金庫設計讓再質押在結構上不可能發生,因為你的比特幣從不離開腳本。

什麼是 NUMS 技巧?

NUMS 代表「Nothing Up My Sleeve」。在 Taproot 借貸金庫中,密鑰路徑花費是第四種可能動用資金的方式,會讓各方繞過腳本路徑。為禁用它,開發者用已知字串(如「SURGE-NUMS」或「BIP-341-NUMS」)的 SHA-256 雜湊來構造內部公鑰。任何人都能驗證這把密鑰確實如此生成,而沒有人能從雜湊輸出推出私鑰,因為那需要攻破 SHA-256。結果就是:密鑰路徑被證明無用,貸方即使串謀也無法繞過腳本。

在 Taproot 金庫中,我的比特幣可能在我不同意的情況下被動用嗎?

只能透過明確的腳本路徑,絕不會透過任何人的裁量。合作還款需要你先償還債務,然後雙方共同簽名。清算只有在你的抵押率跌破清算門檻時才會發生,且即便如此,資金也必須流經指定的清算地址和荷蘭式拍賣。除這兩種情況外,剩下的唯一路徑是你自己的單邊退出——受約一年的相對時間鎖限制。不存在任何「讓貸方直接拿走你比特幣」的路徑。

審計真的有用嗎?

有用,但僅限於公開的、近期的、由真正理解被審計技術的人所執行的審計。對 Taproot 金庫借貸產品,你至少需要兩份審計:一份針對比特幣腳本側,由比特幣協議專家(而非泛泛的加密審計公司)執行;一份針對處理信貸記帳的 EVM 智能合約側。兩份報告都應公開,且所有發現都應有修復紀錄。如果貸方聲稱有審計卻拿不出報告,就把這個說法當作未經證實。

FROST 與 Lindell 2024(Lin24):哪個門檻簽名方案更好?

兩者都在鏈上產生與單方簽名無法區分的有效 Schnorr 簽名。FROST 較老、研究更廣泛,是大多數門檻簽名部署的預設選項。Lindell 2024 較新,具備「可識別中止」特性:若簽名者在簽名過程中作弊,協議會產生密碼學證據指明是誰——當你想在經濟上懲罰作弊者時這點很重要。對借款人來說,兩者都是合理選擇,也都強過單一簽名金鑰。對任何貸方而言,更難的問題是「簽名者到底是誰」,而不是「用哪個方案」。

為什麼大多數非託管比特幣貸方使用 Base 或其他 EVM 鏈?

因為單靠比特幣腳本難以處理利息累計、浮動利率計算、多資產記帳或荷蘭式拍賣,而 EVM 鏈可以。分工是:比特幣負責在 Taproot 金庫中持有抵押品,EVM 鏈(通常是 Coinbase 的以太坊 L2 Base)負責運行信貸引擎,USDC 透過 Circle 的 CCTP 跨鏈流動。代價是 EVM 側真實的智能合約風險,以及日常借還款對該鏈正常運作的依賴。即使 EVM 鏈停擺,單邊退出路徑仍然可用。

如果貸方消失,我能取回我的比特幣嗎?

可以——如果金庫構造正確的話。單邊退出路徑正是整個設計的核心。經過相對時間鎖(通常約一年)後,你可以用公開的退出工具自行構造比特幣交易、廣播到比特幣網路,資金就會回到你的錢包。不需與貸方協調、不需破產法庭。你應該事先在測試網金庫上測試退出工具、確認它有效,而不是只聽信貸方的說詞。

2026年8月15日 星期六

冷錢包的外部熵(external entropy of cold wallet)

 

任何能猜出你助記詞背後數字的人,就擁有你的錢包。

這 12 或 24 個單詞,其實只是那個數字的可讀格式。單詞本身並不保護任何東西。真正保護錢包的,是背後的數字是否足夠隨機、足夠不可預測,讓任何人永遠無法透過枚舉的方式找到它。

硬體錢包透過安全元件或 MCU 內部的真隨機數生成器(TRNG)來解決這個問題。如果你的裝置來自可信來源,且韌體經過妥善審查,這已經是很強的答案,對大多數用戶來說,也是安全性與易用性的最佳平衡。

但有些用戶不想完全把這件事交給裝置。他們擔心硬體 TRNG 可能失效,或實作有缺陷。或者他們只是想參與這個過程,並親自驗證。

這有一個名稱:外部熵(external entropy)。你自己從物理世界生成隨機性,裝置只負責將它轉換成單詞。

問題是怎麼做。事實證明,四種常見方法並不平等。


外部熵到底是什麼

熵就是不可預測性。

助記詞之所以安全,不是因為單詞看起來亂,而是因為背後的數字太難被枚舉。真正的隨機性越多,有人暴力破解到你單詞的機會就越小。

現實世界提供了大量隨機事件。在加密錢包中,有四種反覆出現:擲硬幣擲骰子相機拍攝,以及直接從 BIP39 列表抽取單詞

你不需要密碼學學位就能比較它們。你只需要問三個問題:

  • 需要多少次操作? 次數越多,越容易出錯,也越容易讓人半途而廢。
  • 物理結果有多隨機? 是否容易產生真實偏差?
  • 能否獨立驗證? 把同樣的結果輸入第二個工具,能得到相同的單詞嗎?

記住這三個問題。我們會用它們來檢視每種方法,從你口袋裡就有的開始。


硬幣:最簡單的原理

正面是 1,反面是 0。每擲一次就是 1 個 bit。

就這麼簡單。用公平的硬幣且每次獨立:

  • 12 個單詞需要 128 次;
  • 24 個單詞需要 256 次。

硬幣隨處可見,結果也很容易記錄。遵循公開演算法,同樣的擲幣序列會在你的硬體錢包和任何驗證工具上產生相同的助記詞:證明過程中沒有被混入或篡改任何東西。

但你大概會想:真實的硬幣不是數學上的完美圓盤。浮雕、製造公差、磨損,會不會讓機率傾斜?

有人真的檢查過。一項針對 350,757 次人類擲幣的研究發現,硬幣落在起始面朝上的機率約為 50.8%。起始正面朝上,正面就稍佔優勢;起始反面朝上,反面就稍佔優勢。但只要隨機化起始面,整體比例就接近 50:50。

所以偏差不是真正的問題。

過程才是。 連續擲 256 次並準確記錄數百個結果,是對注意力和耐力的真正考驗。最重要的是避免漏記或錯記,並盡量保持擲幣力道大致一致。

我們的實用做法: 固定高度的表面,讓硬幣像跳水一樣從邊緣落下、充分旋轉後平穩落地。跳過任何明顯變形或磨損的硬幣。控制變數,硬幣就站得住。

但 256 次還是太多了。有更快的方法。


骰子:更平衡的物理熵源

一顆骰子大約等於 2.585 次擲硬幣。

每次 6 種結果而不是 2 種,意味著每次大約 2.585 bits 的資訊。把骰子想成升級版的硬幣。如果你兩樣都有,骰子能省下超過一半的工作。

骰子當然也有輕微偏差。氣泡、密度不均、磨損的邊角:這些都會微調機率。但外部熵從來就不要求數學完美。普通骰子的製造偏差,與攻擊者預測連續一百多次結果之間的差距,是巨大的。

Keystone 原生支援骰子:12 個單詞至少 50 次,24 個單詞至少 100 次。而且它會在你輸入時監控結果。如果任何一面超過總數的 30%,裝置會標記異常,提醒你結果明顯不平衡,並提示檢查骰子是否公平。

我們的實用建議: 選擇邊緣乾淨、製作良好的骰子,在平坦穩定的表面充分滾動。連續出現幾個相同數值是正常的。永遠不要因為結果「看起來不夠隨機」就重擲。電動骰子搖晃器有助於保持每次滾動的時間和力道一致。

五十次還是聽起來有點多。如果一張照片就能全部搞定呢?


相機:生成最快,但更依賴實作

一次拍攝。不用數、不用記。完成。

有些離線簽名裝置會從相機輸入生成助記詞:照片像素、感測器噪聲,或跨幀變化。就工作量而言,沒有其他方法能比。

問題在於:數據不等於熵。

一張空白牆的照片包含數百萬像素,幾乎全部都能互相預測。圖像「看起來複雜」並不代表它含有多少密碼學隨機性。一切取決於實作實際使用了哪些數據:最終照片?原始還是處理後的像素?連續預覽幀?拍攝瞬間的感測器噪聲?

嚴謹的相機方案必須明確回答這個問題:它收集了什麼,以及如何提取不可預測的部分。

還有第二個問題。骰子會留下你可以寫下來並重新檢查的數字序列。相機拍攝依賴轉瞬即逝的輸入,一旦使用就消失。你無法觀察它們,也無法驗證它們。你是在信任相機硬體、驅動和處理代碼。這不一定不安全,但卻悄悄逆轉了你想要外部熵的初衷:用自己的雙手從世界中提取不可預測性。

這就引出一個明顯的想法。如果驗證是難點,為什麼不直接跳過轉換?


隨機抽詞:直觀的過程

為什麼不直接抽取單詞?

反正你都要備份 12 或 24 個單詞。直接從列表中隨機抽出來,就沒有轉換的必要。

Entropia 是這個領域最知名的工具:1,024 個實體磁磚,每面印有 BIP39 單詞的前 3 到 4 個字母,兩面合起來覆蓋完整的 2,048 個單詞列表。你可以自己 3D 列印檔案,或購買現成套裝。

你抽到什麼就備份什麼。沒有轉換步驟,也沒有需要交叉檢查的輸出。

幾乎是。

最後一個單詞包含校驗和位元。它必須計算得出,不能抽取。所以這個方法實際上是「抽取 N−1 次」。

  • 24 個單詞: 固定前 23 個,2,048 個單詞中恰好有 8 個是有效結尾。用離線工具計算出這 8 個,然後用類似擲硬幣的方式選一個。
  • 12 個單詞: 情況更糟,最終位置有 128 個有效候選,檢查和第二次抽取都會變得繁瑣。我們完全不建議用這個方法生成 12 個單詞的助記詞。

抽取本身夠隨機嗎?只有在你的規則夠隨機,且每次都嚴格遵守的情況下才行。罐子的頂部、底部還是中間?搖多少次才算真正打亂?磁磚的哪一面算數?每次抽出的磁磚要不要放回去再抽下一個?每一個選擇都會影響結果。

可驗證性是這個方法唯一出色的地方:你直接抽出了單詞,所以沒有需要對帳的輸出。離線計算最終校驗和候選,隨機選一個,助記詞就準備好了。

但實際上:直觀是直觀,可控性卻不行。隨機性完全取決於你的混合紀律,而前期準備(列印或購買、拆分套裝、檢查重複)會堆在前面。不是我們的首選。


那麼,你該選哪個?

沒有完美的方法。只有取捨。

對大多數用戶來說,Keystone 的預設生成已經夠安全。外部熵是可選的,如果沒有控制變數就去做,反而會回到它本來要解決的問題:隨機性不足。不要把種子生成變成一種儀式。選擇你真正理解、真正信任的那一個隨機來源。

想自己提供隨機性?選骰子。容易取得、容易操作、容易驗證。

最後一件事,而且比方法更重要

你完整的擲幣序列、擲骰序列,或前 23 個單詞,都應視為敏感資訊。遠離攝影機和旁觀者操作。中間記錄不要放在手機、雲端或任何連網裝置上。驗證完成後銷毀所有中間筆記,最終助記詞只保留在紙上或金屬種子板上。

2026年8月11日 星期二

當系統走向無序:如何透過「自主託管與模組化」逃離熵增陷阱? When Systems Collapse into Chaos: Navigating "The Entropy Trap" through Self-Custody and Modularity

在熱力學第一與第二定律中,「熵(Entropy)」代表一個系統的混亂與無序程度。在一個沒有外力持續注入能量的封閉系統中,熵只會增加、不會減少——這意味著衰退與混亂不是一種可能性,而是物理上的必然。

近期由 Mickey M. Maini 著寫的《The Entropy Trap》(熵增陷阱)及相關著作在金融投資、AI 資訊科學與企業管理領域引發了廣泛討論。當一個系統龐大且複雜到一定程度時,維持其舊有平衡所需的維護成本(能量)將超過系統自身能產生的價值,系統便會落入「熵增陷阱」,面臨不可逆的相變(Phase Transition)與崩潰。

「當維持系統運作的成本高於體系產出的價值時,舊規則將會反轉。盲目依賴高度複雜的龐大中介,是面對熵增時最危險的策略。」
核心解答:如何避開熵增陷阱?
跨領域的討論最終指向同一個解法:「自主託管與模组化」。無論是在數位資產管理、AI 資料庫構建還是企業組織運作中,減少對龐大複雜系統的盲目依賴、建立能獨立運作的「負熵單元(Negative Entropy Units)」,是抵抗系統性無序最實質的解法。

一、數位資產託管:以密碼學與冷錢包構築「金融負熵」

傳統金融體系(如債券、中心化託管機構、複雜衍生品)本質上是高度依賴外部政策與中介機構維持的系統。當總體經濟進入「相變階段」,中心化機構的維護成本與監管摩擦力呈指數上升,流動性斷裂的風險隨之爆發。

實踐策略:自主託管(Self-Custody)

  • 擺脫中心化中介依賴: 將資產託管權回歸個人,透過比特幣與硬體冷錢包進行自主託管,將系統信任成本降至最低。
  • 建立獨立抗熵單元: 硬體冷錢包透過離線簽署與密碼學驗證,不依賴外部機構的營運狀況。這種架構相當於主動向個人的資產系統注入「負熵」,在外部金融網絡陷入混亂時,依然保持高度的資產控制權與抗風險韌性。

二、AI 與資料庫治理:自建伺服器(Self-Hosting)對抗「數位語意毒化」

在 AI 世代,大型語言模型(LLM)大量使用網路上由 AI 產生的合成資料進行訓練,導致「模型崩塌(Model Collapse)」與「語意毒化(Semantic Noise)」。公開網路的資訊熵急遽升高,使得搜尋、驗證與獲取真實資訊(Ground Truth)的成本變得無比昂貴。

實踐策略:在地化與自建伺服器(Self-Hosting)

  • 建構本地端知識庫: 透過自建伺服器本地端(Local)運行開源 大語言模型(LLM),定額導入高質量的原始數據(Organic Ground Truth),為企業或個人資料庫建立「抗熵防火牆」。
  • 數據淨化與防禦: 採用如 CarbonCheck 等低階統計技術來過濾 AI 產生的平庸與偏誤資料,打造不受外部公開網路「資訊熵增」污染的獨立知識系統。

三、企業組織與個人管理:簡化結構與「模組化團隊」

在組織管理領域,官僚體系與過度複雜的流程即是「熱能散失」。當企業為了控制混亂而引入過多管理層級與複雜工具時,內部溝通與維護工具的成本反而超過了業務產出,組織便落入了自我消耗的熵增陷阱。

實踐策略:模組化與系統裁減(System Pruning)

  • 模組化架構(Modular Structure): 將龐大組織拆解為能高度授權、獨立運作的小型模組化團隊。小單元具備極高的適應力,能有效降低內部摩擦力。
  • 定期進行系統裁減: 個人與企業應定期審視工作流,砍掉不必要的軟體工具與冗長會議,保持架構的極簡與自主性。

三領域「抗熵解法」對照表

領域 面臨的「熵增陷阱」 獨立運作的「負熵單元」解法
數位資產管理 中心化機構信用風險、流動性斷裂 硬體冷錢包自主託管(密碼學去中心化)
AI 與資料庫 合成資料充斥、模型崩塌與語意毒化 自建伺服器(Self-Hosting)與本地端私有知識庫
企業與個人管理 官僚化、流程過度複雜、溝通內耗 模组化小團隊與定期系統裁減(System Pruning)

結語:從「盲目依賴」走向「自主掌控」

面對無法避免的系統性熵增,試圖維持舊有龐大體系的穩定往往代價高昂且收效甚微。真正的解決之道,不在於打造一個更龐大、更複雜的控制系統,而是在於降低對外部中介的依賴,主動建立能夠獨立運作、自我維護的負熵單元

無論是掌握資產私鑰、建構本地端資料庫,還是保持組織的模組化極簡,掌握「自主權(Self-Sovereignty)」都是我們在動盪時代避開熵增陷阱、實現長期韌性的核心底氣。

2026年8月9日 星期日

解決比特幣自主託管的三難困境 (Solving Bitcoin's Self-Custody Trilemma)

解決比特幣自主託管的三難困境 (Solving Bitcoin's Self-Custody Trilemma)

作者:Luke Childs | 發布時間:2026 年 8 月 7 日 | 原文來源:lu.ke

上週,攻擊者開始清空 Coldcard 錢包。由於一個韌體漏洞導致其隨機數生成器(RNG)變得可預測,攻擊者完全不需要接觸實體設備,就能重新推算並生成種子詞(seed phrase)。目前損失金額已超過 1.3 億美元,且仍在持續上升。

我的種子詞最初就是在受影響的 Coldcard 上生成的。我之所以沒有損失畢生積蓄,唯一的理由是:多年前在設定該設備時,我拒絕完全信任它的隨機數生成器。我當時在 MacBook 上生成了 256 位元的熵(entropy),拋硬幣 256 次,並將這些熵全部混合輸入到 Coldcard 本身的熵之中。在此之前,我還做了一次測試演練,從頭重寫了 Coldcard 的種子衍生邏輯,以驗證我的額外熵來源會被正確地組合。

15:57 接下來幾天我會逐漸把資金轉過去
15:57 在 Node.js REPL 中用 JavaScript 重寫了 Coldcard 的種子衍生邏輯,包括加入擲骰子功能
15:58 然後做了一次模擬演練,將種子短語複製到 Node.js REPL 中,檢查擲骰子數值是否被可驗證地加入,最後在我的筆電上得到了相同的種子
15:58 接著清除所有資料,並在完全不輸入進筆電的情況下進行了正式操作
15:58 獲得了一個由 Coldcard 生成的 256 位元種子
15:59 然後從筆電的系統隨機數生成器(SRNG)生成了 256 位元的熵,編碼為 99 個 1-6 的字元,並輸入到 Coldcard 的擲骰子區塊
15:59 接著拋硬幣 256 次,正面輸入 1(相當於骰子點數 1),反面輸入 2(相當於骰子點數 2)
16:01 因此,我的最終種子短語是由三個完全獨立的 256 位元熵來源雜湊組合而成的:
• 來自 Coldcard 內部 SRNG 的 256 位元
• 來自 MacBook 透過 Node.js crypto.randomBytes 生成的 256 位元
• 來自宇宙(拋硬幣)的 256 位元
16:02 整個過程中我也把窗簾拉得嚴嚴實實,以防那些討厭的間諜衛星(笑)
【圖解翻譯】5 年前創建 Coldcard 種子時發給朋友的對話記錄

要避免損失畢生積蓄,居然需要達到這種「偏執狂(paranoid schizophrenia)」級別的防範,這簡直荒謬至極。任何人都不應該被逼著做到這種地步。

直接原因是一個韌體 bug。但根本原因是:我們整個加密貨幣行業的標準建議,把使用者的全部積蓄都押在單一設備上,並盲目祈禱該設備的硬體、韌體、供應鏈和隨機數生成器永遠完美無瑕。

大家現在都在問:我們要如何防止這種悲劇再次發生?要回答這個問題,你必須先理解為什麼目前的每一種方案都是有缺陷的。

比特幣自主託管的三難困境 (Bitcoin's Self-Custody Trilemma)

今天,你只能三選二。市場上沒有任何一個自主託管方案能夠同時滿足這三個特性。讓我們逐一檢視現有的選擇:

安全 (SECURE) 易用 (EASY TO USE) 無須信任 (TRUSTLESS)
【圖解】自主託管三難困境基本模型

1. 單簽 (Singlesig: 熱錢包或單一硬體錢包)

單簽具備無須信任易用性(一台設備,點擊即可支付)。但它存在巨大的單點故障(Single Point of Failure)。一次漏洞、一次偷竊,或一次不良的備份,就會導致資產全毀。上週絕大多數 Coldcard 受害者都位於三角形的這條底邊上,並因此損失了畢生積蓄。

安全 (SECURE) 易用 (EASY TO USE) 無須信任 (TRUSTLESS) 單簽 (Singlesig)

2. 多廠商多簽 (Multivendor Multisig)

多簽兼具安全性無須信任。但它的使用體驗極其痛苦:需要管理多台設備、多個種子詞備份、多個安全存放地點、多個 PIN 碼,還要每年進行巡禮以檢查設備是否損壞。如果把這種方案推薦給普通人,因操作失誤和帳號鎖死造成的資金損失,最終會比駭客盜竊的還多。這對大多數人來說不是一個現實的選擇。

安全 (SECURE) 易用 (EASY TO USE) 無須信任 (TRUSTLESS) 多簽 (Multisig)

3. 協同託管 (Collaborative Custody,如 Casa, Bitkey)

協同託管(例如 Casa 和 Bitkey)讓事情變得有趣。Casa 讓多簽變成了普通人真正能用的產品。Bitkey 在用戶體驗上更近一步:無種子詞,手機可以在硬體預先授權的限額內直接支出,只有大額提款才需要碰硬體錢包。這是感覺像熱錢包的冷儲存。

問題在於信任模型。託管服務商持有其中一枚協同簽署金鑰,且控制著手機 App 的更新管道。一次惡意 App 更新,他們就能掌握 3 枚金鑰中的 2 枚。我並不是說這很可能發生——他們顯然是聲譽良好的公司。但試想一下,如果發生類似行政命令 6102(Executive Order 6102,強制沒收黃金/資產)的事件,私有託管被定為非法,政府強制要求公司配合沒收資產,他們的員工是不會為了保護我的資產而替我去坐牢的,我也不能這樣要求他們。

安全 (SECURE) 易用 (EASY TO USE) 無須信任 (TRUSTLESS) 協同託管 (Collaborative)

三角形的三條邊,代表了目前所有解決方案被迫做出的三個妥協。這就是自主託管的三難困境。

介紹 Anzen:破解三難困境

自 Coldcard 事件爆發以來,我和許多人一樣徹夜難眠。我一直在思考如何徹底防止此類事件再次發生。我相信我設計出了一種全新的錢包架構,機能同時滿足自主託管三難困境的三個頂點。

Anzen 的設計目標是極度易用且極難出錯——幾乎不可能弄丟資金。它具備與「2-of-3 多廠商多簽」同等的安全性,使用體驗卻像熱錢包一樣簡單,同時保持完全的無須信任(Trustless),無需任何第三方參與。

安全 (SECURE) 易用 (EASY TO USE) 無須信任 (TRUSTLESS) ANZEN

這是一個金庫(Vault)架構,完全可以在當前的比特幣網路上運行。不需要第三方協同簽署者、不需要伺服器、不需要軟分叉、不需要新的 Opcode。完全由比特幣的共識規則進行無須信任的強制執行。

Anzen 只使用兩枚金鑰:一台手機,和一個硬體錢包。金庫就是你的冷儲存;手機則同時充當日常熱錢包與金庫的協同簽署者。攻擊者必須同時攻破這兩枚金鑰才能盜走資金。

Anzen 金庫腳本邏輯(Vault Script):
手機 + 硬體錢包 ───> 立即解鎖 (Immediately) 或 (OR) 手機單獨 ───> 14 個月後解鎖 (after 14 months) 或 (OR) 硬體錢包單獨 ───> 15 個月後解鎖 (after 15 months)

Anzen 金庫透過組合上述腳本與一系列預簽名的時間鎖交易鏈(Presigned Timelocked Transactions),實現了比特幣初衷中的可程式化貨幣功能。它支援:

  • 每月額度 (Monthly allowances): 每個月,有一筆預先設定好的固定金額釋放出來。手機可以單獨將其從冷儲存中提取到內建的熱錢包中。
  • 緊急提款 (Emergency access): 手機可以隨時發起預先設定的大額提款。提款觸發後需要等待 1 週的延遲(1-week delay),在此期間可以隨時被撤銷。如果偷車賊偷了你的手機並觸發緊急提款,這只相當於響起了長達一週的警報,讓你隨時可以關閉並阻斷提款。
  • 撤銷機制 (Revocations): 每一個預授權的每月額度都可以被隨時、永久地撤銷,並將資金回滾重置回冷儲存中。

可以把這想像成支票帳戶儲蓄帳戶:熱錢包是你的支票帳戶,金庫是你的儲蓄帳戶。每月額度就像是每個月 1 號從儲蓄帳戶自動轉帳固定金額到支票帳戶。緊急提款就像是一筆需要 1 週時間審核交割的大額轉帳申請,在此期間你可以隨時取消。

每年一次(最好在每年同一天),你在硬體錢包上重新核准金庫政策。這會自動觸發手機與硬體錢包之間的簽署儀式,滾動更新金庫(重置時間鎖),並預先授權未來一整年的支出額度。

年度簽署儀式 (Annual Ceremony) 手機 + 硬體錢包 · 每年一次 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 緊急提款 1 週延遲 【圖解】任何預授權均可隨時撤銷,回滾回冷儲存

在一年的其餘 364 天裡,你只需要使用手機。這就是核心價值所在:擁有熱錢包的操作體驗,同時享有冷儲存的背後保障。

為什麼這些主張成立? (Why the claims hold)

我這裡做出了非常強烈的主張,但我相信每一個主張都是精確且相對容易驗證的:

安全性媲美 2-of-3 多簽: 在 2-of-3 多簽中,攻擊者需要攻破 2 台設備。安全性取決於你最脆弱的兩台設備。Anzen 要求攻擊者同時攻破位於完全獨立設備上的兩枚完全獨立的金鑰。這是相同的門檻,但需要管理的設備更少。且與 2-of-3 多簽一樣,Anzen 在單一金鑰丟失或洩漏時依然安全。Anzen 甚至具備可選的社交恢復路徑,即使兩台設備同時遺失也能恢復。這比 2-of-3 多簽具備更強的抗遺失能力。

發生何種異常狀況 (What goes wrong) 你該怎麼做 (What you do) 攻擊者能獲得什麼 (What the attacker gets)
手機遺失、損壞或被盜 從加密雲端備份復原,幾分鐘內搞定 一台鎖定的手機。什麼也拿不到。
硬體錢包遺失或被盜 靠每月額度維持生活;待手機的 14 個月時間鎖到期後,恢復整個金庫 一個鎖定的設備。什麼也拿不到。
手機金鑰遭攻破/洩漏 從備份復原,取消所有懸而未決的提款,轉移資產至新金庫 最多只能拿到當時已存在手機熱錢包內的餘額
硬體錢包金鑰遭攻破/洩漏 你的手機解鎖日期比攻擊者早整整一個月(14 個月 vs 15 個月)。直接轉移資金,你在競賽中獲勝 什麼也拿不到(只要你在這一個月的領先期內採取行動)
兩台設備同時遺失 使用可選的社交恢復路徑復原
兩枚金鑰同時被同一個攻擊者在同一時間視窗內攻破 資產全失(這是所有頂級架構人都會失守的極限門檻) 全部資金

你真的必須非常「努力」才有可能在 Anzen 中弄丟資產。只要你不要蒙著眼睛、張開雙臂走在大街上,一手拿著解鎖的手機,另一手拿著解鎖的硬體錢包,你就是安全的。

無須信任 (Trustless): 沒有第三枚金鑰、沒有協同簽署伺服器、沒有掌握資金控制權的公司更新管道。連恢復機制都不增加任何信任假設:雲端備份是你的手機金鑰,並經過加密,只有你的硬體錢包可以解密。社交恢復只是在雲端增加另份副本,加密至信任聯絡人的金鑰:他們不持有任何資產,甚至不知道自己是你的恢復聯絡人,直到你告訴他們。他們僅僅是協助你解密雲端備份。即使恢復出了金鑰,仍需等待金庫的時間鎖到期。

所有資金流向均寫入你可以親自審閱的比特幣腳本中,或由你自己的硬體簽署。沒有任何人能被法院傳喚來沒收你的錢包,因為沒有其他人參與其中。

易用 (Easy to use): 設定良好後,硬體錢包每年只需要核准一次。其餘所有操作都在手機上完成。這比單簽硬體錢包還要省力(單簽硬體錢包每次支出都需要手持設備)。日常使用中,Anzen 的體驗無限接近行動熱錢包。

「但是預簽名交易聽起來很複雜」

底層技術確實複雜:年度簽署儀式會將金庫拆分為多個區塊,並預先簽署一整套結構嚴密的交易。但這些複雜性完全不需要呈現在使用者面前。這純粹是一個工程問題,且完全可解。就像沒有人需要理解 Diffie-Hellman 金鑰交換演算法才能透過 HTTPS 瀏覽網頁一樣,也沒有人需要理解如何管理預簽名交易鏈才能核准 Anzen 金庫政策。

真正的缺口在於硬體:目前的硬體錢包都不支援這類設計,因為它們都是圍繞著「簽署這筆交易(sign this transaction)」這一原語建立的。我們需要的原語是:「核准此政策(approve this policy)」。手機草擬計劃,硬體錢包的螢幕用通俗易懂的語言顯示全部內容。硬體錢包上的金庫政策審核畫面,對於 Anzen 的意義,就像瀏覽器網址列上的綠色鎖頭對於 HTTPS 的意義一樣。

【圖解畫面】按下一個按鈕即可預先簽署一整年的交易
以下為硬體錢包輸出的預簽名交易結構 (Output Structure)
鏈上 UTXO: 12 個月額度 (各 0.1 BTC) 預簽名交易鏈
1 月額度 (0.1 BTC) 1月1日生效 │ 隨時可撤銷 (立即生效)
2 月額度 (0.1 BTC) 2月1日生效 │ 隨時可撤銷 (立即生效)
3 月額度 (0.1 BTC) 3月1日生效 │ 隨時可撤銷 (立即生效)
... (4月 至 11月 邏輯完全相同) ...
12 月額度 (0.1 BTC) 12月1日生效 │ 隨時可撤銷 (立即生效)
鏈上 UTXO: 0.9 BTC (剩餘儲蓄金庫) 緊急處置套件
1. 緊急觸發交易 (Emergency Trigger): 立即生效
✔ 0.5 BTC 緊急提款: 觸發後 1 週解鎖生效 [提款]
✖ 0.5 BTC 緊急取消: 1週延遲期間隨時可阻斷撤銷 [攔截]
0.4 BTC 找零資金: 找零返回金庫 (Change back to vault)

金庫未來十二個月所需的所有交易,均透過一次按鍵完成簽署:每月額度、可取消額度的撤銷交易,以及緊急交易包。手機加密儲存這些交易並用其運行金庫,硬體錢包則放回抽屜,直到明年同一天前都無需使用。

我們下一步該怎麼走? (Where do we go from here?)

這不僅僅是一個想法。我已經在主網(Mainnet)上運行了一個概念驗證原型,使用真實資金,完全實現了所有金庫功能與恢復路徑。雖然尚未達到生產級標準(還很早期),但如果你想用少量資金進行測試,它已經可以使用了。

此外還有一套在 regtest 上運行的端到端測試套件,以及一個互動式 CLI 工具,可完整模擬手機、硬體錢包及它們之間的所有操作。

這是我的主網金庫地址,熱烈歡迎大家嘗試去攻擊它:
bc1pvaultn3953ns47dw6rpm6ahfpz449vcnns5rpnr5v2d0u55fekxq39v257

我非常歡迎同行進行技術審查(Peer review),也樂於接收任何反饋。目前專案庫還很簡陋,但歡迎讓你的 AI Agent 對準 github.com/lukechilds/anzen 並請它帶你瀏覽整個架構設計。

雖然目前它還只是一個 CLI 工具,但我將致力於開發 Anzen 的全棧參考實現,以完整展示其 UX 可以多麼流暢。這很可能是一個 iPhone App 加上一個自訂的側載 Companion Ledger App。

『譯注:這句話翻譯過來是: 「這(參考實現)很可能會包含一個 iPhone App,以及一個專為 Ledger 硬體錢包開發、可供使用者自行『側載』安裝的搭配程式。」

白話一點來說,作者(Luke Childs)的意思是:

為了向大家展示這套系統到底可以做得多順手,他計畫開發兩個互相搭配的軟體

  1. iPhone 上的 App(手機端): 你日常使用的主要介面,就像一般的行動銀行或熱錢包,用來查看餘額、領取每月額度或發起緊急提款。
  2. Ledger 硬體錢包裡的專用小程式(硬體端): 因為目前市面上的硬體錢包(如 Ledger)預設都不支援這種「核准金庫政策」的新功能,所以他必須自己寫一個裝在 Ledger 裡的配套小程式,用來跟手機溝通,完成每年一次的核准儀式。

關鍵字淺白拆解:

  • Companion(搭配 / 配套): 指這個 Ledger 小程式是專門用來跟 iPhone App 湊成一組、互相配合運作的。
  • Sideloadable(可側載 / 手動安裝): 「側載」是指繞過官方應用商店。一般人下載 Ledger 小程式都是透過官方軟體(Ledger Live)直接搜尋安裝;但因為這是作者自己寫的原型測試版,還沒通過 Ledger 官方審核上架,所以使用者必須透過傳輸線,把軟體檔案手動「燒錄/安裝」進自己的硬體錢包裡。』

我的目標是同時開發參考實現與開放的 Anzen 協議。這個想法是讓任何人都能實現該協議。如果我能透過參考實現驗證其使用場景,並且大家看到了其中的價值、獲得了一些關注,那麼未來我們可能會看到:你可以在原生 Ledger 搭配 Ledger Live 上創建 Anzen 金庫;或者使用 Trezor 作為硬體簽署端、BlueWallet 作為熱錢包端;甚至是 Bitkey 支援可選的主權模式(Sovereign mode),將他們的協同簽署者替換為 Anzen 基於共識的替代方案。

Anzen 是作為個人副業專案開發的,與 Umbrel 無關,採 MIT 開源授權。

致謝:感謝 Casa、Bitkey 與 Liana 將比特幣自主託管帶入現代。Anzen 的設計深受這三個團隊開創的技巧啟發。

結語 (Final thoughts)

Coldcard 的狀況極其令人痛心,因為 Coldcard 用戶做對了一切。就我而言,產業標準建議一直都是單簽硬體錢包。雖然這次問題表現為 Coldcard 的韌體漏洞,但這歸根結底是比特幣技術社群的一次慘痛失敗。我們辜負了使用者,未能提供優質、高水準的自主託管工具。

事件發生後,我看到有人宣稱自主託管不適合大多數用戶;我看到有人宣稱每個人都應該轉向多廠商多簽;我看到有人宣稱用戶有責任自學安全的隨機數生成法。這令人失望,我們正在重複同樣的錯誤。

比特幣的腳本能力雖然有限,但遠未到束手無策的地步。金庫(Vault)類型的架構長期以來被嚴重低估與忽視。

我們擁有構建更好自主託管方案的工具,現在只需要開始動手構建。

2026年8月4日 星期二

冷錢包隨機性分析與安全性比較(cold wallet entropy and security compared)

把 BTC 儲存在 COLDCARD 的用戶因為熵(entropy,隨機性)漏洞而導致資產被清空。

其助記詞(seed)生成方式是可以被重現的,任何人都可以重新計算出他們的私鑰。

因此我調查了其他每一家硬體錢包,看看它們是如何生成助記詞的,以及同樣的事情是否會再次發生。
  • @Trezor:將裝置的隨機性與電腦的隨機性混合,且裝置必須證明它同時使用了兩者。即使晶片完全損壞,你依然安全。這是目前為止最好的設計。
  • @BitBoxSwiss:組合了 5 個獨立的隨機性來源。單一不良來源不會讓你毀滅。開源、可重現構建(reproducible builds),支援擲骰子(dice)。
  • @FoundationHQ:除了另外兩個來源之外,還使用普通電阻(resistors)和電容(capacitors)打造了自己的隨機性電路,開源。不需要信任黑盒晶片(black-box chip)。支援擲骰子(dice)。
  • @KeystoneWallet:MCU 和 2 個獨立的安全元件各自產生自己的 TRNG,3 個獨立來源合併成最終增強熵值。此外還允許你擲最多256次骰子,並公開了如何自行驗證結果的方法
  • @Blockstream:Jade 從 7 個項目中擷取:無線電雜訊(radio noise)、CPU 計數器(cpu counters)、電池、溫度、攝影機、你的輸入、應用程式(app)。要破壞所有來源非常困難。
  • @SeedSigner:你擲的骰子是唯一的來源。完全不需要信任任何晶片。而且他們提供了一份指南,教你如何驗證他們自己的數學計算。硬體最弱,但驗證力最強。
  • @OneKey:裝置上結合了 Secure Element 與 MCU,開源韌體。很紮實,但你無法加入自己的隨機性。
  • @Ledger:一個經過認證的晶片(AIS-31, EAL5+)。具備良好的隨機性。但它是單一來源、閉源,而且你無法驗證其中的任何細節。你必須完全信任他們。
  • @Tangem:私鑰在晶片內部生成且永遠不會離開。經過三家公司審計。同樣的權衡:強大,但設計上讓你無法檢查。
  • @ngrave_official:將晶片隨機性與你的指紋和環境光混合。很聰明。但其 "EAL7" 認證標章僅涵蓋單一軟體元件,而非整台裝置。
  • @ELLIPAL:單一經過認證的晶片,沒有軟體備援(software fallback),若故障則直接關閉(fails closed)而非猜測。閉源,所以只能選擇相信它。
  • @SafePal:混合了 2 個晶片。他們從未公開過詳細資訊。
  • @COLDCARDwallet:目前已修復修補,且 COLDCARD 上的骰子功能一直都是可驗證的。但在 2021 年至 2026 年之間生成的所有助記詞(seed)都已永久作廢(burned)。

單一來源(one source) = Ledger, Tangem, Ellipal。如果該單一來源失效,一切就都完蛋了。他們的解決方案是將其做得很優秀並取得認證。但這正是 COLDCARD 賭輸的地方。

多重來源(many sources) = Trezor, BitBox, Passport, Jade, Keystone。單一損壞的來源永遠不會影響到你的私鑰。

而且這當中的每一家都宣稱擁有 128 或 256 位元(bits)的安全強度。

COLDCARD 當初也是這麼宣稱的。認證也沒有幫助,COLDCARD 的晶片本身沒問題,只是程式碼停止呼叫它而已。

唯一能救你的,就是自己進行檢查。
自己擲骰子(roll your own dice)。自己驗證單字(verify the words yourself)。


給冷錢包使用者的核心建議(補充觀點):

1. 不要盲目相信單一晶片或「EAL 認證標章」:軟體韌體邏輯漏洞(如 COLDCARD 案例)可能使頂級硬體 TRNG 形同虛設。

2. 多重來源(Many Sources)優於單一來源(One Source):選擇結合「MCU + 安全晶片 + 主機/用戶熵」的錢包(如 Trezor Safe 系統、BitBox02、Passport、Keystone)。

3. 終極安全作法——自行擲骰子(Roll Your Own Dice):若儲存大額資產,最安全的作法是在生成種子(助記詞)時,選擇支援實體擲骰子輸入熵並能離線驗證單字點陣圖(BIP-39 Mnemonic Verification)的錢包(如 SeedSigner, Passport, BitBox02, Keystone, COLDCARD),徹底消除對硬體晶片與隨機數生成器的盲目信任。

原始資料來源:https://x.com/the_smart_ape/status/2084265598368809390?s=61&t=P_R4W_aDAxCJn612ehUZJA

圖片表格對照翻譯 (Table Breakdown)

錢包 (wallet) 廠商 (vendor) 熵來源 (entropy sources) 晶片 / 認證 (chip / certification) 自訂熵 (your own entropy) 可驗證? (verifiable?) 開源 (open source) 結論 (verdict)
Trezor One / T / Safe 3 / Safe 5 SatoshiLabs MCU TRNG + 主機電腦熵,混合 SHA-256 (裝置與主機各 32 位元組) STM32;Safe 3 / Safe 5 增加了安全晶片 主機熵,恆定開啟 :承諾協定 (commitment protocol) 是,可重現構建 (reproducible builds)
非常紮實 (Very solid)

BitBox02 / BitBox02 Nova Shift Crypto / BitBox 五個來源:製造階段、裝置密碼、主機電腦、MCU TRNG、安全晶片TRNG ATECC608B (Nova: Optiga Trust M V3) 主機熵 + 骰子 部分 (partially) 是,可重現構建 (reproducible builds) 非常紮實 (Very solid)
Foundation Passport (Batch 2 / Core) Foundation Devices 開源雪崩雜訊電路 (獨立電阻 + 電容,非黑盒矽晶片) + MCU RNG + SE RNG 自家 TRNG 電路 + 安全晶片 骰子 (dice) 部分 (partially) 是,可重現構建 (reproducible builds) 非常紮實 (Very solid)
Keystone 3 Pro(支援簡體中文) Keystone MCU 和來自不同製造商的 2 個獨立的安全晶片各自產生自己的 TRNG,3 個獨立來源合併成最終增強熵值 ATECC608B (Microchip) + DS28S60 (Maxim),均符合 NIST SP 800-90B 骰子,最多256 次投擲 :廠商公開驗證方法 部分開源 (partial) 非常紮實 (Very solid)
Blockstream Jade / Jade Plus Blockstream 開機無線電雜訊、CPU 計數器、電池狀態、溫度、相機、使用者輸入、應用程式熵 -> SHA-512 累加器 ESP32 (Jade Plus: ESP32-S3) 配套應用程式熵 否 (no) 是 (yes) 紮實,多重來源 (Solid, many sources)
Ledger Nano S / S Plus / X / Stax / Flex Ledger Secure Element 內部的單一認證 TRNG + BOLOS 後處理 ST33K1M5C - AIS-31 PTG.2, EAL5+, CSPN (ANSSI) 無 (none) (NO) :閉源 (closed source) 紮實但不可驗證 (Solid but unverifiable)
Tangem cards Tangem Secure Element 內部的 TRNG:密鑰在卡上生成且永遠不離開 Samsung SE, EAL6+;由 Kudelski, Riscure, Cure53 審計 無 (none) :設計上無法驗證 否 (no) 紮實但不可驗證 (Solid but unverifiable)
NGRAVE ZERO NGRAVE 晶片 TRNG + 指紋 + 環境光採樣 EAL7 適用於 ProvenCore TEE 元件,非整台裝置 生物識別 + 環境光 否 (no) 否 (no) 概念好,但標章過度宣傳 (Good idea, oversold badge)
Ellipal Titan Ellipal 僅使用安全晶片中的硬體 TRNG,無軟體備援 (故障時關閉) EAL5+ 安全晶片 接受導入助記詞 否 (no) 否 (no) 廠商宣稱,閉源 (Vendor claim, closed source)
OneKey Classic / Pro(支援繁簡中文) OneKey 裝置上結合 安全晶片 + MCU SE EAL6+ 無 (none) 否 (no) 是 (yes) 紮實,開源 (Solid, open)
SafePal S1(支援繁簡中文) SafePal 具備密碼學混合的雙晶片架構 未公開細節 (undisclosed detail) 無 (none) 否 (no) 否 (no) 未公開 (Undisclosed)
SeedSigner (DIY) open-source project 你的骰子 (50 或 99 次投擲) 或相機影像熵 無 - 無安全晶片 骰子 (dice) :隨附 docs/dice_verification.md 文件 是,自 v0.7.0 起可重現構建 最可驗證,硬體強化程度最低 (Most verifiable, least hardened)
Coldcard Mk4 / Mk5 / Q (2026 修補後) Coinkite 修補後為 STM32 TRNG + 安全晶片 + 骰子 STM32 + 2 個安全晶片 骰子 (dice) (YES) 原始碼可見 (source-available) 已修復,但漏洞期間生成的助記詞仍作廢
Coldcard Mk2 / Mk3, firmware 4.0.0–4.1.9 Coinkite 軟體 PRNG (Yasmarang) 隨機種子來自晶片 UID + 計時器 - 兩者皆為公開 - 骰子 (藏在高級選單中) - - 破裂 (BROKEN) - 有效熵降至 ~2^32 到 2^40
Coldcard Mk1 / pre-v3.2.2 Coinkite 真實 STM32 硬體 TRNG STM32 - - - 從未受影響:舊款裝置反而是安全的
Tapsigner / Satscard / Opendime Coinkite 金鑰於卡片內部生成 ATECC Secure Element 無 (none) - 設計上即不可驗證 否 (no) 架構上不可驗證 (Unverifiable by construction)

硬體錢包隱私指南:如何避免將 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 卡的設計,但它確實能用。我是透過這個研究過程發現它的,以前玩過但沒深入。(譯注:2026年8月的當下,我們知道Coldcard剛剛犯了一個致命的錯誤,讓許多使用者失去了他們的比特幣)

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

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

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

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

有個叫 Cobo Vault 的錢包,擁有漂亮的 QR Code 掃描功能,但它是為山寨幣設計的,對比特幣支援不佳,而且不支援與其他硬體錢包進行多重簽名。這其實不難,但他們就是不做。如果他們支援了,我倒不介意他們支援山寨幣,那只是附加功能,而且他們的 QR Code 螢幕真的很美。雖然很貴(大概 500 美元),但看起來很棒。我不想公開背書說它很棒,但它的 QR Code 和螢幕確實很讚,目前沒人做到這點。(譯注:Cobo Vault就是keystone 3 pro的最早期產品,經過6年的發展與改良,keystone 3 pro已經有了BTC 專屬韌體、非常棒的多重簽名支援、且價格低廉(149美元),還支援最多三個錢包私鑰,也就是一機抵3機,是我目前最推薦的冷錢包,可以從這個推薦連結來了解選購https://bit.ly/4nIoNH5。)

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

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

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

[01:41:02] STEPHAN: 太棒了。我特別喜歡滑鼠懸停在星星上時顯示的解說。對於試圖理解「什麼是硬體錢包、為什麼這樣評分」的新手來說,這非常關鍵。適度的篩選管理很重要。市面上可能有幾十種硬體錢包,但你只需要列出大家熟知的主流產品。關於硬體錢包還有其他想補充的嗎?我們聊了很多,也許可以聊聊「選擇性 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,不需要任何命令列知識就能做多硬體錢包多重簽名。」相信一年後可以實現,但今天還做不到。(譯注:2026年的今天,已經可以輕鬆完成多硬體錢包多重簽名)

[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 金屬板;但對於密碼短語(Passphrase),最聰明的拆分方式就是沙米爾秘密分片方案。

你可以把密碼短語拆分後交給值得信任的親朋好友,設定門檻(比如 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: 謝謝你,希望我帶給大家的幫助多過困惑。

精選文章

Taproot 金庫:非託管式比特幣借貸究竟如何運作(Taproot Vaults How Non-Custodial Bitcoin Lending Actually Works)

  原始出處: https://www.bitcoin.diy/learn/taproot-vaults-bitcoin-lending Taproot 金庫(Vaults):非託管式比特幣借貸究竟如何運作 重點摘要(TL;DR) 過去十年間,每一種...

熱門文章