助记词的生成原理

助记词的实现

别人的库多半都是只实现了部分功能,所以fork了人家的源码,在此基础上增加了实用功能,保证通过助记词恢复和对助记词的校验,避免了因随意输入助记词便可恢复成私钥的过程。原作者的实现并非十分高效,但接口很直观,该有的功能很全面,做法有很多,开源能使它更好。仅当学习。

https://github.com/alphaqiu/mnemonic

BIP39是助记词标准的实现,助记词是一个随机数的字序列,用来作为种子产生一个确定性的钱包。单词序列足以重新创建种子,然后再创建钱包和所有派生的密钥。一个实现带有助记词的确定性钱包应用程序在首次创建钱包时将向用户显示12到24个单词的序列。该单词序列是钱包备份,可用于恢复和重新创建相同或任何兼容的钱包应用程序中的所有密钥。记忆单词使用户更容易备份钱包,因为与随机数字序列相比,它们易于阅读和正确地转录。所有的助记词在这里可以查看:助记词词库。

使用BIP39中定义的标准化过程,钱包自动生成助记词。钱包从一个熵源开始,添加一个校验和,然后将熵映射到一个单词列表,具体步骤如下:

  1. 创建128到256位的随机序列(熵)。
  2. 通过获取SHA256哈希的第一(熵长度/ 32)位来创建随机序列的校验和。
  3. 将校验和添加到随机序列的末尾。
  4. 将序列分成11位的部分。
  5. 将每个11位值映射到来自2048个单词的预定义字典中的单词。
  6. 助记词是单词序列。 生成助记词的步骤如下图。

img

下表描述了初始熵长度(ENT),校验和长度(CS)和单词中生成的助记词(MS)的长度之间的关系。

从助记词到种子

用户可以决定用密码来保护他们的助记符。如果不存在密码短语,则使用空字符串“”。

助记词代表长度为128到256位的熵。然后使用熵通过使用密钥扩展函数PBKDF2来导出更长(512位)的种子。然后,所产生的种子用于构建确定性钱包并获得其密钥。

密钥扩展功能有两个参数:助记词和盐(salt)。密钥扩展功能中的盐的目的是使得难以构建能够进行暴力攻击的查找表。在BIP-39标准中,salt具有另一个目的 - 它允许引入密码短语作为保护种子的额外安全因子。

  1. PBKDF2密钥扩展功能的第一个参数是从步骤6产生的助记词。
  2. PBKDF2密钥扩展功能的第二个参数是salt。salt由字符串常量“mnemonic”和可选的用户提供的密码短语字符串组成。
  3. PBKDF2使用2048轮HMAC-SHA512哈希算法来扩展助记词和salt参数,产生512位值作为其最终输出。那个512位的值就是种子。 使用助记词来生成种子的步骤如下图。

img

来源:通过助记词扩展子地址的原理与编码实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • BIP39标准就是为了解决助记词的需求,通过随机生成12~24个容易记住的单词,单词序列通过PBKDF2与HMAC...
    捕梦少女的梦想阅读 2,620评论 5 2
  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary阅读 5,093评论 0 4
  • 落落从来没有想过他们会再次遇见。就算这个城市太小,可是两个人相遇的情况也微乎其微。 她站在阳光下,对面的人也在看她...
    呼啦啦的那个北风吹阅读 167评论 0 0
  • 我的同事小飞,是一个令人艳羡的女人。 37比例的完美身材,眼睛大且有神,身材姣好,偶尔打扮起来让人忍不住多看几眼。...
    Ashley_Fang阅读 970评论 0 0
  • 我也不知道,为什么喜欢读人物传记,听说过的没听说过的,有名的不知名的,我都喜欢。想从别人的人生里看出什么出路?仅仅...
    Wisconsin0607阅读 320评论 0 0