2022区块链科普-什么是以太坊私钥储存(Keystore)文件-

当前位置:首页 > 币圈百科 > 2022区块链科普-什么是以太坊私钥储存(Keystore)文件-

2022区块链科普-什么是以太坊私钥储存(Keystore)文件-

2022-10-12币圈百科273

进入keystore管理以太坊的私钥有很大的障碍,主要是以太坊客户端将大部分密码复杂度隐藏在直接命令行或图形界面下。

例如,使用geth:

$ geth account new您的新帐户被密码锁定。请输入密码。不要忘记这个密码。密码短语:重复密码短语:地址:{ 008 aeeda 4d 805471 df 9 B2 a5 b 0 f 38 a 0 C3 bcba 786 b } $ geth帐户列表account # 0:{ 8 a1 C4 d 573 cc 29 a 96547816522 cfe 0 b 266 e 88 ABAC }密钥库:~/。ether eum/keystore/UTC-008 AEEDA 4d 805471 df9 b 2 a 50 f 38 a 0 C3 bcba 786 b[X]我只需要输入3个字就可以创建一个新账户。然后输入两次密码,就这么简单!我的以太坊密钥库文件已创建。

你需要将那些珍贵的keystore文件备份存储在一个或多个秘密的位置,这样只有你才能得到这些文件,得到资金。

从经验来看,当我没有完全理解一个新概念的微妙之处,并过度依赖抽象层和现有工具来使我的生活变得更容易时,我很可能会忘记一些东西,走不必要的捷径,并把它搞砸。当我搞砸了,可能只是以我辛辛苦苦挣来的以太坊被永久锁死而告终(还好还没发生!)。

幸运的是,作为一个以太坊用户,没有太多的方法可以搞砸:

您丢失了您的密钥库文件,您忘记了与文件相关联的密码或者您搞砸了这两者。

在本文中,我们将向您介绍如何从密钥库文件中计算以太坊私钥。我们将讨论加密函数(对称加密、密钥生成函数、SHA3哈希算法),但我们将尽力简明、直接地解释上述问题。

什么是密钥库文件?

以太坊的密钥库文件(存储在~/中)。以太坊/keystore对于Linux系统或者在C:\ users \ appdata/roaming/以太坊/keystore对于Windows系统)是你唯一的加密文件,用来签署以太坊的私钥。如果你丢失了这个文件,你就失去了你的私钥,也就意味着你失去了签署交易的能力,也就意味着你的资金被永久锁在了你的账户里。

当然,你可以直接将你的以太坊私钥存储在一个加密文件中,但是这样你的私钥就容易被攻击。攻击者只需读取您的文件,用您的私钥签署交易,然后将钱转到他们的帐户。在你意识到发生了什么之前,你的钱会在短时间内丢失。

这就是创建以太坊密钥库文件的原因:它允许您以加密的方式存储密钥。这是安全性(攻击者需要密钥库文件和您的密码来窃取您的资金)和可用性(您只需要密钥库文件和密码来使用您的资金)之间的完美平衡。

为了让您发送一些以太币,大多数以太币客户端都会让您输入密码(与创建帐户时的密码相同)来解密您的以太币私钥。解密后,客户端程序获得私钥来签署交易,允许您转移资金。[x ][ x]密钥库文件看起来像什么?

如果你打开你的一个账户文件,看起来是这样的(取自这里):

out的文件,看起来是这样的(取自这里):

