常見(jiàn)的用戶密碼加密方式以及破解方法(轉(zhuǎn))

【作者】張輝,就職于攜程技術(shù)中心信息安全部刽射,負(fù)責(zé)安全產(chǎn)品的設(shè)計(jì)與研發(fā)轻掩。
作為互聯(lián)網(wǎng)公司的信息安全從業(yè)人員經(jīng)常要處理撞庫(kù)掃號(hào)事件织咧,產(chǎn)生撞庫(kù)掃號(hào)的根本原因是一些企業(yè)發(fā)生了信息泄露事件,且這些泄露數(shù)據(jù)未加密或者加密方式比較弱漠秋,導(dǎo)致黑客可以還原出原始的用戶密碼笙蒙。目前已經(jīng)曝光的信息泄露事件至少上百起,其中包括多家一線互聯(lián)網(wǎng)公司庆锦,泄露總數(shù)據(jù)超過(guò)10億條捅位。
要完全防止信息泄露是非常困難的事情,除了防止黑客外搂抒,還要防止內(nèi)部人員泄密艇搀。但如果采用合適的算法去加密用戶密碼,即使信息泄露出去求晶,黑客也無(wú)法還原出原始的密碼(或者還原的代價(jià)非常大)焰雕。也就是說(shuō)我們可以將工作重點(diǎn)從防止泄露轉(zhuǎn)換到防止黑客還原出數(shù)據(jù)。下面我們將分別介紹用戶密碼的加密方式以及主要的破解方法芳杏。
一矩屁、用戶密碼加密
用戶密碼保存到數(shù)據(jù)庫(kù)時(shí),常見(jiàn)的加密方式有哪些爵赵,我們?cè)摬捎檬裁捶绞絹?lái)保護(hù)用戶的密碼呢档插?以下幾種方式是常見(jiàn)的密碼保存方式:
1、直接明文保存亚再,比如用戶設(shè)置的密碼是“123456”郭膛,直接將“123456”保存在數(shù)據(jù)庫(kù)中,這種是最簡(jiǎn)單的保存方式氛悬,也是最不安全的方式则剃。但實(shí)際上不少互聯(lián)網(wǎng)公司,都可能采取的是這種方式如捅。 2棍现、使用對(duì)稱加密算法來(lái)保存,比如3DES镜遣、AES等算法己肮,使用這種方式加密是可以通過(guò)解密來(lái)還原出原始密碼的,當(dāng)然前提條件是需要獲取到密鑰悲关。不過(guò)既然大量的用戶信息已經(jīng)泄露了谎僻,密鑰很可能也會(huì)泄露,當(dāng)然可以將一般數(shù)據(jù)和密鑰分開(kāi)存儲(chǔ)寓辱、分開(kāi)管理艘绍,但要完全保護(hù)好密鑰也是一件非常復(fù)雜的事情,所以這種方式并不是很好的方式秫筏。

圖片描述

3诱鞠、使用MD5挎挖、SHA1等單向HASH算法保護(hù)密碼,使用這些算法后航夺,無(wú)法通過(guò)計(jì)算還原出原始密碼蕉朵,而且實(shí)現(xiàn)比較簡(jiǎn)單,因此很多互聯(lián)網(wǎng)公司都采用這種方式保存用戶密碼阳掐,曾經(jīng)這種方式也是比較安全的方式始衅,但隨著彩虹表技術(shù)的興起,可以建立彩虹表進(jìn)行查表破解锚烦,目前這種方式已經(jīng)很不安全了。
圖片描述

4帝雇、特殊的單向HASH算法涮俄,由于單向HASH算法在保護(hù)密碼方面不再安全,于是有些公司在單向HASH算法基礎(chǔ)上進(jìn)行了加鹽尸闸、多次HASH等擴(kuò)展彻亲,這些方式可以在一定程度上增加破解難度,對(duì)于加了“固定鹽”的HASH算法吮廉,需要保護(hù)“鹽”不能泄露苞尝,這就會(huì)遇到“保護(hù)對(duì)稱密鑰”一樣的問(wèn)題,一旦“鹽”泄露宦芦,根據(jù)“鹽”重新建立彩虹表可以進(jìn)行破解宙址,對(duì)于多次HASH,也只是增加了破解的時(shí)間调卑,并沒(méi)有本質(zhì)上的提升抡砂。
圖片描述

