昨天某个 EOS 应用的账户被盗1.8万个EOS,在假期之中也引起了EOS社区的热议。
借着这个事情,我们今天简单聊一聊 EOS 的账户安全,应该如何做好防备。
1. 生成私钥的工具,要安全可靠
创建EOS账号,需要用到一个账号名,以及公钥,因而需要生成一个密钥对。生成密钥对的方式有多种,许多的钱包应用会提供,有些网站也会在线提供创建密钥对的服务。
如果略懂一些编程,也可以用eosio代码下的cleos命令来生成密钥对,这是最安全的方式。
EOS上线之初的时候,社区内出现过一些账户异常的事件,是由于某个应用提供的创建密钥对的方法存在问题导致了同一个私钥,被多个人掌握,造成了一些问题。
而且,除了这种bug之外,还会面临的问题是,你所生成的密钥是否会被这些工具偷偷的存下来然后传到他们的服务器上?
如果可以的话,尽量使用离线的工具,包括eosio的cleos命令行工具,也包括你所信任的一些BP所开发的离线密钥生成工具。
退而求其次,至少要选择你信得过的钱包工具所提供的服务,并且,尽可能是开源的钱包工具。因为声誉的重要性,至少,他们不会为此搭上自己的信誉。
2. 做好妥善的私钥备份
生成了密钥对,创建了账号之后,在使用这个账号之前,需要做好私钥的安全保存。
如果是抄写在纸上,最好是多写几个备份,存在安全的地方,并且,确认你自己能够识别出来私钥之中的大小写,避免若干时间之后,你发现根本无法辨认,从而导致账户无法使用。
如果资金略宽裕,也非常推荐使用硬件钱包的方式,会更加方便。
3. owner权限与active权限分离
对于EOS账号来说默认是具有双权限:owner权限与active权限二者。owner的权限更大, 可以修改owner权限对应的私钥和active权限对应的私钥;而active权限,则是日常操作之中所常用的。
一般的推荐是,这两个权限分别设置不同的私钥,分开管理存储。
4. 大额资金账号的私钥永不触网
对于存有大额资产的账户来说,非常推荐私钥永不触网的方式,用冷钱包的方式保存私钥;日常的操作,则用一个小额度的账号来做。
那么怎么从大额的账号向小额的账号转账呢? 这里可以用到一些离线转账的操作工具,比如EOS Cannon社区所开发的离线工具。这样的话,就可以离线生成签名信息,授权转账,从而在私钥不触网的情况下完成。
5. 选择靠谱的钱包
关于EOS钱包的一份详细的报告,可以参见:冉道资本 | EOS钱包研究报告
文中列出了钱包的五大安全风险:
image.png在文章之中,也提到了7款不同的钱包。大家可以参考。而根据昨天的信息,苹果从AppStore下架了一款EOS钱包: EOSIO Wallet Explorer,因为有用户投诉称,这款钱包会恶意盗窃用户的EOS 代币。
选择钱包时候,我个人意见是这样的:
尽可能选择开放源代码且经过更多用户的验证未出现安全问题的,比如Scatter钱包是我可以放心推荐的,若干钱包又经过了可信第三方安全团队的安全审计,那就更好了。
选择钱包是个需要谨慎再谨慎的活,牢记一点,一些小众不知名的钱包,就算要尝鲜,也要用新的账号去尝试,不要拿你的常用账号以身涉险。
6. 使用多签
尤其是对于DAPP的开发者来说,采用多签的方式,由两方或者更多的相应私钥持有人来共同控制一个账号,可以一定程度上降低合约账号的单点故障。
如果只是一个私钥来控制对应的权限,那么, 一旦这个私钥丢失被盗了,账户里的资产就面临危险;而用多签的方式,比如,设置了5个账号中需要有3个账号同意,才能够动用到合约账号的资产,这样就大大降低了风险。
这里就有个问题:对于独立开发者怎么办?我想,可能对于独立开发者来说,做好私钥的离线保存,至少可以降低不少的账户风险。
6. 其他
除了上面所涉及到的账户资产的安全之外,作为DAPP的开发者来说,还需要做许许多多的安全开发的调整,才能够降低风险,提升安全度。
安全无小事,这次某Bank的事情,是一个提醒,也是一个价值一百万的教训。
网友评论