網站都是怎麼儲存你的密碼的?|專家論點【Huli】

圖片來源:freepik

在談談該怎麼保管自己的密碼以前,先跟大家分享一個小知識,那就是一般的網站都是怎麼保存你的密碼的。

之前我有提到說如果駭客入侵,把儲存資料的資料庫整個偷走,那你的密碼不就一起外洩了嗎?有些人可能會想說「不過是一筆密碼外洩,這有什麼?很嚴重嗎?」。

但事實上,有許多人在不同網站上都會使用同一組密碼,或是經過一些可辨識的「變形密碼」,例如說主要密碼是 123456,在 Google 就是 google123456,Facebook 就是 facebook123456 之類的,這些就被我稱之為可辨識的變形密碼。

如果你的密碼在不同網站上都用同一組,或是用上面這種很容易被猜測的規則設置不同密碼,假如駭客拿到了你的其中一組密碼,就可以嘗試登入其他服務。舉例來說,明明就是某線上書城的資料外洩,卻連帶導致你的 Google 帳號也一起被盜了!所以,儘管只是一筆密碼外洩,也有可能連帶造成你其他的服務都跟著一起淪陷,這就是可怕之處,而這種攻擊通常稱為「撞庫」攻擊。

那該怎麼辦呢?

這可以從兩個方向著手,一個是網站應該更安全地儲存你的密碼,另一個則是避免使用相同或是可辨識規則的密碼。

事實上,一個做得好的網站,其實不會儲存你原本的密碼,只會儲存經過「一些變換」後的密碼。舉個例子,假設現在有個網站儲存密碼以前都會做轉換,a 變成 1,b 變成 2,以此類推,數字跟符號維持不變,如果我的密碼是 abc123,就會變成 123123,接著網站就把這一串字存到資料庫裡面,而不是儲存原始密碼。

當使用者登入時,網站就用一樣的規則轉換,去檢查跟資料庫儲存的是否相符,不符合的話就代表輸入錯誤。

舉例來說,我輸入 aaa,網站轉換完以後是 111,跟資料庫中的 123123 不符合,登入失敗。我輸入 abc123,轉換完是 123123,跟資料庫中的一致,登入成功。

假設今天駭客入侵了資料庫,拿到了 123123,他也不會知道原始密碼是 abc123,因為 123123 也有可能是 abcabc 或是 12cab3 轉換而來。

這種「可以從 A 轉換到 B,從 B 卻沒辦法轉回 A」的操作,我們稱之為雜湊(hash),網站通常就是用這種方式儲存你的密碼。

不過,上面這種轉換方式是大幅簡化過後的結果,實際上的轉換規則會複雜很多。例如說,上面的 123123 其實反推回原始密碼,雖然有很多種可能性,但是是可以窮舉的。

這是因為我簡化了轉換方式,實際在用的轉換會更複雜,讓你真的沒有辦法反推回去,例如說有一種叫做 SHA-256 的演算法,

abc123 轉換完是 6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090

abc124 轉換完是 cd7011e7a6b27d44ce22a71a4cdfc2c47d5c67e335319ed7f6ae72cc03d7d63f

只是差了一個字母,結果就差了十萬八千里。

我以前有寫過一篇更詳細的文章,可以參考:為什麼忘記密碼時只能重設,不把舊密碼告訴我?

網站儲存了 hash 過的密碼以後,儘管資料庫被偷,駭客依然無法輕易取得原始密碼,為使用者增加了更多的安全性。

接著讓我們回到管理自己的密碼這一塊,其實目前大多數人比較推薦的方法都是使用密碼管理的軟體,例如說 LastPass 之類的服務,只要記住一組主密碼就好了,不需要管其他密碼,也能保證你在每個網站的密碼都是獨一無二的,一個站的密碼被偷,並不會影響到別的網站。

再者,密碼管理軟體也有其他好處,例如說會提醒你某一組密碼用太久該換了之類的。

用了這種軟體以後,要更加重視的就是對於主帳號的保護,可以把所有心力都放在這邊,例如說一定要開啟所謂的二階段驗證,在登入的時候除了需要帳號密碼以外,還需要用 email 或是簡訊收取一組驗證碼,做第二層的驗證以後才能確定登入。

瀏覽 976 次

覺得不錯的話就分享出去吧!

發佈留言

Back to top button