Hash

LinkedIn是如何“加鹽”他們所有的密碼的?

  • July 28, 2013

首先,只是為了確保我正確理解“加鹽”:

您在散列之前隨機生成一個字元串以附加到密碼中,以增加其長度並使預先計算的表在破解它們時變得不那麼有用。

假設我的理解是正確的,那麼我在LinkedIn 如何加鹽他們的密碼時遇到了麻煩:

我們的主要舉措之一是從散列密碼的密碼數據庫系統過渡

$$ … $$到對密碼進行散列和加鹽處理的系統$$ … $$這一過渡是在周三密碼被盜消息傳出之前完成的。

加鹽不需要你有明文密碼嗎?你怎麼能加鹽一個散列密碼?

基本上,對密碼進行加鹽意味著您計算一個取決於密碼和**鹽的雜湊值(足夠長度的非秘密隨機值,例如 64 位)。請記住,加鹽密碼可以更好地抵抗諸如字典攻擊或時間記憶權衡(例如彩虹表)之類的攻擊,即涉及離線預計算步驟的攻擊,但不能抵抗暴力攻擊。

如果我們表示 $ H(.) $ 雜湊函式 ( $ \mathrm{SHA1} $ 對於LinkedIn),由 $ p $ 密碼和通過 $ s $ 一個鹽值,LinkedIn 可能會發現自己處於擁有值數據庫的情況 $ h_i = H(p_i) $ , 為了 $ 1 \leq i \leq \ell $ , 在哪裡 $ \ell $ 表示帳戶數。因此,可以想像他們計算 $ h^\prime_i = H(s_i||h_i) = H(s_i||H(p_i)) $ ( $ || $ 表示連接)並且它們儲存對 $ (s_i, h^\prime_i) $ 在數據庫中。請注意,他們不需要知道密碼來執行此操作。

另一種可能性是重置所有帳戶,強制使用者設置新密碼,並根據更好的方案對它們進行雜湊處理,但這對客戶不太友好……

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