在當今這個高度數字化的時代,我們在互聯網上的所有隱私、財富和個人數據,幾乎都由一扇扇被稱為「密碼」的無形大門所守護著。為了防止大門被黑客輕易撬開,我們常常被迫遵守網站繁瑣的「密碼強度指南」:密碼必須包含至少一個大寫字母、一個小寫字母、一個數字以及一個特殊字符,且長度不得低於 8 位元。
於是,許多人絞盡腦汁,設計出了一個自以為極度安全、實則痛苦難記的密碼,例如:Tr0ub4d&u。
然而,從資訊安全與數學的視角來看,這類「短而複雜的密碼」,在黑客強大的 GPU 暴力破解陣列面前,脆弱得就像一張紙。相反,一個由四個普通、毫無關聯的英文單詞組成的長密碼(例如:correct horse battery staple),不僅容易記憶,其抗破解能力甚至高出了數十萬倍。
為什麼會這樣?這需要我們引入資訊學之父克勞德·香農(Claude Shannon)的偉大概念——資訊熵(Information Entropy),並用數學的眼光重新審視密碼的安全本質。
密碼安全的量化尺規:什麼是密碼熵(Password Entropy)?
在資訊論中,「熵」是用來度量一個系統的不確定性或隨機性的物理量。
應用在密碼學中,密碼熵(以位元 Bit 為單位)代表了一個密碼被黑客暴力破解(枚舉所有可能組合)時,所需嘗試的最大次數的對數值。
密碼熵的計算公式極其簡潔:
其中:
- L 代表密碼的長度(字元個數)。
- R 代表密碼所使用的字元集大小(範圍)。
- E 就是最終計算出的密碼熵值(單位為位元 Bit)。
字元集大小 R 的常見分類
- 僅數字(
0-9):R = 10 - 僅小寫字母(
a-z):R = 26 - 大小寫字母混合:R = 52
- 大小寫字母 + 數字 + 常用符號:R = 94
這項公式向我們揭示了一個關鍵的數學關係:密碼的長度 L 對安全性的影響是「線性正比」的;而字元集大小 R 由於處於對數運算 log2 中,其對安全性的邊際提升作用非常緩慢。
經典對決:xkcd 的「馬匹電池」悖論
為了直觀說明長度與複雜度的關係,著名的科普漫畫 xkcd 曾創作過一幅流傳甚廣的漫畫,對比了以下兩種密碼設計思路的安全性與記憶難度:
密碼一:Tr0ub4d&u(短而複雜)
- 設計思路:8 位元長度,包含大小寫、數字與特殊符號(R = 94)。
- 密碼熵計算:8 * log2(94) ≈ 28 位元。
- 暴力破解難度:228 ≈ 2.6 億次嘗試。在每秒能測試 1000 萬次密碼的普通黑客電腦上,只需 3 秒鐘即可破解。
- 記憶難度:極高,人類極易忘記或將其中的「o」與「0」記混。
密碼二:correct horse battery staple(長而簡單)
- 設計思路:由 4 個從常用字典(假設字典有 2048 個單詞,即 R = 2048)中隨機挑選的普通英文單詞組成,長度共 28 個字元。
- 密碼熵計算:4 * log2(2048) = 4 * 11 = 44 位元。
- 暴力破解難度:244 ≈ 17.5 兆次嘗試。在相同的破解設備上,需要持續運行 20 天才能破解。
- 記憶難度:極低,大腦能通過圖像聯想(一匹被電池連接著的馬)在幾秒鐘內牢牢記住這四個單詞。
這個對比給了傳統安全策略一記重拳:長度才是王道。一個看似毫無防備的「長密碼短語」(Passphrase),在數學防護力上遠勝於故作玄虛的短密碼。
資料庫的防線:哈希(Hashing)與鹽值(Salting)
儘管我們設計了高熵值的強密碼,但如果網站後台的資料庫被黑客整體竊取(拖庫),我們的密碼是否會瞬間暴露?
這取決於網站後台是如何存儲密碼的。
現代合格的網站,絕對不允許明文存儲密碼。他們必須使用單向哈希函數(如 SHA-256)將密碼轉化為一段固定長度的「哈希值」(Hash):
哈希函數是單向不可逆的,黑客拿到哈希值,理論上無法倒推還原出明文密碼。
然而,黑客常用「彩虹表」(Rainbow Tables,預先計算好的常用密碼哈希值對照表)來快速進行碰撞對比。為了瓦解彩虹表,密碼學引入了兩大核心防線:
- 加鹽(Salting):
在將密碼哈希之前,系統隨機生成一串唯一的字符串(鹽值 Salt,如
x789#p),將其拼接到明文密碼後面,再進行哈希:Hash(密碼 + 鹽值)。 因為每個用戶的鹽值都是不同的,這使得黑客預先製作的彩虹表徹底失效,被迫對每個帳戶都必須進行單獨的暴力破解。 - 密碼拉伸與緩慢哈希(Key Stretching): 普通的 MD5 或 SHA-256 計算速度極快(每秒可計算數十億次),這非常有利於黑客進行暴力破譯。 因此,專門用於密碼存儲的哈希演算法(如 bcrypt、Argon2)被故意設計得「極其緩慢且消耗內存」。它們通過在內部循環運行數千次哈希(密碼拉伸),將單次密碼驗證時間強制拉長至 100 毫秒。 對於正常登錄的用戶,100 毫秒完全無法察覺;但對於每秒需要嘗試億萬次密碼的黑客來說,這會讓其暴力破解的時間成本上升到令人絕望的數千年。
常見問題與解答(FAQ)
Q1:我可以使用自己喜歡的唐詩宋詞或歌詞作為密碼短語嗎?
A1:不建議。這是一個常見的隱患。雖然唐詩宋詞字數很長,但它們並非隨機挑選的,而是具有極高關聯性的文本(例如,輸入「床前明月光」,下一句必然是「疑是地上霜」)。黑客在進行暴力破解時,會使用專門的「語料庫與字典攻擊」來枚舉所有經典詩詞和歌詞。真正的安全密碼短語,必須是用隨機工具(如擲骰子查表,Diceware)隨機挑選出的毫無邏輯關聯的單詞組合。
Q2:什麼是「密碼管理器」?它安全嗎?
A2:密碼管理器(如 1Password, Bitwarden)是目前安全學界公認的最佳密碼實踐方案。因為人類大腦的記憶極限,無法為每個網站都記住一個隨機的高熵密碼。密碼管理器能本地生成並安全存儲數百個隨機密碼,你只需花精力記住一個強度極高的「主密碼」(Master Password)即可。使用密碼管理器能徹底杜絕「一個密碼多站共用」的致命安全隱患。
Q3:雙重身份驗證(2FA)能彌補弱密碼的缺陷嗎?
A3:能提供極大的安全補償。2FA(如 Google Authenticator 驗證碼、硬件密鑰 YubiKey)在密碼大門之外,又加了一道「你所擁有的實體設備」的安全鎖。即使黑客通過密碼熵漏洞暴力破解了你的密碼,只要他們拿不到你手機上即時生成的驗證碼,就依然無法登錄帳戶。
結論:密碼強度與資訊熵是這場數字暗戰中唯一的數學量尺。它告訴我們,盲目追求符號混雜的短密碼,只是在用人類有限的記憶力挑戰計算機的枚舉速度;唯有增加密碼長度,善用隨機密碼短語與慢速哈希防護,我們才能在數字大洋的喧囂中,為自己的隱私安全鑄就一塊不可攻破的鋼鐵護盾。