深入理解Bitcoin钱包的密钥体系

字数 755阅读 42

作者:Jia,longcpp

在Bitcoin系统中,私钥对数字资产有着完全的控制,私钥的安全性即代表了数字资产的安全性。为了构建一笔合法的交易, 需要利用私钥对这笔交易进行ECDSA签名。但由于私钥本身是256位的比特串,对用户而言使用体验非常不友好。此外,出于隐私性的考虑,中本聪在比特币的白皮书中建议每次交易都启用新的Bitcoin地址,这要求用户能够妥善管理多个地址及私钥。对于普通用户而言,私钥的使用、存储和管理是一个非常棘手的问题。

Bitcoin围绕上述问题进行探索并给出了解决方案,该方案也成为数字货币钱包的事实标准:
BIP32协议提出分层确定性钱包(Hierarchy Deterministic Wallet)的概念,允许用户选择一个种子(Seed),并从该种子按照树形结构确定性地派生出大量的密钥对。用户不需要保存这些派生出的密钥对,只需要保管好自己的种子,再次使用时将种子导入钱包,即可完成对由该种子派生的所有私钥所控制资产的鉴权。
BIP44在BIP32的基础上,对密钥树的逻辑分层进行了规范,保证了不同钱包之间的兼容性。
BIP39将BIP32中的种子与一组助记词组一一对应,进一步提升了种子的可辨别性,优化了用户体验。
BIP38给出了对私钥的加密保护方案,基于用户提供的口令派生加密密钥,对私钥进行加密保护,提高了私钥的安全性。

这些协议从优化用户体验、提升私钥安全的角度对密钥管的使用、管理进行探索,给出了较好的解决方案。而基于椭圆曲线的数字签名算法(如ECDSA),加解密算法(如AES)、基于口令的密钥派生函数(如PBKDF2, Scrypt)等为这些方案提供了理论性支撑。

在介绍协议之外,我们也详细分析了BIP32给出的分层确定性钱包的安全性,尤其是在实际应用时可能存在的安全隐患。另外也对BIP38中给出的基于EC乘法运算的私钥加密方式进行了安全性分析,尤其是其中确认码的机制,并发现在特定场景下确认码不能提供足够的安全性。

前述的BIP协议的基本原理、安全分析以及依赖的密码学方案的详细介绍,请点击【阅读原文https://github.com/coinexchain/docs/blob/master/190729-bitcoin-hdwallet.pdf
】。

推荐阅读更多精彩内容