HDA:HD钱包灵魂大检查!到底有哪些钱包经得住考验?_GPO价格

撰文|?Cobo金库大掌柜

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

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

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

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

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

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

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

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

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

cattonightsadnesswalnutfancaptainsureassumegorillacautionstorypull?方便起见,我们称这套词为

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

dogtonightsadnesswalnutfancaptainsureassumegorillacautionstorypull方便起见,我们称这套词为

合成资产协议Synthetix发布Diphda版本:金色财经系消息,合成资产协议Synthetix发布Diphda版本,包含永续合约市场、债务池合并等更新,债务池合并期间Layer1与Layer2存取款已暂停,债务池合并已开始,Layer1与Layer2之间的存取款已暂停,合成资产协议Synthetix发布Diphda版本,包含永续合约市场、债务池合并等更新,债务池合并期间Layer1与Layer2存取款已暂停,北京时间3月19日1:00债务池完成合并。[2022/3/19 14:06:30]

这时候就是悲剧的开始。

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

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

此时,掌柜掏出了那套尘封已久的,将它导入了钱包。

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

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

是不是很恐怖?

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

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

Pavan Sukhdev:比特币不是一种货币而是一种资产:环境倡导组织WWF International 总裁Pavan Sukhdev 在最近的一次采访中评论说比特币和黄金仍然是高度投机性的资产,与许多其他专家似乎暗示的一样,它们并不能完全达到抗通胀工具的目的。根据 Sukhdev 的说法,比特币还没有准备好在艰难时期保持资金安全这一新角色。在最近的一次采访中,他甚至说比特币甚至不是一种货币,而是一种资产,几乎不可能用于交易目的。他解释说:比特币不是货币,它是一种资产,当你拥有像比特币一样波动的东西时,比特币会从 60,000 美元跌至 30,000 美元,然后在陡峭区域回升至 40,000 美元。与大多数主要加密货币一样,比特币最初是作为一种支付工具而创建的。一些可能会压倒信用卡、支票,尤其是法定货币的东西。然而,考虑到资产的波动性,这是一个缓慢的过程。比特币极易受到价格波动的影响,因此一些零售商和商店由于担心失去利润而不愿对 BTC 支付说“是”。(livebitcoinnews)[2021/8/1 1:27:29]

BIP39?定义了助记词的标准,标准内含有一份2048个词的词表。所有钱包只要遵循BIP39,生成的助记词都是从这个2048个词的词表中获得的,的所有词也不例外。

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

BHD日内最高上涨约13.75%:据火币全球站显示,目前比特硬币BHD上涨13.75%,当前报价39.4元/枚,24小时成价额2.02亿。比特硬币BHD是新一代基于POC容量证明的硬盘挖矿货币,硬盘挖矿天然具有低能耗、绿色环保、抗ASIC的特性,目前BHD全网算力已经超过1000PB,全网矿机设备价值超2.5亿元人民币。[2020/4/16]

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

接下来我们看看具体的

“校验”步骤:

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

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

得到一个132位的二进制数:

001000111101110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010

动态 | MetaCartel 分叉 MolochDAO,推出新型以太坊应用资助协议:据链闻消息,以太坊社区技术交流小组 MetaCartel 宣布分叉基于以太坊的新型治理协议 MolochDAO,推出MetaCartelDAO,希望探索通过智能合约方式和新型社区治理的方式,向以太坊生态中应用层产品的开发团队提供资金资助。MetaCartelDAO 表示,将根据 DApp 的最终用户使用状况(如收入、用户留存、产品增长等),向应用层产品的开发团队提供资助,资助的发放将根据开发团队产品取得的效果和完成状况发放,并鼓励开发团队分享数据,与其他团队共享经验。MetaCartelDAO 将从新型治理协议 MolochDAO 分叉而来。MolochDAO 是由 SpankChain 首席执行官 Ameen Soleimani 发起的开源社区治理协议,目标是为以太坊基础设施提供资金支持,该协议可以使投票、成员资格、治理成为可能,代码则是协调机制。链闻此前报道,MolochDAO 目前总共得到了近 70 万美元的资金支持,其中以太坊创始人 Vitalik Buterin 和 ConsenSys 创始人 Joe Lubin 分别给该项目提供了 1000 枚 ETH 的资助,此外,ConsenSys 和以太坊基金会也分别向该协议提供了 2000 枚 ETH 的资助。[2019/5/12]

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

动态 | Bithumb预计将于3月4日11:00暂停BTT、HDAC交易:据Bithumb官方消息,Bithumb预计将于3月4日11:00暂停BTT、HDAC交易。[2019/3/1]

左边128位:00100011110111001001001011110111111110110110010100101100010001000111011010000000011011110110010010100100100101110101101001010110右边4位:1010

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

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

我们验算一下的结果。

把左边128位二进制数放进一个在线SHA256计算器

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

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

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

第一步:12个词对应词表的11位二进制数如下:

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

010000001001110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010

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

左边128位:01000000100111001001001011110111111110110110010100101100010001000111011010000000011011110110010010100100100101110101101001010110右边4位:1010

第四步:把左边128位二进制数放进SHA256计算器。

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

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

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

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

第一家:imToken

第二家:火币钱包

第三家:TrustWallet

第四家:BRD

第五家:BitPay

第六家:imKey

第七家:CoboWallet和Cobo金库

Cobo金库

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

最后,给大家提醒一个

硬件钱包风险点:

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

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

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

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

请在手机输入cat

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

请在手机输入dog

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

请在手机输入region

cat,dog,region就是混淆词

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

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:0ms0-7:170ms