研究。密钥派生
BIP32非强化版父密钥递增机制
BIP32 有一个鲜为人知的特性:即 xpub 加上一个未经过“强化”处理的子私钥,便可能泄露父私钥——这既是一种真实存在的风险,对所有者而言,也是一种恢复手段。
BIP32 分层确定性钱包会从一个种子生成一整棵密钥树。大多数人都知道这棵树是向下生长的——从父节点到子节点。但很少有人知道,在特定条件下,这棵树也可以向上“攀爬”。本页面详细介绍了“非强化升级”特性:它是什么,为何对安全性至关重要,以及它如何帮助恢复钱包。
HD推导原理
在 BIP32 钱包中,每个密钥都会通过一种将父密钥与链码及索引结合的单向函数来派生子密钥。该派生方式有两种形式:强化派生(索引大于 2³¹),需要父私钥;以及非强化派生,可仅凭父公钥完成。 非强化派生正是xpub的价值所在——仅观察型服务器无需持有私钥,即可生成新的接收地址。
升级属性
这里就是关键所在。对于非加固的派生机制,如果同时知道父节点的公钥(xpub),则子私钥与其父节点之间的关系是可逆的。具体来说:给定xpub和任意一个非加固的子私钥,就可以计算出父节点的私钥——进而推导出整个子树。只要泄露一个子私钥加上 xpub 公钥,该分支就会完全被攻破。
为什么这会构成安全风险
这使得两件看似安全的事情变成了危险的组合。出于记账或仅查看目的而共享 xpub 似乎无害,而泄露单个子私钥则感觉像是局限于单个地址的损失。 但二者结合起来却并非如此:持有 xpub 的攻击者,只要获取一个未经过加固处理的子密钥,就能追溯到父密钥,并清空该账户中的所有地址。这是一个classic ,两个单独看来微不足道的暴露点结合在一起,导致了完全的账户被攻破,这也是为什么在账户边界上需要采用加固的密钥派生机制。
它如何帮助您恢复密钥
当你作为所有者试图追回自己的资金时,同一笔资产便成了一份“礼物”。如果你持有该账户的 xpub,以及哪怕仅有一把未经过加固处理的子私钥——可能是单个导出的密钥,或是你仍持有的某个地址的密钥——那么父密钥及整个分支都能被重建。 一套看似无用的、不完整且零散的密钥材料,通过“升级”过程,可以重建整个钱包。这将“我只有一个旧私钥和一个 xpub”这种看似无望的情况,转变为完全恢复的可能性。
适用情况
具体条件如下:派生过程必须是非加固的(加固的子地址无法透露任何关于父地址的信息),你需要父地址的正确xpub,以及直接位于其下方的真实子地址私钥。许多钱包正是在账户层级使用加固派生机制来阻止这种情况,因此该方法并非在所有情况下都适用——但在使用非加固派生的钱包中,这是一种强大且常被忽视的途径。
案例评估
要确定是否适用递增机制,需要先识别钱包的派生方案——即该钱包由哪款软件生成,以及相关分支是否经过强化处理——然后确认该 xpub 确实对应于您所持有的子密钥的父密钥。由于数学计算是精确的,一旦这些事实吻合,重建过程就是确定性的:要么能正确推导出父密钥,要么输入不匹配,中间不存在任何猜测的余地。
保护自己
关于安全防护的要点很简单:将您的 xpub 视为敏感信息而非公开信息,并且在任何人知晓对应 xpub 的情况下,切勿泄露任何单个子私钥。如果您必须出于仅查看目的共享 xpub,请务必明白:其下任意一个未经过强化处理的子私钥一旦泄露,都会导致整个账户遭到入侵。在可能的情况下,请使用在账户边界处进行强化的钱包,这样即使 xpub 和子私钥同时泄露,也无法被结合起来用于权限提升。
一个具体的例子
设想一个钱包:它曾向一名会计师提供了一个仅供查看的 xpub,用于追踪入账款项;同时,多年前还单独导出了某个地址的私钥,用于清空该地址的小额余额。单独来看,这两件事似乎都不重要——xpub 不会泄露任何私钥,而单个地址的私钥风险仅限于该地址本身。但如果该地址是共享 xpub 下的一个未加固子地址,那么这两者结合起来就能重建父私钥及其下所有子地址的私钥。 攻击者利用这一组合进行攻击所依赖的数学原理,同样也让合法所有者在丢失主钱包后,只要持有这两部分信息,就能重新找回并恢复该分支中的所有资产。这最清晰地说明了为何这一特性既是一种隐患,又是一条生命线。
我们的文档
KeychainX 曾在实际恢复过程中利用未经加固的权限提升机制,根据零散的密钥素材重建钱包,我们在此记录这一过程,因为它既作为恢复工具被低估,作为风险也被低估。这项工作与我们更广泛的密钥派生研究并行,包括Trezor 密钥派生取证分析。如果你持有 xpub 和一个孤立的私钥,请不要认为它们毫无用处。
常见问题
您需要哪些关键材料?
理想情况下,应包含账户的 xpub 以及其下至少一个未经过加固处理的子私钥。通过这两个未经过加固处理的私钥,可以重建父私钥以及整个分支。
什么是 BIP32 非强化升级?
一种属性:给定一个父级扩展公钥(xpub)和任意一个非强化子级私钥,即可计算出父级私钥——从而推导出整个分支。
分享我的 xpub 安全吗?
也不尽然。仅凭 xpub 本身只能用于查看,但若与一个泄露的、未经加固的子私钥结合使用,就会暴露父私钥以及该账户中的所有地址。请将 xpub 视为敏感信息。
这对我恢复钱包有什么帮助?
如果你拥有 xpub 以及哪怕仅有一把非强化型子私钥,就可以重建父密钥和整个分支——从而将零散的密钥素材转化为完整的恢复。
这总是适用的吗?
不。这需要使用非加固的派生函数以及相应的 xpub。在账户级别进行加固的钱包会阻止此操作,因此它仅适用于特定的配置。
康复治疗需要多少钱?
按成功结果付费:仅在成功找回钱包的情况下,按找回金额的一定比例收取费用,且无需预付任何费用。