LV. 41
GP 27k

【攻略】巴哈帳密可能外流?看這裡了解你的帳號風險!

樓主 解凍豬腳 johnny860726
376 -

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。


ㄤ骯

大家好,小妹我又來發優文了

昨天巴哈姆特發表了 CloudFlare 資安漏洞相關說明公告

表示巴哈姆特的伺服器供應商有資料外流的風險

為了避免大家的恐慌,以及協助了解自身帳號的安全情況

所以小妹我就來這裡解釋一下一般大型網站的密碼儲存原理



首先來講講最白癡的做法:

假設今天小妹我的帳號是 johnny860726,密碼是 12345678

於是網站直接在資料庫裡面登錄:["johnny860726", "12345678"]

好了!會認為網站都這樣儲存密碼的人,應該沒有資訊相關背景

小妹我以前一直認為大部分的網站都是這樣儲存密碼的

後來才知道,有點程度的網站並不是這麼一回事

因為只要被駭客找到漏洞,他們可以利用語法上面的錯誤

進而取得權限,把整個資料庫的內容通通都載下來

這樣他就能知道所有使用者的帳號跟密碼了,整個網站直接爆炸

時至今日,仍有部分的網站採取這樣的做法



經過時代的演變,後端工程師(就是搞伺服器那邊的)發展出新的模式:

當使用者註冊帳號的時候,在密碼欄輸入 12345678 並送出,進行 MD5 的運算

MD5("12345678") = 25d55ad283aa400af464c76d713c07ad

接下來網站就在資料庫裡面儲存:["johnny860726", "25d5(下略)"]

這樣等到下次再登入,假設我輸入 12345679

MD5("12345679") = defac44447b57f152d14f30cea7a73cb

伺服器端就比對這個字串的 MD5 值和資料庫裡面儲存的是不是一樣

比對之後就知道這個密碼「並不是」註冊時填入的密碼,所以登入錯誤

這麼做就能同時達到「連站方工程師都不知道你密碼」和「站方可以知道你密碼對不對」兩件事

既然連站方都無法知道你密碼,就更不用說剛拿到資料庫心裡很興奮的駭客了



不過有些人不知道 MD5 是什麼,因此我們還是要解釋一下它的作用

這個 MD5 是一個「函式」(函數),它的運算方法是公開、大家都知道的

能把一個任意長度的字串轉換成「固定長度的字串」

這個字串通常是 32 位數,每一位都是 0123456789abcdef 的組合

而 MD5 函式是經過特別設計、經過大量樣本測試的

所以當初設計的科學家認為,它不容易被找出規律,也不容易產生碰撞
(所謂的碰撞就是「兩筆資料不同,但它們的 MD5 碼相同」的情況)

所以它可以把大量的資料縮減成短短的 16 bytes

讓大家只要看這 16 bytes 的內容就知道兩筆資料是不是一樣了

因此,這類的函式又被稱為「訊息摘要」、「雜湊函式」

而使用這函式的運算過程又被稱為 hash

這個就跟你用 BT 下載東西的時候看到種子檔的 hash 是一樣的道理

是為了方便讓你來辨認載下來的檔案是不是跟原本一樣,有微微防駭的作用



當然,所謂「道高一尺,魔高一丈」

MD5 本身並不是真的能 100% 防止駭客

有的駭客會老早就把 MD5 的一些運算結果記起來

譬如他們先記下 "12345678" <=> 25d55ad283aa400af464c76d713c07ad

這樣他們哪天只要能偷到別人的資料庫內容

並且遇到有人密碼的 MD5 值為 25d5(下略) 的時候

就知道可以用 "12345678" 這組密碼登入該帳號了

駭客也會利用大量的電腦把 1~N 位數字串的 MD5 值算出來

形成大筆的對應資料,以備不時之需



因此,後端工程師也會利用 SSL 加密,使得封包傳送過程都保持加密的狀態

然後把所有可能會讓資料庫內容外洩的漏洞補起來

這樣子,就可以預防更多的駭客(絕對不是 100% 預防!)取得資料



再更複雜的做法是「站方先把密碼原文混入一段字串,才做 hash」

譬如站方先把 12345678 混入 GaMeR0AfApLe

變成 1G2a3M4e5R607A8fApLe 以後再 MD5,才存入資料庫

這樣子駭客就要算到天荒地老才有機會找到同樣 MD5 的字串了

這個過程稱為「加鹽」,而這個 GaMeR0AfApLe 就被稱為 salt(鹽)



如果還嫌不夠,再更死守的做法就是:

