深入理解比特币中非强化密钥的不安全原因

来源:互联网 发布:mac如何切换任务 编辑:程序博客网 时间:2024/05/17 04:58

比特币中,确定性钱包给钱包管理和钱包在电子商务和公司、组织中授权使用比特币提供了方便,可是在非强化的情况下,会存在不安全的问题(存在泄漏父私钥的可能)。
为什么会这样呢?
下面我简要分析这个破解的过程:
如果我获得了父公钥扩展地址(包含父公钥和父链码),以及子私钥,那么是可以获得父私钥的,由了父私钥,那么就可以解锁其下所有比特币地址的交易。

我们先来看看子密钥的形成过程,依据BIP-0032的说明,非强化的密钥有如下计算过程:
请看下图:
子公钥推到图
子私钥时通过父公钥+父链码+索引通过HAMC-SHA512生成的一个512位的结果,取高256位+私钥(注意,这里是重点),子链码取低256位。
由于扩展公钥是公布出来的(比如攻击电商服务器)可以获取,那么相当于只要获取子私钥的索引,就可以计算子私钥和子链码,如果我们拥有私钥,那么通过暴力破解是可以计算出这里的索引编号的(通过不断尝试,我推测的,可能有更好的办法),从而获得完整的HMAC-SHA512的结果,从而通过减法(父私钥 = 子私钥 - HASH结果高256位)计算得出。
拥有了父私钥和父链码,就可以生成所有子节点的私钥和链码,从而获得子节点的所有权限!

参考

  • BIP-00032
  • 精通比特币(第二版)
  • Derivation of parent private key from non-hardened child
原创粉丝点击