作者:Sabastian
來源:https://blog.bitbox.swiss/en/how-bitcoin-vaults-combine-convenience-with-security/

如果你用的是一個普通的比特幣錢包,有人偷了你的私鑰,那只有一個結局:他們立刻就能轉走你所有的錢。這並不是比特幣的問題,因為交易的終局性(finality)是它的核心價值之一。但它確實給高級的自主保管裝置帶來了一個艱難的權衡:你的裝置越是安全,花費其中的資金(哪怕是你自己,完全正當的花費)可能就越是麻煩。
比特幣的 “保險櫃(vault)” 錢包特性嘗試改善這個情況。與其迫使用戶每次簽名都要走完一整套不方便的簽名流程(例如,要訪問一個多簽名錢包的多個備份的存放地點),保險櫃錢包可以讓正當的交易相對容易創建,同時保留一個更加安全的備用路徑。對於長期儲蓄來說,這就是保險櫃的吸引力:不是 “絕對安全”,而是在日常便利和復原難度之間取得更好的平衡。
我們來詳細解釋一下它是怎麼運作的!

- 保險櫃錢包與普通錢包不同,必須先 “打開” 它,才能從中花費。 -
此 “保險櫃” 非彼 “保險櫃”
首先我們要明白,在比特幣世界裡,“保險櫃” 這個術語的含義是相當寬泛的。一些公司用它來指稱更高級的冷存儲產品,通常是帶有額外冗餘(比如 時間條件 以及 合作式保管)的多簽名錢包。也有一些時候,它單純指的就是硬件簽名器,比如在網站上,我們把 BitBox 稱作 “你的比特幣的瑞士保險櫃”。這些都無傷大雅,只是你自己要心中有數:“保險櫃” 這個標籤可能指的是許多不同的東西;只不過在這篇文章中,我們指的是一種非常具體的錢包設計。
以較為嚴格的技術角度來說,比特幣保險櫃指的是一種強制執行 “延遲取款” 且帶有一條單獨的 “錢包復原路徑” 的錢包裝置。這種設計的目的是通過消除攻擊者立即將錢包洗劫一空的能力,讓偷盜變得更困難。我們來細說。
基本思路
標準的保險櫃設計可以用三個概念來解釋:
- 儲蓄放在這個保險櫃中 —— 當然不是真的保險櫃,只是帶有特定花費條件的錢包。
- “取款路徑” 可以 “打開保險櫃”,但它只會開始倒計時;倒計時結束之後,支付才能完成。
- “復原路徑” 可以在倒計時期間叫停開啟保險櫃的任何嘗試,將資金重新轉移到一個更加安全的錢包。
使用 “路徑” 這個詞,只是意味著有一些鎖定的條件,讓資金只能往特定的方向、以特定的方式移動。
這種方法有趣的地方在於,取款路徑和復原路徑,可以、也應該 代表非常不同的錢包裝置。比如說,取款路徑可以是僅僅一個你隨身攜帶的硬件簽名器,而復原路徑可以是一個非常安全的多簽名錢包,在不同的物理空間有 5 個備份。

通過將兩種錢包裝置結合在同一個保險櫃中,我們可以集兩者之所長:取款路徑帶來便利性、易用性,復原路徑帶來更高的安全性和冗餘。
舉個例子
假設 Alice 在她的保險櫃錢包中持有 1 BTC,希望發送 0.1 BTC 給 Bob 。為此,她首先要使用常規的取款路徑 打開保險櫃。如前所述,這條路徑可以非常簡單,甚至不需要為安全性而優化。Alice 在取款路徑中只使用一個硬件簽名器。不過,在理論上,她甚至可以使用一個放在智能手機上的熱錢包,這不會危及保險櫃的安全性。
(譯者注:“冷存儲” 和 “熱錢包” 分別指的是 不聯網/聯網 的私鑰存儲 設備/裝置。比如寫在紙上的種子詞,就是一種冷存儲;硬件簽名器也是。而在聯網的手機和電腦上運行的保存有私鑰的錢包軟件,就是熱錢包。)
“打開保險櫃” 的意思就是創建一筆特殊的交易。這筆交易表明有人嘗試花費保險櫃中的資金,並開始一個倒計時。我們假設是 24 小時。那麼在 24 小時以內,Alice 可以取消給 Bob 的支付、轉移資金到更加安全的錢包裝置中。僅在 24 小時之後,這筆支付才算完成,Bob 可以用第二筆交易來領取這筆資金。

Alice 從保險櫃中花費、發送支付給 Bob 時,只用到了相對簡單的取款路徑。在這個案例中,這意味著她只需用自己的常規錢包生成一個簽名。但是,如果意外發生,她依然有更加安全的復原路徑作為後備方案。比如說,如果一個攻擊者拿到了她日常使用的錢包、嘗試偷盜這 1 BTC,Alice 可以搶在盜賊前面、使用復原路徑將資金轉移到她更加安全的錢包。更通俗地說,她總是能夠使用這條復原路徑,將資金轉移到更安全的地方。

