[資訊] 密碼安全

[資安小常識] 密碼儲存要加”鹽”才夠安全
https://blogs.technet.microsoft.com/twsecurity/2014/02/10/163/

鹽 (密碼學)
https://zh.wikipedia.org/wiki/%E7%9B%90_(%E5%AF%86%E7%A0%81%E5%AD%A6)

密碼學本身是一門非常深奧的數學分支,作為開發者的我們不一定能深入學習,但我們需要瞭解每種演算法的特性及適用場景,在有需要的時候靈活使用就可以了。文本列出的都是在項目開發實踐中學習和用到的一些演算法,而且雖然前端在開發過程中做了一些加密,其實更重要的是服務端的加密處理,所以選擇何種加密方法需要兩端溝通決定。

網路平台提供者常見的儲存密碼的方法可大致分為下列幾種:

1. 明碼
儲存是將使用者輸入的密碼直接儲存於資料庫欄位之中,不經過任何修飾。利用這種方法儲存密碼是最不安全的,因為只要資料庫遭到入侵,使用者的密碼資訊即會被洩漏。

2. 簡易雜湊法 (Pure Hash)
簡易雜湊法是單只用一種雜湊演算法來保護明碼。
在傳統的情況下,當密碼經過雜湊演算法 (如 MD5) 加密後是很難透過特定演算法推回原始值的,但如果透過大型的對照表,即有可能對照出原始的明碼,所以安全性仍不夠高。

明碼 1234 經過 MD5 雜湊後的結果是:
81dc9bdb52d04dc20036dbd8313ed055

3. 加料式雜湊法 (Salted Hash)
加料式雜湊法是將欲加密之明碼加上固定的一段字串 (又稱為鹽) ,再經過簡易雜湊法而成。

明碼 1234 + 鹽saltsaltsalt
經過 MD5 雜湊後的結果是
e80bdfdab3f83500d6330c6068eeeef4

4. 複合式雜湊法
複合式雜湊法是利用兩種方法來增加雜湊的複雜度,利用這種方法即可以大幅提升密碼儲存的安全性。

雜湊兩次:雜湊方法2 ( 雜湊方法1 ( 明碼 + 鹽 ) )
加兩次鹽:鹽 + ( 雜湊方法1 ( 明碼 +鹽 )


#Hash, Salt, Encrypt, crypto

留言