這兩天有則新聞引發討論,某資安長自豪在公司推行 15 碼高強度密碼,靠奇招築成駭客難以突破的鐵牆...

還是雜誌社懂玩,下了個「強制推行15碼密碼,駭客就會"累到放手"?」的標題,「累到放手」給人「駭客坐在電腦前試密碼試到手軟」的畫面,還不忘加上問號撇清責任。貼文不意外地引發熱議,免不了引來一陣狂噴猛酸(資安長心裡苦,資安長沒法說?)。

仔細看了內文,強推 15 碼高強度密碼為真,但發言中規中矩,沒什麼荒謬說法:

其中最讓人意想不到的,就是強制推行15碼的高強度密碼。多數企業會在 IT 系統端下功夫,卻忽略了員工的個人裝置與習慣。
然而,這小小的一個舉動,卻是一個「便宜」卻又非常有效的方法。
密碼從 4 碼升級到 15 碼的安全強度, 就夠確保駭客在現有技術下需要花上百年才能成功破解,極大地提升了資料的安全性。
「就算你把密碼貼在電腦底下,我們不鼓勵,但也會比單純4碼密碼安全的多,」
「畢竟能進到公司、辦公室偷取機密的人,就已經大大減少了。」

平心而論,這些論述沒有違反密碼學原理,靠密碼長度跟複雜度提升安全強度,比起買設備建系統,確實是超便宜的解決方案。

所謂 4 碼加到 15 碼提高難度的前題,指的應該取得雜湊跑程式暴力破解的情境,而非直接線上登入嘗試,否則試不了幾次就會因出錯過多鎖帳號或擋 IP。(但一般人可能不懂二者區別)

便利貼會外洩密碼,但確實得先突破物理限制接近辦公室,或期待使用者自拍貼文。估算「短密碼猜中風險」-「密碼便利貼外流風險」+「購置設備導入系統成本」,算來仍是正向投資沒錯。如果先不考慮長 15 碼又要定期換的高複雜度密碼會讓使用者「一袋米要扛幾樓」,確實是超便宜又有效的提升安全做法,簡單粗暴,對資安很簡單、對使用者很粗暴,哈!

thumbnail

不過,加長密碼真的沒成本嗎?其實有:

  1. 長密碼輸入耗時,影響效率 (一人多花一分鐘,兩千人的公司一上班就耗掉超過一人天了)
  2. 長密碼容易記錯敲錯,輸錯重試耗費時間更多,若錯太多次帳號被鎖暫時無法工作,對產能的影響就更難估算了
  3. 長密碼增加輸錯多次鎖帳號定機率,解鎖的客服人力與時間成本不容小覷

除了密碼長度,所謂高強度密碼通常還包含複雜度(大小混合、加數字、加符號)、定期變更、不能跟前幾次重複... 等,也會疊加上述三項成本。所以,高強度密碼本質是以操作繁瑣、使用不便、影響工作效率為代價去換取安全。如上次媒合網站個資外流議題的討論, 這種「便利效率」與「安全性」的拉鋸每天都在發生,二者總是衝突的,我們一直被迫在"冒點風險 vs 便捷使用"間抉擇,決定要偏向天平的哪一邊。

高強度密碼這件事,這些年引起一些反思。開始有人挑戰傳統思維堅持複雜度(大小寫數字符號)、定期更換、禁止重複輪替的堅持,由於資訊安全佔據道德制高點(就像國家安全、人命健康相關議題一樣),這類討論要成功扭轉想法需要比較長的時間。

NIST (美國國家標準暨技術研究院) 在 2004 年發佈過一版 Electronic Authentication Guideline (電子身分認證指南) 在附錄 NIST Special Publication 800-63 Appendix A 中建議電腦使用者在設定自己的密碼時,可以使用好記的簡短字眼,但必須交替使用大小寫,將部分字母替代為特殊符號,而且最好是每3個月就固定更改密碼。NIST 一直是資安領域的標竿,我們該用什麼加密演算法、憑證金鑰長度該有多長,幾乎都是 NIST 說了算,因此這份建議也成了各界奉行的圭臬,害我們定期要想一組複雜新密碼的元兇。

不過,在 2017 年,密碼規則發明人 Bill Burr 在接受華爾街日報訪問時坦承他很後悔寫些了那些東西,因為這套準則對一般人來說太複雜了,根本就搞錯方向。結果使用者被訓練成會設定人類想不到,對機器來說卻相對好猜的密碼,像是 Tr0ub4dor&3;反觀 correcthorsebatterystaple 用四個純小寫單字組成,被機器破解的難度驟升,而對人類來說反而比較好記。(延伸閱讀:密碼規則發明人道歉:放錯重點)

再強調一次,以上關於密碼長度與安全性的討論,指的都是駭客拿到密碼雜湊(不是密碼本身,但可以透過猜測找出密碼的一串數字),在家泡杯茶跑暴力破解的場景,若是線上登入,一般會卡在猜錯三次鎖定、WAF 偵測封鎖 IP... 等阻礙,而網路連線存取也不可能讓你一秒鐘試幾千幾萬幾億次。

先不考慮懶人密碼、字典攻擊,「短一寸險一寸」在密碼學的暴力破解攻擊中仍是鐵律,數學就是數學,不容質疑,之前無聊算過不同密碼長度與複雜度所需暴力破解時間,依理論推算,用一張 4090 顯卡破解大小寫混合的 8 位密碼只需 40 分鐘,若含數字則要 2 小時,再加上符號要 3 天。若將位數提高到 15 碼,純小寫要 2440 年,大小寫混合就要近 8,000 萬年...

