一个优雅的主意为何变成惨案
比特币早期流行过一种朴素的用法:把私钥定义为一句话的 SHA-256 哈希,比如“correct horse battery staple”。钱存在地址上,链上没有任何线索指向这句话,只要没人猜出来,它就安全地住在你的颅骨里——丢不了也偷不走,除非人出事。2011 年到 2013 年之间,社区用惨痛数据给这个设计结清了账。当年一位开发者公开悬赏测试脑钱包强度,多个挑战钱包在数小时内被破解,其中一个含少量英语单词的短语几分钟内就被扫描器命中;更无声的大规模失败发生在实战中:公开的链分析显示,凡能用字典与常见句式枚举出来的脑钱包,余额早被脚本成批转走,过程在链上完全静默。
账要从熵上算
私钥的安全性来自它出自一次真正随机的 256 位选择。脑钱包把选择权交给大脑,而大脑能“自然想起”的空间小得惊人。逐项算:常用英文词表约几万词;五词组合在一万词表下是 10 的 20 次方量级,看似巨大,但人类爱用的并非均匀随机组合,而是歌词、谚语、产品口号、键盘图形(“1q2w3e”一类),加上大小写与年份的有限变形——真实的候选空间能被压缩到 10 的 10 到 12 次方。SHA-256 没有任何“验错成本”:一块现代 GPU 每秒可以算数十亿次哈希,纯离线跑,不需要问任何服务器,链上余额还能先在本地预过滤。换句话说,扫描“所有可能记得住的句子”对攻击者只是一块显卡几小时的夜班。你的短语一旦被想到第二次,就说明别人也想得到。
泄露的方式还特别安静。余额在链上公开可查,攻击者算出私钥、签好转账、广播,原主只看到一次普通的转出记录——没有登录异常、没有客服介入,唯一线索是转账发生在凌晨。这暴露了脑钱包的第二重结构性缺陷:链上余额对全网络透明,但私钥空间对猜解者同样透明。
两条正确的路,各解决一半问题
第一条路承认“随机就该交给机器”:钱包生成器用密码学随机数发生器挑熵,再用 BIP39 把熵编码成 12 或 24 个词。你要背的不再是一句“能想出来的话”,而是一次你根本不需要理解的抽卡结果;校验和让抄错的词能被察觉。第二条路给“人选的口令”加混凝土:PBKDF2、scrypt、Argon2 这类密钥派生函数故意把每次计算做慢、做大内存占用,把每秒十亿次压到每秒个位数。注意两者解决的是不同问题:助记词解决“记不住又不肯随机”,KDF 解决“非要用人选口令”。硬件钱包与加密文件走第二条路,HD 钱包标准走第一条;脑钱包的特殊之处是同时把两条保险都拆了——人脑选熵,再直接哈希,不做任何拉伸。
边界与残值
有没有“安全的脑钱包”?理论上只要短语是一次真随机实验的结果(比如掷骰子 77 次),它就等价于助记词,只是验证和抄写折磨人——这条路等于把助记词写得更难用。另一种残值是“口令派生当主密钥+多重签名或 Passphrase 兜底”的混合方案,安全评估必须逐层重算,不能沿用“硬件钱包”的直觉。2013 年之后,主流钱包文档已普遍明确劝退脑钱包。凡是教程里让你“自己编一句话当私钥”的设计,哪怕包装得再新颖,都应按危险处理;需要备份与恢复的,一律用标准化词表方案。
快速问答
问:我记的 passphrase 不也是脑钱包吗? 不同:主助记词已是真随机熵,passphrase 只是把同一套种子映射到另一个账户,它防的是胁迫而非在线攻击;强度计算的对象完全不同。
问:一句毫无意义的话行不行? “毫无意义”不等于“随机”。人脑构造的无意义串仍带强烈模式,扫描器专门收录这些变形。要么真随机,要么加 KDF,别走中间。
风险提示:本文是私钥管理科普,不构成投资建议;任何密钥方案请以标准化规范与权威钱包文档为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。