免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
哈希算法在密碼加密存儲(chǔ)中的應(yīng)用


互聯(lián)網(wǎng)公司數(shù)據(jù)泄露事件已經(jīng)不是什么新鮮事兒了,目前已經(jīng)曝光過(guò)的數(shù)據(jù)泄露事件至少上百起,其中不乏一線互聯(lián)網(wǎng)公司,比較出名的數(shù)據(jù)泄露事件就有2011CSDN600萬(wàn)用戶數(shù)據(jù)泄露事件和2016年的京東12G用戶數(shù)據(jù)泄露事件,用戶數(shù)據(jù)泄露后最大的危害就是黑客可以通過(guò)竊取到的用戶名和口令,登錄用戶賬號(hào),侵害用戶權(quán)益,導(dǎo)致這種結(jié)果的直接原因就是受害公司沒(méi)有對(duì)用戶的口令信息進(jìn)行加密處理。如果對(duì)用戶的口令信息進(jìn)行加密存儲(chǔ),即使數(shù)據(jù)被拖庫(kù),黑客也無(wú)法還原出原始密碼。

用戶名口令加密存儲(chǔ)方法有多種,其中哈希算法加密是一種比較常用的簡(jiǎn)單方法。

哈希算法又稱摘要算法、散列算法,它通過(guò)一個(gè)函數(shù),把任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換成一個(gè)固定的長(zhǎng)度的數(shù)據(jù)串,它是一種單向密碼體制,無(wú)法從逆向還原出原始明文。

哈希算法有多種,比較常用的有MD5、SHA1、SHA256等。MD5用一個(gè)32位的16進(jìn)制字符串表示,雖然目前MD5已經(jīng)被攻破,但是依然很流行;SHA1用一個(gè)40位的16進(jìn)制字符串表示,目前也被攻破,但是相比MD5,被攻破的難度更大一些,SHA256尚未被攻破,比SHA256更加安全,但是越安全的算法越復(fù)雜,計(jì)算時(shí)間越長(zhǎng)。

利用哈希算法對(duì)用戶口令加密存儲(chǔ)最簡(jiǎn)單的辦法就是一次哈希加密,python算法如圖1所示:

 

1:一次加密哈希算法

即把用戶口令簡(jiǎn)單地進(jìn)行哈希計(jì)算后進(jìn)行存儲(chǔ),這樣得到加密后的密碼無(wú)法還原到原始口令,相對(duì)安全,但是可以通過(guò)彩虹表查表破譯。彩虹表就是黑客預(yù)先計(jì)算一些常用口令的md5值,得到一個(gè)反推表,如表1所示:

 

1:彩虹表示例

這樣,無(wú)需破解,只需要對(duì)比數(shù)據(jù)庫(kù)中的MD5,黑客就能獲得部分弱口令的用戶賬號(hào)信息。

如此一來(lái),如何確保那些弱口令用戶的賬號(hào)安全呢?可以在一次哈希加密的基礎(chǔ)上進(jìn)行加鹽處理,所謂加鹽就是指在用戶原始口令后面加一個(gè)復(fù)雜鹽值,即一個(gè)復(fù)雜的固定字符串,python算法如圖2所示:

 

2:加密哈希加鹽算法

這樣即使用戶的弱口令,也很難通過(guò)彩虹表反推出明文口令,前提是這個(gè)不被泄露,因?yàn)闊o(wú)法保證的絕對(duì)安全,所以這種加密方法也只是相對(duì)安全,不是萬(wàn)無(wú)一失的。

該加密方法的硬傷是鹽值是固定的,如果是隨機(jī)的,那么數(shù)據(jù)的安全性就能更高一些。

PBKDF2(Password-Based Key Derivation Function)算法原理大致相當(dāng)于在哈希加密基礎(chǔ)上加隨機(jī)鹽,然后重復(fù)進(jìn)行運(yùn)算,并最終產(chǎn)生密鑰。如果重復(fù)的次數(shù)足夠大,那么破解的成本就會(huì)變得很高,而鹽值的添加也會(huì)增加彩虹表的攻擊難度。PBKDF2函數(shù)的定義如圖3所示:

 

3:PBKDF2函數(shù)的定義

PBKDF2的算法流程

DK的值由一個(gè)以上的block拼接而成,block的數(shù)量是dklen/hlen的值。就是說(shuō)如果PRF輸出的結(jié)果比期望得到的密鑰長(zhǎng)度要短,則要通過(guò)拼接多個(gè)結(jié)果以滿足密鑰的長(zhǎng)度。

DK = T1 || T2 || ... || Tdklen/hlen

而每個(gè)block則通過(guò)函數(shù)F得到:Ti = F(Password, Salt, c, i)

在函數(shù)F里,PRF會(huì)進(jìn)行c次的運(yùn)算,然后把得到的結(jié)果進(jìn)行異或運(yùn)算,得到最終的值。

F(Password, Salt, c, i) = U1 ^ U2 ^ ... ^ Uc

第一次,PRF會(huì)使用Password作為key,Salt拼接上編碼成大字節(jié)序的32位整型的i作為鹽值進(jìn)行運(yùn)算。

U1 = PRF(Password, Salt || INT_32_BE(i))

而后續(xù)的c-1次則會(huì)使用上次得到的結(jié)果作為鹽值。

U2 = PRF(Password, U1)

...

Uc = PRF(Password, Uc-1)

函數(shù)F的大致流程如圖4所示

 

4:函數(shù)F流程圖

使用PBKDF2算法時(shí),HASH算法一般選用sha1或者sha256,隨機(jī)鹽的長(zhǎng)度一般不能少于8字節(jié),HASH次數(shù)至少也要1000次,這樣安全性才足夠高。一次密碼驗(yàn)證過(guò)程進(jìn)行1000HASH運(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ù)研究院推薦使用的算法。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
等保2.0下,密碼技術(shù)大起底(一)
哈希(Hash)與加密(Encrypt)的基本原理、區(qū)別及工程應(yīng)用
數(shù)字簽名和哈希函數(shù)
如何安全的存儲(chǔ)用戶密碼?
網(wǎng)絡(luò)安全知識(shí)之了解什么是數(shù)字簽名
DotNet加密方式解析--散列加密
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服