主页 > imtoken下载官网 > 什么是以太坊私钥存储(Keystore)文件?

什么是以太坊私钥存储(Keystore)文件?

imtoken下载官网 2023-12-26 05:10:22

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

例如,使用 geth:secure

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

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

您需要将那些非常珍贵的密钥库文件备份并存储在一个或多个秘密位置,以便只有您可以获取它们并获得资金。工具

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

幸运的是,作为以太坊用户,您可以通过以下方式搞砸:加密

1. 你丢失了你的密钥库文件命令行

2. 您忘记了与文件关联的密码 3d

3. 或者你把两者都搞砸了。 博客

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

以太坊联盟和以太坊的关系_以太坊私钥破解_以太经典和以太坊统一

什么是密钥库文件?

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

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

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

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

密钥库文件是什么样的?

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

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

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

一个笨重的 JSON 文件,其中包含许多似乎与复杂的加密操作相关的神奇参数。 它没有吸引力。

让我们明白

以太经典和以太坊统一_以太坊私钥破解_以太坊联盟和以太坊的关系

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

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

这包括:

cipher:对称AES算法的名称;

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

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

kdf:密钥生成函数以太坊私钥破解,用来让你用密码加密keystore文件;

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

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

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

1.加密你的私钥

以太坊联盟和以太坊的关系_以太经典和以太坊统一_以太坊私钥破解

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

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

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

Cipher 是一种用于加密以太坊私钥的对称加密算法。 这里cipher使用的是aes-128-ctr加密方式。

· Cipherparams是aes-128-ctr加密算法需要的参数。 在这里,唯一使用的参数 iv 是 aes-128-ctr 加密算法所需的初始化向量。

·密文是aes-128-ctr函数的加密输入。

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

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

-ciphertex密文的对称解密-

2. 用密码保护它

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

以太坊私钥破解_以太经典和以太坊统一_以太坊联盟和以太坊的关系

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

这就是 kdf 和 kdfparams 的用途:

kdf 是一种密钥生成函数,可根据您的密码计算(或检索)解密密钥。 这里kdf使用了scrypt算法。

· kdfparams 是scrypt 函数需要的参数。 这里简单的说dklen,n,r,p,salt就是kdf函数的参数。 可以在此处找到有关 scrypt 函数的更多信息。

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

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

-使用密码生成密钥-

3.确保您的密码正确

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

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

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

以太经典和以太坊统一_以太坊联盟和以太坊的关系_以太坊私钥破解

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

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

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

把它们放在一起

哟! 如果你做到了这一点,恭喜你!

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

首先,您输入密码,该密码用作 kdf 密钥生成函数的输入,用于计算解密密钥。 然后将刚刚计算出的解密密钥与密文密文链接起来进行处理,与mac进行比对,确保密码正确。 最后通过密文对称函数用解密密钥对密文密文进行解密。

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

以太坊私钥破解_以太坊联盟和以太坊的关系_以太经典和以太坊统一

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

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