HD钱包wallet灵魂大检查!到底有哪些钱包经得住考验?

相信所有用过“去中心化钱包”的同学对助记词都不陌生。

不管是硬件钱包还是软件钱包,创建钱包都有两种方式:

创建助记词:钱包随机生成一组助记词,用户需要抄写备份

导入助记词:用户导入一套已有的助记词到钱包内恢复资产

那助记词又是如何变成我们的主私钥,进而用HD的方式生成所有子私钥的呢?

其实很简单。一套助记词,经过2048轮的HMAC-SHA512算法的狂虐,生成一个主私钥,进而派生出一套HD钱包。

所以,助记词和主私钥是一一对应的关系,一套助记词对应一个主私钥,也就是对应一个HD钱包。

大家这里有没有想过一个很恐怖的问题:

比方说这是掌柜手里的12个助记词:

cat tonight sadness walnut fan captain sure assume gorilla caution story pull方便起见,我们称这套词为【cat助记词】

但是,当掌柜把【cat助记词】导入钱包的时候,第一个词手抖输入成了dog,于是助记词变成了:

dog tonight sadness walnut fan captain sure assume gorilla caution story pull方便起见,我们称这套词为【dog助记词】

这时候就是悲剧的开始。

作为一名纯24K囤币党,掌柜千辛万苦省吃俭用,把所有信仰都充值到了【dog助记词】下的地址上。

然后有一天,可能因为手机或者硬件钱包坏了,也可能是又手抖删除了钱包App,总之种种原因,导致需要拿出助记词才能恢复资产。

此时,掌柜掏出了那套尘封已久的【cat助记词】,将它导入了钱包。

前面已经提过,一套助记词跟一个HD钱包是一一对应的。此时用【cat助记词】恢复得到的地址,跟【dog助记词】的地址是不一样的。也就是说,【cat助记词】下,没有任何资产。

因为误输入了一个助记词dog,掌柜的所有资产和信仰,全丢了。

是不是很恐怖?

其实机智的比特币开发者早就想到了这一切。他们定义了助记词的标准协议,会对所有助记词有效与否,进行校验

在讲“校验原理”之前,掌柜先普及一个关于助记词的基础知识。

 

BIP39 定义了助记词的标准,标准内含有一份2048个词的词表(参考链接1)。所有钱包只要遵循BIP39,生成的助记词都是从这个2048个词的词表中获得的,【cat助记词】的所有词也不例外。

2048词表的每个单词我们都标上序号,从“0”到“2047”。最大的序号“2047”用二进制表示刚好是11位“11111111111”。所以词表里的每一个词,我们都可以根据它的序号对应一个11位的二进制数。对于转换二进制后不满11位的,我们在它的二进制数前面补“0”,直至满足11位。

比如cat是第287个词,序列号为“286”,其对应的11位二进制数就是“100011110”,我们补足11位,将其表示为“00100011110”。


接下来我们看看具体的“校验”步骤

第一步:我们按照上面的方法,根据2048词表找到【cat助记词】12个词对应的11位二进制数


第二步:我们把这12个词对应的11位二进制数串在一起,得到一个132位的二进制数

001000111101110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010

第三步:我们把这个132位的二进制数拆成两部分,左边的128位,以及右边的4位。

左边128位:00100011110111001001001011110111111110110110010100101100010001000111011010000000011011110110010010100100100101110101101001010110右边4位(校验值):1010

第四步:我们开始校验这套助记词的有效性。

判断有效性的原理:左边128位二进制数的SHA256的结果的前4位,必须等于右边的4位二进制数。

我们验算一下【cat助记词】的结果。

把左边128位二进制数放进一个在线SHA256计算器(参考链接2)


(有币的助记词切勿使用在线工具校验!!!)

可以看到,SHA256的结果的前4位,正好就是132位二进制数的右边4位“1010”。

这就说明,【cat助记词】通过了校验,是一套有效助记词,然后就能进入后面的主私钥生成流程。

那我们马上来做个练习,看看输错一个单词的【dog助记词】能否通过校验:

