IT運(yùn)維-5種常用的用戶密碼加密方式

第7艦隊(duì)
第7縱隊(duì)
在密碼學(xué)中,scrypt(念作“ess crypt”)是Colin Percival于2009年所發(fā)明的金鑰推衍函數(shù),當(dāng)初設(shè)計(jì)用在他所創(chuàng)立的Tarsnap服務(wù)上。設(shè)計(jì)時(shí)考慮到大規(guī)模的客制硬件攻擊而刻意設(shè)計(jì)需要大量內(nèi)存運(yùn)算。
        作為互聯(lián)網(wǎng)公司的信息安全從業(yè)人員經(jīng)常要處理撞庫掃號事件(撞庫是黑客無聊的“惡作劇”,黑客通過收集互聯(lián)網(wǎng)已泄露的用戶+密碼信息,生成對應(yīng)的字典表,嘗試批量登陸其他網(wǎng)站后,得到一系列可以登陸的用戶),產(chǎn)生撞庫掃號的根本原因是一些企業(yè)發(fā)生了信息泄露事件,且這些泄露數(shù)據(jù)未加密或者加密方式比較弱,導(dǎo)致黑客可以還原出原始的用戶密碼。
 
        以京東之前的撞庫舉例,首先京東的數(shù)據(jù)庫并沒有泄漏。黑客只不過通過“撞庫”的手法,“湊巧”獲取到了一些京東用戶的數(shù)據(jù)(用戶名密碼),而這樣的手法,幾乎可以對付任何網(wǎng)站登錄系統(tǒng),用戶在不同網(wǎng)站登錄時(shí)使用相同的用戶名和密碼,就相當(dāng)于給自己配了一把“萬能鑰匙”,一旦丟失,后果可想而知。
 
        今天主要分別介紹用戶密碼的加密方式以及主要的破解方法。
 
        彩虹表
 
        用戶密碼加密方式
 
        用戶密碼保存到數(shù)據(jù)庫時(shí),常見的加密方式有哪些?以下幾種方式是常見的密碼保存方式:
 
        1、明文保存
 
        比如用戶設(shè)置的密碼是“123456”,直接將“123456”保存在數(shù)據(jù)庫中,這種是最簡單的保存方式,也是最不安全的方式。但實(shí)際上不少互聯(lián)網(wǎng)公司,都可能采取的是這種方式。
 
        2、對稱加密算法來保存
 
        比如3DES、AES等算法,使用這種方式加密是可以通過解密來還原出原始密碼的,當(dāng)然前提條件是需要獲取到密鑰。不過既然大量的用戶信息已經(jīng)泄露了,密鑰很可能也會泄露,當(dāng)然可以將一般數(shù)據(jù)和密鑰分開存儲、分開管理,但要完全保護(hù)好密鑰也是一件非常復(fù)雜的事情,所以這種方式并不是很好的方式。
 
        3、MD5、SHA1等單向HASH算法
 
        使用這些算法后,無法通過計(jì)算還原出原始密碼,而且實(shí)現(xiàn)比較簡單,因此很多互聯(lián)網(wǎng)公司都采用這種方式保存用戶密碼,曾經(jīng)這種方式也是比較安全的方式,但隨著彩虹表技術(shù)的興起,可以建立彩虹表進(jìn)行查表破解,目前這種方式已經(jīng)很不安全了。
 
        其實(shí)之前公司也是采用的這種MD5加密方式。
 
        4、PBKDF2算法
 
        該算法原理大致相當(dāng)于在HASH算法基礎(chǔ)上增加隨機(jī)鹽,并進(jìn)行多次HASH運(yùn)算,隨機(jī)鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。
 
        在使用PBKDF2算法時(shí),HASH一般會選用sha1或者sha256,隨機(jī)鹽的長度一般不能少于8字節(jié),HASH次數(shù)至少也要1000次,這樣安全性才足夠高。一次密碼驗(yàn)證過程進(jìn)行1000次HASH運(yùn)算,對服務(wù)器來說可能只需要1ms,但對于破解者來說計(jì)算成本增加了1000倍,而至少8字節(jié)隨機(jī)鹽,更是把建表難度提升了N個(gè)數(shù)量級,使得大批量的破解密碼幾乎不可行,該算法也是美國國家標(biāo)準(zhǔn)與技術(shù)研究院推薦使用的算法。
 
        5、bcrypt、scrypt等算法
 
        這兩種算法也可以有效抵御彩虹表,使用這兩種算法時(shí)也需要指定相應(yīng)的參數(shù),使破解難度增加。
 
        在密碼學(xué)中,scrypt(念作“ess crypt”)是Colin Percival于2009年所發(fā)明的金鑰推衍函數(shù),當(dāng)初設(shè)計(jì)用在他所創(chuàng)立的Tarsnap服務(wù)上。設(shè)計(jì)時(shí)考慮到大規(guī)模的客制硬件攻擊而刻意設(shè)計(jì)需要大量內(nèi)存運(yùn)算。
 
        Scrypt不僅計(jì)算所需時(shí)間長,而且占用的內(nèi)存也多,使得并行計(jì)算多個(gè)摘要異常困難,因此利用rainbow table進(jìn)行暴力攻擊更加困難。Scrypt沒有在生產(chǎn)環(huán)境中大規(guī)模應(yīng)用,并且缺乏仔細(xì)的審察和廣泛的函數(shù)庫支持。但是,Scrypt在算法層面只要沒有破綻,它的安全性應(yīng)該高于PBKDF2和bcrypt。
 
        各個(gè)算法的特性
 
        總結(jié)
 
        采用PBKDF2、bcrypt、scrypt等算法可以有效抵御彩虹表攻擊,即使數(shù)據(jù)泄露,最關(guān)鍵的“用戶密碼”仍然可以得到有效的保護(hù),黑客無法大批量破解用戶密碼,從而切斷撞庫掃號的根源。
THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論