能夠這樣做,是因為開啟保險櫃的交易是帶有嚴格條件的,只能花費到復原路徑,或者在倒計時結束後被目標收款方取走。
取捨
就跟幾乎所有增加錢包安全性的措施一樣,保險櫃也是通過加入另一個取捨來解決當前的取捨。
你得到了兩方面的好處:一個易於使用、可用於日常花費的錢包,同時,還依然擁有分散化的多簽名裝置的高級安全性和冗餘。
但是,這也帶來了三個方面的缺點:
- 看守保險櫃: 惡意人打開保險櫃之後要等待一段時間,這隻有在錢包的主人能夠注意到攻擊並且及時響應時才能有所幫助。這個問題類似於閃電網絡用戶需要 “瞭望塔”。、
- 延遲支付:顯然,正當的支付也要花費更長時間,因為使用取款路徑時有(必要的)等待時間。
- 更多交易:從保險櫃中取款至少要兩筆交易,當然要支付更多交易手續費(也更容易造成網絡擁堵)。

選擇等待期的時長,自身也是一種取捨:增加時長可以讓偵測和反擊惡意取款變得更簡單;但同時也會進一步拖延日常交易 —— 反之亦然。
即使撇開這些缺點不談,保險櫃有其強力之處,卻也不是魔法。保險櫃並不能讓比特幣 “絕對偷不走”,也不是從此就不需要好的安全習慣。你依然需要建立和管理備份,依然需要使用安全的硬件簽名器,依然不得不處理由於多簽名和保險櫃自身而增加的技術複雜性。
這也是為什麼,保險櫃通常被當成一種 “高級工具”,而不是一種人人適合的推薦方案。
保險櫃的適用場景
保險櫃尤為適合一種場景:不追求經常轉賬,但希望保持可用。比如說長期儲蓄、公司財務和家庭儲蓄,所有者希望擁有比簡單錢包更強的保護,但不希望每一筆正當交易都涉及複雜的簽名操作
設計良好的保險櫃,可以讓私鑰劫持的後果沒有那麼可怕,因為可疑的取款不會立即成功。但是,同樣重要的是,它也降低了操作負擔。用戶不需要為每一筆普通操作都動用多個簽名器(或者私鑰備份),可以通過取款路徑來花費,僅在意外出現時,才依靠更健壯的裝置。這也可以將復原路徑的備份的關注點完全轉向安全性,因為已經不必考慮便利性。
結合這些好處,也有助於實現更輕鬆的遺產規劃,因為你的繼承人不需要在你身故之後使用你的取款路徑(等同於從你的保險櫃 “盜竊”)。在復原路徑的裝置中加入他們不會帶來額外的複雜性。
The need for covenants
比特幣已經支持很有用的錢包特性,比如多簽名和時間鎖。使用 “Miniscript” 這樣的工具,資深的用戶已經可以創建出帶有延遲復原路徑或者面向繼承的條款的錢包。
但完整的保險櫃錢包,需要的不止是這些。它不僅需要限制錢幣 何時 能夠移動,也需要限制它們接下來能夠移動 到哪裡去。這就是 “限制條款(covenants)” 發揮作用的地方。
限制條款是一種限制下一筆花費交易的特徵的花費條件。它對保險櫃而言是必要的,因為保險櫃需要能夠承諾非常具體的一個花費不中,比如錢幣只能被一筆預先定義好的推遲取款交易,或者只允許取消(回到一個已知的恢復錢包中)。
沒有限制條款式的約束,保險櫃就只能依賴於預先簽名的交易和精心的狀態管理。這也能行,但只是更難做得好、更難使用。截止本文撰寫之時,各種限制條款提議依然停留在 “提議” 階段。所以,至少目前為止,原生的比特幣保險櫃更多還只是有有趣的概念,實現還有待未來。
Conclusion
比特幣保險櫃嘗試兩全其美,讓自主保管既不那麼脆弱,又不那麼麻煩。它不是強迫用戶在每一筆日常花費中都依賴於最強壯、最謹慎的安全路徑,而是在幕後加入分別延遲取款路徑和復原路徑。這讓失盜從一個一招不慎滿盤皆輸的事件,變成一個主人有時間來發現和反擊的過程,同時,正當的花費依然相對容易。
這個想法有其吸引力,尤其對於大額或較少移動的資金而言。但保險櫃對於更廣泛的比特幣安全性而言也有重要啟發:更好的自主保管不僅僅是保管得更好的密鑰,它也跟錢包的構造方式有關,便利性和可復原性不是必然背道而馳。
目前,絕大部分用戶不需要保險櫃。但隨著比特幣錢包的表達能力更加豐富,保險櫃也許最終會成為一個最清楚的例子,表明更好的比特幣腳本工具可以如何改善實際場景中的自主保管。
(完)





