10分钟讲清楚BIP-32中的软化派生和硬化派生

软化派生的常见使用场景是,把父公钥交给委托的服务器,服务器可以通过父公钥生成子公钥,从而获得对应的地址用于收款。 然后在自己的信任的足够安全服务器上,生成子私钥,用于签署交易。

特性对比

特性 (Feature) 软化派生 (Non-hardened) 硬化派生 (Hardened)
索引范围 0 到 2³¹-1 2³¹ 到 2³²-1
从父公钥派生 可以派生出子公钥。 不可能,会直接返回失败。
派生算法输入 哈希计算过程中使用父公钥。(哪怕是通过父私钥计算子私钥的这一过程,也使用到了父公钥。而父公钥,父私钥,子私钥三者同时出现在了一个等式中,就为反推父私钥提供了可能性,这就是为什么软化派生不安全的根本原因) 哈希计算时使用父私钥
安全性 存在风险:泄露的子私钥和父公钥可共同推导出父私钥。 安全:切断了上述风险,泄露子私钥不会危及父密钥。
主要用途 需要分享公钥以生成收款地址的场景(如电商服务器、审计)。(因为可以把自己的父公钥交给第三方,第三方可以用委托的父公钥直接生成子公钥,从而生成收款地址) 账户层级的安全隔离,创建密码学防火墙以防止风险蔓延。

Q & A

Q1: 如果我的软化派生,只派生、分发子公钥,子私钥只保管在最核心、安全的环境中,理论上也不会有什么风险是吗?

A:

理论上,这个模型是正确且安全的。这正是BIP-032中非硬化派生(软化派生)设计的经典应用场景,通常被称为“观察钱包”(Watch-only Wallet)模式。

在这种严格隔离的理想情况下,由于攻击者只能接触到公钥信息,无法获得反向推导父私钥所需的“子私钥”这一关键部分,因此资产是安全的。

然而,“理论上” 是这里的关键词。之所以我们仍然需要硬化派生,是为了增加“纵深防御”(Defense in Depth),以防范理论之外的实际风险。现实中,“最核心、安全的环境”也可能因以下原因被攻破:

  • 软件或硬件漏洞:使用的钱包软件或硬件设备可能存在未知漏洞。

  • 操作时被攻击:在使用私钥签名交易时,所连接的设备(如电脑)可能感染了恶意软件。

  • 用户失误:用户可能无意中泄露了单个私钥或助记词备份。

硬化派生的作用就是一道防火墙 。通过在关键层级(如账户层)使用硬化派生,即使某个账户下的子私钥因为意外而完全泄露,也能确保损失被控制在该账户内,

不会向上危及主私钥或其他账户


Q2: 如果整棵树都是软化派生的,是否意味着其中一个子私钥泄露了,整棵树上的所有私钥就都泄露了?

A:

是的。

如果一整棵BIP-32派生树全部使用非硬化(软化)派生,那么泄露树上任何一个节点的子私钥,都将导致整棵树上的所有私钥面临被推导出来的风险。

这个过程像一个连锁反应,可以被称为“向上攀爬”攻击:

  1. 核心漏洞: 根据BIP-032规范,知道一个父扩展公钥和任何一个由它非硬化派生出的子私钥,就等同于知道了父扩展私钥 。

  2. 向上攀爬: 假设一个层级很深的子私钥(例如 m/0/1/2)泄露了。攻击者可以利用这个私钥和它的父公钥(M/0/1),推导出父私钥 m/0/1

  3. 连锁反应: 因为从 m/0m/0/1 的派生也是非硬化的,攻击者现在可以利用新获得的 m/0/1 和它的父公钥 M/0,继续向上推导出更上一层的父私钥 m/0

  4. 最终失陷: 这个过程可以一直重复,直到最终推导出整棵树的根——主私钥(master private key)m

  5. 完全控制: 一旦主私钥被泄露,攻击者就可以重新派生出这棵树上的每一个私钥和公钥,从而完全控制整个钱包 。因此,尽量保证整个派生树上需要安全隔离的叶子节点到根的路径,都使用硬化派生,防止出现一片叶子的陷落,毁掉整棵树的安全性情况。

全部评论(0)