爆设计缺陷,黑客仅需数小时即可暴力破解用户助记词、盗取资产

imToken 作为全球用户量领先的去中心化加密钱包,其助记词生成机制存在两处致命设计缺陷——底层伪随机数生成器(PRNG)种子空间仅 48 位、BIP39 单词表仅 2048 个词汇。两者叠加后,攻击者可在数小时内从哈希反推出原始助记词,完全控制钱包资产。
imToken创立于 2016 年,截至 2025 年全球累计注册用户已超 3000 万,是亚太地区用户量最大的去中心化钱包之一。其核心卖点"私钥由用户本地管理、平台无法代持"意味着:只要助记词(Mnemonic Seed)确定,钱包地址和资产归属就完全确定。
然而我们发现,imToken 在 Android 平台上生成助记词时使用了 java.util.Random 作为伪随机数生成器。该类的内部种子仅为 48 位(6 字节),且其算法是确定性的线性同余生成器(LCG)。这意味着同一个 Random 对象无论生成多少个随机数,攻击者只要观测到其中任意两个输出值,就能在 O(248) 的时间复杂度内反推全部种子——进而还原整个助记词序列。
BIP39 标准使用一个固定的 2048 词 单词表,12 个助记词对应 128 位熵 + 16 位校验和。当这 128 位熵实际上只来自一个 48 位种子时,暴力破解的复杂度从 2128 骤降至 248 ≈ 2.8 × 1014——在普通 GPU 集群上仅需数小时即可完成全量搜索。