亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

最佳做法:添加密碼?

最佳做法:添加密碼?

米脂 2020-02-04 14:05:13
我遇到了一個討論,在那次討論中,我了解到我實際上并不是在給密碼加鹽,而是在給它們添加胡椒粉,從那時起,我就開始使用以下功能:hash_function($salt.hash_function($pepper.$password)) [multiple iterations]忽略選擇的哈希算法(我希望這是關于鹽和胡椒的討論,而不是特定算法的討論,但是我使用的是安全算法),這是安全的選擇還是我應該做一些不同的事情?對于不熟悉的術語:甲鹽是通常存儲與設計,使其不可能使用哈希表來破解密碼的數據庫中的字符串中的隨機生成值。由于每個密碼都有自己的特色,因此必須將所有密碼單獨強行破解。但是,由于鹽與密碼哈希一起存儲在數據庫中,因此數據庫泄密意味著同時丟失兩者。甲胡椒是從中旨在是秘密的數據庫(在應用程序的源代碼通常硬編碼)分開存儲站點范圍靜態值。使用它是為了避免對數據庫的損害,不會導致整個應用程序的密碼表都是蠻力的。我有什么想念的嗎?給密碼加鹽和胡椒粉是保護用戶安全的最佳選擇嗎?這樣做是否存在潛在的安全缺陷?注意:出于討論目的,假設應用程序和數據庫存儲在單獨的計算機上,不共享密碼等,因此違反數據庫服務器并不意味著違反應用程序服務器。
查看完整描述

3 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

鹽和胡椒粉的要點是增加稱為彩虹表的預先計算的密碼查找的成本。

通常,很難為單個哈希找到沖突(假設哈希是安全的)。但是,如果哈希值很短,則可以使用計算機將所有可能的哈希值生成到硬盤上的查找表中。這稱為彩虹表。如果創建了彩虹表,則可以進入世界,并快速找到任何(未加鹽的未配粉)哈希的合理密碼。

胡椒的重點是使破解您的密碼列表所需的彩虹表獨特。因此,浪費了更多的時間來攻擊者來構建彩虹表。

然而,重點在于使每個用戶的彩虹表對于用戶而言是唯一的,從而進一步增加了攻擊的復雜性。

確實,計算機安全的要點幾乎是從來沒有(在數學上)使其不可能,而在數學和物理上都不可行(例如,在安全系統中,它將利用Universe中的所有熵(甚至更多)來計算單個用戶的密碼)。


查看完整回答
反對 回復 2020-02-04
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

首先,我們應該談一談胡椒粉的確切優點:


Pepper可以保護弱密碼免受字典攻擊,在特殊情況下,攻擊者可以讀取數據庫(包含哈希),但不能訪問Pepper的源代碼。

典型的情況是SQL注入,丟棄備份,丟棄服務器...這些情況并不像聽起來那樣罕見,并且通常不受您的控制(服務器托管)。如果您使用...


每個密碼唯一的鹽

像BCrypt這樣的慢速哈希算法

...強大的密碼受到了很好的保護。在那種情況下,即使知道了鹽,也幾乎不可能強行使用強密碼。問題是弱密碼,它是蠻力字典的一部分,或者是它們的派生產品。字典攻擊將很快顯示出這些信息,因為您僅測試最常用的密碼。


第二個問題是如何使用胡椒粉?


通常推薦的應用胡椒的方法是在將密碼和胡椒傳遞給哈希函數之前,將密碼和胡椒結合起來:


$pepperedPassword = hash_hmac('sha512', $password, $pepper);

$passwordHash = bcrypt($pepperedPassword);

不過,還有另一種更好的方法:


$passwordHash = bcrypt($password);

$encryptedHash = encrypt($passwordHash, $serverSideKey);

這不僅允許添加服務器端機密,還允許交換$ serverSideKey(如果需要)。這種方法需要更多的工作,但是如果代碼一旦存在(庫),則沒有理由不使用它。


查看完整回答
反對 回復 2020-02-04
  • 3 回答
  • 0 關注
  • 659 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號