3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
鹽和胡椒粉的要點(diǎn)是增加稱為彩虹表的預(yù)先計(jì)算的密碼查找的成本。
通常,很難為單個(gè)哈希找到?jīng)_突(假設(shè)哈希是安全的)。但是,如果哈希值很短,則可以使用計(jì)算機(jī)將所有可能的哈希值生成到硬盤上的查找表中。這稱為彩虹表。如果創(chuàng)建了彩虹表,則可以進(jìn)入世界,并快速找到任何(未加鹽的未配粉)哈希的合理密碼。
胡椒的重點(diǎn)是使破解您的密碼列表所需的彩虹表獨(dú)特。因此,浪費(fèi)了更多的時(shí)間來攻擊者來構(gòu)建彩虹表。
然而,重點(diǎn)在于使每個(gè)用戶的彩虹表對(duì)于用戶而言是唯一的,從而進(jìn)一步增加了攻擊的復(fù)雜性。
確實(shí),計(jì)算機(jī)安全的要點(diǎn)幾乎是從來沒有(在數(shù)學(xué)上)使其不可能,而在數(shù)學(xué)和物理上都不可行(例如,在安全系統(tǒng)中,它將利用Universe中的所有熵(甚至更多)來計(jì)算單個(gè)用戶的密碼)。

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先,我們應(yīng)該談一談胡椒粉的確切優(yōu)點(diǎn):
Pepper可以保護(hù)弱密碼免受字典攻擊,在特殊情況下,攻擊者可以讀取數(shù)據(jù)庫(包含哈希),但不能訪問Pepper的源代碼。
典型的情況是SQL注入,丟棄備份,丟棄服務(wù)器...這些情況并不像聽起來那樣罕見,并且通常不受您的控制(服務(wù)器托管)。如果您使用...
每個(gè)密碼唯一的鹽
像BCrypt這樣的慢速哈希算法
...強(qiáng)大的密碼受到了很好的保護(hù)。在那種情況下,即使知道了鹽,也幾乎不可能強(qiáng)行使用強(qiáng)密碼。問題是弱密碼,它是蠻力字典的一部分,或者是它們的派生產(chǎn)品。字典攻擊將很快顯示出這些信息,因?yàn)槟鷥H測(cè)試最常用的密碼。
第二個(gè)問題是如何使用胡椒粉?
通常推薦的應(yīng)用胡椒的方法是在將密碼和胡椒傳遞給哈希函數(shù)之前,將密碼和胡椒結(jié)合起來:
$pepperedPassword = hash_hmac('sha512', $password, $pepper);
$passwordHash = bcrypt($pepperedPassword);
不過,還有另一種更好的方法:
$passwordHash = bcrypt($password);
$encryptedHash = encrypt($passwordHash, $serverSideKey);
這不僅允許添加服務(wù)器端機(jī)密,還允許交換$ serverSideKey(如果需要)。這種方法需要更多的工作,但是如果代碼一旦存在(庫),則沒有理由不使用它。
- 3 回答
- 0 關(guān)注
- 671 瀏覽
添加回答
舉報(bào)