一、什么是分层确定性钱包(Hierarchical Deterministic Wallets)
分层确定性钱包是一种管理加密货币公私钥的方法,其所有密钥都是从一个种子按照一定的层次结构(树状结构)计算派生出来的,密钥之间存在一定的血缘关系。用户只需记住简单的助记词,就可以生成和恢复整个密钥树的密钥对,实现极简的密钥备份和恢复。
二、分层确定性钱包的工作原理
在比特币改进提议BIP32中定义了分层确定性钱包的工作过程,其整体结构如图所示。
图一、分层确定性钱包工作原理总览
1、主密钥对的生成
根种子通过HMAC-SHA512算法计算得到一个主私钥(master private key) 和 一个主链编码(master chain code)。
图二、主密钥对的生成过程
2、子密钥派生(Child key derivation,CKD)
1)常规派生,父公钥参与派生计算,包括父公钥->子公钥和父私钥->子私钥。其中父公钥、链码、索引号经HMAC-SHA512计算产生512位的哈希值,右256位作为子链链码,左256位附加到父私钥衍生计算出子私钥,或附加到父公钥计算出子公钥。
图三、常规派生1:父公钥 -> 子公钥
图四、常规派生2:父私钥 -> 子私钥
2)强化派生,父公钥不参与派生计算,父私钥->子公钥,是为解决常规派生中泄露链码时将导致所有子公钥泄露,且当子私钥也泄露时出现父私钥和其它子私钥被推导出来的问题{父私钥= (子私钥-左256位) % n},父私钥、链码、索引号经HMAC-SHA512计算产生512位的哈希值,右256位作为子链链码,左256位附加到父私钥衍生计算出子私钥。
图五、强化派生:父私钥 -> 子私钥
三、分层确定性钱包的主要优点
安全性:分层次保管不同级别的私钥,可减少不必要的私钥泄露。
隐私性:允许用户生成多个地址,这有助于提高用户的隐私性。
便利性:允许用户轻松地生成和管理大量的地址。
可扩展性:用户可以根据需要生成大量的地址,而不会对钱包的性能产生影响。
可恢复性:只需恢复主种子就可以重新生成所有的密钥对。
四、对分层确定性钱包思考
分层确定性钱包的实现原理上,充分体现了密钥间层次化的血缘和权限关系,其结构同企业的组织架构具有高度的相似性。因此,后续将对分层确定性钱包在企业的权限管控上的开展应用研究。