TA TA ← TaTa School

🧪 弱随机钱包攻防实验室

TaTa School 互动实验 · 全程在你的浏览器内运行 · 不连接任何真实区块链
先说清:这是什么,不是什么

本实验室只攻击这台页面现场生成的模拟钱包。地址算法是教学简化的(SHA-256),货币是假的。它复刻的是真实攻击的数学结构:2023 年 Milksad 事件中,真实用户因为同样的弱随机生成方式损失了 90 多万美元。对他人钱包做这种事是盗窃;理解它,是为了永不成为受害者。

先回答那个问题:虚拟币能"破解"吗?

正常生成的钱包:不能。私钥是 256 位真随机数,以每秒一万亿次的速度枚举,需要约 10⁵⁷ 年。比特币用的 secp256k1 曲线本身至今完好,连刚告破的 NSA 种子悬案都证明了曲线没有后门。

用坏随机数生成的钱包:能。而且不需要破解任何数学——只需要重跑一遍它的生成过程。这正是 NSA 种子故事的另一面:种子是 lrand48 + 时间戳生成的,所以知道"大概什么时候生成的"就等于知道种子本身。如果当年有人用这套代码生成钱包私钥,那个钱包今天已经空了。下面你亲手做一遍。

实验一:复刻 25 年悬案(热身,10 秒)

Anthropic 公开了复现代码:P-256 的种子 = 时间戳 1997-08-16 01:52:34 UTC 喂给 srand48,取第 1,842 个候选。点按钮,在你自己的浏览器里重算——不需要相信任何人。

实验二:受害者生成一个钱包

模拟一个 2013 年式的脆弱钱包应用:它用当前时间(秒)给 lrand48 做种子,连续取 32 个字节当私钥。受害者只记得"钱包是今天创建的"——这句话,就是攻击者的全部线索。

实验三:攻击者视角——只凭地址 + 日期

攻击者不知道私钥,只知道:钱包地址(公开的)、创建日期(今天)。他要做的只有一件事:把今天的每一秒都当作种子重跑一遍生成器,哪个秒生成的地址对上,私钥就是哪个。

先在实验二生成钱包
攻击日志将显示在这里…

实验四:对照组——好钱包为什么破不了

正规钱包用操作系统真随机源(crypto.getRandomValues,熵来自硬件噪声)生成 256 位私钥。区别不在算法多高级,在于种子空间:

脆弱钱包(时间种子)一天 = 86,400 种可能
好钱包(256 位真熵)2²⁵⁶ ≈ 1.16 × 10⁷⁷ 种可能
每秒试 1 万亿个好钱包私钥约需 3.7 × 10⁵⁷ 年

宇宙年龄约 1.38 × 10¹⁰ 年。这就是"破解虚拟币"在数学上的真实含义:不是难,是物理上不成立——前提只有一个:你的随机数是真的。

三条防线(记下来)

① 只用经审计的钱包软件,拒绝任何"自己写的生成器";② 助记词必须由钱包在设备本地用硬件熵生成,任何让你"自己想一句话当钱包"(脑钱包)的产品都是陷阱——那正是 25 年里全世界对 NSA 种子走错的那条路;③ 大额资产用硬件钱包,私钥永不触网。

配套阅读:《NSA 的种子悬案告破了》 · 本实验属于 TaTa School「安全边界」模块。

← 返回 TaTa School