李小翠
自從CSDN 社區(qū)網(wǎng)站數(shù)據(jù)庫泄密 ,近600萬用戶真實賬號密碼外泄事件爆出之后,互聯(lián)網(wǎng)世界引發(fā)了一輪密碼泄露狂潮,多玩游戲、天涯社區(qū)、人人網(wǎng)數(shù)據(jù)庫被黑客入侵的消息一再傳出。人們在慌亂修改自己密碼的同時,大概忍不住想問:難道我們的密碼就真的如此不安全么?
網(wǎng)站儲存密碼機制
看到某個網(wǎng)站遭遇黑客入侵后幾百萬人的密碼在同一時間被他人獲取,許多人產(chǎn)生的第一個疑問是,這些網(wǎng)站的管理員們怎么會讓黑客如此輕易得手?回答這一問題,首先來看看從密碼的存儲和驗證過程,它大致可以分為三個步驟:
第一步,用戶在瀏覽器中輸入密碼;
第二步,密碼被傳輸?shù)椒?wù)器;
第三步,服務(wù)器將密碼和已經(jīng)在數(shù)據(jù)庫中存儲的密碼比對,并判定是否允許用戶登錄。
用戶平時面對的木馬與病毒的威脅都存在于前兩個步驟中,一個完善的殺毒套裝就可以輕易解決相關(guān)問題。而本次事件的數(shù)據(jù)庫泄露,是心懷不軌的黑客們通過各種技術(shù)和非技術(shù)手段獲取網(wǎng)站存放密碼的數(shù)據(jù)庫文件后,這個網(wǎng)站所有人的用戶名與密碼就都落入不法分子手中了,而在這一過程中普通用戶幾乎沒有任何防御辦法。
數(shù)據(jù)庫遭遇攻擊的危險是可以預(yù)見的,所以很多略懂密碼知識的人都憤怒地質(zhì)問各大網(wǎng)站,為什么不把我們的密碼加密保存?
加密是否管用
為了避免數(shù)據(jù)庫泄露后的危險,目前大部分網(wǎng)站數(shù)據(jù)庫存儲的密碼都不是明文信息,而是用戶密碼的“哈希值”,也就是人們常說的加密密碼。在用戶輸入密碼后,服務(wù)器會通過一系列不可逆的數(shù)學(xué)函數(shù)將密碼變成一個哈希值并保存在數(shù)據(jù)庫中。當(dāng)用戶輸入了一個錯誤的密碼時,該哈希值就會與數(shù)據(jù)庫中儲存的哈希值不同,這就達到了驗證的目的。即使黑客們成功盜取了密碼數(shù)據(jù)庫,得到的也是一些無法被還原的哈希值信息。
然而這個表面上看似完美的解決方案在黑客的面前卻是完全不值一提的——黑客們根本沒有興趣在數(shù)學(xué)上將這些哈希值還原。通常黑客們都會有一份哈希值列表,稱為“碰撞庫”,碰撞庫里存儲了大量常用密碼對應(yīng)的哈希值,當(dāng)他們成功拿到加密后的數(shù)據(jù)庫后,只需將碰撞庫與數(shù)據(jù)庫中的哈希值對比,就能在很短的時間內(nèi)獲得大部分人的密碼原文。
事實上,現(xiàn)在黑客們生成的碰撞庫的規(guī)模早已超出人們的想象。對于大部分常用密碼,只要把泄漏的密文放到碰撞庫中比對一下,就可以找到一個產(chǎn)生碰撞的密碼。如著名的在線碰撞庫cmd5.com已號稱收集7.8萬億條記錄,用戶將自己的密碼通過MD5加密后的哈希值放入碰撞庫中,普遍都能瞬間獲得全部原密碼(如圖1)。
怎樣設(shè)置好記又難破解的密碼
雖然數(shù)據(jù)庫丟失用戶一方無法解決,不過目前,被爆出數(shù)據(jù)庫遭遇入侵的幾大網(wǎng)站中,除了CSDN及天涯社區(qū)的舊數(shù)據(jù)庫采用明文保存密碼外,其余的網(wǎng)站均是采用不可逆的加密方式儲存密碼,但仍然有超過70%以上用戶的密碼被爆出,所以設(shè)計一個安全的密碼仍然十分重要。
首先,驗證一個密碼的強度,長度的重要性要遠高于復(fù)雜度,把密碼設(shè)得非常復(fù)雜,除了增加了記憶的難度外并無實際意義(如圖2)。
其次,非常用密碼也并不一定非要選難記的密碼。比如,選了一個容易記憶的基礎(chǔ)密碼之后,鍵入時將手指在鍵盤上再向上移一格?;A(chǔ)密碼是“cat”,在稍作變化之后,就變成了“dq5”。
最后,經(jīng)常更換密碼,重要的賬號不重復(fù)使用同一個密碼,都可以在密碼泄露的時候把損失降到最低。