將原文加鹽後 hash 過再加一次鹽才存入資料庫

譬如 8496a74bed7e92aa78e799b622d85a61 混入它們自訂的內容 1af3feec

變成 8496a174bed7aef92aa738ef799b6ee22d8c5a61

等到要用的時候才把這個 salt 拿掉(反正只有站方工程師知道加鹽的規則)

這樣駭客看了就會黑人問號了



※ 20 位大小寫英數字串有 7.04423426 × 10^35 種組合

也就是至少 704,423,426,000,000,000,000,000,000,000,000,000 種組合

光是儲存這麼多組合的密碼 MD5 出來的 hash 值

也需要 6.40669373 × 10^23 TB 的儲存空間才放得下



當然因為 MD5 本身的某些問題

現在很多網站都採用更多複雜、安全的演算法,所以上述的 MD5 只是方便舉例



所以在這種情況下,判斷自己巴哈帳號安全有以下準則:

* 伺服器的資料不是外流?
(e.g. 最近公告的伺服器資料部分「可能」外流事件)

* 密碼長度是不是很短?
(e.g. 密碼長度越長,駭客就要花更久的時間才能「算」出你 MD5 碼的值)

* 密碼內容是不是很簡單?
(e.g. zxc12345678 之類的這種垃圾密碼就別用了)

* 登入的環境是否安全?
(e.g. 有些安全措施做得很差的網咖,會被裝能側錄鍵盤的木馬程式)

* 登入的地點是否正確?
(e.g. 釣魚網站會偽裝得好像真的一樣,騙你輸入帳號密碼)



像小妹我本身就用摻有 大寫英文 + 小寫英文 + 數字 + 特殊符號 的將近 20 位密碼組合

就算跟人明講我有幾位,也幾乎攻不破,可謂資安界的典範



如果把

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
~!@#$%^&*()_+=-[]{}\"':;?/<>,.

這裡面的所有字做 20 位的密碼組合

這樣就有 1.88693329 × 10^39 種組合

比單純「大寫英文 + 小寫英文 + 數字」的 20 位密碼還要安全兩千多倍

所以我會建議在密碼裡面摻入特殊符號



相較之下,固定八位數的「小寫英文 + 數字」密碼

就只有 2.821109907456 × 10^12 種組合了(可見「強密碼」跟「弱密碼」差別多大)

倘若你密碼只有八位小寫英數組合的情況下

然後很不幸地,後端工程師和伺服器業者又同時耍二,不加鹽兼搞外洩

那你的帳號就會暴露在風險中了(這樣都已經很危險了,更甭說那些密碼設 123456 的人了)

不過呢,基本上巴哈姆特工程師不會出這麼大的包,該有的措施還是都會做

而且巴哈伺服的供應商 Cloudflare 也說「帳號密碼相關外洩率小於 330 萬分之一」

即使你是那 330 萬分之一的人,也可以好好放心



當然如果你的密碼位數很少的話

我還是會建議你弄個超級複雜的密碼,這是長久之計,任何網站都一樣

我也是最近才弄個長得像 3e$8e54bFjS#2Xkdzv 的東西來當密碼

然後把各大網站的密碼都改得像這樣一樣複雜

這種類型的密碼可以說是靠杯難記,但是卻靠杯安全

就算你直接在別人面前打密碼,他們也盜不了你的帳號

因為他們大概興奮完就忘記你當時打了什麼密碼了(除非他是雨人)

初期為了怕睡一覺就忘掉,我還特地先抄下來收好

等到確定自己每次都可以不用思考就打出密碼的時候,才把抄下來的紙銷毀

因為多用幾次,腦袋就會自動記起來了,所以不用擔心以後登入都要想半天

不過呢,如果你想要效仿小妹我用這種很複雜的隨機字串當密碼

得要注意有些網站(例如 Pixiv)密碼不能有特殊符號

我的解決辦法是只要遇到 # 就改成 3、遇到 @ 就改成 2,以此類推

然後遇到 { 或 ? 這種沒有對應數字的就一律以 z 之類的文字替代

所以剛剛的那組範例密碼就會被設為 3e48e54bFjS32Xkdzv

這樣就不需要因為該網站的規定而害你要多記一組密碼了

以上是小妹我預防駭客盜帳號的全套攻略



因為這陣子有人來信詢問巴哈的資安問題,所以特此說明

希望大家會喜歡這篇文章
 
376
-
未登入的勇者,要加入討論嗎?
板務人員:

7593 筆精華,01/13 更新
一個月內新增 3
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】