主页 > imtoken怎么下载到手机 > 【以太坊钱包开发4】密码、私钥、keystores和助记词的爱恨情仇

【以太坊钱包开发4】密码、私钥、keystores和助记词的爱恨情仇

imtoken怎么下载到手机 2023-04-09 06:32:43

在前面的教程中,我们已经对以太坊钱包有了一定的了解。 上一章也重点介绍了账户地址的生成过程。 以太坊钱包的关键点之一是账户系统。 这个模块很多初学者都不是很熟悉。 明确密码、密钥库、助记词和私钥之间的关系。 一起来看看他们之间究竟有着怎样的爱恨情仇,让大家摸不着头脑。

1. 了解密码、私钥、密钥库和助记词

1. 密码

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

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

2.私钥

私钥由64位十六进制字符组成,如:

0xE4356E49C88C8B7AB370AF7D5C0C54F0261AAA006F6BDE09CD4745CF54E0115A,一个账户只有一个私钥,不可修改,谁拥有私钥就可以控制该账户的数字货币。 通常,私钥和公钥成对出现在钱包中。 有了私钥,我们就可以通过一定的算法生成公钥,然后用公钥通过一定的算法生成地址。 这个过程是不可逆的。 它是如何产生的? 我们在上一章中有详细的说明。 私钥必须妥善保管。 如果泄露,其他人可以通过私钥解锁账户,将你账户的数字货币转出。

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

3.密钥库

以太坊为什么叫以太坊_以太坊密钥破解_以太坊和以太币有什么区别

因为私钥不利于记忆,容易被盗,所以就有了Keystore。 Keystore 常见于以太坊钱包中。 它不是私钥,而是存储私钥的加密JSON文件。 这个 JSON 文件是密钥库,所以它是加密的私钥。 但是Keystore必须配合钱包密码才能使用账户,所以只有Keystore文件无法控制账户。 助记词和私钥不同。 只要知道助记词或私钥,就可以控制账户。

在应用中,可以在解锁账户后生成Keystore文件。 支持的钱包包括MetaMask、Mist等。

4.助记词

私钥是64位的16进制字符,不利于记录,容易记忆。 因此,采用一种算法,将一串随机数转换成一串12到24个字的容易记忆的字串,方便保存记录。 于是有同学得出以下结论:

助记符是私钥的另一种表示形式。

有同学说助记词=私钥,这是不正确的。 通过助记词可以得到多个关联的私钥,但是不能通过其中一个私钥得到助记词,所以助记词≠私钥。

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

BIP

弄清楚助记词和私钥的关系以太坊密钥破解,需要了解BIP协议,BIP协议是Bitcoin Improvement Proposals的缩写,意思是比特币改进提案,用于提出比特币的新功能或改进。 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

目的:BIP43之后建议设置常量为44'。 表示根据 BIP44 规范使用此节点的子树。

以太坊密钥破解_以太坊和以太币有什么区别_以太坊为什么叫以太坊

Coin_type:币种,代表一个主节点(种子),可用于无限数量的独立加密货币,如比特币、莱特币或域名币。 这个级别为每个硬币创建一个单独的子树,避免重复使用其他链上已经存在的地址。 开发人员可以为他们的项目注册未使用的号码。

Account:账户,这一层为了设置独立的用户身份,可以将所有币种放在一个账户中,从0开始,依次递增。

变化:外链使用常量0,内链使用常量1,外链用于钱包对外收付。 内链用于钱包外不可见的地址,例如返回交易变更。

Address_index:地址索引,从索引 0 开始按顺序递增编号。

BIP44的规则让HD钱包非常强大。 用户只需要保存一个种子,就可以控制所有账户的所有币种和钱包。 因此以太坊密钥破解,BIP39生成的助记词非常重要,必须妥善保管。 开裂呢? 如果一个HD钱包助记词有12个词,总共有2048个词的可能性,那么随机生成的助记词的所有可能性大约是5e+39,所以破解几乎是不可能的。

高清钱包

通过BIP协议生成账户的钱包称为HD钱包。这个HD钱包不是Hardware Wallet硬件钱包,这里的HD是

分层确定性

HD Wallet的缩写是Hierarchical Determinism的意思,所以HD Wallet的全称是Bitcoin Deterministic Wallet。

以太坊密钥破解_以太坊和以太币有什么区别_以太坊为什么叫以太坊

以太坊对 BIP 的支持

BIP用于提出比特币的新功能或改进,那么以太坊如何支持呢?

以太坊在 EIPs/issues/84 中讨论是否遵循 BIP32 和 BIP44。 社区中提出了许多有趣的意见。 比特币基于 UTXO,因此您可以使用 HD 钱包(BIP32)为每笔交易分配一个新地址。 以保护您的隐私。 但是,以太坊是基于账户的,每个账户都有一个地址,BIP是比特币的一个提案,而比特币的数据结构设计是围绕着变地址的思想进行的,BIP的一些提案可能不是适用于以太坊。 以太坊的模型不同于比特币 UTXO。 以太坊转账不能更改地址。 如果在以太坊上实现 UTXO,用户还必须签署两笔交易,将余额的一部分发送到一个地址,将余额的一部分发送到第二个地址——这会增加一倍的成本,而且第二笔交易可能不在同一个区块中,当然以太坊也可以通过智能合约的方式来实现。 另外,以太坊目前的官方钱包是KDF形式,也就是我们常说的Keystore形式。

Ethereum在EIPs/issues/85中有讨论,以太坊社区似乎采用了BIP32的方式。 建议的HD路径为:m/44'/60'/0'/0/n,其中n为第n个生成地址。 目前,实现 BIP32 的以太坊客户端包括:Jaxx、Metamask、Exodus、imToken、TREZOR (ETH) & Digital Bitbox。

2.密码、私钥、keystore和助记词的关系

它们的关系可以用下图表示。 在接下来的教程中,我们将通过代码一一学习如何实现下面的每一行。

以太坊为什么叫以太坊_以太坊密钥破解_以太坊和以太币有什么区别

钱包账户

3、钱包的核心:私钥

以太坊为什么叫以太坊_以太坊密钥破解_以太坊和以太币有什么区别

基于以上分析,我们对以太坊钱包的账户体系有了很好的了解,那么在使用钱包的过程中我们应该如何保管好自己的钱包呢? 主要包括以下方法:

私钥

密钥库+密码(密钥库+密码)

助记词

以上三种方式之一都可以解锁账户进而控制账户,因此必须妥善包含每种方式中的数据,如有泄露,请尽快转移数字资产。

我们可以得到如下总结:

Keystore可以通过私钥+密码生成,即加密后的私钥;

通过keystore+password可以得到私钥,即可以解密keystore。

通过助记词根据不同的路径获取不同的私钥,即使用HD钱包将助记词转化为种子生成主私钥,进而衍生出大量的子私钥和地址。

可以看出,这些方法的核心其实都是获取私钥,然后解锁账户。 因此,钱包的核心功能是私钥的创建、存储和使用。

参考