5、PBKDF2算法恬涧,該算法原理大致相當(dāng)于在HASH算法基礎(chǔ)上增加隨機(jī)鹽注益,并進(jìn)行多次HASH運(yùn)算,隨機(jī)鹽使得彩虹表的建表難度大幅增加溯捆,而多次HASH也使得建表和破解的難度都大幅增加丑搔。使用PBKDF2算法時(shí),HASH算法一般選用sha1或者sha256提揍,隨機(jī)鹽的長(zhǎng)度一般不能少于8字節(jié)啤月,HASH次數(shù)至少也要1000次,這樣安全性才足夠高劳跃。一次密碼驗(yàn)證過(guò)程進(jìn)行1000次HASH運(yùn)算顽冶,對(duì)服務(wù)器來(lái)說(shuō)可能只需要1ms,但對(duì)于破解者來(lái)說(shuō)計(jì)算成本增加了1000倍售碳,而至少8字節(jié)隨機(jī)鹽强重,更是把建表難度提升了N個(gè)數(shù)量級(jí)绞呈,使得大批量的破解密碼幾乎不可行,該算法也是美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院推薦使用的算法间景。
圖片描述

6佃声、bcrypt、scrypt等算法倘要,這兩種算法也可以有效抵御彩虹表圾亏,使用這兩種算法時(shí)也需要指定相應(yīng)的參數(shù),使破解難度增加封拧。
下表對(duì)比了各個(gè)算法的特性:
圖片描述

二志鹃、用戶密碼破解
用戶密碼破解需要針對(duì)具體的加密方式來(lái)實(shí)施,如果使用對(duì)稱加密泽西,并且算法足夠安全(比如AES)曹铃,必須獲取到密鑰才能解密,沒(méi)有其它可行的破解方式捧杉。
如果采用HASH算法(包括特殊HASH)陕见,一般使用彩虹表的方式來(lái)破解,彩虹表的原理是什么呢味抖?我們先來(lái)了解下如何進(jìn)行HASH碰撞评甜。單向HASH算法由于不能進(jìn)行解密運(yùn)算,只能通過(guò)建表仔涩、查表的方式進(jìn)行碰撞忍坷,即將常用的密碼及其對(duì)應(yīng)的HASH值全計(jì)算出來(lái)并存儲(chǔ),當(dāng)獲取到HASH值是熔脂,直接查表獲取原始密碼承匣,假設(shè)用MD5算法來(lái)保護(hù)6位數(shù)字密碼,可以建如下表:
圖片描述

全表共100W條記錄锤悄,因?yàn)閿?shù)據(jù)量不大韧骗,這種情況建表、查表都非常容易零聚。但是當(dāng)密碼并不是6位純數(shù)字密碼袍暴,而是數(shù)字、大小寫(xiě)字母結(jié)合的10位密碼時(shí)隶症,建立一個(gè)這樣的表需要(26+26+10)^ 10 ≈ 83億億(條記錄)政模,存儲(chǔ)在硬盤(pán)上至少要占用2000W TB的空間,這么大的存儲(chǔ)空間蚂会,成本太大淋样,幾乎不可行。有什么辦法可以減少存儲(chǔ)空間胁住?一種方法是“預(yù)計(jì)算哈希鏈”趁猴,“預(yù)計(jì)算哈希鏈”可以大幅減少HASH表的存儲(chǔ)空間刊咳,但相應(yīng)的增加了查表時(shí)的計(jì)算量,其原理大致如下:
建表過(guò)程:
圖片描述

先對(duì)原始數(shù)據(jù)“000000”進(jìn)行一次HASH運(yùn)算得到“670B1E”儡司,再對(duì)HASH值進(jìn)行一次R運(yùn)算娱挨,R是一個(gè)定制的算法可以將HASH值映射到明文空間上(這里我們的明文空間是000000~999999),R運(yùn)算后得到“283651”捕犬,再對(duì)“283651”進(jìn)行hash運(yùn)算得到“1A99CD”跷坝,然后在進(jìn)行R運(yùn)算得到“819287”,如此重復(fù)多次碉碉,得到一條哈希鏈柴钻。然后再選用其它原始數(shù)據(jù)建立多條哈希鏈。最終僅將鏈頭和鏈尾保存下來(lái)垢粮,中間節(jié)點(diǎn)全都去掉贴届。
查表過(guò)程:假設(shè)拿到了一條HASH值“670B1E”,首先進(jìn)行一次R運(yùn)算足丢,得到了“283651”粱腻,查詢所有鏈尾是否有命中庇配,如果沒(méi)有斩跌,則再進(jìn)行一次HASH、一次R捞慌,得到了“819287”耀鸦,再次所有鏈尾,可以得到看出已經(jīng)命中啸澡。這樣我們就可以基本確認(rèn)“670B1E”對(duì)應(yīng)的明文就在這條鏈上袖订,然后我們把這條鏈的生成過(guò)程進(jìn)行重新計(jì)算,計(jì)算過(guò)程中可以發(fā)現(xiàn)“000000”的HASH值就是“670B1E”嗅虏,這樣就完成了整個(gè)查表過(guò)程洛姑。這種表就是“預(yù)計(jì)算哈希鏈”。這種方式存在一個(gè)問(wèn)題皮服,多條鏈之間可能存在大量的重復(fù)數(shù)據(jù)楞艾,如下圖所示:
圖片描述

