Substrate的Recovery模块分析
Substrate的social recovery模块主要作用就是利用社会工程学的原理来保存私钥,如果万一你的私钥丢失了,还能通过这套恢复系统给找回来。
区块链产品,私钥保管是最基础的,但是总有很多人(甚至是大多数人)保管私钥是没有任何经验的,最终都会丢失掉,所以一个能恢复私钥的系统,那就能够在推广区块链产品的时候更加友好。
Substrate的social recovery是其密钥管理改善最为核心的一环,任何其他Substrate项目都能引入此模块使用其功能。
总的来说,Substrate social recovery是一种基于多重签名钱包的M-of-N社会恢复工具。
区块链产品的用户需要设置三个参数:
- 好友总数。
- 好友最小阈值。
- 延迟时间。
创建区块链产品的开发者在初始化需要设定两个参数,这两个参数是可链上治理的:
- 存款金额。
- 每个用户的最大总好友数。
工作机制
- 第一步,设置恢复配置:
- 用户最多选择他们信任的N个朋友。
- 用户选择阈值M。
- 用户选择恢复过程的最小延迟时间。
- 用户存入可退还的配置押金,确保清除了以前的数据/账号。
- 第二步,失去账号的访问权限:
- 这一步其实就是模拟丢失私钥。
- 第三步,启动恢复过程:
- 用户创建一个新账号。
- 用户用足够的资金为这个新账号注资,以支付追回押金和交易费用。
- 用户调用recovery模块的声明丢失账号的接口,尝试恢复有存款的新账号。
- 用户联系朋友担保自己的恢复尝试。
- N个朋友中至少有M个批准。
- 等待延迟时间过去。
- 第四步,清理旧账号:
- 关闭恢复过程,这将退还押金。
- 删除恢复配置,该配置将退还其他押金。
- 通过recovery模块请求其他模块,例如取消绑定,删除身份信息。
- 最后,将所有资金从丢失的账号转移到新账号。
如何防止恶意恢复尝试
首先,朋友的最低阈值需要获得批准才能启动恢复。这种社会工程的攻击难度是很高的,需要M个朋友中有N个背叛了你,攻击者才能取得成功。
当然,如果黑客通过模仿社交工具等欺骗好友获得N个朋友的批准,攻击者仍然需要等待延迟时间才能使用您的资金。在这段时间,如果拥有真正权限的您,只要检查一次账号,就可以取消恢复过程并获得攻击者的抵押存款。
攻击者也是有成功的,需要抵押,如果搞不好,偷鸡不成反而丢了一把米。
如果有人尝试恶意恢复攻击,那您要及时更改好友组,那些容易被欺骗的好友不再值得信任。
设置较长的延迟时间
其实,很多人的账号很长时间都不看的,一两个月不去看账号是很正常的事情,这个时候,较长的延迟时间就是必须的,建议设置6-12个月的延迟期。
设置更高阈值
比如2/3的阈值就是比较低的,3/4设置4/5是更加明智的。
问题
首先这个区块链产品要是广泛使用的,你的朋友中使用该产品的,并且他们都在你的好友列表中,这个数量就要有N个。目前这个阶段,这对于很多区块链产品都是一个不小的门槛。
其次,这个在一定程度上增加了实用的便利性,但在另外一种程度上,还是增加了黑客攻击的可能性。
最后,每个用户需要一定的学习时间。虽然用户设置起来也是非常方便,选中几个信任的好友,修改或者使用默认的延期时间,就可以设置恢复配置,但对于很多不懂社会工程学的小白用户,多少还是要弄懂很多概念的。