国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
!!! CSDN數據庫泄露!那些網站夠安全嗎? salt

CSDN 社區(qū)網站數據庫泄露 ,近 600 萬用戶真實賬號密碼外泄。該事件橫掃整個中文互聯(lián)網,并且隨后又爆出 多玩游戲 800 萬用戶資料被泄露 ,另有傳言人人網、開心網、天涯社區(qū)、世紀佳緣、百合網等社區(qū)都有可能成為黑客下一個目標。一時間人人自危,更換密碼者無數。

這到底是怎么回事?用戶信息是如何泄漏的?為什么一瞬間就有這么多密碼被輕易獲取,而一般的網站又是如何保護用戶密碼的?黑客和網站管理者之間,展開過怎樣的密碼攻防戰(zhàn)?死理性派就此做了一番詳細的介紹。

黑客的目標:你的密碼存在哪兒?

很多人對這次事件都有一個疑問:網站把我的密碼存在哪?

對于大部分網站,密碼的存儲和驗證過程簡單來說就是:用戶輸入密碼,密碼被傳輸到服務器,服務器將密碼存儲起來(注冊)或和已經存儲的密碼比對(登錄)。不論在哪個步驟,都有可能遭到黑客的攻擊和入侵。本次事件的數據庫泄露,就和第 3 個步驟相關。

一般來說,每個網站都有一個或多個專門存儲密碼的數據庫。這些數據庫通常并不能下載到。那黑客們是如何得到數據庫的呢?

比較技術的方法是通過一些服務器返回的錯誤信息推斷數據庫的位置,例如“%5c大法”。它的原理是,故意進行一個錯誤的數據庫訪問,從錯誤信息中獲取數據庫真實地址,再通過這個地址下載數據庫。但修補這個漏洞的方法也很簡單,只要更改一下數據庫出錯時返回的錯誤信息就可以了。

有經驗的軟件管理員自然會對這種技術手段有所防范。但密碼泄漏的途徑其實不像想象中的那么“技術”:可能某個辭職員工偷偷帶走了數據庫;可能某臺存儲數據庫的服務器染上了病毒;可能有人偷偷潛入了機房拷貝走了數據……總之,黑客會通過各種可能的手段獲得存有用戶名和密碼的數據庫,數據庫泄露的危險總是存在的。

圖片來源:XKCD

道高一尺:加密讓數據庫更安全

數據庫總有被黑客攻擊的危險,那網站如何應對?眾所周知,在本次事件當中,被泄露的 CSDN 數據庫,用的是明文儲存密碼。顧名思義,明文密碼就是直接將用戶輸入的密碼存到數據庫中。這種方式的安全性不言自明。

既然明文密碼太危險,那不妨用加密密碼。但怎么加密呢?這就要說到大名鼎鼎的哈希函數了。

哈希是一種從從多到一對應的函數,它的作用是將一個很大的集合映射到一個很小的集合。例如,我們可以設計一個哈希函數 h(x) = x % 100 (其中 % 表示取余數,如 4 % 3 = 1,8 % 2 = 0),這樣我們就把所有的整數 x 映射到了一個 0 到 99 的有限集合中。而像 MD5 和 SHA-1 這些著名的算法,都是哈希函數。當然,和前面這個 h(x) 不同,它們的計算方法非常復雜,常常需要經過很多輪計算。

哈希一個很重要的作用是幫助查找。很容易看到,如果兩個數 x 1 和 x 2 對應的哈希值 h( x 1 ) 和 h( x 2 ) 不相等,那么 x 1 和 x 2 也一定不相等。這樣一來,我們就可以用兩個對象的哈希值進行過濾。因為哈希值的集合比原始值的集合更小,所以比較哈希值的速度是很快的。

典型的哈希算法。 圖片來源:維基百科

而這個想法,也被應用于密碼的保護上。實際上,無論是避免數據庫泄露后的危險,還是出于對用戶隱私保護的需要,現在大部分網站數據庫存儲的密碼都不是明文,而是用戶密碼的哈希值,也就是所謂的加密密碼。如果輸入了一個錯誤的密碼,它的哈希值就會有很大可能性與正確密碼的哈希值不同,那么用哈希值代替密碼進行比較也沒有什么問題。另外,哈希的作用是將一個大集合映射到一個小集合,所以它的結果一定是不可逆的(因為從小集合到大集合的映射是一對多的映射)。這種不可逆性,使得理論上從哈希值找出原始密碼成了一個不可能的任務,從而保護了密碼。

但是,也會出現這種情況:兩個不同的原始密碼,它們的哈希值一樣。這在密碼學上被稱作“碰撞”。碰撞是一個設計良好的哈希函數需要極力避免的,正因為如此,很多哈希函數的運算結果都很長,例如知名的 MD5 算法,它的運算結果包括了 128 位二進制數。試想一下,如果使用之前提到的哈希函數 h(x) = x % 100,隨便輸入一個密碼,就有 1/100 的可能性驗證通過,那還了得!好在現在流行的哈希函數,在這一點上做的還都還不錯。

魔高一丈:哈希不是萬能的

前面提到,哈希是不可逆的。那么使用哈希存儲的密碼,真的就安全了嗎?如果你當真這么認為,那黑客就要在一旁偷偷地笑了——非也,非也!

