正常情况下,几乎不会用适当代码来生成弱密钥。然而,由于编码、系统等方面的错误,可能会生成弱密钥。这使我们注意到了以太坊地址与弱密钥之间的联系。接下来,让我们详细了解相关的研究。
弱密钥生成假设
正常情况下,使用适当代码生成弱密钥的可能性极小。然而,在实际中,由于编码错误、操作系统、设备以及执行环境等方面的问题,很容易产生弱私钥,并且这类情况还比较常见。虽然这种生成不符合常规逻辑,但错误的存在确实有可能打破原本应该安全的密钥体系,从而为后续研究弱密钥的相关影响埋下伏笔。
常见的密钥削弱错误
除了密钥截断这种情况外,还有其他一些情况会使 256 位密钥的强度变弱。这些常见的错误有可能在不经意间降低密钥的安全性。然而,由于计算资源存在限制,即便在较小的 64 位密钥空间中去枚举所有密钥也是无法做到的,因此研究者寻找了其他的方法。
枚举目标转变
因为存在上述困难,研究把重点放在了能够实现的目标上,也就是列举出 256 位私钥的 32 位子集中的密钥,这样的私钥大概有 4294967295 个。接着要算出这些私钥所对应的公开以太坊地址,并且对区块链进行查询。这是在资源受限的情况下的一个很巧妙的转变,为研究指明了新的方向。
批量扫描新方法
在对可能的以太坊地址进行批量扫描时,查询像 Etherscan 这样的在线服务是不现实的,并且还可能导致资源被滥用。所以,研究者在内存中构建了包含所有公开以太坊地址的哈希映射,然后在内存里对每个枚举密钥进行查询。在一般的中档笔记本上,其性能表现为每 CPU 每核每秒大约能够生成 15000 个密钥以及进行相应的查询,而瓶颈在于 ECDSA 私钥到公钥的生成环节。
关注重点子区域
重点放在 256 位密钥空间里的 8 个 32 位“子区域”。在这些区域中,有可能观察到使用弱私钥导出的以太坊地址。一般来说,预期密文空间的下 32 位部分最容易包含弱密钥。同时,考虑到字节顺序,也对较高的 32 位部分进行了扫描。并且还测试了 256 位密钥空间的各个不同部分。
明确私钥范围扫描
将区域定义转化为明确的私钥范围,接着在以太坊区块链上对这些私钥范围进行交易活动的扫描与测试。虽然相关密文空间范围只是 256 位密文空间的极小部分,然而考虑到错误对 256 位密文随机性的影响,私钥仍有可能存在于这些区域。总之,研究人员正努力通过各种手段去寻找答案。
你认为这种依据弱密钥来定位以太坊地址的研究,会产生怎样的实际性影响?你可以在评论区留下你的看法,并且分享并点赞这篇文章。