只要透過現代的顯示卡或雲端服務,大約6成密碼都可以在一小時內破解,而且成本可能只需要幾塊錢甚至免費,到底黑客是如何做到?作為一般用戶又應該怎樣應對?以下將會逐一解答。
三種常見的破解密碼方法
以下提及的「破解密碼」是指破解密碼的散列(hash),公司通常會以三種方式儲存用戶的密碼:
- 最簡單直接的方式,如果用戶的密碼是qwerty12345,儲存在公司伺服器的也是qwerty12345,一旦發生資料外洩,黑客只需要對應用戶名稱輸入密碼就能登入,當然前提是沒有雙重認證(2FA),不過網絡犯罪份子有時候能夠攔截一次性密碼。
- 這方法利用散列演算法例如MD5和SHA-1,把密碼轉化成獨一無二以固定長度字串形式的散列值儲存在伺服器,當用戶輸入密碼,系統轉換輸入字串成為散列然後與伺服器上儲存的進行對比,吻合便代表密碼正確,密碼qwerty12345轉換成SHA-1的話便會成為4e17a448e043206801b95de317e07c839770c8b8,黑客得到此散列值可利用rainbow tables等方式解密才能回復為qwerty12345(這才是破解密碼的部份),獲得的宓碼不單止可用在遭入侵的服務,其他重複使用相同密碼的服務也可能受影響。
- 散列加隨機資料序列即是在散列散,密碼加上靜態或動態生成的隨機資料一併通過運算法,產生出不同的散列,預先計算的rainbow table對此變得無力,利用這種方法儲存密碼大大增加破解的難度。
破解密碼的成本
現代的GPU是用來分析密碼強度的最佳工具,例如RTX 4909配合密碼復原工具hashcat,如果是散列加隨機資料序列的MD5散列,速度高達每秒1640億條。假設8個位的密碼內含字母(不論全大寫或小寫)和數字,可能的組合便有28000億個,Apple M3 Pro處理器以每秒6.7 Gigahash去進行暴力破解只需要7分鐘,如果是由RTX 4090操刀甚至只需17秒。儘管黑客可能無法承擔高階GPU約2000美元的售價,但仍能夠以每小時數美元的價錢租用運算能力,只要租十多張RTX 4090的運算能力,就能處理大量外洩的散列資料庫密碼。
59%密碼可以一小時內破解
研究人員以暴力破解和智能猜測兩種演算法去測試密碼強度,暴力破解是按順序更換所有可能的字元組合,直至找出匹配的項目,而智能猜測演算法則是經由密碼數據集訓練,計算不同字元組合的頻率,從而由較先選擇最常見的組合開始至最後最罕見的,詳細資料可以瀏灠Securelist。
結果令人震驚,在1.93億條現實世界密碼中有45%(即8700萬)條,在智能演算法下少於1分鐘便能破解,59%在1小時以內,67%在1個月以內,只有23%可被認定為真正的強力密碼組合,需要超過1年才能破解。
破解時間 | 暴力破解 | 智能猜則 |
少於1分鐘 | 10% | 45% |
1分鐘至1小時 | +10% (20%) | +14% (59%) |
1小時至1天 | +6% (26%) | +8% (67%) |
1天至1個月 | +9% (35%) | +6% (73%) |
1個月至1年 | +10% (45%) | +4% (77%) |
多於1年 | +55% (100%) | +23% (100%) |
要注意破解整個數據庫所有密碼並不會比破解一條密碼多很多時間,在轉換中,計算出下一組散列後,便會檢查所有數據庫是否存在吻合,如果有便會被標誌為「已破解」,然後繼續猜測下一組密碼。
智能猜測演算法有效率的原因
由於人類是可以被預測的關係,導致智能猜測較為有率,我們很少選擇完全隨機的密碼組合,由人手嘗試產生的組合通常都被機器比下去,因為我們通常依賴常用字、日期、名稱和模式,這正是智能破解演算法所針對的部份。另外,人腦在被問到由1至100選擇一組數字時,很大部份會選擇相同的數字,有YouTube頻道曾訪問20萬人,結果7、37、42、69、73和77是最常被選中的號碼。即使是字串隨機組合,我們也會偏向鍵盤中間的按鍵。
57%的密碼含有字典中的字或符號的組合,令人擔憂的是有51%的密碼可以在少於1分鐘內被破解,67%少於1小時,只有12%需要多於1年時間,如果只有字典字的話便可以在少於1分鐘內破破。智能演算法甚至懂得字母更換,例如「pa$$word」代替「password」,「@dmin」代替「admin」不會令密碼結構變強,使用常見的字詞和數字也同樣危險,在測試中有4%使用以下組合:
- 12345
- 123456
- love
- 12345678
- 123456789
- admin
- team
- qwer
- 54321
- password
建議
為了帳號安全,不妨考慮以下的建議:
- 使用密碼管理工具產生強力密碼組合
- 使用助記符的密碼片詞,即一個提示就能想到的特別密碼組合,不要使用有意義的詞語組合、名稱或字典順序。
- 永遠不要在不同網站重用密碼
- 永遠不要儲存密碼在瀏覽器
- 使用密碼管理工具儲存密碼,再創建一仲條難以破解的主密碼。
- 使用工具檢查如何令密碼更加難以破解
- 盡可能啟動2FA進行登入
資料來源:Kaspersky Blog