閒聊 - 密碼用中文字元更難破解,但真的可行嗎?
| | | 5 | |
前陣子討論到 15 位長密碼及 RTX-5080 GPU 破解六位複雜密碼 SHA256 雜湊只需要 35 秒,許多朋友提到:密碼用中文字元,破解難度可瞬間增加 N 倍。
參考密碼長度與複雜度所需暴力破解時間提過的公式,破解難度及所需時間與「侯選字元數量密碼長度」成正比。而依 Hashcat 的算法,複雜密碼 ?a 的侯選字元集合包含 0-9、a-z、A-Z 以及 32 種 ASCII 符號,共 10 + 26 + 26 + 33 = 95 個字元。若改用中文字元,教育部頒佈的常用字約 4,808 個,BIG5 常用字 5,401 個 參考,次常用字 6,341 個 (BIG5 7,652 個) 參考,加起來超過 9,025 (95 * 95),等同一個中文字扺兩位複雜密碼綽綽有餘,因此 10 碼中文會比 20 位大小寫數字加符號的複雜密碼還難破解,但,實務上可行嗎?
恐怕沒那麼簡單。
首先,要面對的第一個問題是 - 許多既有密碼欄位,例如 Chrome / Edge 瀏覽器的密碼欄雖然能不接受英數字符合以外的字元,但輸入時中文輸入法會被禁用:

type="password" 欄位本身可接受 Unicode 字元,但因輸入法被停用無法直接輸入,意味著你必須開 Notepad 或在其他地方敲完再複製貼上,或是從密碼管理軟體複製。
而這還沒考慮一些現成的前後端檢核程式庫,預設只允許英數字跟符號當密碼,若開放中文字元,必須履勘一次,檢查中文字元能在整條處理管道一路通行。
那麼退 100 步,我們自己刻一個特製 input type="text" 欄位,不禁用中文輸入又會將文字顯示成星號 ,就能直接敲中文密碼了吧?是可以,但...

這應該就是 type="password" 要禁用語言輸入法的原因,打字過程密碼全都露,打馬賽克根本打心酸的... 有人可能覺得這還好,反正只會在過程出現,但 「肩窺」(Shoulder Surfing,透過偷窺或記錄受害者螢幕、鍵盤來竊取機密資訊) 原本就是一項該防範的社交工程手法,機密資訊藏都來不及,沒見過有人主動奉上的,毋湯啊毋湯。
再者,使用者未必永遠用自己的裝置操作,換了陌生設備,中文密碼還可能面臨作業系統不支援中文、沒裝輸入法的挑戰,真要實作,有許多方面必須考量。
總結,考量輸入法可用性、密碼欄位支援性、以及搭肩窺視風險,密碼真要使用中文,轉成注音鍵對映字元或倉頡/嘸蝦米字根組合較可行。一個中文字元會展開成一到五碼,等同放大成小寫英文加數字一到四碼,或小寫英文一到五碼,增長效果不錯,又與現有作業系統、密碼欄位完全相容,應是較好的做法。
[2025-11-08 補充] 以上討論主要考量線上服務場景,一些使用情境較固定的應用,例如 ZIP 壓縮密碼,遇到輸入問題及被偷看機率較低(每個檔案密碼不同,通常只用一次),是適合使用中文密碼的場景。(感謝讀者補充)
Comments
# by Jekyll
小小找碴一下, "shoulder" surfing 拼錯囉.
# by Jeffrey
to Jekyll, 噗,錯字人的日常,謝了~
# by Jack
https://wellstsai.com/post/cybersecurity-tips/ 密碼用中文輸入不易,可以針對特定網頁拉長密碼:例如Line密碼使用,jackpasswordforline 是說使用倉頡或注音,也是可以透過鍵盤上打出亂碼作為密碼:ji3g4au4a83(我是密碼)
# by gg
zip用中文密碼的話 暴力破解破得了嗎 我都用三個中文字當密碼
# by H
要不要測試zip暴力破解?? 中英文比較一下