本实验室只攻击这台页面现场生成的模拟钱包。地址算法是教学简化的(SHA-256),货币是假的。它复刻的是真实攻击的数学结构:2023 年 Milksad 事件中,真实用户因为同样的弱随机生成方式损失了 90 多万美元。对他人钱包做这种事是盗窃;理解它,是为了永不成为受害者。
正常生成的钱包:不能。私钥是 256 位真随机数,以每秒一万亿次的速度枚举,需要约 10⁵⁷ 年。比特币用的 secp256k1 曲线本身至今完好,连刚告破的 NSA 种子悬案都证明了曲线没有后门。
用坏随机数生成的钱包:能。而且不需要破解任何数学——只需要重跑一遍它的生成过程。这正是 NSA 种子故事的另一面:种子是 lrand48 + 时间戳生成的,所以知道"大概什么时候生成的"就等于知道种子本身。如果当年有人用这套代码生成钱包私钥,那个钱包今天已经空了。下面你亲手做一遍。
Anthropic 公开了复现代码:P-256 的种子 = 时间戳 1997-08-16 01:52:34 UTC 喂给 srand48,取第 1,842 个候选。点按钮,在你自己的浏览器里重算——不需要相信任何人。
模拟一个 2013 年式的脆弱钱包应用:它用当前时间(秒)给 lrand48 做种子,连续取 32 个字节当私钥。受害者只记得"钱包是今天创建的"——这句话,就是攻击者的全部线索。
攻击者不知道私钥,只知道:钱包地址(公开的)、创建日期(今天)。他要做的只有一件事:把今天的每一秒都当作种子重跑一遍生成器,哪个秒生成的地址对上,私钥就是哪个。
正规钱包用操作系统真随机源(crypto.getRandomValues,熵来自硬件噪声)生成 256 位私钥。区别不在算法多高级,在于种子空间:
宇宙年龄约 1.38 × 10¹⁰ 年。这就是"破解虚拟币"在数学上的真实含义:不是难,是物理上不成立——前提只有一个:你的随机数是真的。
① 只用经审计的钱包软件,拒绝任何"自己写的生成器";② 助记词必须由钱包在设备本地用硬件熵生成,任何让你"自己想一句话当钱包"(脑钱包)的产品都是陷阱——那正是 25 年里全世界对 NSA 种子走错的那条路;③ 大额资产用硬件钱包,私钥永不触网。
配套阅读:《NSA 的种子悬案告破了》 · 本实验属于 TaTa School「安全边界」模块。