Salt

如果獲得了對數據庫的訪問權限,是否不能輕鬆地從散列密碼中刪除鹽?

  • May 19, 2018

在玩過bcrypt之後,我看到數據庫儲存了鹽,並且散列密碼前面加上了鹽。我閱讀了這篇關於如何正確使用散列的文章,其中還建議在其他方法中使用鹽,據我所知,使用鹽散列密碼的主要原因之一是,如果有人獲得對數據庫的訪問權限,那麼它將是很難將散列密碼轉換為真實密碼。

但是首先如何訪問散列+加鹽密碼?如果他們可以訪問整個數據庫,那麼他們可以輕鬆地從雜湊密碼中刪除鹽(通過從雜湊密碼的開頭刪除固定大小的字元串),然後我們回到零點,黑客可以使用獲得的值來通過查找表執行查找。

此外,大多數關心安全性的知名網站都會限制您輸入憑據的次數,所以我不明白如何使用暴力算法破解某人的密碼。

此外,大多數關心安全性的知名網站都會限制您輸入憑據的次數,所以我不明白如何使用暴力算法破解某人的密碼。

是的,這確實是防止線上猜測攻擊的情況和良好做法,即防止攻擊者猜測密碼只是嘗試使用它登錄。加鹽在這方面沒有發揮主要作用,因為在加鹽和昂貴的散列函式之前,速率限制應該是約束因素。

但是首先如何訪問散列+加鹽密碼?

如您所見,攻擊者通常通過獲取相應的數據庫表來訪問雜湊和相應的鹽(以及其他必需的參數)。

他們可以輕鬆地從散列密碼中刪除鹽

從技術上講,是的,您可以獲取作為條目的字元串,然後去掉鹽。但這不會讓你到任何地方,事實上只會讓你的生活更加艱難。看起來你需要一些關於鹽什麼的直覺來理解為什麼。

讓 $ H $ 成為您的標準雜湊函式。現在讓 $ H_1 $ 是另一個雜湊函式, $ H_2 $ 完後還有, $ H_3 $ 另一個,等等,直到你在 $ H_{m} $ 和 $ m $ 這麼大,它也可能是無限的(從實際的角度來看)。現在什麼 $ s $ 確實是,它選擇索引。那就是例如 $ s=1 $ 會產生 $ H_1 $ 作為要使用的雜湊函式。現在因為這些函式都是不同的,如果你想反轉它們,你基本上需要一個單獨的查找表(無論是預先計算的還是動態“建構”的)每個函式。這也意味著如果兩個使用者選擇了相同的密碼 $ p $ ,例如123456,但具有不同的鹽,它們使用不同的功能。這導致(很有可能)兩個使用者的雜湊值不同,因此作為攻擊者,您甚至無法看到哪些使用者共享密碼!

當然,您不能只是將鹽隱藏在某處或將其丟棄,因為合法的伺服器操作員需要通過使用 salt-chosen 函式對使用者密碼進行散列並將結果與儲存值進行比較來驗證使用者密碼並不知道哪個功能使用,因此無法驗證任何使用者登錄。

你提到了bcrypt。bcrypt 不會將任何鹽作為初始雜湊生成的參數。這是因為大多數 bcrypt 實現都會生成自己的 salt 並將其交給您

引用自:https://crypto.stackexchange.com/questions/59364