LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 偷不走的助记词

偷不走的助记词

2020-02-07 Cobo钱包 来源:区块链网络

撰文 |Cobo金库大掌柜

网上有非常多的文章讨论“冷存储”。一般硬件钱包实现“冷存储”,是将私钥保存在离线硬件钱包内,需要进行交易的时候,通过观察钱包(热端 App),将待签名信息传输入硬件钱包,然后利用硬件钱包内的私钥进行签名,最后将签名后的信息传输到观察钱包并广播上链。

大家对“冷存储”的讨论很多,但这里其实有一个更关键的问题:助记词如何存储。

这套体系中,最薄弱的环节并不是硬件钱包,而是助记词。

所以,相对于冷存储,我们引入了“深冷存储”(Deep Cold Storage)的概念,特指对助记词的保存。

PS:有一些 BTC Maximalist 或定投党,用钱包生成助记词并得到地址以后,会将钱包 App 删除,并持续往这个地址打币。对于这些人来说,“冷存储”不是一个大问题,但深冷存储(助记词的保存)是非常非常重要的。

深冷存储的实践

方案一:

将一套助记词抄在纸上,或者有些要求更高的用户,会使用金属类的存储产品来存储助记词并保存。这是我们最常见的方案。

方案二:

方案一经常被人诟病的一点是,如果只保存一套,一旦发生不可逆灾害(比如水灾,火灾,地震等),资产将会全部丢失。

自然而然地,人们提出了第二种深冷存储的方案:备份多份,异地保存。毕竟多地同时发生不可逆灾害的可能性极低。

可是,同时多地保存,却增加了助记词被盗导致资产丢失的可能性。

|? 这里我们做个简单的算术:

假设助记词保存在一地,被盗的概率是 1%,发生自然灾害损毁的概率也是 1%。那么,如果五份助记词异地保存,“被盗”造成损失的概率是任何一处被盗的概率,“被毁”(被自然灾害损毁)的概率是五处同时被毁的概率。我们可以得到下表:

通过简单的概率计算,可以看到,方案二很大程度上避免了自然灾害损毁的概率。但是被盗的风险提升了 5 倍!

方案三:

那有没有一种方案,可以同时显著降低方案一被盗和被毁的概率么?答案是肯定的。

展开方案三之前,有一个密码学概念大家需要理解:Shamir's Secret Sharing Scheme(下文简称SSSS),这是 Adi Shamir 创建的分片加密算法。可将需要加密的信息分为多个部分,使每个参与者都持有自己独特的部分。要想重建原始信息,需要最少数量(≤总数)的部分。比如,一份助记词一共分为5个部分,其中任意3个部分可以恢复原始助记词。

没错,细心的同学可能已经发现,SSSS 跟多签非常相似。

同样是做 5 份异地保存,如果我们用 SSSS 进行3/5的拆分。单一保存地被盗的概率还是 1%,被毁的概率还是 1%,那用? SSSS之后,被盗和被毁的概率分别是多少呢( 5 地中任意 3 地同时被盗或者同时被毁的概率)?

从统计数据可以看到,方案三虽然不如方案二有那么强的抵御自然灾害的能力,但是方案三把被盗的风险也显著降低了。

方案四:

方案二或者方案三,都有一个基础假设:某一处备份被毁之后,资产拥有者能够立即感知到并且转移资产。如果资产拥有者没有感知能力,那资产被毁的概率就会大大提升。

进一步,方案三中资产拥有者对“被盗”也需要感知能力,否则也会大大提升资产丢失的概率。

如果是这样的话,SSSS 生成的每一片子信息,就不能简单地“藏起来”,最好是放到线下银行保险柜。但是分布在各地的银行保险柜,也是一笔不小的开支。如果把子信息都放到朋友那里呢?朋友会不会串通起来,凑出完整的助记词然后瓜分资产?

要解决这个问题,BitGo 的 Lead Security Engineer 找到了他的方案:

简而言之,Lance 先用 AES 对称加密的方法,对助记词进行加密,加密结果通过手术植入到自己的皮肤下面,然后将 AES 加密用的秘钥,再通过 SSSS 进行拆分,保存在世界各地的朋友处。也就是说,没有皮肤下的加密助记词,秘钥凑齐了也没有任何作用。

小白用户如何进行深冷存储

前面讲到的 SSSS,小白用户没有任何编程基础,如何使用呢?

很简单:https://iancoleman.io/shamir/? 利用这个网页工具,输入要分解的份数,以及多少份子信息可以恢复出原始信息,再输入原信息,就可以得到分解后的子信息。

但是有一点要注意:这个网页工具,最好下载后离线使用

如果有的小白用户嫌 SSSS 多地保存操作起来太麻烦(麻烦往往意味着过程中可能会出错),方案二提到的多地保存方案又增加了被盗的可能性,那有没有再“平衡”一些的方案呢?

一种常常被提及的方案是——把24 个助记词,分别记录在三张纸片上,每张纸片只记录 16 个,同时三张纸片彼此之间缺失的 8 个词各不相同。这样,即使丢失了一片纸片,黑客要完成攻击,就需要暴力破解其余 8 个词。

暴力破解这 8 个词,黑客最少需要多少成本呢?

黑客大概需要做 2^88 次Hash运算。按照最新款蚂蚁 S17+ 矿机的算力(73 THash)和能耗(2920 W)的官方数据,电费按照 0.4 元/千瓦时计算,破解成本(仅计算耗电)大概是13到14亿元人民币。(=2^88/73/1000000000000/3600*0.4*2.92

所以,如果您囤币总金额在 13 亿元人民币以内,您用这种方案,黑客只窃取一份助记词并暴力破解是不高效的手段。黑客还是会尝试窃取至少 2 份助记词备份,来偷取资产。

类似的,这种方法也会需要至少摧毁三份私钥中的两份,您的资产才会不可恢复。

(注明:这里的计算比较简略,是按照第 24 个助记词暴露,也就是助记词的 checksum 暴露的情况,黑客通过哈希计算 checksum 来验证 8 个词的正确性;如果第 24 个助记词未暴露,黑客的暴力破解成本将会指数级上升,甚至无法用 ASIC 矿机进行破解)

我们强烈不推荐 12 个词的助记词使用这个保存方案——即三张纸,每张纸保存 8 个助记词。一旦一处发生盗窃,蚂蚁 S17 只需花费 0.24 秒(=2^44/73/1000000000000)就可以遍历所有单词组合,穷举出剩下的 4 个词。

所以,上面的概率表加上这种新方案的话:

本篇文章介绍了如何更安全地保存助记词。那么在助记词之上,有没有其他的机制能够进一步加强安全性呢?答案当然是肯定的。后面的文章,我们会介绍 Passphrase(密语) 和“哨兵钱包”的概念。Stay tuned~

参考链接:

[1]https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing

[2]https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

—-

编译者/作者:Cobo钱包

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...