第一步:【dog助记词】12个词对应词表的11位二进制数如下


第二步:把这12个词对应的11位二进制数串在一起,得到一个132位的二进制数:

010000001001110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010

第三步:把这个132位的二进制数拆成两部分,左边的128位,以及右边的4位:

左边128位:01000000100111001001001011110111111110110110010100101100010001000111011010000000011011110110010010100100100101110101101001010110右边4位(校验值):1010

第四步:把【dog助记词】左边128位二进制数放进SHA256计算器。


(有币的助记词切勿使用在线工具校验!!!)

可以看到,SHA256的结果的前4位是“0010”,与132位二进制数的右边4位“1010”不一致。

这样,这组【dog助记词】无法通过校验,符合标准BIP39协议开发的钱包App会提醒用户检查自己的助记词。此时用户会发现错误,把“dog”改成正确的“cat”,才能通过校验,完成钱包创建,也就能避免悲剧的发生。

最后,我们来检查一下作业,来看看在输入一套无效助记词时,中外知名的HD钱包们会不会根据标准BIP39协议,检查出助记词的错误呢?

因为只要输入一套无效助记词,就可以达到检查的目的,所以方便起见我们就不输入复杂的助记词,直接输入12个cat(这是一套无效助记词)。检查结果如下:

第一家:imToken


第二家:火币钱包


第三家:Trust Wallet


第四家:BRD


第五家:BitPay


第六家:imKey


第七家:Cobo Wallet 和 Cobo金库


第八家:比特派钱包和硬件钱包比特护盾。比特护盾的助记词是在手机端输入,在输入12个助记词的时候会有混淆词,输入24个助记词的时候没有,所以我们输入24个cat(这也是无效助记词)试了一下,结果是没有提示助记词错误的。


最后,给大家提醒一个硬件钱包风险点

掌柜在检查各校验助记词的作业时发现,有些硬件钱包是在手机端完成助记词输入的。

我们之所以使用硬件钱包,就是为了将助记词/私钥脱网保存,在联网设备上输入助记词就完全失去了硬件钱包的意义。

这里有一种解决办法是在手机端导入助记词到硬件钱包的时候,在手机端打乱词序并加入混淆词,混淆词的工作原理是:比如我们的助记词是11个abandon+about(这是一套有效助记词),当我们在手机端输入助记词时,冷端会提示:

请在手机输入第3个助记词(输入abandon)

请在手机输入cat

请在手机输入第12个助记词(输入about)

请在手机输入dog

请在手机输入第6个助记词(输入abandon)

请在手机输入region

cat,dog,region就是混淆词

但是混淆词+打乱词序导入,真的有用吗?

如果12个词的助记词,加上12个混淆词,都被黑客劫持,黑客通过上文提到的校验助记词有效性的形式暴力破解出正确的助记词,需要做1295295050649600次哈希,这个数字看着很大,但是蚂蚁S17+的算力已经达到了每秒73000000000000次哈希。暴力破解出正确的12个助记词只需要18秒

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

推荐阅读更多精彩内容

  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary阅读 5,131评论 0 4
  • 最新内容会更新在主站深入浅出区块链社区原文链接:理解开发HD 钱包涉及的 BIP32、BIP44、BIP39 如果...
    深入浅出区块链阅读 1,196评论 1 3
  • 宁姐今天午睡时闹了一天,闹得整个班孩子都被吵醒了,上了不少于二十趟厕所,不让她去,她肚子里有一滴尿都拉到裤子上,然...
    微笑向暖_cf68阅读 116评论 0 0
  • “社会不复杂,复杂的是人心!”一起踏入社会的同桌,在电话那头深沉地说。 2017年6月22日,我到昆...
    狸风阅读 564评论 0 0
  • 猫,属于猫科动物,分家猫、野猫,是全世界家庭中较为广泛的宠物。家猫的祖先据推测是起源于古埃及的沙漠猫,波斯的波斯猫...
    凤佳琳阅读 175评论 0 2