你的密碼是怎麼被破解的?如何提升密碼安全性?
在本文中,我們介紹了幾種經典的密碼破解方法,以及這些方法背後的原理。針對這些概念,我們提供了從密碼管理者和帳號持有者角度出發的增強密碼安全性的做法。
我們經常看到一些知名應用程式的用戶密碼洩露的新聞。你可能會覺得,既然你不用那個特定的應用程式,這些事件與你無關,但現實情況並非如此。
最近,Twitter 上也有消息指出 AI 方法可以大大加速破解密碼的速度。因此,我們想了解其背後的複雜性,看看我們如何提高密碼的安全性。
密碼如何被破解?
一般來說,帳號密碼通常會使用各種雜湊算法處理,然後儲存在資料庫中。你可以參考我們之前的博客以更好地了解密碼哈希。不幸的是,一些服務提供商缺乏常識,將密碼以明文形式儲存在資料庫中。如果數據洩露,這種做法可能會造成更大的損害。
通過儲存哈希密碼,即使是資料庫管理員也無法訪問你的原始密碼,從而大大提高了安全性。當驗證輸入密碼的正確性時,會使用相同的哈希算法來處理輸入的密碼。然後將生成的哈希與資料庫中儲存的值進行比較。如果兩個哈希值匹配,則認為輸入的密碼正確。
簡單來說,密碼破解涉及生成符合允許密碼規則的字符串。然後使用前述方法不斷檢查這些字符串,最終發現正確的明文密碼。
常見的密碼破解方法
在本節中,我們將簡要介紹三種常見的破解密碼方法。
暴力攻擊
暴力攻擊通常列舉所有允許的密碼規則的可能性,並嘗試逐一嘗試。
例如,手機可以設置一個4位數的數字密碼。暴力攻擊將從0000
、0001
、0002
、...,一直到9999
逐一嘗試所有可能性。
暴力攻擊非常耗時,因為嘗試次數太多。假設密碼長度為 $L$,每個密碼位可能的字符數是 $n$,那麼暴力攻擊需要嘗試的可能性數量就是 $n^L$,這是一個很大的數字。
許多密碼要求組合數字、大寫和小寫字母以及特殊字符,目的是增加 $n$,從而大大增加可能性,提高破解密碼的難度。
字典攻擊
字典攻擊使用字典中的單詞,通常結合空格、數字、特殊符號和其他元素,形成各種密碼組合。然後使用這些組合嘗試密碼匹配。
許多人選擇使用有明確意義的句子作為密碼,以便於記憶。字典攻擊被證明是破解具有這些特性的密碼的有效方法。
彩虹表攻擊
彩虹表是一個預先計算的明文密碼到其相應哈希值的映射。通過直接將資料庫中儲存的哈希值與彩虹表中的哈希值進行比較,任何找到的匹配可以用來查找並直接檢索相應的明文密碼。
如果哈希值已被預先計算(並記錄在彩虹表中),彩虹表提供立即訪問明文密碼的優勢。然而,重要的是要注意,如果哈希值沒有被預先計算(因此不在表中),則無法使用彩虹表。
除了上面描述的方法外,還有許多其他技術未在此涵蓋。通常,這些方法的組合被用來涵蓋所有可能的密碼並加速破解過程。