32 / 736COLD

Cold Storage

让密钥远离日常联网电脑

比特币并不是装在保险柜或U盘里。网络记录着币的状态,我们保护的是能够花费它们的密钥。Cold Storage 将密钥与日常联网电脑隔离。要长期有效,还需要安全的备份和经过实际测试的恢复流程。

Cold Storage 是把比特币私钥与日常联网的电脑或手机分开保管。私钥用于生成签名,也就是可验证的付款授权。签名设备即使关机,你仍能在线查看余额并接收资金。要发送资金,则需要设备提供签名,或使用已安全恢复的密钥。这种分离减少了远程攻击的机会,但不能代替备份和付款核对。

Alice 想长期持有比特币,但也用笔记本电脑工作、收邮件和下载文件。她不希望电脑一旦被攻破,攻击者就直接拿到积蓄的私钥。因此,她在独立的可信设备中生成并保管密钥,只把监控钱包所需的公开资料传入电脑应用。当她从原来的钱包把比特币转到事先核实过的收款地址时,签名设备可以一直关机。网络会记录付款,应用会显示确认情况;并没有一个装着钱的文件被下载进设备。一个月后,Alice 想把部分资金转出去。电脑先拟好交易:付给谁、付多少、手续费多少。Alice 把草案交给签名设备,在设备屏幕上核对后才确认。设备生成数字签名,证明这笔花费已获授权,而不交出私钥。签名后的交易返回联网应用,再由应用向网络广播。这种分工就是 Cold Storage 的核心。这个名称本身无法说明设备是否可靠、屏幕上的地址是否正确,也无法保证 Alice 在设备损坏后能恢复钱包。 [7] [11]

远离日常联网电脑的是密钥,不是比特币。每个 UTXO,也就是先前付款中尚未花费的输出,仍然记录在公开区块链上。把已经被入侵的笔记本断网并不够;刻着助记词的金属板是备份,不是签名设备。计划需要考虑盗窃、火灾、设备故障和持有人去世。因此 Glacier Protocol 将准备、存入、取出、查看和维护分开处理。 [9] [10]

用于恢复的备份词称为 Seed Phrase。可选的 passphrase 是你另行选定、用于派生钱包的秘密信息,不是设备 PIN。Multisig 则要求多个密钥的签名。在可信设备上生成密钥,并记录备份格式、使用的 passphrase 和钱包配置。BIP129 描述了分两轮进行的 Multisig 设置,核验密钥与共同配置。收款地址应在签名设备上核对,而不能只看电脑。先转入少量资金,测试收款、花费和恢复。成功收款本身不能证明恢复流程有效。 [5] [11]

Seed Phrase 与实际使用的 passphrase 可以重新派生密钥;找到正确钱包还可能需要其他资料。不同的 passphrase 会导向另一个钱包,不能代替遗忘的原口令。SLIP39 备份分片不是 seed(用于派生密钥的初始秘密数据)的重复副本,必须达到规定数量才能恢复。要防止备份被盗、被拍照或损坏。绝不要把真实备份输入网站或普通联网电脑。 [13] [14]

Air gap 移除直接网络连接,但数据仍会通过 QR 或 microSD 等渠道进入设备。读取传入数据的程序(解析器)的缺陷、恶意的设备内部软件(固件)或具有欺骗性的屏幕,仍可能危及这样的系统。使用经过核验的固件、支持的格式,并独立检查交易。存储卡不会清除电脑上的恶意程序,QR 也不天然安全。通过线缆连接的 Hardware Wallet 同样可以隔离密钥。连接方式本身不是安全保证。 [1] [7] [12]

还要考虑入室盗窃、暗中复制备份、胁迫以及继承人的恢复能力。一次事件既不应暴露足够的密钥让人盗取资金,也不应毁掉太多资料而使恢复不可能。封条可能提示被动过手脚,但阻止不了复制。隐藏钱包或诱饵钱包不能保证抵抗胁迫。记录步骤和分工,避免不必要地泄露秘密;企业的双人控制与个人保管需要不同的组织方式。 [9] [10] [13]

