跳轉至內容

密碼學/暴力攻擊

來自華夏公益教科書,開放書籍,開放世界

暴力攻擊是針對密碼的一種攻擊方式,它透過嘗試所有可能的金鑰來破解密碼。從統計學上講,如果金鑰最初是隨機選擇的,那麼大約嘗試了一半的可能金鑰後,明文就會變得可用。正如我們在基本設計原則中所討論的,一個基本假設是,密碼是已知的。自從 A. Kerckhoffs 首次發表以來,密碼學的一個基本準則一直是安全性只能依賴於金鑰。正如 Claude E. Shannon 幾十年後所說,“敵人知道系統”。在實踐中,這是一個很好的建議。

截至 2002 年,金鑰長度為 64 位或更少的對稱密碼容易受到暴力攻擊。DES 是一種廣受尊敬的對稱演算法,它使用 56 位金鑰,在 1990 年代後期被 EFF 專案破解。他們甚至寫了一本書來描述他們的攻擊——《破解 DES》,O'Reilly 和 Assoc. EFF 是一個非營利性的網路空間公民權利組織;許多人認為,像美國國家安全域性這樣的資金雄厚的組織可以使用暴力破解成功攻擊 64 位金鑰的對稱金鑰密碼。這肯定是真實的,因為它已經公開進行了。[需要引用] 許多觀察者建議對稱金鑰演算法的最小金鑰長度為 128 位,即使這樣,選擇安全的演算法也很重要。例如,許多演算法可以有效地縮短金鑰長度,直到可以使用暴力攻擊進行計算。AES 推薦用於至少到 2030 年。

非對稱演算法的情況要複雜得多,這取決於具體的演算法。因此,目前 RSA 演算法可以破解的金鑰長度至少為 768 位(自 2009 年以來公開破解),但對於大多數橢圓曲線非對稱演算法來說,目前可破解的金鑰長度被認為要短得多,可能只有 128 位左右。一條使用橢圓曲線加密演算法的 109 位金鑰加密的訊息在 2003 年初被公開透過暴力破解金鑰搜尋破解。

截至 2015 年,橢圓曲線演算法建議的最小金鑰長度為 224 位,RSA 等其他非對稱金鑰演算法建議的最小金鑰長度為 2048 位(依賴於複雜數學問題的安全性的非對稱金鑰演算法總是需要更大的金鑰空間,因為存在破解它們的捷徑,與直接暴力破解相比)。[1]

常見的暴力攻擊

[編輯 | 編輯原始碼]

“暴力攻擊”一詞實際上是一個總稱,指的是所有窮舉所有可能(或可能)組合的攻擊,或其任何衍生形式。

字典攻擊

[編輯 | 編輯原始碼]

字典攻擊是一種常見的密碼破解技術,它主要依賴於普通計算機使用者選擇的弱密碼。例如,如果攻擊者透過各種惡意資料庫操作和線上商店的教育搜尋獲得了雜湊密碼檔案,那麼他就可以編寫一個程式,對字典中的每個單詞(例如,任何或所有語言和常見的派生密碼)進行一次雜湊,並將這些雜湊與他獲得的真實密碼雜湊進行比較。如果雜湊匹配,他就獲得了密碼。

預計算字典攻擊

[編輯 | 編輯原始碼]

對於任何大量的密碼雜湊(例如線上資料庫會產生的雜湊),簡單的字典攻擊方法很快變得過於耗時。因此,攻擊者開發了預計算方法。在這種攻擊中,攻擊者已經對他的所有字典進行了雜湊,他只需要比較雜湊即可。此外,由於許多使用者會選擇相同的密碼,因此他的任務變得更容易。為了防止這種攻擊,資料庫管理員必須在雜湊之前將唯一的 32 位鹽附加到使用者的密碼,從而使預計算失效。

本書的破解雜湊演算法章節將更詳細地介紹專門針對雜湊密碼檔案的攻擊。

對暴力攻擊的應對

[編輯 | 編輯原始碼]

有很多方法可以減輕暴力攻擊。例如

  • 在嘗試所有可能的金鑰時,頻繁更改金鑰需要攻擊者重新開始,假設他不知道金鑰已更改,或者在從頭開始再次進行攻擊之前完成嘗試所有可能的金鑰。
  • 系統可以依賴於在猜測金鑰的次數過多後進行超時或鎖定系統。超時系統可以簡單地阻止進一步訪問,鎖定使用者帳戶,聯絡帳戶所有者,甚至銷燬明文資訊。
  • 兩步驗證是一種要求第二個金鑰才能進入系統的方法。這會使暴力攻擊變得複雜,因為攻擊者不僅要猜測一個金鑰,還要猜測第二個可能同樣複雜的金鑰。這種方法最常見的實現是要求進一步身份驗證“你第一隻狗的名字是什麼?”。未來出現了一種新的趨勢,系統利用基於時間的金鑰進行兩步驗證,該金鑰透過電子郵件或簡訊傳送,而訪問帳戶或特定電子裝置則用作第二個金鑰。

本書的安全密碼章節將更詳細地介紹專門針對雜湊密碼檔案的緩解措施和其他應對措施。

  1. Damien Giry. "加密金鑰長度建議".
華夏公益教科書