近日,区块链安全公司PeckShield在分析EOS账户安全性时发现,部分EOS用户正在使用的秘钥存在严重的安全隐患。问题的根源在于部分秘钥生成工具允许用户采用较弱的助记词组合,而通过这种方式生成的秘钥很容易存在“彩虹”攻击,进而导致账户数字资产被盗。
“彩虹”攻击的原理
这里所指的“彩虹”攻击也通常被称作彩虹表攻击,它是一种破解哈希算法的技术,是一个针对各种字母组合预先计算好的哈希值集合,主要可破解MD5/HASH等多种密码。早在1980年,公钥密码学提出者之一Hellman针对DES算法提出了这种攻击方式,之后在2003年瑞典的Philippe Oechslin提出了一种高效破解windows开机密码的时空折中算法,并命名为彩虹表攻击。
用户注册私钥时,系统为了帮助用户记忆私钥会生成一个助记词,助记词是明文私钥的一种表现形式,其目的是为了帮助用户记忆复杂的私钥(64位的哈希值)。通常情况下,助记词一般由12、15、18、21个单词构成,且组合词越多破解难度就越大。有一些私钥生成工具在生成助记词时,允许用户采用较弱的助记词组合,比如:0个、1个。
(“彩虹”攻击过程图示)
图中“X”指代的是才采用1个助记词的组合,Y是一个生成助记词类哈希的一种算法(暗箱),X经过Y之后,会变成一串公钥和私钥的组合,我们把它当成一串串64位字符,我们可以将这些字符串和跑在EOS公链上的公钥进行碰撞配对,一旦有公钥匹配成功,相应的私钥也会暴露在黑客的视野之下,黑客就可以控制住用户的账户,盗取数字资产。
“彩虹”攻击的危害及防范措施
EOS主网已经上线运行一段时间了,然而整个社区生态面临的挑战丝毫没有减弱,存在多种安全威胁。用户除了上述使用助记词不规范情况下存在的安全威胁,私钥的创建工具本身具有较大安全隐患时也能造成私钥被盗。
比较糟糕的是,一旦用户EOS被黑客以上述方式窃取了,除非主网分叉,不然以目前EOS生态是没有办法找回的。EOS有一个专门解决这些问题的机构叫ECAF(核心仲裁论坛),即是如此仲裁也需要得到BP 2/3以上的共识来修改数据,成本比较高。因此只有特大金额的盗窃问题才能通过ECAF来解决,一些较小的安全危机,只能用户自己来承担损失。
还原此次“彩虹”攻击始末,由于“彩虹”攻击并非针对合约的漏洞进行攻击,黑客利用的是用户行为不规范产生的疏漏,进而用类似穷举的方式进行暴力破解。通常用户在注册生成钱包过程中,用户网络账号密码的管理、助记词的使用规范等基础安全防护工作做得不到位的话,黑客就容易找到实施“彩虹”攻击的可能。
其危害归根结底还是用户和开发商安全防范意识的薄弱导致的,因此需要参与EOS社区生态建设的每一个共建合作伙伴,尤其是广大持币者和开发者都应该加速普及和提升安全认知。简单而言,在使用第三方工具、注册管理私钥的过程中,要尽可能的加强安全防范举措:比如,助记词在注册时采用10个以上的组合,又或者保管私钥时采用手写的方式避免网上存储等等。