https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/
https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/

觀點

從數位鑑識角度探討個人資料保護觀念(3) – 你的密碼安全嗎?

2011 / 09 / 28
張英傑
從數位鑑識角度探討個人資料保護觀念(3) – 你的密碼安全嗎?

在網路上,密碼是最常用來進行身份驗證的工具,無論存取電子郵件、使用即時通、網路購物等等,都必須使用帳號密碼,不同應用系統對於密碼儲存的方式也有差異。

 

 

系統儲存密碼及認證的方式

 

一般來說,作業系統對於密碼的儲存並非採取明碼方式儲存於硬碟或機碼中而是將密碼經過數學運算,再將此數值存放於硬碟中,常用的數學運算方式有MD5SHA1等,這類雜湊運算稱之為不可逆向之運算,所計算出來之結果無法以任何方式還原回原來之資訊,因此非常適合應用於密碼儲存。

 

舉例來說數字1234經過MD5計算出來之數值為81DC9BDB52D04DC20036DBD8313ED055,系統將此數值儲存於硬碟中,用戶登入進行認證時輸入密碼1234,作業系統會自動以MD5進行計算,然後將計算出來的結果再與儲存於硬碟中的數值進行比對,若吻合則代表密碼正確允許登入,因此就算有人從硬碟中竊取出密碼檔,仍無法直接了解原來之密碼進而使用此密碼。

 

電子郵件密碼也採用類似的架構,會員網站、線上交易網站則牽涉到系統開發人員之設計概念,且這類網站通常會結合資料庫,因此,絕大部分開發人員會將帳號/密碼等資訊儲存於資料庫中,且密碼儲存多數也會採用上述方式或以加密方式存放,但開發人員若為了開發過程之除錯方便而採明碼儲存,一旦未來不幸遭遇駭客入侵竊取會員資料,其所衍生的後果恐怕很難預料。

 

 

密碼真的破不了嗎?

 

MD5SHA1……等方式運算出來所儲存的密碼,難道真的無法破解嗎?其實不然,常見的密碼破解方法有以下三種:

 

第一、查表密碼攻擊(Rainbow Attack)模式:其原理就是建立一個龐大的對照表(表1),將原始明碼與經過MD5SHA1……等計算後之結果數值相互對應,當獲取一份MD5/SHA1編碼過的密碼表時,將該密碼數值透過查表密碼攻擊軟體搜尋有無該數值之對應,若有則中獎表示查到密碼,沒有則表示表單內無相互對應值,此類型破解模式,只要對應表製作越完整命中率就越高。

 

 

1、密碼對應表範例 

明碼 MD5 Hash SHA1 Hash
1 C4CA4238 A0B92382 0DCC509A 6F75849B 356A192B 7913B04C 54574D18 C28D46E6 395428AB
13 C51CE410 C124A10E 0DB5E4B9 7FC2AF39 BD307A3E C329E10A 2CFF8FB8 7480823D A114F8F4
24 1FF1DE77 4005F8DA 13F42943 881C655F 4D134BC0 72212ACE 2DF385DA E143139D A74EC0EF
a 0CC175B9 C0F1B6A8 31C399E2 69772661 86F7E437 FAA5A7FC E15D1DDC B9EAEAEA 377667B8
ab 187EF443 6122D1CC 2F40DC2B 92F0EBA0 DA23614E 02469A0D 7C7BD1BD AB5C9C47 4B1904DC
abc 90015098 3CD24FB0 D6963F7D 28E17F72 A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D

資料來源:本文作者整理,2011/8

 

 

 

第二、字典檔密碼攻擊(Dictionary Attack)模式:其原理是將現場所蒐集到的資訊當成密碼組合,交由軟體將這些字句資訊進行不同排列組合,藉此產生密碼進行破解工作(表2)。這種破解密碼的方式,主要依賴現場人員蒐集資訊的能力,蒐集的越完整命中率就越高。

 

2、現場資訊的密碼組合範例

 

蒐集到的資訊 Jackalex05201231
可能的密碼組合 jack0520 jack1231 jackalex jack0520alex1231
alex0520 alex1231 alexjack alex0520alex1231

 

第三、暴力密碼攻擊(Brute Force Attack)模式:其原理就是告訴軟體密碼設定規則,如:最小與最大長度、包含哪些字元(a..zA..Z0..9!@#$%...),軟體將這些字元自動進行組合,從最小長度開始組合直到最大長度,再利用軟體產生出來的密碼進行破密工作。這類型手法由於沒有特定規則因此最耗費時間,除非其他方式都處理過無法命中,最後才會考慮此模式。

 

 

破解密碼不一定要等到地老天荒

 

當我們採用暴力密碼攻擊模式來破解密碼時命中率還須視原始密碼長度也就是說原始密碼長度越短命中機率就越高長度越長則命中率就越低,何以如此呢?

 

舉例來說,假設密碼只能使用英文字母,從AZ共有26個字母,在密碼長度為4個字元數時,共有264次方、也就是456,976個排列組合,若密碼長度為15個字元數的話,則共有2615次方、也就是1,677,259,342,285,725,925,376個組合;假設破密軟體每秒可破解200個密碼,密碼長度為4個字元數時,破密工作最多需耗費39分鐘就可完成,但密碼長度高達15個字元數時,就得耗費53,185,544,846,706年的時間方能解開,但果真是如此嗎?

 

事實上,近年來由於線上遊戲產業的蓬勃發展,造就了圖形顯示加速卡這塊市場日趨擴大,圖形顯示加速卡所採用的GPU就像一個內藏了數百顆CPU的裝置,因此已有部分專業於破密軟體開發領域的廠商,將圖形顯示加速卡所採用的GPU應用於破密用途,一顆GPU相當於300500CPU的運算效能,以此推算安裝一片GPU加速卡就可提升近500倍的運算速度,配合分散式運算架構擴展延伸至數百台甚至上千台之運算工作站,整個高速運算陣列將可達到500*1,000CPU的運算效能,在效能提昇的情況下,破解密碼工作所耗費的時間將可大幅縮短。

 

除了運用這類高速運算陣列工具來輔助破解密碼工作,實際上我們在進行密碼破解工作前,還是會盡可能在現場蒐集更多更完整的資訊,包含嫌疑犯的個人基本資訊(中英文姓名、出生年月日、住址、電話號碼、手機號碼、個人暱稱、學經歷…等)、相關朋友資訊、個人喜好、記事本/電子郵件等等資訊內容,理由很簡單,簡單的密碼規則可能來自於這些資訊的組合(最容易記憶),而複雜的密碼組合因為不容易記憶,可能記錄在某個地方,也許是記事本或電子郵件,甚至筆者曾在某客戶端發現他的密碼就貼在電腦螢幕旁邊這也是為何鑑識人員在現場需要蒐集這些資訊的原因。

 

 

認真地思考你的密碼管理

 

基於上述分析一般人記憶密碼的原則在管理自身使用的密碼時,最好能遵循以下幾個原則

1. 重要之應用系統的密碼,至少每三個月更換一次(若能每月更換效果更佳)

2. 密碼組合若是採用與自身相關的資訊來組合,盡量不要使用個人基本資訊所組合,最好自己建立一套規則且包含平常鮮少使用之資訊內容來組合,如:小時候自己最喜歡的寵物名字

3. 密碼若採較為複雜組合規則需記錄在記事本或是電子檔案中須妥善保存置放於不容易取得之位置最好不要與存放於電腦附近或是該資訊紀錄再加上簡單之編碼規則

 

(本文作者現任職於系統整合公司)