您的位置:首页 > 其它

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

2017-12-23 23:33 218 查看
比特币中,确定性钱包给钱包管理和钱包在电子商务和公司、组织中授权使用比特币提供了方便,可是在非强化的情况下,会存在不安全的问题(存在泄漏父私钥的可能)。

为什么会这样呢?

下面我简要分析这个破解的过程:

如果我获得了父公钥扩展地址(包含父公钥和父链码),以及子私钥,那么是可以获得父私钥的,由了父私钥,那么就可以解锁其下所有比特币地址的交易。

我们先来看看子密钥的形成过程,依据BIP-0032的说明,非强化的密钥有如下计算过程:

请看下图:



子私钥时通过父公钥+父链码+索引通过HAMC-SHA512生成的一个512位的结果,取高256位+私钥(注意,这里是重点),子链码取低256位。

由于扩展公钥是公布出来的(比如攻击电商服务器)可以获取,那么相当于只要获取子私钥的索引,就可以计算子私钥和子链码,如果我们拥有私钥,那么通过暴力破解是可以计算出这里的索引编号的(通过不断尝试,我推测的,可能有更好的办法),从而获得完整的HMAC-SHA512的结果,从而通过减法(父私钥 = 子私钥 - HASH结果高256位)计算得出。

拥有了父私钥和父链码,就可以生成所有子节点的私钥和链码,从而获得子节点的所有权限!

参考

BIP-00032

精通比特币(第二版)

Derivation of parent private key from non-hardened child
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息