密码、私钥、keystore与助记词之间的关系

总的来说,BIP39生成助记词,把助记词转换成seed后,用BIP32生成master,即主账户,然后主账户通过BIP44生成无数子账户。每一个子账户都有自己的公私钥和地址。私钥加密码可以生成keystore,用密码可以解密keystore,恢复私钥。

整个流程如下图所示:

从助记词到地址

理解密码、私钥、keystore与助记词

  1. 密码 密码不是私钥,密码可以进行修改或重置。它主要用途有两个,一是转账时候的支付密码,二是用 keystore 导入钱包时需要输入的密码,用于解锁keystore。

    在钱包应用程序中,创建账号时需要设定一个密码,这个密码一般要求不少于 8 个字符,为了安全,密码最好设置复杂一点。

  2. 私钥 私钥由64位长度的十六进制的字符组成,比如:0xE4356E49C88C8B7AB370AF7D5C0C54F0261AAA006F6BDE09CD4745CF54E0115A,一个账户只有一个私钥且不能修改,谁拥有私钥就能够掌控该账号的数字货币。通常一个钱包中私钥和公钥是成对出现的,有了私钥,我们就可以通过一定的算法生成公钥,再通过公钥经过一定的算法生成地址,这一过程都是不可逆的,是如何生成的?我们在上一章节中有详细的说明。私钥一定要妥善保管,若被泄漏别人可以通过私钥解锁账号转出你的该账号的数字货币。

    在钱包应用程序中,解锁账号后可以导出私钥。

  3. Keystore 因为私钥不利于记忆,容易被盗,因此有了Keystore。Keystore常见于以太坊钱包,它并不是私钥,而是将私钥以加密的方式保存为一份 JSON 文件,这份 JSON 文件就是 keystore,所以它就是加密后的私钥。但是Keystore必须配合钱包密码才能使用该账号,所以只有Keystore文件,并不能掌控账号。对于助记词和私钥就不一样了,只要知道助记词或者私钥就能掌控该账号了。

    在应用程序中,可以实现解锁账号后生成Keystore文件,支持的钱包有MetaMask、Mist等。

  4. 助记词 私钥是64位长度的十六进制的字符,不利于记录且容易记错,所以用算法将一串随机数转化为了一串12 ~ 24个容易记住的单词,方便保存记录。所以有的同学有了下面的结论:

    • 助记词是私钥的另一种表现形式。
    • 还有同学说助记词=私钥,这是不正确的说法,通过助记词可以获取相关联的多个私钥,但是通过其中一个私钥是不能获取助记词的,因此助记词≠私钥。

    目前只有少数钱包应用程序支持导出助记词,如MetaMask等。通过助记词导入账号也只有少数钱包应用程序支持,如MyEtherWallet、imToken等。

BIP

要弄清楚助记词与私钥的关系,得清楚BIP协议,是Bitcoin Improvement Proposals的缩写,意思是Bitcoin 的改进建议,用于提出 Bitcoin 的新功能或改进措施。BIP协议衍生了很多的版本,主要有BIP32、BIP39、BIP44。

BIP32

BIP32是 HD钱包的核心提案,通过种子来生成主私钥,然后派生海量的子私钥和地址,种子是一串很长的随机数。

BIP39

由于种子是一串很长的随机数,不利于记录,所以我们用算法将种子转化为一串12 ~ 24个的单词,方便保存记录,这就是BIP39,它扩展了 HD钱包种子的生成算法。

BIP44

BIP44 是在 BIP32 和 BIP43 的基础上增加多币种,提出的层次结构非常全面,它允许处理多个币种,多个帐户,每个帐户有数百万个地址。

在BIP32路径中定义以下5个级别:

m/purpse'/coin_type'/account'/change/address_index

BIP44的规则使得 HD钱包非常强大,用户只需要保存一个种子,就能控制所有币种,所有账户的钱包,因此由BIP39 生成的助记词非常重要,所以一定安全妥善保管,那么会不会被破解呢?如果一个 HD 钱包助记词是 12 个单词,一共有 2048 个单词可能性,那么随机的生成的助记词所有可能性大概是5e+39,因此几乎不可能被破解。

HD钱包

通过BIP协议生成账号的钱包叫做HD钱包。这个HD钱包,并不是Hardware Wallet硬件钱包,这里的 HD 是Hierarchical Deterministic的缩写,意思是分层确定性,所以HD钱包的全称为比特币分成确定性钱包 。

以太坊对BIP的支持

BIP是用于提出 Bitcoin 的新功能或改进措施,那么对于以太坊来说如何支持呢?

密码、私钥、keystore与助记词的关系

它们关系可以用下面的图来表述。

文章结构

钱包的核心:私钥

基于以上的分析,我们对以太坊钱包的账号系统有了一个很好的认识,那么我们在使用钱包的过程中,该如何保管自己的钱包呢?主要包含以下几种方式:

通过以上三种中的一种方式都可以解锁账号,然后掌控它,所以对于每种方式中的数据都必须妥善包括,如有泄漏,请尽快转移数字资产。

我们可以得到以下总结:

可以看出这几种方式的核心其实都是为了获得私钥,然后去解锁账号,因此钱包的核心功能是私钥的创建、存储和使用。


参考链接

觉得文章不错就支持一下呗~

打赏二维码