一、助记词和私钥有一个就行了吗
一个助记词包括非常多的私钥和私钥对应的公钥。
有一个开源站bip什么的,可以把助记词翻译成各种语言和密钥对。从HD钱包的创建方式可知,要创建一个HD钱包,我们必须首先有一个确定的512bit(64字节)的随机数种子。如果用电脑生成一个64字节的随机数作为种子当然是可以的,但是恐怕谁也记不住。
由于在生成助记词的过程中引入了校验码,所以,助记词如果弄错了,软件可以提示用户输入的助记词可能不对。生成助记词的过程是计算机随机产生的,用户只要记住这些助记词,就可以根据助记词推算出HD钱包的种子。
从助记词算法可知,只要确定了助记词和口令,生成的HD种子就是确定的。如果两个人的助记词相同,那么他们的HD种子也是相同的。这也意味着如果把助记词抄在纸上,一旦泄漏,HD种子就泄漏了。如果在助记词的基础上设置了口令,那么只知道助记词,不知道口令,也是无法推算出HD种子的。
把助记词抄在纸上,口令记在脑子里,这样,泄漏了助记词也不会导致HD种子被泄漏,但要牢牢记住口令。
私钥安全吗:
我们前面提到了私钥是本质是256位的随机数,那么私钥生成的总数为2的256次方。
这个总数听上去好像很普通,但其实已经无法用常见事物来描述了:“一根头发丝儿的直径,尺寸约为50万个原子叠加,私钥的总数接近可观测宇宙中所有原子的数量。”“360个地球上的每一克土地(物质)都变成一个地球,这些地球上所有的水分子数量之和就是私钥的总数。”
所以想通过暴力碰撞去获取特定地址的私钥,难度相当于在辣么多地球上找一个水分子,在浩渺的宇宙中寻找一个原子……而你,连家里钥匙丢了都找不到。虽然私钥可生成范围足够大,但是如果生成私钥的算法有问题,那也会有隐患。比如一个钱包的随机数生成不够随机,那么是有可能给两个用户生成同一组私钥的,这里就比较考验钱包团队的密码学功底了。
二、比特币助记词忘记了,还能找回来吗
拥有数字货币的第一条规则就是安全地保存你的私钥,然而数字货币持有者们在这方面做的并不是很好。
数字货币钱包的私钥丢失,还可能找回吗?答案是不可能找!因为在比特币网络中,钱包私钥是证明资产归属谁的唯一证明,并且这个私钥的明文不会储存在网络中,只有钱包的拥有者自己知道。所以一旦私钥被自己忘记或弄丢,丢了就是丢了,任何人都无法帮你找回来,即便是中本聪、比特币核心开发团队都没有办法。不像网银、支付宝那样,可以凭借手机、身份证等个人资料,找回或重置密码。在
数字货币世界里,防止丢失的唯一方法是自己做好私钥的备份。那么如何找回丢失的数字货币
据最近的一份研究报告显示,大约有287-379万枚比特币永久丢失,占目前比特币总流通量的17-23%左右,这一比例十分惊人。按截稿时比特币的价格计算,丢失的比特币价值在1000亿元人民币以上。
时间回到2019年,当你忘记钱包私钥或助记词或者丢失U盘、硬盘等保存秘钥的硬件,BTCrecover有可能帮你找回遗失的数字货币资产。
目前主要通过以下几种方式实现找回:
暴力破解
“暴力解密”使用专业软件生成和测试数百万个潜在密码,实质上是破解客户的数字钱包。
时长:可能需要数月
成功率:约40%,具体取决于客户的信息量。“他们可能还记得密码是一个有七个字符并且带有两位数字后缀的字符串,”利用这类信息通常足以找回他们的安数字资产。
催眠
通过催眠,帮助患者回忆他们的密码或硬盘的位置。每个人都有摄影记忆,通过熟练的催眠回溯技术。
时长:记忆从潜意识中浮现需要几天或几周。
成功率:约10%,最大的障碍:信任,用户并不真的相信催眠
数据恢复
从已删除、损坏或部分覆盖的数据中恢复其他文件的技术。许多人在一些文本文件中记录他们的个人识别号码,这样可以允许黑客或数据恢复服务公司在文件的原始数据中查看密码。
时长:数据恢复可能数天
成功率:高于60%最大的障碍:信任。只有客户在场时工程师才能访问数据。
如何更好的保留私钥
私钥不适合人类记录及记亿,一种新的私钥管理方式助记词,是明文私钥的另一种表现形式,最早是由 BIP39提案提出,其目的是为了帮助用户记忆复杂的私钥(64位的哈希值)。助记词一般由12、15、18、21个单词构成,这些单词都取自一个固定词库,其生成顺序也是按照一定算法而来,所以用户没必要担心随便输入 12个单词就会生成一个私钥。虽然助记词和 Keystore都可以作为私钥的另一种表现形式,但与 Keystore不同的是,助记词是未经加密的私钥,没有任何安全性可言,任何人得到了你的助记词,可以不费吹灰之力的夺走你的资产。
三、一文看懂钱包助记词和根私钥的关系
在最近的《区块链核心成员》的课程答疑中,讲师讲的最多的还是加密货币的密码机制。其中有好几个问题是关于私钥和助记词的。比如:
简单地说,私钥就是一个256位的随机数。这个随机数的产生是钱包功能之一。也就是说,钱包内置了密码级别的随机数产生器,保证产生的随机数是没有规律可循的,也就是说不易破解的。注意钱包是在用户终端运行的,产生的私钥就保存在用户终端,不会也不应该上传给钱包公司。这一点非常重要。大家尽量要使用开源的,被公开考验过的钱包软件,保证安全。
进一步说,现在的绝大多数钱包都是确定性钱包,它首先产生一个根私钥,而后根据这个根私钥可以产生无数的派生私钥,我们的钱包地址就是这些派生私钥所对应的公钥经过运算得到的地址。算法是固定的,因此地址也就是固定的。那么,这里,最重要的就是根私钥了。因为有了根私钥,根据固定的算法,就可以求出派生私钥,一切都可以简单地计算出来。
这里注意,根私钥不一定要是256位的。可以是128位,或196位或其他位数,只要强度足够大(一般要求至少128位)就行,而由其计算出来的派生私钥则一定是256位的。
根私钥与助记词是一一对应的关系。也就是说一个根私钥就对应一组助记词,一组助记词也对应一个根私钥。两者可以简单运算出来。
根私钥与助记词之间的对应关系可以查看 BIP39(BIP的意思是比特币的改进建议,BIP39是正式发布的第39号建议)。BIP39是一部字典,这个字典有各种语言版本,我们最感兴趣的就是中文版了。当然还有英文,韩文,德文,法文,日文等等。这个字典什么样呢?很简单,每本字典都是一个模子,都包含2048个常用字(比如中文版)或单词(比如英文版),不多不少,就是2048个。每个字都有一个编号,从0到2047,就这么多。其他啥也没有。
那么这个字典表示什么呢?就是表示一个对应关系,也就是说通过字可以查编号,或者通过编号可以查到字。
好了,学过计算机或者了解2进制的朋友,当然知道2048(0~2047)意味着什么,很简单,就是2的11次方,也就是说11位2进制数可以表示0到2047。其实这就是助记词和根私钥的关系。
也就是说每一个字表示一个11位2进制数,或者说一个11位2进制数通过查字典就知道它表示哪个字。举个例子来说,我们产生了一个128位的根私钥,这样从头开始,每11位11位地分开,这样我们就有了11个11位二进制码,还剩下7位,咋办?好办。把最后7位也凑成11位就行了,差4位就补上。这4位正好可以为128为做校验来保证正确性。整个过程是这样:
那助记词回推私钥也就简单了,这样:
更多细节可以参看我的文章:
数字货币入门之钱包原理及钱包安全