SeedQR 是 SeedSigner 项目公开记录的数据格式,不是新的 seed 类型、加密方法或 Bitcoin 协议。Standard SeedQR 把从零开始计数的 BIP39 单词位置连接为数字 QR;CompactSeedQR 把原始熵写成二进制数据,并由接收端重新计算 checksum。
Standard SeedQR 逐一取出助记词中的单词,在 BIP39 列表中查找其从零开始计数的位置,并用恰好四位数字写出。因此,数值 12 会写成 0012。结果既不是单词照片,也不是文本形式的私钥,而是同一秘密的另一种无损表示。 [1]
BIP39 列表共有 2048 项,索引范围为 0 到 2047。标准的 12 词短语会产生 48 位数字和 25×25 的 QR 网格;24 词短语会产生 96 位数字和 29×29 网格。四位数字块的顺序就是单词顺序,因此调换数据块会恢复出另一条或无效的短语。 [1]
SeedSigner 被设计为 stateless signer:关机后,已载入的秘密数据会消失,下次使用时必须重新输入 seed。SeedQR 把这一输入过程缩短为一次扫描或手工抄录。它不能与 PSBT、wallet descriptor 或地址 QR 混为一谈;后几者可以承载公开数据或交易数据,而 SeedQR 承载恢复秘密。 [7]
抄录之前,SeedSigner 界面会警告“SeedQR is your private key”,并明确不得拍照,也不得用联网设备扫描。Air gap 限制了通过网络泄漏的路径,却不会加密 QR,也不能阻止相机、复制件、实体盗窃者或已受侵害的离线设备读取 seed。 [5]
官方文档列明 Standard SeedQR 与 CompactSeedQR 支持 12 词和 24 词 BIP39 短语。一项要求加入问题性 CompactSeedQR 测试向量的公开请求于七月 25 日 2022 年提出,后来通过项目变更关闭;这证明项目进行了公开互操作测试,并不等于正式的 BIP 标准化。 [2] [6]
CompactSeedQR 连接 11 位的单词索引,对 12 个词去掉 4 个 checksum 位,并在 21×21 网格中保存 128 位、即 16 字节。对 24 个词则去掉 8 个 checksum 位,在 25×25 网格中保存 256 位、即 32 字节。它更小,但普通读取器可能错误处理二进制数据或空字节;这种不便不是密码学保护。 [1]
BIP39 把熵及其 checksum 划分为 11 位的列表索引,由此生成单词。因此 CompactSeedQR 可以省略 checksum 位,并在扫描后从熵重新计算。可是,payload 不包含所用词表语言的明确标识符;恢复时必须使用同一词表,而主规范建议使用英语词表。 [4]
实现应当对照已发布的测试向量和真实 encoder 代码核验,包括 CompactSeedQR 中的空字节。实际恢复演练应在没有资产的离线设备上进行:载入后,把 fingerprint、descriptor 或第一个收款地址与预期钱包比较。绝不能用网页生成器测试真实 seed。 [3]
要获得更完整的理解,请将本词条与以下词条结合阅读: Seed Phrase, BIP 39, BIP39 checksum, Private Key, Hardware Wallet, Air-gapped Wallet. 反向关联还来自: BBQr.
01SeedQR 与包含比特币地址的普通 QR 码相同吗?+
不同。地址 QR 通常公开用于接收付款的目的地,而 SeedQR 编码的是恢复 BIP39 钱包所需的数据。任何正确读取 SeedQR 并知道可能存在的 BIP39 passphrase 的人都能派生私钥。因此,SeedQR 必须像 seed phrase 一样保管,不能像公开地址一样使用。
02普通手机无法读取 CompactSeedQR,是否意味着 seed 受到保护?+
不是。CompactSeedQR 只是把同一秘密更紧凑地保存为二进制熵。有些普通读取器会错误显示或完全不显示,但专用软件可以解码。这是兼容障碍,不是加密;安全性必须依靠实体保护、受控的离线扫描,以及在使用时独立存放的 BIP39 passphrase。