主页 > imtoken官网下载安全吗 > 区块链科普:什么是以太坊私钥存储(Keystore)文件?

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

imtoken官网下载安全吗 2023-09-13 05:09:55

访问密钥库以管理以太坊私钥的门槛很高,主要是因为以太坊客户端将大部分加密复杂性隐藏在简单的命令行或图形界面下。

例如,对于 geth:

$ geth account new您的新帐户已使用密码锁定。 请给个密码。 Do not forget this password.Passphrase:Repeat passphrase: Address: {008aeeda4d805471df9b2a5b0f38a0c3bcba786b}$ geth account listAccount #0: {8a1c4d573cc29a96547816522cfe0b266e88abac} keystore:~/.ethereum/ keystore/UTC----008aeeda4d805471df9b2a5b0f38a0c3bcba786b

我只需要输入 3 个词来创建一个新帐户。 然后输入两次密码,就这么简单! 我的以太坊密钥库文件已创建。

您需要将那些非常珍贵的密钥库文件备份并存储在一个或多个隐藏位置,以便只有您可以访问它们并访问资金。

从经验来看,当我不完全理解一个新概念的精妙之处,并过度依赖抽象层和现有工具来让我的生活更轻松时,我很可能会忘记事情,采取不必要的捷径并将其搞砸向上。 如果搞砸了,它最终可能会永远锁定我辛苦赚来的以太币(谢天谢地,这还没有发生!)。

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

您丢失了您的密钥库文件,您忘记了与该文件关联的密码,或者两者兼而有之,您就搞砸了。

在本文中,我们将向您介绍如何从密钥库文件中计算出以太坊私钥。 我们将讨论密码函数(对称加密、密钥生成函数、SHA3 哈希算法),但我们会尽量使解释尽可能简洁直接。

什么是密钥库文件?

以太坊密钥库文件(在 Linux 系统上存储在 ~/.ethereum/keystore 或在 Windows 系统上存储在 C:\Users\Appdata/Roaming/Ethereum/keystore 中)是您用于签署交易的唯一以太坊私钥。 加密文件。 如果你丢失了这个文件,你就丢失了你的私钥根据以太坊账号推测私钥,这意味着你失去了签署交易的能力,这意味着你的资金被永久锁定在你的账户中。

以太坊经典和以太坊_sitebihu.com 以太以太坊价格_根据以太坊账号推测私钥

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

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

为了让你发送一些以太币,大多数以太坊客户端会要求你输入密码(与你创建帐户时使用的密码相同)来解密你的以太坊私钥。 解密后,客户端程序将获得私钥来签署交易,从而允许您转移资金。

密钥库文件是什么样的?

如果您打开其中一个帐户文件,它看起来像这样(取自此处):

ount 的文件,它看起来像这样(取自此处):

