国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

漫話密碼存儲

Godtoy / 2086人閱讀

摘要:通俗一點說就是彩虹表犧牲了一點計算速度,換來的好處是較少的空間存儲更多的密碼數(shù)據(jù)。關于鹽的使用有一點需要說明加鹽的目的是為了增加提前構(gòu)造字典和彩虹表的代價,并不是為了加密或增加密碼的計算復雜性。

背景

密碼是用來進行鑒權(quán)(身份認證)一種手段,說白了就是證明你是誰。一般鑒權(quán)都可以總結(jié)為下面3種形式:

你知道什么? (如密碼,密碼提示問題等)

你有什么? (如信用卡,token卡等)

你是什么?(如指紋識別,瞳孔識別等)

常見攻擊方式

常見的針對密碼的攻擊方式有:

暴力破解(Brute-force)

字典攻擊(Dictionary Attack)

彩虹表攻擊(Rainbow table attacks)

暴力破解

暴力破解指的是嘗試密碼空間中所有的可能情況。

字典攻擊

上面說了暴力搜索空間巨大,然而大部分用戶選擇的密碼都是有一定規(guī)律的:如使用生日,姓名,單詞縮寫,電話,以及以上各種方法的混合。如果把這

些常見的密碼放到一個文件里,破解密碼的時候就直接從這些常見的密碼中嘗試,這樣嘗試的空間和暴力破解相比就會小很多。這種存儲了許多常見密碼的
文件就像是一本用戶常見密碼的字典,字典攻擊因此得名。

彩虹表

彩虹表:彩虹表是計算機科學時間/空間權(quán)衡的典型體現(xiàn)。起核心思想和查找表是類似的,只是相對于查找表,彩虹表需要的存儲空間相對較小,查找速度

比查找表的O(1)要慢一點。通俗一點說就是:彩虹表犧牲了一點計算速度,換來的好處是較少的空間存儲更多的密碼數(shù)據(jù)。舉個例子: 如果一個查找表里需要
存儲所有的10個字符小寫字母的字典(至少需要存儲用戶名,密碼hash輸出),需要的磁盤空間為 26^10 * (10+16) / (2^40) ~= 3338T,如果改用彩虹表存儲,
那么這個彩虹表可能只需要約300G的磁盤空間就能涵蓋99.9%的組合。

密碼存儲的方式 直接存儲

最簡單直觀的做法是將密碼明文存儲到數(shù)據(jù)庫。這種方式數(shù)據(jù)庫的一條記錄類似: 。
這種方式最簡單但無安全可言。黑客獲取了數(shù)據(jù)庫就活得了所有用戶信息。因此直接存儲明文是不可取的,至少需要對明文做一些處理

hash存儲

先對明文密碼進行hash計算,將hash函數(shù)的輸出存儲到數(shù)據(jù)庫。這里的hash是指密碼學中具有單向性和不可逆性的hash函數(shù)(如MD5,SHA1等),不是數(shù)據(jù)結(jié)構(gòu)中的hash算法。這種方式
的數(shù)據(jù)庫中記錄格式類似: 。這種方法比存明文要好很多,惡意用戶獲得了密碼數(shù)據(jù)庫以后不能直接得到用戶的密碼。這種方法的問題是:抵抗不了字典和
彩虹表攻擊,一旦黑客針對數(shù)據(jù)庫構(gòu)造好彩虹表,就很容易破解了。因此,我們需要一種方法使惡意用戶預先構(gòu)造字典和彩虹表的代價變大。

密碼hash加鹽后存儲

密碼學中的鹽是指一段隨機字節(jié)串,通常和密碼一起作為hash函數(shù)的輸入。密碼加鹽后,數(shù)據(jù)庫記錄類似 ,這種方法有一些變種如:
,本質(zhì)都是一樣的。加鹽后的數(shù)據(jù)庫構(gòu)造彩虹表需要的巨大存儲空間,
使得構(gòu)造查找表和彩虹表的攻擊方式失效。

大大增加構(gòu)成字典和彩虹表的成本。

降低相同密碼hash值相同的概率。

關于鹽的使用有一點需要說明:加鹽的目的是為了增加提前構(gòu)造字典和彩虹表的代價,并不是為了加密或增加密碼hash的計算復雜性。因此,鹽并不需要加密存儲,
通常是明文和用戶名一起存儲于數(shù)據(jù)庫的。

