鹽值
在加密學中,salt(加鹽)是指在密碼被雜湊之前新增到密碼中的隨機資料。這使得攻擊者無法透過使用預先計算好的密碼及其對應雜湊值表來從雜湊值推匯出密碼。
出於攻擊者可能闖入儲存密碼的資料庫的風險,密碼絕不應以明文形式儲存。通常,密碼會被雜湊,然後儲存生成的雜湊值。如果雜湊函式是密碼學安全的,那麼即使攻擊者能夠訪問儲存的雜湊值,他們也無法逆向破解該函式。
為了從雜湊值推匯出密碼,攻擊者可以在一個預先計算好的表中(也稱為彩虹表)查詢與雜湊值對應的密碼,該表映射了可能的密碼及其雜湊值。
| 密碼 | 雜湊值 |
|---|---|
| pa55w0rd | 56965E2A... |
| abcdef | BEF57EC7... |
| letmein | 1C8BFE8F... |
儘管這些表可能非常大,但此類攻擊仍然可能有效,因為表查詢是一個非常快速的操作。
在雜湊密碼之前新增隨機 salt 可以阻止此類攻擊奏效,因為雜湊值並非僅基於密碼計算,而是基於密碼與 salt 的組合。
與密碼不同,salt 不需要保密:它可以與經過加鹽和雜湊處理的密碼一起儲存在伺服器的資料庫中。