$ cat ~/。ether eum/keystore/UTC-008 aeeda 4d 805471 df 9 B2 a5 b 0f 38 a 0 C3 bcba 786 b { ' crypto ':{ ' cipher ':' AES-128-CTR ',' cipher params ':{ ' iv ':'蓑衣网小编2022 83 DBC 02 D8 cc b40 e 466191 a 123791 e 0e ' },'密文':' d 172 BF 743 a 674 da 9 cdad 04534d 56926 ef 8358533

让我们深入了解一下

。如果你看一下这个keystore文件的结构,你会看到大部分内容都在“crypto”里:

' crypto ':{ ' cipher ':' AES-128-CTR ',' cipher params ':{ ' iv ':' 83 DBC 02 D8 CCB 40 e 466191 a 123791 e0e ' },' cipher ':' d 172 BF 743 a 674 da 9 cdad 04534d 56926 ef 8358534d 458 fffccd 4 e 6 ad 22

密文:您的以太坊私钥使用上述密码算法加密;

kdf:密钥生成函数,用来让你用密码加密keystore文件;

kdfparams:上述kdf算法所需的参数;

Mac:用于验证密码的代码。

让我们看看它们是如何协同工作的,以及如何在您的密码下保护keystore文件。

1。加密你的私钥

如前所述,以太坊账户是用来加密和签署交易的私钥?—公钥对。为了保证你的私钥不是以明文的形式存储在文件中(也就是说,只要能得到这个文件,任何人都可以读取),使用强对称算法(cipher)对其进行加密是必不可少的。

这些对称算法使用密钥来加密数据。加密后的数据可以用相同的方法和相同的密钥解密,因此该算法被命名为对称算法。在本文中,我们称这个对称密钥为解密密钥,因为它将用于解密我们的以太坊私钥。

下面是cipher、cipherparams和密文的相应概念:

Cipher是一种对称加密算法,用于加密以太坊的私钥。这里的密码使用aes-1蓑衣网小编202228-ctr加密模式。Cipherparams是aes-128-ctr加密算法所需的参数。这里,唯一使用的参数iv是aes-128-ctr加密算法所需的初始化向量。密文密文是aes-128-ctr函数的加密输入。

现在,您已经拥有了执行解密以太坊私钥计算所需的一切.诸如此类。您需要首先检索您的解密密钥。

-密文对称解密-

2。用您的密码

保护它为了确保您的帐户很容易解锁,您不需要记住用于解密密文的每个又长又不便于用户使用的解密密钥。相反,以太坊开发者选择了基于密码的保护,也就是说你只需要输入密码就可以拿回解密密钥。

为了做到这一点,以太坊使用了密钥生成函数,输入密码和一系列参数就可以计算出解密密钥。

区块链科普:什么是以太坊私钥储存(Keystore)文件?这就是kdf和kdfparams的用途:

kdf是一个密钥生成函数,它根据您的密码计算(或检索)解密密钥。这里,kdf使用scrypt算法。Kdfparams是scrypt函数的必需参数。这里简单的说,dklen,n,r,p,salt就是kdf函数的参数。关于scrypt函数的更多信息可以在这里找到。

这里用kdfparams参数调整scrypt函数,反馈给我们的密码,就会得到解密密钥,也就是密钥生成函数的输出。

-用密码生成密钥-

3。确保你的密码是正确的

我们用密码和keystore文件描述生成以太坊私钥需要的所有东西。但是,如果解锁账号的密码错了会怎么样?

根据目前我们看到的情况,所有操作(密码推导和解密)都会成功,但是最终计算出来的以太坊私钥是不正确的,这首先违背了使用密钥文件的初衷!

我们希望确保输入的解锁帐户的密码是正确的,与最初创建密钥库文件时的密码相同(回想一下在geth下创建新帐户时输入的两次密码)。蓑衣网小编2022区块链科普:什么是以太坊私钥储存(Keystore)文件?

这就是密钥库文件中的mac值发挥作用的地方。 在执行密钥生成函数后,其输出(解密密钥)和密文被处理[注1]并与mac(类似于批准的印章)进行比较。如果结果与mac相同,则密码正确,可以开始解密。

[注1]这里略。在与mac比较之前,解密密钥(左起第二个字节的16个字节)应与密文连接并进行哈希处理(使用SHA3-256方法)。

把一切放在一起考虑

Phew!如果你已经这样做了,那么恭喜你!

让我们回顾一下我们描述的3个功能。

首先你输入一个密码,这个密码作为kdf密钥生成函数的输入来计算解密密钥。然后,将新计算的解密密钥与密文连接并处理,与mac进行比较,以确保密码正确。最后,用解密密钥通过密码对称函数解密密文。区块链科普:什么是以太坊私钥储存(Keystore)文件?

看!解密结果就是你的以太坊私钥。你可以在这里看整个过程:

从图中可以看到,整个过程可以看成一个黑盒(然而在图中是一个灰盒),你的密码是唯一的输入,你的以太坊私钥是唯一的输出。其他需要的信息可以在创建以太坊账户时生成的密钥库文件中获得。

为此,请确保您的密码足够强(而且无论如何都要记住!)来保证即使攻击者窃取了你的keystore文件,也不能轻易获取你的私钥。

以上是区块链的科普:以太坊的私钥库文件是什么?详情请关注Suoyi.com的其他相关文章,了解更多关于以太坊私有密钥库文件的信息!

2022区块链科普-什么是以太坊私钥储存(Keystore)文件- | 分享给朋友: