在網路上最常外洩的就是密碼了,有沒有人也是因為要想出高強度密碼(又可以同時記得)感到困擾的嗎?
這就回到為什麼密碼要是複雜的,就是為了防範太簡單的密碼會太容易被駭客試出來,作為入侵的漏洞。但一個有把安全性考慮進去的網站,為了讓他的使用者可以安心使用他們的服務,在資料庫裡就不能直接將密碼以原文的方式存取。
在保護使用者的密碼上,有兩個方式是網站通常會使用的:「雜湊 (Hashing) 」與「加鹽 (Salting)」。
在使用者輸入密碼後,網站背後的資料庫紀錄值的是經過處理過的一串英文跟數字,也就是雜湊值 (Hash Value)。
Hash Value 的特性是無法由現有的英文跟數字回推至原來的密碼,但因為他經過處理的機制是一樣的,所以原密碼在處理過後,都會是一樣的 Hash Value。
另外一個 Hash Value 的特性是,就算原密碼只有些微的差距,最後產出的結果還是會有非常大的不一樣。
但駭客在龐大的資料庫中,可以建立一張「彩虹表」(Rainbow Table),裡面會有各種常見的 Hash Value,所以當網站處理原密碼的複雜度不夠,駭客就可以藉由搜尋的方式取得你的密碼。
當密碼太容易在彩虹表上找到時,就是 Salting 出場應用的地方,salt 就是一串隨機的字串,在經過雜湊的處理前,系統會把原來的密碼跟一組獨特的 salt 組合在一起。
所以就算是同樣的密碼,最後紀錄的 Hash Value 也不會一樣,彩虹表就也對不出原來的密碼。
但就算經過了加鹽的處理,如果原來的密碼太過簡單,還是會很容易被駭客用工具破解,所以在最剛開始設有高強度的密碼還是多一層保險。