1703877609
区块链项目开发指南 5.3 分层确定性钱包
1703877610
1703877611
分层确定性钱包(Hierarchical Deterministic wallet,HD钱包)是由一个单独的起点(称为seed,即种子)衍生的地址和密钥的集成系统。确定性表明对于相同的seed生成相同的地址和密钥,分层表明地址和密钥以相同顺序生成。它使备份和存储多个账户变得容易,因为用户只需要存储seed,而不用存储单个密钥和地址。
1703877612
1703877613
1703877614
为什么用户需要多个账户?
1703877615
1703877616
为什么用户需要多个账户?因为要隐藏财产。账户余额在区块链中公开可用,所以,如果用户A与用户B分享地址以接收一些以太币,则用户B可以查看该地址中有多少以太币。因此,用户通常在多个账户中存有财产。
1703877617
1703877618
HD钱包有多种类型,它们的种子格式以及生成地址和密钥的算法不同,例如BIP32、Armory、Coinkite、Coinb.in等。
1703877619
1703877620
1703877621
什么是BIP32、BIP44和BIP39?
1703877622
1703877623
比特币改进提议(Bitcoin Improvement Proposal,BIP)是一个为比特币社区提供信息的设计文档,它描述比特币的一个新功能或者其过程或者环境。BIP应当为该功能提供一份简明技术规范和功能基本原理。在写本书时,有152个BIP。BIP32和BIP39分别提供关于实现HD钱包和助记种子规范(mnemonic seed specification)的算法信息。
1703877624
1703877625
如要学习更多BIP的相关知识,请访问https://github.com/bitcoin/bips。
1703877626
1703877627
1703877628
1703877629
1703877631
区块链项目开发指南 5.4 密钥衍生函数
1703877632
1703877633
不对称的加密算法定义密钥的性质以及生成密钥的方法,因为密钥需要相互关联。例如,RSA密钥生成算法是确定性的。
1703877634
1703877635
对称的加密算法只定义密钥长度。密钥由用户来生成。有多种算法生成密钥,其中一种是KDF。
1703877636
1703877637
密钥衍生函数(KDF)是用于从一些密值(例如主密钥、密码)中衍生对称密钥的确定性算法。有多种类型的KDF,例如bcrypt、crypt、PBKDF2、scrypt、HKDF等。如要学习更多KDF的相关知识,请访问https://en.wikipedia.org/wiki/Key_derivation_function。
1703877638
1703877639
1703877640
为了从一个密值生成多个密钥,可以对一个数执行拼接(concatenate)和递增(increment)运算。
1703877641
1703877642
基于密码的密钥衍生函数用一个密码生成一个对称密钥。由于在实践中,用户通常使用较弱的密码,基于密码的密钥衍生函数比较慢,占用了大量内存,使其难以启动强力攻击和其他攻击。基于密码的密钥衍生函数使用广泛,因为难以记住密钥,且存储也有风险——有可能被盗。PBKDF2是一个基于密码的密钥衍生函数的例子。
1703877643
1703877644
主密钥或者密码难以使用强力攻击破解;因此,如果你想从主密钥或者密码生成一个对称密钥,可以使用不以密码为基础的密钥衍生函数,例如HKDF。HKDF比PBKDF2快得多。
1703877645
1703877646
1703877647
为什么使用KDF,而不使用哈希函数?
1703877648
1703877649
哈希功能的输出可以当作对称密钥加密技术使用。所以你肯定在奇怪为什么需要KDF。如果使用的是主密钥、密码或者强密码,那么使用一个哈希函数就行了。例如,HKDF仅使用哈希函数生成密钥。但是如果不能保证用户使用强密码,最好使用哈希函数衍生的密码。
1703877650
1703877651
1703877652
1703877653
1703877655
区块链项目开发指南 5.5 LightWallet
1703877656
1703877657
LightWallet是一个实现BIP32、BIP39和BIP44的HD钱包。LightWallet提供API来创建和签署交易,或者使用LightWallet生成的地址和密钥加密和解密数据。
[
上一页 ]
[ :1.703877608e+09 ]
[
下一页 ]