检查备份状态、说明是否清楚和设备是否兼容,不要无谓地暴露 seed。安全的恢复测试应找回正确的收款和找零 UTXO,并生成有效签名;软件接受一组词还不够。在可信设备上完成测试。更换设备或钱包规则前,用小额资金跑通整个流程。怀疑泄露时,生成新的独立密钥并安全转移资金;新配置验证完成前,不要销毁旧资料。 [7] [9] [10]

脚本规定比特币可以在什么条件下被花费。扩展公钥 xpub 可以派生钱包相应分支中的其他公钥。要从这些公钥生成地址,还需要知道脚本类型,也就是规定花费条件的规则。xpub 本身不能签署付款。联网协调器是持有钱包公开数据的应用。它查找 UTXO、派生地址并构建未签名交易;私钥则留在签名设备中。Output Descriptor 描述脚本与密钥来源,校验和帮助发现抄写错误。公开描述符或 xpub 通常无法单独花费资金,但可能暴露地址和余额。被入侵的协调器还可能替换收款人。 [4] [8] [15]

BIP174 定义的 PSBT 携带未签名交易及签名所需信息。数据以映射的形式组织,也就是标识与对应值的列表:一份用于整笔交易,每个输入和输出也各有一份。文件以字节 0x70 0x73 0x62 0x74 0xff 开头。协调器准备数据,设备添加签名;合并签名并完成最终处理后,才能广播生成的交易。因此离线设备不必维护自己的 UTXO 数据库。BIP370 规定 PSBT v2,BIP371 增加 Taproot 字段;应提前确认设备兼容性。 [1] [2] [3] [6] [7]

确认前,在可信屏幕上核对收款人、金额、手续费或费率,以及将剩余金额退回自己钱包的找零输出,也就是 change。同时注意显示的输入和 sighash 模式,它决定签名绑定交易的哪些部分。BIP174 要求验证拟定找零确实属于预期钱包,不能只相信电脑给出的标签。金额较大时,通过另一个独立且可验证身份的渠道确认地址,必要时请第二个人复核。 [1] [11] [12]

m-of-n 配置需要 n 把密钥中的 m 把签名。只要仍有至少 m 把可用,就能承受部分密钥丢失。攻击者则要取得至少 m 把,才能独自花费。不要混淆这两个界限。仅有 seed 也可能不足以重建钱包:还应备份描述符或 Bitcoin Secure Multisig Setup (BSMS) 配置,包括 xpub、密钥顺序、派生路径(计算各个密钥所经过的步骤)和脚本类型。更复杂的配置只有在你能管理和恢复时才有意义。 [4] [5] [8]

要获得更完整的理解,请将本词条与以下词条结合阅读: Hardware Wallet, 自主托管, Air-gapped Wallet, PSBT, Seed Phrase, BIP 39. 反向关联还来自: Hardware Wallet, Watch-only Wallet, PSBT, Custodial Exchange.

DOC · 001BIP 174 — Partially Signed Bitcoin Transaction Format规范 DOC · 002BIP 370 — PSBT Version 2规范 DOC · 003BIP 371 — Taproot Fields for PSBT规范 DOC · 004BIP 380 — Output Script Descriptors规范 DOC · 005BIP 129 — Bitcoin Secure Multisig Setup规范 DOC · 006Bitcoin Core — PSBT Howto文档 DOC · 007Bitcoin Core — Offline Signing Tutorial文档 DOC · 008Bitcoin Core — Output Descriptors文档 DOC · 009Glacier Protocol — About Glacier文档 DOC · 010Glacier Protocol — Protocol Structure文档 DOC · 011COLDCARD — Address Explorer文档 DOC · 012COLDCARD — QR Scanner and PSBT Signing文档 DOC · 013Trezor — Wallet Backups文档 DOC · 014Trezor — Shamir Backup文档 DOC · 015Bitcoin Optech — Output Script Descriptors文档
修订日期: 来源优先 · 非投资建议