龙空技术网

还原 EOS “彩虹”攻击始末,看小疏忽如何酿成大灾难?

链得得APP 507

前言:

今天小伙伴们对“彩虹表攻击算法及实现”可能比较看重,你们都想要知道一些“彩虹表攻击算法及实现”的相关资讯。那么小编同时在网上搜集了一些有关“彩虹表攻击算法及实现””的相关知识,希望我们能喜欢,你们一起来了解一下吧!

最近,EOS中文治理社区EMAC,已经接到六起报告EOS丢失的事件,丢失的EOS数量从几十个到几十万个不等,直接造成上千万数字资产损失,而资产被盗的原因大多是开通账户注册过程中常见的小问题:比如,助记词选择,账户有效性核实等。

事实上,这些问题如果持币者和开发者都具备一定安全认知的话,是可以被有效避免的。我们不妨来看看,这些容易被用户忽视的小问题,是如何酿成大灾难的呢?

近日,区块链安全公司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主网已经上线运行一段时间了,然而整个社区生态面临的挑战丝毫没有减弱,存在多种安全威胁。用户除了上述使用助记词不规范情况下存在的安全威胁,在主网映射时没使用SSL加密,或者私钥的创建工具本身具有较大安全隐患时都能造成私钥被盗。

比较糟糕的是,一旦用户EOS被黑客以上述方式窃取了,除非主网分叉,不然以目前EOS生态是没有办法找回的。EOS有一个专门解决这些问题的机构叫ECAF(核心仲裁论坛),即是如此仲裁也需要得到BP 2/3以上的共识来修改数据,成本比较高。因此只有特大金额的盗窃问题才能通过ECAF来解决,一些较小的安全危机,只能用户自己来承担损失。

还原此次“彩虹”攻击始末,由于“彩虹”攻击并非针对合约的漏洞进行攻击,黑客利用的是用户行为不规范产生的疏漏,进而用类似穷举的方式进行暴力破解。通常用户在注册生成钱包过程中,用户网络账号密码的管理、助记词的使用规范等基础安全防护工作做得不到位的话,黑客就容易找到实施“彩虹”攻击的可能。

其危害归根结底还是用户和开发商安全防范意识的薄弱导致的,因此需要参与EOS社区生态建设的每一个共建合作伙伴,尤其是广大持币者和开发者都应该加速普及和提升安全认知。简单而言,在使用第三方工具、注册管理私钥的过程中,要尽可能的加强安全防范举措:比如,助记词在注册时采用10个以上的组合,又或者保管私钥时采用手写的方式避免网上存储等等。

标签: #彩虹表攻击算法及实现