事實上,即使數據庫中的密碼經過了哈希函數的加密,數據庫泄露之后也會有很大的危險,尤其是當使用的哈希算法還是 MD5 和 SHA-1 這種已經流行很多年的“大眾臉”時。確實,哈希本身并不可逆,但要注意的是,黑客并沒多少興趣知道原始密碼:因為服務器驗證密碼時不需要原始密碼。只要找到一個和數據庫里存儲的哈希值相同的密碼,就可以用它輕松通過驗證,這正是前面提到哈希函數要盡力避免碰撞的原因。

通常黑客手中,都會有一份很長的列表,稱為“碰撞庫”。碰撞庫里存儲的,是很多常用密碼對應的各種哈希值。這里的“常用”,并不單單是指 “123456789” 這種“爛大街”的密碼——事實上,任何不夠長、只含字母或數字的類似于 “iloveyou” 這種由簡單單詞組成的密碼,都可能出現在碰撞庫中,現在黑客們生成的碰撞庫的規(guī)模早已超出我們的想象。對于大部分常用密碼,只要把泄漏出的哈希值放到碰撞庫中比對一下,就可以找到一個產生碰撞的密碼。

滑稽的是,哈希算法極力要避免的碰撞在這里又給了黑客很大的方便:因為碰撞幾率極低,如果一個哈希值存在于碰撞庫里,那基本就可以確定庫中對應的碰撞密碼正是經過哈希加密前的真實密碼!因此,那些用戶名密碼在各個網站都一成不變的用戶們就悲劇了。

并非束手無策:猜不出的哈希算法

即便如此,網站管理員也并非束手無策。黑客可以用列表來破解哈希后的密碼,很大程度上是因為加密時使用的哈希算法是公開的。如果黑客不知道加密的哈希算法是什么,那他也就無從下手了。

一個直接的解決辦法是,自己設計一個哈希算法。然而,一個好的哈希算法是很難設計的——既要避免碰撞,又不能有明顯的規(guī)律,做到這兩點要比想象中的要困難很多。因此實際應用中更多的是利用已有的哈希算法進行多次哈希。

但是單純的多次哈希,依然阻擋不住黑客。兩次 MD5、三次 MD5之類的方法,我們能想到,黑客自然也能想到。特別是對于一些開源代碼,這樣哈希更是相當于直接把算法告訴了黑客。

沒有攻不破的盾,但也沒有折不斷的矛?,F在安全性比較好的網站,都會用一種叫做“加鹽”的方式來存儲密碼,也就是常說的 “salt”。他們通常的做法是,先將用戶輸入的密碼進行一次MD5(或其它哈希算法)加密;將得到的 MD5 值前后加上一些只有管理員自己知道的隨機串,再進行一次 MD5 加密。這個隨機串中可以包括某些固定的串,也可以包括用戶名(用來保證每個用戶加密使用的密鑰都不一樣)。舉個例子:

用戶名:sqybi    密碼:12345678先對 12345678 進行第一次 MD5,得到:25d55ad283aa400af464c76d713c07ad指定兩個 salt: salt1 = @#$%   salt2 = ^&*()salt1+用戶名+salt2+MD5,得到:@#$%sqybi^&*()25d55ad283aa400af464c76d713c07ad對新字符串再計算一次 MD5,得到最終的加密串:7edfee82ab9b6f5aa50edbc3a9eb6507

在兩個 salt 沒有泄露的情況下,黑客如果拿到的是最后這個加密串,就幾乎不可能推算出原始的密碼是什么了。

最后的安全攻防:數據庫泄露之外的危險

但是,即使有這種安全的密碼存儲方式,也不能太掉以輕心。在文章的一開始我們就說過,密碼的存儲和驗證有三個步驟,每個步驟都有可能被黑客趁虛而入,數據庫泄露只不過是其中的一個罷了。

在用戶輸入密碼這個步驟,黑客可以通過植入木馬等方式直接監(jiān)視用戶的鍵盤操作;在密碼被傳輸到服務器這個步驟,黑客可以設法截獲數據包分析其中包含的密碼。而即使數據庫有“加鹽”,設置過于簡單的密碼也不是好選擇——salt的值也不是沒有泄露的可能!

要說的是,無論對于用戶還是網站管理員,有良好的安全習慣才是最好的防御手段。用戶應經常查毒,了解每個系統(tǒng)進程的作用,讓木馬沒有藏身之處;網站管理員可以通過提供https連接或者在本地對密碼進行首次加密再傳輸給服務器,避免數據包被截獲;而經常更換密碼,重要的賬號不重復使用同一個密碼,都可以在密碼泄露的時候把損失降到最低。關于用戶應當如何對待自己密碼這個問題,死理性派的 你的密碼安全嗎?小心那些隱藏的陷阱 有過全面而詳細的介紹,強烈推薦大家一讀。

總之,網絡的時代想保護好自己的隱私,需要謹慎、謹慎再謹慎,養(yǎng)成良好的安全習慣,才是保護密碼的最好方式。而至于網絡安全要走的路,還有很長、很長……



參考資料:

談談近期的安全事件

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
密碼啊密碼!
哈希算法在密碼加密存儲中的應用
常用加密算法解析
PHP中的MD5加密
密碼泄露事件頻發(fā),一篇文章把密碼管理說清楚
王小云
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服