Hash

儲存固定大小的數字字元串的安全方法

  • July 23, 2014

我需要在我的數據庫中安全地儲存一串固定大小的數字 (0-9)。

我已經對普通雜湊執行了彩虹表攻擊,它在幾秒鐘內就破壞了它。

我的一個選擇是將字元串分成 2 個或更多部分並將它們分開儲存,在合理的範圍內(即沒有用於多個伺服器的資源),但我覺得這只會稍微延遲攻擊者。

另一種選擇是使用加鹽雜湊,但我不確定這在這種情況下是否有幫助。

有沒有人有什麼建議?

這將與幾天前紐約市遭受的情況相同:當您的數據幾乎沒有可變性時,即它們具有固定的小尺寸,暴力破解總是很快的。

~~你沒有說你的號碼有多長,所以我假設它的範圍可以從 0 到 10,000,000,000 (所以,今天地球上每個人的唯一號碼,加上一些備用號碼)。~~你說你會有 9 位數字,所以我在下面說的任何內容都會快 ​​100 倍。

在這種情況下,使用任何類型的散列只會延遲一定程度的攻擊。如果使用 MD5 雜湊,某些硬體可以計算280 億雜湊/秒

如果您為每個數字使用唯一的隨機鹽,一旦攻擊者找到我們的鹽(這不是秘密,因為它儲存在數據庫中),他只需要計算包括鹽在內的那些雜湊,並且需要 1 秒對於您擁有的每個號碼。不好。

其他散列(一般的 SHA、Scrypt 等)會再次減慢速度,可能需要更多記憶體,但它們不會起到任何作用:最終這只是時間問題。

那麼如何更改您的數字,例如對其進行編碼以使其上有字母?仍然不能解決您的問題,因為您的數據只能有 100 億種變化(在我的假設中,您的情況可能更糟)。

那麼如何製作另一個帶有對應關係的表格,這是紐約市數據的建議解決方案?不會對您有任何好處,因為如果有人能夠訪問您的號碼或他們的雜湊值,他可能也能夠訪問這些數據。

在你的情況下我會怎麼做?

1 - 如果數據將在您的系統、數據庫和公司中,並且無法通過 Web 系統獲得:使用防火牆盡可能保護,阻止誰可以訪問數據庫,審查您的員工,並祈禱. 如果您網路中的某些電腦受到威脅,它可能具有訪問數據庫的權限,而您就離開了。

2 - 數據必須與其他系統或其他公司交換:雖然有硬體設計用於保護數據通信(量子加密等),但您將不得不再次擔心您的內部人員,以及對您的電腦的外部攻擊,以及以前的情況仍然適用。

3 - 您的數據真的需要保密嗎?也許你能做的(或者我會做的)什麼都不是。如果您的數據有少量可能性,則連接更多資訊(無論是鹽、使用者的電子郵件或其他任何資訊)都無濟於事,因為所有這些“資訊”都會以某種方式儲存在您的數據庫中,或者在您的程式碼中,並且無論如何都可以訪問。

僅使用物理保護(例如使用 HSM)保護硬體是不夠的。您還需要擔心應用程序需要訪問該資訊的方式,如果黑客控制了您公司內的一台電腦,以及他還能夠使用鍵盤記錄器、螢幕記錄器、等等。

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