為了解決這個(gè)問(wèn)題,我們將R算法進(jìn)行擴(kuò)展龄广,一條鏈上的多次R運(yùn)算采用不同的算法,如下圖:
圖片描述

一條鏈上的每個(gè)R算法都不一樣硫眯,就像彩虹的每層顏色一樣,因此取名的為彩虹表择同。
當(dāng)然彩虹表除了可以用戶破解HASH算法外两入,理論上還可以用于破解對(duì)稱加密算法,比如DES算法敲才,由于DES算法密鑰比較短裹纳,建立彩虹表破解是完全可行的择葡;但對(duì)于AES算法,由于密鑰比較長(zhǎng)痊夭,建表幾乎不可行(需要耗時(shí)N億年)刁岸。
三、小結(jié)
采用PBKDF2她我、bcrypt虹曙、scrypt等算法可以有效抵御彩虹表攻擊,即使數(shù)據(jù)泄露番舆,最關(guān)鍵的“用戶密碼”仍然可以得到有效的保護(hù)酝碳,黑客無(wú)法大批量破解用戶密碼,從而切斷撞庫(kù)掃號(hào)的根源恨狈。當(dāng)然疏哗,對(duì)于已經(jīng)泄露的密碼,還是需要用戶盡快修改密碼禾怠,不要再使用已泄露的密碼返奉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吗氏,隨后出現(xiàn)的幾起案子芽偏,更是在濱河造成了極大的恐慌,老刑警劉巖弦讽,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件污尉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡往产,警方通過(guò)查閱死者的電腦和手機(jī)被碗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仿村,“玉大人锐朴,你說(shuō)我怎么就攤上這事“遥” “怎么了焚志?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)压真。 經(jīng)常有香客問(wèn)我娩嚼,道長(zhǎng),這世上最難降的妖魔是什么滴肿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任岳悟,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贵少。我一直安慰自己呵俏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布滔灶。 她就那樣靜靜地躺著普碎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪录平。 梳的紋絲不亂的頭發(fā)上麻车,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音斗这,去河邊找鬼动猬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛表箭,可吹牛的內(nèi)容都是我干的赁咙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼免钻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彼水!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起极舔,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凤覆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后姆怪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叛赚,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澡绩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年稽揭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肥卡。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溪掀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出步鉴,到底是詐尸還是另有隱情揪胃,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布氛琢,位于F島的核電站喊递,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阳似。R本人自食惡果不足惜骚勘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俏讹,春花似錦当宴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至殉疼,卻和暖如春梯浪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓢娜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工驱证, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恋腕。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓抹锄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親荠藤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伙单,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開(kāi)發(fā)過(guò)程中,在網(wǎng)絡(luò)通信哈肖、數(shù)據(jù)存儲(chǔ)吻育、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹(shù)閱讀 2,410評(píng)論 0 6
  • 現(xiàn)在比較流行的密碼存儲(chǔ)是對(duì)密碼明文做 HASH運(yùn)算,把得到HASH值存儲(chǔ)到數(shù)據(jù)庫(kù)中淤井。驗(yàn)證過(guò)程就是再次對(duì)用戶發(fā)過(guò)來(lái)的...
    JSON_NULL閱讀 3,509評(píng)論 4 7
  • 所有貨幣都需要一些方法來(lái)控制供應(yīng)布疼,并強(qiáng)制執(zhí)行各種安全屬性以防止作弊。在法定貨幣方面币狠,像中央銀行這樣的組織控制貨幣供...
    Nutbox_Lab閱讀 3,101評(píng)論 1 3
  • 〇游两、序言 貨幣由于其天然屬性決定了其與安全不可分割的聯(lián)系,從最早的金庫(kù)漩绵、保險(xiǎn)柜贱案、鏢局到后來(lái)的ATM機(jī)、運(yùn)鈔車止吐;從存...
    怒馬2048閱讀 38,762評(píng)論 4 79
  • about 參考cdw_FstLst的 Ubuntu配置Caffeonspark教程 Note 安裝的總體流程請(qǐng)看...
    龐貝船長(zhǎng)閱讀 1,231評(píng)論 4 1