[資安小常識] 密碼儲存要加”鹽”才夠安全

編者:Cho-Han Wu


 

01

圖一、 ”鹽”是一個特定的字串用以增加密碼複雜度 (圖片來源)

 

今年一月SplashData 公司公布了2013年最不安全的密碼排行榜,由「123456」取代「password」奪下最不安全密碼排行榜冠軍。其他不安全的密碼還包含了「qwerty」,「abc123」及「123456789」等等。在眾多網路平台興盛的時代,使用者往往必須記憶一組或多組密碼組合,而密碼的強度也是決定帳戶安全性的因素之一。

 

此外,對於平台提供者而言,提供安全的後台系統來儲存使用者的密碼也是相當重要的因素。然而隨著駭客破解密碼的技巧日益高明,使用傳統的加密方法已經不足以妥善保護了,所以利用一些加密的小技巧來提升密碼儲存的安全是很重要的。本次資安小常識將介紹一些密碼加密的種類以及方法。

 

02

圖二、 2013年最不安全密碼排行榜 (圖片來源)

 

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

1. 明碼

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

 

2. 簡易雜湊法 (Pure Hash)

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

 

3. 加料式雜湊法 (Salted Hash)

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

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

這段雜湊可能會經由大量的對照表而還原,但若是加鹽之後
例如:

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

隨者鹽的複雜度增加,即使加了鹽後的原始密碼被破解,要得到真實密碼所需要的時間仍會大幅增加。

 

4. 複合式雜湊法

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

例如:

    • 雜湊兩次

雜湊方法2 ( 雜湊方法1 ( 明碼 + 鹽 ) )

    • 加兩次鹽

鹽 + ( 雜湊方法1 ( 明碼 +鹽 )

 

隨著網路平台日益發達,本次資安小常識提供您在建構平台時,可以使用的安全地密碼儲存方法,以保障平台使用者的個資安全。此外,使用者在設計密碼時,也可以參考此篇文章來確保密碼強度的安全。

 

參考資料