0,免责声明
这只是一个设想,不一定有技术上的可行性,如果你真做出来了,那算你厉害,但要是你失败了,别来找我麻烦。
1,动机
经常会有一些好作者因为丢失自己的Steem私钥而被迫离开Steemit社区,这给Steemit社区的发展带来了不利影响。因此,我提出了一种方法,允许用户使用QQ账号+6位PIN码来登录到Steem区块链。
2,基础原理
用户将用户名和PIN码输入一个高复杂度的哈希函数,得到一个身份密钥Si;
随后,用户通过QQ进行验证,并向验证服务器发送临时私钥Kc的公钥,获得来自验证服务器的计算启动凭证Ps;
用户向各个保管者发送Ps,并使用Kc完成各个保管者给出的签名挑战,从而启动MPC(多方安全计算)流程;
用户向MPC输入Si、Kc和Ps,各个保管者向MPC输入其私钥和全体保管者的BLS总公钥,最终输出通过Kc解密后是确定性的结果密钥Sp;
用户输入了正确的PIN码时返回的Sp作为用户的Steem私钥;若PIN错误,Sp为无意义乱码。
同一Steem账号每天只被允许启动5次MPC(提供PIN码正确的ZK证明可以恢复次数),因此验证服务器方尝试碰撞用户的PIN码是不可行的。
3,安全保证
3.1,保管者安全:
需要至少2/3的保管者才能完成验证流程,且成为保管者需要在其他区块链质押代币;系统保证了保管者的总质押价值远远大于使用者账号的价值。一旦节点有作恶行为(例如:不正常的的反复为同一账号执行MPC计算;拜占庭行为等),则保管者会被罚没,不得再担任新用户的保管者。已经使用该保管者的用户也将在下一次输入PIN码后重新选定保管者并生成新的Steem私钥。
3.2,验证服务器安全:
验证服务器由用户自己选定,服务器的公钥等信息会写入到用户信息的Metadata中。用户自行选择可信的验证服务器。
4,系统激励
保管者通过诚实的完成用户的请求,系统会给予一定量的其他区块链上的代币作为奖励。