HD钱包详解——01背景介绍

2019-01-23 07:27:08
1
27668
文章编辑:赵时miu
密钥对

在介绍HD钱包之前,有必要先介绍私钥公钥的概念。私钥公钥对的概念随着非对称性加密算法而产生的,很多读者已经熟知私钥(公钥)可以用来加密明文,对应的公钥(私钥)可以用来解密密文。但是私钥和公钥的真实含义,以及其中的内在联系,很多人还并不清楚,而了解这些细节对于理解HD钱包的运作机制是很有必要的。本文将以比特币使用的椭圆曲线算法为例,作一简要介绍。

椭圆曲线是形如y2=x3+ax+b的曲线,如下图所示。对椭圆曲线上的两个点P,Q,若R'=P+Q,则有R为P,Q连接所成的直线与椭圆曲线所成的交点R关于X轴的对称点。如果P=Q,那么P与Q连接形成的直线即椭圆曲线在P点处的切线。

密钥对

在介绍HD钱包之前,有必要先介绍私钥公钥的概念。私钥公钥对的概念随着非对称性加密算法而产生的,很多读者已经熟知私钥(公钥)可以用来加密明文,对应的公钥(私钥)可以用来解密密文。但是私钥和公钥的真实含义,以及其中的内在联系,很多人还并不清楚,而了解这些细节对于理解HD钱包的运作机制是很有必要的。本文将以比特币使用的椭圆曲线算法为例,作一简要介绍。

椭圆曲线是形如y2=x3+ax+b的曲线,如下图所示。对椭圆曲线上的两个点P,Q,若R'=P+Q,则有R为P,Q连接所成的直线与椭圆曲线所成的比特币使用的椭圆曲线加密标准为secp256k1,其中使用的是定义在素数域Fp上的椭圆曲线y2=x3+7 mod p(有限域上的椭圆曲线与椭圆曲线类似,也定义了类似的加法法则,但数学机制更复杂,在此不再详细介绍。读者只需要按照一般的椭圆曲线理解其加法就可以了,但是要知道这种理解只是一种方便的近似)。在secp256k1中,一个椭圆曲线上的点G被规定为生成点,这个点对于所有使用secp256k1标准生成的公钥都是不变的。

私钥的本质上是一个256位的随机数,理论上你完全可以通过抛256次硬币生成这个私钥,我们将私钥记为kPri,对应的公钥kPub=kPri*G,即kPri个不动点G相加(记住kPri只是一个随机数,我们将椭圆曲线上的k个点G相加记为kG)。因此得到的公钥也是椭圆曲线上的一个点,即kPub=(xPub,yPub),xPub和yPub都是256位的数。交点R关于X轴的对称点。如果P=Q,那么P与Q连接形成的直线即椭圆曲线在P点处的切线。


钱包

这里的钱包当然不是指人们随身携带的装有证件和钱币的皮夹子,而是在加密货币领域具备生成密钥,保存密钥,发送交易,查询账户等一个或多个功能的软件应用。常见于智能手机,个人电脑,也存在专门的硬件设备。

钱包中可以只有一个密钥,也可以生成多个密钥。当多个密钥存在时,就涉及到了这些密钥之间组织结构问题,所以从狭义上说,钱包又可以理解为用于管理储存密钥的数据结构。

从这个意义上说,HD钱包指的是一种分层确定性的数据结构。

确定性

说到确定性,读者难免会问,有没有不确定性钱包呢?答案是肯定的。

不确定性钱包又叫随机钱包,其中也包含了多个密钥,但是这些密钥之间没有相互联系,每个私钥都是随机生成的。这样就带来了一个问题,当用户将钱包应用从一个设备转移到另一个设备的时候,就必须一个一个地转导出导入私钥。当私钥很多时,这样做效率是很低的。

为了解决这个问题,HD钱包应运而生。在HD钱包中,可以使用一个随机生成的种子(seed)推衍中一系列的密钥对,也就是说只要掌握了种子,就可以确定由这个种子生成的所有密钥。当钱包应用转移时,只要导入了种子,就可以将钱包应用中的所有密钥一并转移。从这个角度上说,钱包是确定性的。

分层

如前所述,确定性钱包可以由一个种子推衍出一系列的子密钥,如果每一个子密钥又可以生成一系列孙密钥,如此往复,这些密钥便形成了一个树状的结构,因此称为分层钱包。


发展历程

为了解决密钥管理和储存问题,BIP32中首次提出了HD钱包的数据结构和密钥生成算法。

为了确保随机性,BIP32要求种子至少128位,而且没有提出校验机制。一个128位的纯二进制数显然不利于记忆和保存,为了解决这个问题,BIP39中提出了生成助记词并将助记词转换为种子的算法。
BIP32提出了多个层级,但是每个层级的意义并没有明确的规定,这就导致了不同开发者开发的钱包彼此之间无法沟通。为此BIP43和BIP44对BIP32进行了改进,更为精确地定义了每个层级的含义,使得遵循同一协议的HD钱包真正互容。其中,BIP43是一个较为粗略的提议,BIP44给出了BIP43的一个详细规定。

总结

BIP32是HD钱包的核心基础,BIP39/BIP43/BIP44针对不同的方面对BIP32提出了改进,在接下来的文章里,我将对这些改进协议一一详细分析。

考资料

Antonopoulos, A. M. (2014). Mastering Bitcoin: unlocking digital cryptocurrencies. “ O’Reilly Media, Inc.”.
Hoffstein, J., Pipher, J. C., Silverman, J. H., & Silverman, J. H. (2008). An introduction to mathematical cryptography (Vol. 1). New York: springer.
Wuille, P. (2018). BIP32: Hierarchical Deterministic Wallets.
https://g://://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
Palatinus,M. (2018). BIP39: Mnemonic code for generating deterministic keys.
https://g://://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
Palatinus,M. (2018). BIP43: Purpose Field for Deterministic Wallets. 
https://g://://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki
Palatinus,M. (2018). BIP44: Multi-Account Hierarchy for Deterministic Wallets.
https://g://://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki


:http:///zhuanlan
声明:本文由入驻微想财经专栏作者撰写,观点仅代表作者本人,绝不代表微想财经赞同其观点或证实其描述。


点赞
收藏
广告
关于我们 广告服务 服务条款 联系我们 意见反馈
Copyright 2018 微想财经区块链 Ltd.Allrights Reserved 备案号:粤ICP备14042790号-4

粤公网安备 44011302001626号