$ cat ~/.ethereum/keystore/UTC---- 008aeeda4d805471df9b2a5b0f38a0c3bcba786b{“密码”:{“密码”:“aes-128-ctr”,“密码参数”:{“iv”:“83dbcc02d8ccb40e466191a123”9“9: d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c","kdf" : "scrypt","kdfparams" : {"dklen" : 32,"n" : 262144,"r" : 1,"p" : 8,"salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"} ," mac": "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"},"id": "3198bc9c-6672-5ab3-d995-4942343ae5b6","version": 3}

一个笨重的 JSON 文件,其中包含许多似乎与复杂的加密操作相关的神奇参数。 这绝不是吸引人的。

让我们深入挖掘

如果您查看此密钥库文件的结构,您会发现大部分内容都在“crypto”中:

根据以太坊账号推测私钥_sitebihu.com 以太以太坊价格_以太坊经典和以太坊

"crypto" : {"cipher" : "aes-128-ctr","cipherparams" : {"iv" : "83dbcc02d8ccb40e466191a123791e0e"},"ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c","kdf" : "scrypt","kdfparams" : {"dklen" : 32,"n" : 262144,"r" : 1,"p" : 8,"salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"},"mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"},

这包括:

cipher:对称AES算法的名称;

cipherparams:上述密码算法需要的参数;

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

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

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

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

让我们看看它们如何协同工作以使用您的密码保护密钥库文件。

1.加密你的私钥

sitebihu.com 以太以太坊价格_以太坊经典和以太坊_根据以太坊账号推测私钥

如前所述,以太坊账户是用于对交易进行加密签名的私钥-公钥对。 为了保证你的私钥不明文存储在文件中(即任何能拿到文件的人都能读取),用强对称算法(cipher)加密是必不可少的。

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

以下是cipher、cipherparams、ciphertext对应的概念:

Cipher 是一种用于加密以太坊私钥的对称加密算法。 这里cipher使用的是aes-128-ctr加密方式。 Cipherparams是aes-128-ctr加密算法需要的参数。 在这里,唯一使用的参数 iv 是 aes-128-ctr 加密算法所需的初始化向量。 密文是 aes-128-ctr 函数的加密输入。

因此,在这里,您拥有了进行计算以解密以太坊私钥等所需的一切。 您需要先检索您的解密密钥。

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

-ciphertex密文的对称解密-

2. 用密码保护它

为确保轻松解锁您的帐户,您无需记住用于解密密文的每一个又长又不友好的解密密钥。 相反,以太坊开发人员选择了基于密码的保护,这意味着您只需输入密码即可取回解密密钥。

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

根据以太坊账号推测私钥_sitebihu.com 以太以太坊价格_以太坊经典和以太坊

这就是 kdf 和 kdfparams 的用途:

kdf 是一种密钥生成函数,可根据您的密码计算(或检索)解密密钥。 这里kdf使用了scrypt算法。 kdfparams 是 scrypt 函数需要的参数。 在这里,简单地说,dklen、n、r、p 和 salt 是 kdf 函数的参数。 可以在此处找到有关 scrypt 函数的更多信息。

在这里,使用 kdfparams 参数调整 scrypt 函数,将其输入我们的密码,您将获得解密密钥,这是密钥生成函数的输出。

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

-使用密码生成密钥-

3.确保您的密码正确

我们描述了从密码短语和密钥库文件生成以太坊私钥所需的一切。 但是,如果解锁账户的密码错误怎么办?

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

我们需要确保解锁账户时输入的密码是正确的,与最初创建keystore文件时的密码一致(回想一下在geth下新建账户时输入的两次密码)。

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

根据以太坊账号推测私钥_sitebihu.com 以太以太坊价格_以太坊经典和以太坊

[注1] 这里稍微简述一下。 在与mac比较之前,将解密密钥(从左起第二个字节开始的16字节)与密文密文拼接起来并进行哈希处理(使用SHA3-256方法)。

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

把它们放在一起

哟! 如果你已经做到了这一步,那么恭喜你!

让我们回顾一下我们描述的 3 个函数。

首先,您输入密码,该密码用作 kdf 密钥生成函数的输入,用于计算解密密钥。 然后,将刚刚计算出的解密密钥与密文进行拼接处理,并与mac进行比较根据以太坊账号推测私钥,确保密文正确。 最后用解密密钥通过密文对称函数对密文密文进行解密。

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

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

从图中可以看出,整个过程可以看成一个黑框(不过图中是灰色框),你的密码是唯一的输入,你的以太坊私钥是唯一的输出。 所需的所有其他信息都可以在创建以太坊帐户时生成的密钥库文件中找到。

因此,请确保您的密码足够强(并且您无论如何都要记住它!),这样即使攻击者窃取了您的密钥库文件,也无法轻易获得您的私钥。

以上就是区块链科普:什么是以太坊私钥存储(Keystore)文件? 更多以太坊私钥存储(Keystore)文件,请关注场景首页其他相关文章!

本站提示:投资有风险,入市需谨慎。 此内容不作为投资和财务建议。 标签:区块链以太坊私钥Keystore