Evernote安全問題帶來的啟示
近日,對于SaaS來說最大的壞消息當數Evernote(印象筆記)被黑客攻擊。該公司表示,他們發現有人試圖侵入公司系統,讀取用戶名、電子郵件地址和經過加密保護的用戶密碼。但是該公司在其官方網站發布公告,建議其用戶在下次登錄時選擇新的密碼,同時提供了關于用戶如何設置密碼的建議。修改密碼將影響所有的Evernote應用。好消息是由于Evernote服務器并沒有存儲任何用戶支付信息,因此不會有支付信息泄露的情況。
Evernote官方表示,在攻擊過程中,攻擊者獲取了其用戶的用戶名、電子郵件和加密密碼等數據。但是在隨后的分析中,Evernote沒有發現任何證據表明用戶帳戶中的內容在未經授權的情況下被獲取。
及時升級認證手段保障賬戶安全
與LinkedIn當時被拖庫時只是采用了普通的MD5哈希相比,Evernote使用了加鹽的MD5。因此,在一定程度上加大了黑客暴力破解的難度。另外,Evernote的工程師計劃在今年晚些時候升級他們的安全系統,將在安卓客戶端的Evernote應用中移除密碼存儲機制。
為了確保安全性,Evernote匆匆推出了一個雙因子認證身份驗證系統,以增強系統安全。在新推出的驗證系統中,Evernote要求用戶在登陸后,通過接收SMS短信驗證碼的方式,實行二步驗證來保證用戶賬戶安全。Evernote這一舉措,與Dropbox網盤去年未受到攻擊后采用的升級措施一樣。雖然用戶可能會受到干擾,但相信二步驗證這種方式,能給用戶的數據帶來更多的安全保證。
從2010年的600萬用戶,到今年的5000萬用戶,Evernote的用戶數呈幾何數增長。正所謂樹大招風,所以吸引了黑客的光顧。對于此次事件,用戶以及業界對于Evernote數據的安全性保護方法的關注也很高。甚至有很多人對于MD5的加密頗有微辭。當然,也有人表示說Evernote做的已經很好了,至少在MD5哈希的基礎上已經做了加鹽處理。
然而,筆者認為,Evernote之前的做法做到了安全與投入成本的平衡。并未因為追求過高的安全性而做出很多無謂的安全設施投資。事實上,由于Evernote官方緊急推行了雙因子身份認證,因此即使密碼被破解對于用戶而言也不會造成數據丟失。況且,官方也表示了目前還未發現非法的數據修改操作。也從側面反映出了Evernote此次的做法也是有效的。
存儲的加密方式優于用戶強密碼
筆者看來,對于數據敏感的服務提供商來說,廣泛推行雙因子身份認證是一個行之有效且經濟實惠的方式。由于二次認證的存在,用戶可以降低密碼的復雜度,對于用戶來說也是一種便利。因為,一旦服務提供商的數據庫未被加密亦或是簡單的MD5,復雜密碼的有效性依然值得商榷。
前面說過,有些人對于Evernote采用MD5加鹽的方式做為密碼存儲的方式持鄙夷態度。如果Evernote使用更為安全的加鹽HMAC、PBKDF2、SCrypt或者 BCrypt呢?
HMAC雖然是一種哈希運算消息認證碼,但是由于引入了密鑰作為運算的因子,更像是加密算法,其安全性也已經不完全依賴于所使用的哈希算法,安全性有保障。由于HMAC使用加鹽以及SHA系列算法,使得彩虹表的構建成本以等比級數倍增。同樣,對于使用方的服務器負載需求也很高。
理論角度講,只要算法實現上沒有硬傷的情況下,PBKDF2、SCrypt或者 BCrypt是安全性比HMAC更高的加密方式。PBKDF2、BCrypt與SCrypt的共同點是算法中都有一個參數,可以指明計算密碼摘要所需的計算強度。可以根據計算機性能的提升而修改計算強度,從而使彩虹表的構建處于無法持續構建,但是其對計算資源消耗的程度也相當之高,足以使服務器自發產生“拒絕服務”。所以有人說,scrypt確實給暴力破解帶來了很大的難度,但是似乎幫了拒絕服務攻擊的人。
因此,對于企業網站來說,對于密碼存儲要量力而為,基礎資源有限的網站可以選擇加鹽的SHA系列加密算法,配合雙因子身份驗證。而具備雄厚計算資源的網站而言,使用較強的加密算法保護密碼存儲的安全是才上選。