冷錢包的基礎知識
什麼是冷錢包?
「冷錢包」是一種不聯網,能物理隔離並獨立冷儲存私鑰的硬體裝置,常常也被稱為「硬體錢包」。
雖然稱為「錢包」,但與一般認知的錢包有些不同。比起錢,冷錢包中所存放的更像是「鑰匙」。在加密貨幣的世界中,擁有了鑰匙,等同擁有了區塊鏈上資產的操作權。
為什麼需要冷錢包。
大部分的新韭菜是從中心化交易所(如:Binance、OKX、Bitfinex… 等等)入門。但呈上一題所述,使用者並沒有擁有中心化交易所帳號的私鑰,也就是說,無法完全掌控自己在交易所中的資產。2014 年的 Mt. Gox、2022 年的 FTX 都是當時號稱「大到不能倒」的中心化交易所,但一出了問題,使用者資產便直接被禁提卡死。
接下來再進階一點的使用者,為了嘗試鏈上各種去中心化應用程式,或尋找更多的 alpha,從而接觸了自託管的軟體錢包(或說熱錢包),自此真正踏上了區塊鏈加密貨幣的不歸路。這是一個好的開始,但需要注意的是,軟體錢包的私鑰可能以明碼的形式存放在你的裝置上,一旦裝置連上了網際網路,就有可能以任何形式外洩。例如將私鑰存放於瀏覽器快取,或明碼上傳至軟體錢包的伺服器。
而冷錢包不聯網的特性,在轉帳、與智能合約互動等鏈上操作時,簽署都是在冷錢包中執行,不會讓私鑰離開冷錢包,大幅降低了被遠端攻擊的可能性。此外,冷錢包通常有其他如拆機自毀、韌體檢驗等安全機制,以減少被暴力破解或變造的風險。
在幣圈使用冷錢包是必需的嗎?
並不是,這只是一個相較安全的選項。
事實上,熱錢包在進行鏈上操作時,比起冷錢包更加的方便快速;而冷錢包則是協助降低了許多風險,但在操作時也會有比較多繁瑣的確認步驟。
使用者完全可以在便利性與安全性中權衡,找到最適合自己的使用方式。但我覺得不使用冷錢包的前提是,使用者對於自己的資安習慣有百分之百的信心,同時也相信裝置上的各種軟體不會出包。
個人建議,若有意長時間待在幣圈,還是購買冷錢包來使用吧,況且以保護資產的角度來看,一個冷錢包的價格真的不貴。
韌體開源、安全晶片與 AirGap 比較。
- 韌體開源:讓全人類共同審閱程式碼,且有能力的使用者也能自己學習與編寫。有些冷錢包商也會配合安全審計公司進行審計。
- 安全晶片:常見的是用來生成和儲存私鑰,以抵禦攻擊和泄漏。不過也有人詬病使用者需要信任晶片製造商,於是有的冷錢包商會在裝置中使用複數、且來自不同公司的晶片來處理不同的功能。
- AirGap:此類冷錢包不搭載藍牙和 Wi-Fi,甚至會除去 USB 連線功能,以此降低遠程攻擊的風險。通常會以 QR code 進行簽名,並以記憶卡進行裝置的韌體更新。
我忘記了冷錢包的 PIN 碼,怎麼辦?
冷錢包為了防範暴力破解,通常具備密碼輸入太多次則自動重置硬體的功能。若使用者真的忘記了冷錢包的 PIN 碼,可以多嘗試幾次直到設備重置,便能以助記詞還原錢包。
若助記詞已經遺失或沒有進行備份,那誰也幫不了你(包含冷錢包製造商)。
如果冷錢包壞掉,我的資產會不見嗎?
不會。使用者的資產是記錄以及儲存在區塊鏈上,而不是真的存在於冷錢包中。 所以當原有的冷錢包壞掉時,買新的並輸入助記詞即可還原錢包。
交易所壞掉,你的資產才會不見。
助記詞相關
助記詞和私鑰一樣嗎?
助記詞不等於私鑰,一組助記詞可以生成多組私鑰與公鑰,但助記詞與私鑰都很重要,都能用以還原錢包。
生成關係大概是:助記詞→私鑰→公鑰→錢包地址。
同一份助記詞可以在不同品牌的冷錢包恢復嗎?
可以,不需要擔心手上的冷錢包因為廠商倒閉而成為孤兒。
現今通用的助記詞單字來自 BIP39 定義的單字表,其中包含了 2048 個單字,並且通常以 12 或 24 個字組成一組助記詞短語。
如果助記詞沒錯,但還原出錯誤的錢包,那可能是還原 HD Wallet 時的路徑(BIP44)選錯了。
什麼是密碼短語(Passphrase)?
Passphrase 常指的是獨立於 12 個或 24 個單字之外的,第 13 或第 25 個單字。這個詞不需要符合 BIP39 標準,可以是任意英文字母、數字甚至符號,如同為你的助記詞加上一組大鎖。
大部分的冷錢包品牌都有這個功能,所以不同品牌間也能無縫還原出同一組錢包。
如果擔心自己的助記詞有一天會被碰撞到,那就加上一組自定義的 passphrase 吧。
如何安全的生成與保存助記詞?
助記詞生成與還原時的環境很重要,非常不建議在公共環境中操作,最好在自己的房間或家中進行,且不要靠近窗邊。極端點的也可以避一下周遭的攝影機或鏡頭。
曾經看過一個笑話,有人在窗邊生成助記詞,結果被鄰居看見並抄走。這個人大概一輩子都想不透助記詞是怎麼外洩的。
另外,建議使用類比的方式隔離保存助記詞,絕對不要存放在 Evernote、Line Keep 之類的筆記和通訊軟體中,這做法形同與軟體公司共享你的助記詞,好歹也抄寫在紙上。而更進階一點可以使用金屬板備份,是不錯的防水、防火,且成本較低的方法。
什麼是分片助記詞(Shamir Backup)?
分片助記詞是進階的錢包生成方式。它將錢包拆分成多組助記詞,需要輸入符合的助記詞組數才能還原,例如:分成五組助記詞,需要滿足輸入五分之三組才能還原。運作方式與多簽錢包類似,但只有在還原錢包時需要多組助記詞,簽署交易時則不需要。
目前支援的冷錢包商不多,除非有特殊需求,個人不建議使用。
關於冷錢包的使用安全
冷錢包不建議跟智能合約進行互動嗎?
如果你追求的是極致的安全,那確實不建議以冷錢包和智能合約互動,可以在有鏈上合約操作需求時,再從冷錢包轉移資產到另外的熱錢包進行。
但基本上,如果你在進行任何簽名時都看仔細,並充分了解執行的內容,我覺得使用冷錢包進行合約互動是沒問題的。與要不要使用冷錢包同理,是個選擇。現今有許多軟體錢包具備了合約解析,以及資產變動預演的功能,例如 Rabby.io,與冷錢包搭配使用能提高安全性。
軟體錢包會偷走冷錢包的私鑰嗎?
不會。私鑰儲存於冷錢包裝置中,簽名也是在冷錢包中簽署後才送出,助記詞和私鑰不會離開硬體裝置。
助記詞也只能在冷錢包中覆核確認,軟體錢包無法顯示。
Approve、Permit、Permit2
- Approve:鏈上簽名,對代幣授權給智能合約使用權,是傳統的授權方式。簽名時需注意大部分專案授權預設是無限,以安全考量則建議手動改成當下要使用的額度。
- Permit:鏈下簽名,可以節省 gas fee ,且可同時進行合約使用權的授權和代幣轉移,並記錄授權到期時限。但需要把相關函數寫入 ERC-20 代幣中,所以不適用於舊代幣。
- Permit2:先鏈上簽名 approve 授予使用權給 permit2 合約;接著鏈下簽名 permit2 允許讓 permit2 進行代幣使用;最後再和項目合約互動,讓 permit2 動用代幣。授權一樣有時效性,且解決 permit 舊代幣不適用的問題。
關於 EVM 的 4-byte 與函數。
以太坊的函數經過雜湊運算後,獲得的雜湊值前 4-byte( 兩個 16 進位數字 = 1 byte,總共有八個 16 進位數字)。也就是 input data 中的 Method ID。 從 4-byte 可以查到相關的函數。 Ethereum Signature Database (4byte.directory)
但 Method ID 是有可能重複的,因此有可能被用來詐騙,所以在做任何操作前,務必謹慎瞭解智能合約內容。目前也有一些錢包和解析工具,能協助使用者判斷是否要進行簽名。
其他
冷錢包能 DIY?
以下舉兩個例子讓讀者參考。
交代給最親近的人。
區塊鏈、加密貨幣的應用,乃至於冷錢包的操作都極為複雜,倘若希望自己不幸離世時能讓親近的家人順利繼承,建議盡早教會給親屬,或是整理好資料與教學,讓遺產與相關知識能順利傳承。