你的密碼在資料庫裡,不是以你輸入的形式儲存的
當你在一個網站上設定密碼,那個密碼通常不會以明文的形式儲存在資料庫裡。負責任的開發者會把密碼通過一個叫做雜湊函數的單向運算處理,儲存的是運算結果,也就是雜湊值,而不是原始密碼本身。 這個設計的邏輯是,即使資料庫被攻擊者取得,他們拿到的是一串無法直接使用的雜湊值,而不是可以立即登入帳號的密碼。 但這個保護機制有一個前提,就是密碼本身夠強。 John the Ripper 存在的意義,就是讓這個前提可以被驗證。它嘗試從雜湊值反推出原始密碼,如果成功了,代表這個密碼在真實攻擊情境中同樣可以被破解。
密碼破解的幾種主要方法
John the Ripper 支援多種破解模式,每種針對不同類型的密碼弱點。 字典攻擊 是最常見的起點。工具使用一份包含大量常見密碼和詞彙的字典檔案,逐一計算每個詞彙的雜湊值,和目標雜湊值比對。像是 password、123456、qwerty 這類密碼,在字典攻擊面前幾乎沒有抵抗能力,通常在幾秒鐘內就會被找到。 規則型攻擊 在字典的基礎上加入變形規則,例如把字母改成數字、在結尾加上常見的數字組合、把第一個字母大寫,這些是人們在被要求設定強密碼時最常用的應對方式。規則型攻擊專門針對這些可預測的變形模式,讓 Password123 或 P@ssw0rd 這類看起來複雜的密碼,實際上比想像中更快被找到。 暴力破解 是最直接但最耗時的方法,嘗試所有可能的字元組合,從理論上說任何密碼都可以被找到,問題只是需要多少時間。密碼的長度和字元集的多樣性,直接決定了暴力破解所需的計算時間,這也是為什麼密碼長度比複雜度更重要的原因。 延伸閱讀:駭客如何透過彩虹表攻擊破解你的密碼?
在資安工作中,它被用來做什麼
在授權的滲透測試工作中,John the Ripper 最常見的使用情境是在取得系統存取權限並獲得密碼雜湊值之後,測試這些雜湊值能否在合理時間內被破解,以此評估系統的密碼政策是否足夠強健。 企業的資安團隊也會用類似的工具對自己的密碼資料庫進行定期稽核,主動找出使用弱密碼的帳號,在這些帳號被真正的攻擊者發現之前強制要求更新密碼。 這個使用情境說明了一個重要的概念,密碼的強度不只是使用者的個人選擇,它是整個系統安全架構的一部分,而密碼強度測試是資安工作中一個有具體方法論的工程問題。
這個工具告訴我們的,關於密碼的幾個反直覺事實
學習 John the Ripper 的運作邏輯之後,有幾個關於密碼安全的結論是反直覺但有充分根據的。 密碼的長度比複雜度更重要。一個十六個小寫字母組成的隨機字串,在暴力破解面前比一個八個字元但混合了大小寫、數字和符號的密碼更難破解,因為字元組合的數量是指數級增長的。但對於字典攻擊來說,隨機性才是關鍵,有意義的詞彙組合,即使很長,也可能出現在字典檔案裡。 定期更換密碼的政策,如果沒有配合使用密碼管理器,實際上可能降低整體安全性。人們在被迫定期更換密碼時,通常的做法是在舊密碼後面加一個遞增的數字,而這個模式恰好是規則型攻擊非常擅長處理的變形。
關於密碼破解工具與密碼安全,資安學習者最常問的幾個問題
雜湊值和加密有什麼不同?為什麼密碼要用雜湊而不是加密?
加密是一個可逆的過程,加密後的資料可以用對應的金鑰解密還原成原始內容。雜湊是一個不可逆的單向過程,同樣的輸入永遠產生同樣的輸出,但沒有任何方法可以從輸出反推出輸入。密碼儲存使用雜湊而不是加密,原因在於系統在驗證密碼時根本不需要知道原始密碼是什麼,它只需要把使用者輸入的密碼重新計算雜湊值,和資料庫裡儲存的雜湊值比對,相符就代表密碼正確。 如果系統使用的是加密而不是雜湊,那麼解密金鑰就成為一個額外的安全風險,一旦金鑰被竊取,所有密碼就等於明文儲存。雜湊的設計讓這個問題從根源上消失,因為根本沒有東西需要被解密。
加鹽是什麼?為什麼現代的密碼儲存需要它?
加鹽是在密碼被雜湊之前,先加入一段隨機產生的字串,讓即使是兩個完全相同的密碼,在資料庫中也會產生完全不同的雜湊值。這個機制專門用來對抗彩虹表攻擊,彩虹表是預先計算好的雜湊值對應表,攻擊者可以直接查表而不需要每次重新計算,大幅加快破解速度。 加入隨機的鹽值之後,預先計算的彩虹表就失去了意義,因為每個密碼的鹽值都不同,攻擊者需要針對每個密碼單獨重新計算,計算成本大幅增加。現代的密碼儲存標準,例如 bcrypt 和 Argon2,都內建了加鹽機制,並且刻意設計成計算密集的運算,讓大規模的暴力破解在計算資源成本上變得不切實際。
如何知道自己的密碼夠不夠強?
有幾個實用的判斷方式。首先,長度是最重要的單一因素,十六個字元以上的密碼在暴力破解上需要的計算時間,對絕大多數攻擊情境來說是不切實際的。其次是隨機性,避免使用任何有意義的詞彙、名字、日期或可預測的模式,真正的隨機字元組合才能對抗字典攻擊和規則型攻擊。 Have I Been Pwned 這類服務可以讓你查詢某個密碼是否已經出現在已知的資料外洩事件中,出現在這份清單上的密碼不管看起來多複雜都應該立即停用。使用密碼管理器讓每個帳號都使用獨立產生的隨機密碼,是目前最實際的解決方案,因為強密碼的真正障礙不是不知道什麼是強密碼,而是人類本來就無法記住幾十組完全隨機的長字串。
One Key Takeaway: John the Ripper 揭示的不只是一個工具的功能,而是密碼在系統裡如何被儲存、如何被測試強度的完整邏輯,理解這個邏輯,是對密碼安全從表面規則進入真正理解的第一步。