2011-08-18 46 views
9

我剛剛學會了哈希的概念(「嘿!別忘了鹽!」)並使用salt來確保密碼安全。如果可以訪問數據庫,那麼鹽和哈希的要點是什麼?

哈希它是一種單向加密(實際上不加密,但哈希),所以它不能被顛倒工程。 Salting是在散列之前爲密碼添加隨機創建的值的前綴或附加值,因爲散列問題(哈希)是,某些天才提供了字典中的單詞哈希表,以便他們將該字典中的散列用戶的表從數據庫登錄 - W等待?我是否從數據庫中說出表格?所以這意味着有人可以訪問數據庫,所以我們必須使用鹽?如果是這樣,那麼黑客爲什麼會恢復密碼,如果他已經有權訪問數據庫?如果我是他,我只需從數據庫中獲得所有我想要的細節,那麼爲什麼我會使用我從房子裏偷來的鑰匙打開門,如果我可以通過窗戶進入房子?

那麼,爲什麼哈希?爲什麼要鹽?我不明白。請有人幫助我。

在此先感謝。

重要說明:我不反對哈希或醃製,我只是想澄清事情。

+0

不是一個確切* *重複的,但你可能也想看看:http://stackoverflow.com/questions/6552554/salting-hashes-why-is-the-salt-treated-by-the-literature正在爲人熟知的前夕/ 6608045#6608045 –

回答

11

如果是這樣,那麼爲什麼黑客恢復密碼,如果他已經有對數據庫的訪問?

原因很多。這裏有幾個:

  1. 人民重用他們的密碼,所以不滲漏每個人的真正的密碼並限制此類攻擊的影響。

  2. 如果沒有真正的密碼,黑客仍然無法登錄,比如在黑客入侵的系統上發佈新條目。

  3. 誰說全部信息存儲在數據庫中?如果數據庫僅由用戶名和哈希/鹽漬密碼組成,該怎麼辦?然後,瞭解內容並沒有多大幫助。

3

鹽被用來使相同的密碼具有不同的哈希值,使得試圖更難確定密碼。

哈希使得它通過蠻力方法生成密碼需要很長時間(特別是對於SHA2),因此它使得找到密碼「不可行」。

如果你不知道密碼,哈希將不會有任何好處,因爲在密碼字段中輸入哈希將不起作用(顯然)。

通常黑客只能找到用戶表和可能的一些基本信息,但如果他們希望能夠實際訪問該用戶的信息並更改某些內容,那麼他​​們需要實際的密碼(因爲他們不知道整個數據庫模式會改變某些內容可能看起來非常可疑並且很容易追蹤,除非您以合法身份登錄)

我忘記的最後一件事是人們重複使用密碼。所以也許你會黑了一些沒有任何有用信息的隨機網站,但這個人在他們的網上銀行上使用了相同的用戶/密碼組合。這可能是非常糟糕的,因爲您可以看到,因此無法輕鬆辨別密碼是關鍵。

4

如果您擁有數據庫中的明文密碼和電子郵件地址,則可能造成嚴重破壞!這不是要獲取已被黑客入侵的網站的證書,而是要將登錄信息提供給其他網站。

大多數人並不只針對一個網站使用一個密碼,所以如果你有他們的主電子郵件地址的密碼,你可能有機會獲得他們對每一個網站的所有帳戶(通過密碼重置)。

4

要擁有數據庫中的用戶記錄並不一定意味着您有權訪問數據庫。通過網站中的一些泄漏(你好,SQL注入),你可能能夠訪問你不應該訪問的數據,而不必影響整個服務器。處理不當的備份,共享服務器,無能力或惡意的員工都可能做到這一點。

此外,也可能更重要的是,您需要保護您的客戶的密碼在其他網站。不幸的是,人們在各地重複使用他們的密碼。如果您的小型聊天室數據庫遭到入侵,那麼其銀行網站上的用戶密碼可能會被盜用。

+0

針對SQL注入+1,是的,這是真的,黑客可以訪問只有一個表,但不是整個數據庫...謝謝。 – dpp

+0

@domanokz它不只是SQL注入。一些你在某處忘記的調試語句,一個邏輯錯誤會導致更多的數據比它應該...有一千種不同的可能性。 – deceze

1

假設攻擊者以某種方式獲得對數據庫備份的訪問權限,其中包含不可恢復的哈希密碼。然後他們擁有昨天在那裏的所有數據,這是非常糟糕的。但至少他們不能訪問明天將會在那裏的數據,並且他們不能從真實站點刪除任何東西,污染它,通過CMS等惡意軟件提供服務等。

假設攻擊者獲取每個人的明文密碼,特別是如果包括管理員的話。哎呀。

相關問題