乔山办公网我们一直在努力
您的位置:乔山办公网 > office365 > 如何窃取以太坊钱包的密钥-1-office2007产品密匙

如何窃取以太坊钱包的密钥-1-office2007产品密匙

作者:乔山办公网日期:

返回目录:office365

摘要:

区块链是通过使用公钥和私钥签署和证明交易数据所有权而验证的公共交易账簿。流行的区块链可能拥有数亿笔交易量,其中包括——Bitcoin(比特币), Waves(波币), Ripple(瑞波币), ZCash(大零币), Monero(门罗币)和 Ethereum(以太坊)。目前,在以太坊上有3.45亿笔交易,涉及4700万对密钥对。新生成的密钥与现存密钥重复的概率大约是2的256次方分之一,这几乎是不可能发生的。

在本文中,我们研究了即使面对这种统计上的小概率事件,ISE发现了732个私匙及其对应的公钥,这些公钥向以太坊提交了49,060笔交易。此外,还确定了13319个以太坊被交易到无效的目标地址,或者来自弱密钥的钱包,这些ETH在以太坊市场鼎盛时期的总价值为18,899,969美元。

在这个过程中,我们发现来自这些弱密钥地址的资金正在被窃取,并被发送到一个目标地址,该目标地址属于一个正在运作的个人或团体,其目的是破解或收集私钥并获得这些资金。2018年1月13日,这名“区块链强盗”持有37926 ETH,价值54343407美元。

如何窃取以太坊钱包的密钥-1

引言:

本文的重点是破解委托给以太坊交易的私钥。如前所述,碰到与他人的以太坊地址对应的私钥的概率约为2的256次方分之1。仅仅覆盖1%的密钥空间,即使我们使用的计算资源允许我们每秒生成100万亿的密钥,也需要大约几年的时间。然而,我们没有尝试暴力搜索随机私钥,而是设计了一些方法来发现可能使用错误代码、错误随机数生成器或这两者的结合生成的密钥。以下部分概述了如何生成以太坊地址,以及破解没有使用最佳方式生成的私钥。

背景:

以太坊使用椭圆曲线的密码方法生成公钥/私钥对。使用256位私钥计算secp256k1 ECDSA曲线上的一个点,从而生成公钥。然后使用keccak256哈希函数生成公钥。该哈希值被截断到较低的160位,以生成以太坊地址。以太坊地址不能逆转为公钥,也不能以任何方式使用以太坊地址生成它的底层私钥。

给定随机生成的私钥,其有效范围为1到secp256k1曲线所定义的最大值,0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140,可以通过取公钥的keccack256哈希函数的较低(最右)160位来计算以太坊地址,定义为:

如何窃取以太坊钱包的密钥-1

图1演示了从随机生成的256位私钥到生成以太坊地址的工作流程。

如何窃取以太坊钱包的密钥-1

图1:从私钥到生成以太坊地址的示例流程。

知道了这个算法,我们的研究目标是找到那些没有用合理正确算法生成的以太坊地址,或者从非随机私钥不正确生成的地址。

如何窃取以太坊钱包的密钥-1

实验设计:

以太坊允许任何人查询地址以获得信息,比如余额、正在进行的交易和已确定的交易。这是通过查询一个在本地或远程运行的以太坊节点来实现的。为了便于使用,一些在线服务通过web接口封装底层数据。Etherscan就是这样一个工具,它可以从上面的例子中查询公开的以太坊地址:

l A99FDD90FF61DD08CF049155D18E086F7806641B

您可以到https://etherscan.io/address/A99FDD90FF61DD08CF049155D18E086F7806641B

查询,毫无疑问,这个地址有0笔交易。

如何窃取以太坊钱包的密钥-1

图2:Etherscan.io查询A99FDD90FF61DD08CF049155D18E086F7806641B

由于以太坊上记录了近5000万个公开的以太坊地址,由于一些因素,我们可能会遇到弱或者说缺乏随机性的密钥。一个明显的例子是密钥截断。

也就是说,生成一个随机的256位私钥,但是由于编码/编译器/框架或其他未知错误,只使用了一小部分的功能。

例如,一个256位私钥,其值为:

l 0x47579DA2BEA463533DBFAD6FCF8E90876C2FE9760DC1162ACC4059EE37BDDB5C

如果截短到32位,会得到如下密钥:

l 0x0000000000000000000000000000000000000000000000000000000037BDDB5C

在实验中,我们选择了一个私钥为1,仅仅是因为它可能是secp256k1的私钥的下界,并且它也位于32位截断密钥的1到232-1范围内。

我们使用私钥0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

推导出以太坊地址0x7e5f4552091a69125d5dfcb7b8c2659029395bdf

如何窃取以太坊钱包的密钥-1

如前所述,回想一下两个以太坊用户生成相同私钥的无穷小的概率。假设至少有一个用户随机生成它们。则该地址不应该与另一个以太坊用户随机生成的密钥发生巧合。这与是否从下界、上界、或使用π位密钥、以及随机等数字的密钥来探索密钥空间是无关紧要的。相反,使用Etherscan.io查询来自0x01私钥的上述地址上的交易数据,我们将看到以下证据,表明与我们有意生成的密钥发生了冲突。(比如:这个密钥已经在使用中)

如何窃取以太坊钱包的密钥-1

图3:Etherscan.io查询7e5f4552091a69125d5dfcb7b8c2659029395bdf

ISE显示,从0x01的私钥派生的以太坊地址上有592笔交易,而该地址上当前没有ETH。如果随机选择一个私钥,那么其他人生成相同密钥的几率大约是2的256次方分之一,这实际上来说是0%的几率。由于随机生成私钥为0x01所发生的概率大约为零,所以我们必须假设这个值是故意选择的,或者是由于错误。

下面的部分详细介绍了我们的研究,以了解和研究在以太坊中弱密钥的生成到底有多普遍。


文章首发在微信公众号:btc201800

知识星球ID:28018093

音频发布在喜马拉雅上“区块链杂谈 (第2季)” http://xima.tv/Bjq4se

解读区块链白皮书 http://xima.tv/RNU1Q8

宁波格密链网络科技有限公司,专注于区块链上的密码技术研发。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网