Wednesday, February 29, 2012

你的密碼安全嗎?

從銀行的櫃員機到登入公司系統、網上的電郵、討論區、Facebook 等等,無一不要密碼,傳統的說法是,只要密碼包括大小楷、數字及符號,長度達6-8個位,便是難以破解的密碼。可是這個說法,隨著運算速度上升和記憶體價格下降而變得不再合時宜,到底密碼要怎樣設定才比較安全呢

密碼儲存方法
要知道怎樣的密碼才安全,便要先知道密碼是怎樣儲存的平日常用的電郵或任何網上需要登入的系統,都會將一對對用戶名稱和密碼儲在遠端伺服器上,當用戶輸入密碼時,經過在遠端伺服器配對成功後,才能登入系統。

而保存在遠端伺服器上的密碼,當然不能跟人手寫在筆記簿上一樣,赤裸裸地將密碼寫出來 (即用 Plain Text 儲存),因為萬一不慎被外來者入侵,所有用戶的密碼便會被看光光  (某知名 S 字頭日本公司的遊戲網絡)。所以負責任的公司都會將用戶的密碼加密,方法是利用一條公式 (Hash Function),將密碼換算成一個雜湊值 (Hash Value) 再保存,當用戶輸入密碼登入時,便會通過解密機制將伺服器內的雜湊值解密,然後再跟輸入的密碼進行核對。

密碼破解之術
自古有云,你有張良計,我有過牆梯,既然有加密技術,自然亦有其破解之法。網上一早已經有一套整理好的密碼跟雜湊值的對換表 (Rainbow Table),這個對換表包括了七兆個密碼的雜湊值,不管密碼如何夾雜英文字、數目字或符號,只要是在十四個位以內,都可以直接地從這個對換表找到原來的密碼,而需要的只是一台記憶體超過 1GB 的電腦和數小時的時間 (現在不少智能手機的記憶體亦不止 1GB )

怎樣設定一個安全密碼
基於以上之說,一個安全的密碼一定要超過十四個位。一串長的密碼並不一定代表複雜難記,例如「GoToWorkEveryday」便是一個既超過十四個位又易於記憶的密碼。此外,還有幾個法則可以減低密碼被熟人猜到的風險:

1.不要用過於簡單的密碼
密碼如「123456111111」、「password」、「pa33w0rd」等等都是十分熱門的選擇,設定密碼時切忌使用。

2.不要以生日日期、紀念日作為密碼
這個不用多說,從建立櫃員機的密碼開始,銀行已叮囑用戶不要用生日日期作為密碼,因為一旦丟失錢包,賊人有機會從錢包內的其他證件來猜測提款咭的密碼。網上密碼亦同樣,個人資料如出生日期和紀念日,都可以輕易地從各大社交網站內得知。別以為你設定不公開生日日期或紀念日,別人便會不知道,有心人可能會留意哪一天在你 Facebook 的塗鴉牆上有人跟你說生日快樂,哪一天你貼了跟另一半慶祝週年紀念的相片。如果用這些特別日子作為密碼,便等於半公開了你的密碼了。

3.每個網站設定不同的密碼
需要登入的網站成千上萬,偶一不幸其中一個網站的帳號密碼被攻破,如果用戶名稱和密碼在各個網站都一樣 (例如不管是 HotmailYahoo Mail Gmail,都是用同一組用戶名稱和密碼),那麼一個網被攻破,損失的便不止只在該網內的資料,因為盜取密碼的集團多數會嘗試用同一組用戶名稱和密碼登錄其他熱門網站,希望獲得更多資料。
為每個網站設定不同密碼看似很繁複,其實方法也很簡單。假設已有一組固定密碼,用剛才的例子「GoToWorkEveryday」,在不同的網站加上該網的首兩個字母在這串密碼上,例如 Facebook 的登入密碼便是將「Fa」加上去,變成「FaGoToWorkEveryday」,而在 Hotmail 的密碼便是加上Ho」,變成「HoGoToWorkEveryday」,若嫌加上網頁的首兩個字母還不夠安全的話,可以選擇加上首三、四個,又或從第五個字母開始的兩個,總之只有你自己知道是哪個法則便安全了。


參考資料:
Podcast: 亂 gad第28
Password Cracking 201: Rainbow Tables
http://www.ethicalhacker.net/content/view/94/24/


********************************************************************************************
如果你喜歡這篇文章,請按以下 Google 的 +1 按鈕,又或 Share 到 Facebook 給你的朋友。多謝支持!

No comments:

Post a Comment