Hash

在小字典的情況下如何防範蠻力攻擊?

  • September 5, 2019

抱歉,如果我沒有使用正確的術語,因為我是加密新手。

我想知道在小型字典的情況下保護數據庫免受暴力攻擊的最有效方法。

例如,假設我有一個使用者數據庫,並且我想保護具有小基數的使用者的某個屬性/欄位(例如,該欄位可以假設最多幾百個值之一),例如“國家” . 世界上只有少數幾個國家,所以即使我對國家欄位進行雜湊處理,蠻力攻擊也會有效:攻擊者可以對所有國家進行雜湊處理,然後對給定使用者逐個嘗試這些雜湊值。更糟糕的是,他們可以使用簡單的統計數據來使他們的猜測更有根據。

在這種情況下我該怎麼辦?我應該在散列之前加一些鹽嗎?如果我儲存了鹽並且攻擊者可以訪問它,那麼該欄位是否仍然受到保護?

編輯:我的問題與表格列的具體情況無關。相反,我問的是當字典很小時使用什麼算法。

我認為您正在尋找列級加密

它允許您加密數據庫中的特定列,在您的情況下是“國家”列。

另一種方法是使用數據庫加密,它可以加密整個數據庫。主要缺點是速度,因為要加密/解密的數據大小比單列中的數據大。

請務必安全地儲存加密密鑰。您可以在這篇文章中找到有關此主題的更多資訊:SecuritySE - Where to store a server side encryption key

編輯:

我的問題與表格列的具體情況無關。相反,我問的是當字典很小時使用什麼算法。

您可以簡單地使用對稱密鑰算法,即CTR 模式下的AES來保護您的數據。它適用於小型和大型數據。

加密此屬性。好的算法使用隨機IV 或隨機鹽。例如,如果您每次更改 IV,AES CBC 將為您提供相同屬性值的不同加密結果。AES 可以抵抗暴力破解。

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