1. 程式人生 > >還原 EOS“彩虹”攻擊始末,看小疏忽如何釀成大災難

還原 EOS“彩虹”攻擊始末,看小疏忽如何釀成大災難

最近,EOS中文治理社群EMAC,已經接到六起報告EOS丟失的事件,丟失的EOS數量從幾十個到幾十萬個不等,直接造成上千萬數字資產損失,而資產被盜的原因大多是開通賬戶註冊過程中常見的小問題:比如,助記詞選擇,賬戶有效性核實等。事實上,這些問題如果持幣者和開發者都具備一定安全認知的話,是可以被有效避免的。我們不妨來看看,這些容易被使用者忽視的小問題,是如何釀成大災難的呢?

 

近日,區塊鏈安全公司PeckShield在分析EOS賬戶安全性時發現,部分EOS使用者正在使用的祕鑰存在嚴重的安全隱患。問題的根源在於部分祕鑰生成工具允許使用者採用較弱的助記詞組合,而通過這種方式生成的祕鑰很容易存在“彩虹”攻擊,進而導致賬戶數字資產被盜。

 

“彩虹”攻擊的原理

 

這裡所指的“彩虹”攻擊也通常被稱作彩虹表攻擊,它是一種破解雜湊演算法的技術,是一個針對各種字母組合預先計算好的雜湊值集合,主要可破解MD5/HASH等多種密碼。早在1980年,公鑰密碼學提出者之一Hellman針對DES演算法提出了這種攻擊方式,之後在2003年瑞典的Philippe Oechslin提出了一種高效破解windows開機密碼的時空折中演算法,並命名為彩虹表攻擊。

使用者註冊私鑰時,系統為了幫助使用者記憶私鑰會生成一個助記詞,助記詞是明文私鑰的一種表現形式,其目的是為了幫助使用者記憶複雜的私鑰(64位的雜湊值)。通常情況下,助記詞一般由12、15、18、21個單詞構成,且組合詞越多破解難度就越大。有一些私鑰生成工具在生成助記詞時,允許使用者採用較弱的助記詞組合,比如:0個、1個。

Picture1

(“彩虹”攻擊過程圖示)

圖中“X”指代的是才採用1個助記詞的組合,Y是一個生成助記詞類雜湊的一種演算法(暗箱),X經過Y之後,會變成一串公鑰和私鑰的組合,我們把它當成一串串64位字元,我們可以將這些字串和跑在EOS公鏈上的公鑰進行碰撞配對,一旦有公鑰匹配成功,相應的私鑰也會暴露在黑客的視野之下,黑客就可以控制住使用者的賬戶,盜取數字資產。

 

“彩虹”攻擊的危害及防範措施

 

EOS主網已經上線執行一段時間了,然而整個社群生態面臨的挑戰絲毫沒有減弱,存在多種安全威脅。使用者除了上述使用助記詞不規範情況下存在的安全威脅,私鑰的建立工具本身具有較大安全隱患時也能造成私鑰被盜。

比較糟糕的是,一旦使用者EOS被黑客以上述方式竊取了,除非主網分叉,不然以目前EOS生態是沒有辦法找回的。EOS有一個專門解決這些問題的機構叫ECAF(核心仲裁論壇),即是如此仲裁也需要得到BP 2/3以上的共識來修改資料,成本比較高。因此只有特大金額的盜竊問題才能通過ECAF來解決,一些較小的安全危機,只能使用者自己來承擔損失。

還原此次“彩虹”攻擊始末,由於“彩虹”攻擊並非針對合約的漏洞進行攻擊,黑客利用的是使用者行為不規範產生的疏漏,進而用類似窮舉的方式進行暴力破解。通常使用者在註冊生成錢包過程中,使用者網路賬號密碼的管理、助記詞的使用規範等基礎安全防護工作做得不到位的話,黑客就容易找到實施“彩虹”攻擊的可能。

其危害歸根結底還是使用者和開發商安全防範意識的薄弱導致的,因此需要參與EOS社群生態建設的每一個共建合作伙伴,尤其是廣大持幣者和開發者都應該加速普及和提升安全認知。簡單而言,在使用第三方工具、註冊管理私鑰的過程中,要儘可能的加強安全防範舉措:比如,助記詞在註冊時採用10個以上的組合,又或者保管私鑰時採用手寫的方式避免網上儲存等等。