自適應加鹽存儲

前面說了,密碼加鹽能有效的對抗提前構(gòu)造字典和彩虹表的攻擊,但是對于暴力破解還是無能為力,對于單個用戶的密碼,如果黑客采用多臺計算機并行計算或者
采用GPU等特殊硬件進行暴力破解,能很快的破解較弱的密碼。
因此,比較理想的密碼存儲方法要具備2點:

單次密碼存儲的計算要盡可能的慢,慢到對單個普通用戶的鑒權(quán)來說計算時間剛好可以接受,但是對于需要嘗試很多密碼組合的惡意用戶來說,計算代價將會大大增加。

可以動態(tài)的控制密碼計算過程的復雜性,這樣就可以應對摩爾定律下計算機計算能力越來越強的趨勢。

總結(jié)

密碼的安全存儲目前正確的做法是使用自適應加鹽的方法進行存儲,具體的說是可以使用pbkdf2, bcrypt, scrypt中的任何一種。本文主要討論了如何安全的存儲密碼,
如果是保證用戶賬戶的安全,那么除了保證密碼存儲安全之外,通常需要綜合使用下面的各種方法:

引導選擇強度較高的密碼

使用驗證碼

密碼驗證錯誤以后短時間鎖住賬號

敏感操作需要二次鑒權(quán)

使用two-factor驗證

參考鏈接

加鹽密碼哈希:如何正確使用

密碼破解之王:Ophcrack彩虹表(Rainbow Tables)

WilsonLiu"s blog首發(fā)地址:http://blog.wilsonliu.cn

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80075.html

相關文章

  • 漫話:如何給女朋友解釋滅霸的指響并不是真隨機"消滅"半數(shù)宇宙人口的?

    摘要:軟件實現(xiàn)的是偽隨機數(shù)。有限狀態(tài)機不能產(chǎn)生真正的隨機數(shù)的。復聯(lián)中,滅霸打了指響之后,復仇者聯(lián)盟中存活和死亡的名單其實并不是隨機的。可見,滅霸的指響抹除過程并不是隨機的。綜上,滅霸的指響抹除過程不符合隨機性不可預測性以及不可復現(xiàn)性。showImg(https://user-gold-cdn.xitu.io/2019/5/7/16a91fc63239db4d);周末,陪女朋友去電影院看了《復仇者聯(lián)...

    WalkerXu 評論0 收藏0
  • 追本溯源:substr與substring歷史漫話

    摘要:基因追本溯源在編程語言的歷史長河中,曾經(jīng)出現(xiàn)過很多編程語言。的歷史繼承年,網(wǎng)景公司招募了,目的是將編程語言嵌入到中。網(wǎng)景公司決定,他們想創(chuàng)建的腳本語言將補充,并且應該有一個類似的語法,排除采用,,或等其他語言。 引子: 很多時候,當我要字符串截取時,我會想到substr和substring的方法,但是具體要怎么傳參數(shù)時,我總是記不住。哪個應該傳個字符串長度,哪個又應該傳個開始和結(jié)尾的下...

    gecko23 評論0 收藏0
  • 追本溯源:substr與substring歷史漫話

    摘要:基因追本溯源在編程語言的歷史長河中,曾經(jīng)出現(xiàn)過很多編程語言。的歷史繼承年,網(wǎng)景公司招募了,目的是將編程語言嵌入到中。網(wǎng)景公司決定,他們想創(chuàng)建的腳本語言將補充,并且應該有一個類似的語法,排除采用,,或等其他語言。 引子: 很多時候,當我要字符串截取時,我會想到substr和substring的方法,但是具體要怎么傳參數(shù)時,我總是記不住。哪個應該傳個字符串長度,哪個又應該傳個開始和結(jié)尾的下...

    FuisonDesign 評論0 收藏0
  • 漫話:如何給女朋友解釋什么是策略模式?

    摘要:策略策略,指的是可以實現(xiàn)目標的方案集合,在某些特定情況下,策略之間是可以相互替換的。如何計算金額我們先拿點外賣中會員折扣活動舉例子來說明一下吧。這就是策略模式。策略模式提供了管理相關的算法族的辦法。showImg(https://user-gold-cdn.xitu.io/2019/5/13/16aaf673fde1b546);?周末無事,窩在家里面看《權(quán)力的游戲第八季》,看的很是津津有味,...

    fancyLuo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<