# 如何通过物理手段获得一组秘密安全的助记词？

By [0xTodd](https://paragraph.com/@0xtodd) · 2023-04-26

---

我最近一直想做一个关于如何获得秘密安全“助记词（mnemonics）”方面的攻略，正好赶上前几天Do Kwon的段子来了，我觉得有必要给大家分享一下。

  

一共需要5步：

1.找到助记词列表

2.找点骰子

3.摇掷骰子-转换进制

4.找到校验位

5.备份

  

你随身携带的硬件钱包真的安全么？事实上：无论是热钱包还是硬件钱包，你拿到的助记词都是软件通过随机自动帮你生成的。

  

当然，我乐于给硬件钱包提供商们足够的信任，但作为一个crypto native guy，我觉得靠“信任”是不够的。

  

为什么这么说呢？从一台硬件钱包从生产到你手中，经历了太多的环节：开发者、硬件设计、组装商、包装商、快递A，海关，分拣，快递B… 等等。

![](https://storage.googleapis.com/papyrus_images/48645303a13bb6e497069663fe3d849f102aff1b80cb62f51ab6af4329b771c6.png)

最差情况是：自动生成的随机算法，是破解版，或者干脆带有后门。

  

大家都听说过“伪随机”的概念，机器生成的随机数，终究存在被人预测的可能性。比如你用了别人送你的（动过手脚的）硬件钱包，那理论上，你生成的12个单词，别人也能生成相同的，那你硬件防护手段也就失去了意义。

所以，我们最好自己亲自生成一套助记词，而不是借助程序自动生成。

  

硬件钱包无法访问网络，这个环节是很难植入后门的，只要你能确保你的助记词是真·随机生成的，那么硬件钱包的安全性将会补足最后一块短板，即没人可以知道你的助记词。

  

那么如何生成真·随机的助记词呢？很简单：物理随机。

接下来是一个教程，感兴趣的可以转推，等周末慢慢操作。

  

Step1 找到2048助记词列表

首先科普一个概念：比特币也好，以太坊也好，以及后面的所有链，用的都是同一套协议，即比特币社区当年创造的BIP-39。这里有2048个单词，而且为了避免手写抄错，BIP-39还贴心去掉了很多看起来很相似的单词。

  

比特币仓库中的BIP39

[

bips/bip-0039/english.txt at master · bitcoin/bips
--------------------------------------------------

Bitcoin Improvement Proposals. Contribute to bitcoin/bips development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/73b6919419610439433eea1c0f42e9f205ba62988d6d36256d0c0f00ea92c0a8.png)

](https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt)

  

你从任何一个搜索引擎，都可以很轻松得获取这个2048个单词，当然，既然是钻牛角尖，你可以寻找三个信息源头，并随机抽样调查，确认这些是真的BIP39。

  

很多人不知道，其实BIP-39还支持中文；比如“的 一 是 在 不 了 有 和 人 这 中 大”理论也能生成出一个钱包地址来。当然，为了更好的兼容性，建议大家用默认的传统单词列表。

  

Step2 找点骰子

接下来，让我们做一个思考实验：如果想获得真随机，最简单的办法，就是我拥有一个“有2048面的骰子”，连续掷出12次（其实是11次，我们后面再聊），我们就能获得一组完全随机的真·助记词。

  

![](https://storage.googleapis.com/papyrus_images/5e5db4429e8e8306a5b7462f80e5bbe85458ea184591c35bcdbec3999a2979f2.png)

  

但是，我相信各位谁也没有这样的骰子，那我们就要动一些脑筋了。

  

有一道经典的算法题，如何有一枚标准骰子，生成1-7随机数。[https://www.zhihu.com/question/62404167](https://www.zhihu.com/question/62404167)

  

我们只需要把这道题的要求从7变成2048即可。你现在去网购11枚骰子，或者硬币（说实话现在内地硬币真的越来越少用到了）。

  

Step3 掷骰子，转换2进制

现在开始摇动骰子，骰子奇数记为1，偶数记为0（硬币同理）。11枚骰子的组合正好是：2\*2\*2\*2\*2\*2\*2\*2\*2\*2\*2=2048种，所以说你可以用这些骰子生成一个2进制的数。

  

![](https://storage.googleapis.com/papyrus_images/bad0739e059c128b24852fa304ffac465a17519c809ffcab2b51e4eeb9aa71d5.png)

比如我摇出一个结果是1 0 1 1 1 1 1 0 0 0 1。你把它变成十进制就是1521。算法很简单，用纸笔算就可以（不建议用电脑哦，私钥不触网），算法可参考：[https://zhuanlan.zhihu.com/p/75291280](https://zhuanlan.zhihu.com/p/75291280)

  

然后你去BIP-39 word list 找到第1521个单词，即safe。

  

合计连续掷11次，你就得到一套完全随机的单词组，比如: safe hill also idle fade shock walnut cigar eye clean water。

  

Step4 穷举法获得最后一个检验单词

  

为什么不一口气把12个单词全部用骰子掷出来呢？

  

BIP-39整个助记词序列包含了一定程度的校验功能，类似于身份证的尾号也有类似的设计。

  

因此，尽管第12个单词本身并不是一个特殊的校验位，但考虑到整套助记词序列确实要符合一定的规则，因此在创建钱包时，如果输入的助记词不符合校验规则，创建将会失败。

  

再通俗一点说：并不是表上的任意12个单词，都可以组成一套助记词的，它们必须符合某种规则。你随便找一套单词，大概率会提示你：无效助记词。

  

![](https://storage.googleapis.com/papyrus_images/35e14b3d8ed26a65abf26500f37dc50ac1d11e8c1644403b473a7f6196bf20a3.png)

如果是程序自动生生成的助记词，当然自动符合了规则。而我们是物理创建的，因此，需要再次动一些脑筋。

  

很简单，既然前面11个都没按照规则。那么，我们让第12个助记词符合就行了。

  

那第12个单词如何搞定呢？这里就不掉书袋阐述原理了，直接采用“暴力穷举”的思路（没想到吧，自己创建助记词还需要暴力破解）。

  

![](https://storage.googleapis.com/papyrus_images/805aef5f8aeaf5fe061477f3c338acadb46879cee0c8a8f4c3066546ec59c2b2.png)

  

事实上，你在2048个助记词列表随便一个位置，往下尝试0-30个，必定有符合规则的单词。比如我说这组，我从第230个单词开始试，233 brown就可以，255 cabin也可以。

  

当然，如果在硬件钱包上直接尝试破解，是最好的，毕竟不触网。但是缺点是会比较累，大部分硬件钱包按钮很少…包括ledger S和onekey经典，至于Do Kwon的trezor我没买过不清楚。

  

如果想偷懒，用一个退役的手机，下载一个trustwallet或者任何一个你熟悉的钱包。接着，断网，轮流测试。直到试出符合规则的第12个单词，默默记下，接着删除这个App，随便复制一下什么东西（清除剪贴板），重启关机几次。

  

这样就大功告成了！你通过完全物理随机的手段，在全程不联网的情况下，获得了一个绝对不可能有人猜到的一套助记词，这时候你再将这套助记词输入到硬件钱包里，你的安全性就彻底拉满了。

  

Step5 备份

当然，仍然建议做好至少2重备份。不要用铅笔（容易褪色），不要存电脑或者手机里（那刚才咱们就白弄了），不要企图在两台电子设备里各存一半（很容易被暴力破解）。

  

当然，如果你足够牛，你可以背下来（避免Do Kwon悲剧），但是强烈不推荐这样做。这里教大家一些背诵助记词的秘诀，比如我这套：safe hill also idle fade shock walnut cigar eye clean water cabin。

  

你可以编一个故事：在一个（safe）安全的小山村里，有一座（hill）山丘，村子里有一个（idle）懒散的青年，他的衣服褪色（fade）得厉害…balabala

  

![](https://storage.googleapis.com/papyrus_images/d6f55a923019fa50044823f9476272681a5af6059668b6434eb0e81ce090aee1.png)

  

这样，理论上记住了故事，就记住了助记词。但是，还是强调下，人脑是个非常辣鸡的生物存储设备，普通人不推荐哦，Do Kwon除外。

  

当然，如果你单纯想做一个冷钱包当长期holder，我觉得写在纸上，把这个地址copy出来，，只转入不转出，那你甚至不需要一个硬件钱包了，这也是早年大家常提到的“纸钱包”。

  

最后，祝大家都能永远保护好自己的钱包和资产。有任何问题或者改进物理随机的方式都欢迎留言交流

---

*Originally published on [0xTodd](https://paragraph.com/@0xtodd/vRX06DqvjoJPhjzBbaip)*
