首页 > 品牌百科 > 查看内容
  • 分享到

火币区块链产业专题报告:钱包篇

2018-08-10 22:39

来源:火币研究院

作者:佚名



3.2.2通过助记词生成种子(BIP39标准)


助记词由长度为128到256位的随机序列(熵)匹配词库而来,随后采用PBKDF2(Password-Based Key Derivation Function 2)推导出更长的种子(seed)。生成的种子被用来生成构建deterministic Wallet和推导钱包密钥。


在密码学中,Key stretching技术被用来增强弱密钥的安全性,增加了暴力破解 (Brute-force attack)对每个可能密钥尝试攻破的时间,增强了攻击难度。各种编程语言原生库都提供了key stretching的实现。PBKDF2是常用的 key stretching算法中的一种。基本原理是通过一个为随机函数(例如 HMAC 函数),把明文和盐值作为输入参数,然后重复进行运算最终产生密钥。


如图3.5所示:


1)PBKDF2有两个参数:助记词和盐。盐的目的是提升进行暴力攻击时的困难度,可以参见BIP-39标准。盐由字符串常数“助记词"与可选的用户提供的密码字符串连接组成;


2)PBKDF2使用HMAC-SHA512作为随机算法+2048次哈希重复计算,最终得到BIP32 种子,512 位(64字节)是期望得到的种子长度。即DK = PBKDF2(PRF, Password, Salt, c, dkLen),其中,PRF是一个伪随机函数,例如HASH_HMAC函数,它会输出长度为hLen的结果;Password是用来生成密钥的原文密码;Salt是一个加密用的盐值;c是进行重复计算的次数;dkLen是期望得到的密钥的长度;DK是最后产生的密钥。



发表评论
回顶部