幸好,在 NIST 2025 年發佈的 SP 800-63-4 數位身份指南,拋棄許多傳統上「被認為安全」但實際上對用戶不友善且效果不佳的規則。(權威果然還是靠權威來打破啊! [笑])

新版 SP 800-63B-4 身份驗證與驗證器管理(Authentication and Authenticator Management) 建議的密碼管理原則打破許多傳統思維:

  1. 廢除「強制定期更換密碼」
    不應強制使用者每 60 天或 90 天更換一次密碼。研究發現,這類要求只會導致使用者使用只有微小變動的可預測密碼(例如 Password!1 變成 Password!2),反而降低了安全性。應只在有證據顯示密碼已洩露時(例如出現在資料外洩事件),再強制使用者立即更換。
  2. 強調「長度」而非「複雜度」
    不應強制要求複雜的字元組合規則。這類規則讓密碼難以記憶,導致使用者將密碼寫在便利貼上或使用簡單的替換模式。
    建議做法是設定合理的最小長度(若密碼是單一要素時應大於 15 字元,為多因素之一時不短於 8 字元),並強烈鼓勵並支援使用者用更長的「密碼短語」(Passphrases),例如一個句子。系統密碼欄位應支援至少 64 位字元,並允許所有可列印的 ASCII 字元、Unicode 字元(註:這點我覺得要小心,若 Emoji 也行挺麻煩的),以及空格。
  3. 強制檢查「已洩露密碼黑名單(Blocklist)」
    當使用者建立或更改密碼時,系統必須將該密碼與黑名單進行比對,以免駭客用現成的已知密碼進行爆破。
    黑名單應包含:已知的洩露密碼(例如 Have I Been Pwned 資料庫)、字典單詞、上下文相關詞(例如服務名稱、帳號名稱等)
    且黑名單不應只在建立或更改密碼時檢查,還應持續監控新的外洩事件,若發現密碼出現在新的外洩清單上,應立即通知使用者並強制其重設,落實「持續性洩露偵測」。
  4. 改善用戶體驗以提升安全性
    糟糕的操作體驗會導致不安全的行為,應允許複製貼上以便利使用者使用「密碼管理軟體」管理密碼,通常這是最好保持長且複雜密碼的做法。
  5. 勿使用「安全問題」或「密碼提示」作為恢復機制
    因為像「您的第一隻寵物的名字是什麼?」這類問題不難透過社群媒體或社交手法取得,一點都不安全。
  6. 以速率限制取代帳戶鎖定
    傳統登入失敗 3 次帳戶立即鎖定 30 分鐘或 1 小時,甚至需要聯繫客服解鎖,對於記性不好或易手滑的使用者極不友善,駭客甚至可藉此觸發 DoS 攻擊癱瘓系統使用。
    NIST 建議用出錯就放慢嘗試速度的做法,例如:第 4 次失敗等待 5 秒、第 5 次失敗等 30 秒、第 6 次等五分鐘。(術語叫「指數退避」Exponential Backoff)
    如此限制對正常使用者還可以忍受,卻能讓駭客的暴力嘗試變得不可行。
  7. 多因素驗證(MFA)仍是王道
    NIST 明確指出,對於需要更高安全等級(AAL2 或更高)的系統,單獨只用密碼是不可接受的,必須使用多因素驗證 (MFA),結合「What you know 你所知道的(密碼)」與「What you have 你所擁有的(例如手機 OTP、硬體安全金鑰)」或「What you are 你是誰 (生物辨識)」。

坦白說,對 NIST 的新指南,除了密碼允許所有 Unicode 字元這點,我沒想到什麼問題,而其中的思維也趨向人性化,我舉雙手贊成,以 NIST 的權威性,而這應該也是當今關於密碼長度、複雜度與應用方式的最佳依據吧,但何時會落實到我們的日常則未知。

我很樂意改用 15 碼長密碼,只要別要我穿插大小寫跟符號,還強迫 60 天改一次! 希望這天早點到來~~


Comments

# by 名無し

其實我有想過一個方式,就是在網站登入的時候設定幾種加密方式。 這些加密方式會改變輸入的內容後再加密,然後資料庫存的當然是加密後的字串。 註冊的時候會多一個隨機選擇加密方式的功能,最後會告知使用者以後登入要選什麼加密方式,但資料庫沒有存這個資料。 然後加密的鹽會包含註冊時生成的 uid,避免同樣的密碼加密後的結果是一樣的。 這樣應該就能做到即使密碼簡單,也不容易被破解。

# by Leo

有 ISO 存在的一天,這些改變只會以極緩慢的速度改變

# by yoyo

希望passkey無密碼登入能更快普及

# by ChrisTorng

系統要求超長密碼,使用者就傾向會以句子方式組合而成,而不是每個字元都偏向隨機挑選。若攻擊方以挑選單字組成長字串來猜密碼,或甚至分析使用者的過往資訊,挑出可能用到的單字範圍,相較隨機字元亂猜,是否變得相對容易了?

# by Jeffrey

to ChrisTorng,我的想法是用英文單字組成的 15 位長密碼仍然有強弱之分,純單字組合屬於弱密碼,若加上一兩個符號,不會增加太多記憶負擔卻能讓破解難度驟升,拿掉兩個月改一次的要求,大家應有能力記住長再加一點點複雜的密碼。

Post a comment