2023-12-13|閱讀時間 ‧ 約 6 分鐘

密碼規則怎麼訂比較好?

密碼,作為驗證使用者的身份基本手段,除了少部分的內容型網站沒有會員功能,大部分的個人化網路服務都跟密碼息息相關。而密碼設定的規則,也算是業主常常喜歡發揮的地方,值得開一篇聊聊。

raw-image

美國國家標準與技術研究院(NIST)的數位身分指南,早已有針對密碼強度做了很多版本的迭代,不過坊間的很多江湖傳言,很多還是停留在早期版本。

以下是 2023 年 10 月的版本所截取出來的建議項目,加上一些本人的見解

密碼長度

建議密碼至少為 8 位元長度;如果是隨機生成的,則至少 6 位元 (允許只有數字)

密碼長度是密碼強度構成的主要因素,太短的密碼容易遭受暴力攻擊以及字典攻擊,尤其 8 位元以下,用戶很容易直接使用特定的真實字彙,所以應該盡可能鼓勵用戶設定長密碼。但也不應規定過長,若限定用戶至少需要設定 12 碼以上(或更長),用戶有很高的機會在個人常用的密碼後面加上 123 ,例如:

password1234

如此一來,其實完全沒有達到長密碼的用意,反而擾民了。

另外,雖然更長的密碼能夠增加密碼強度,但基於合理的開發成本,NIST 建議可把長度上限定為 64 位元。


密碼複雜度

不應強制使用不同類型字符的組合,例如大寫字母、小寫字母、數字和特殊字符。

當然,你還是得允許用戶設定特殊字符作為密碼。傳統策略經常要求混合不同類型的字符,以增加密碼的隨機性和安全性。但是過於複雜的密碼要求,會鼓勵使用者選擇易於記憶的密碼,反而降低安全性。然後

P@55w0rd

就成為世界上最受歡迎的密碼之一


密碼更換策略

只有在密碼被懷疑泄露或帳戶存在安全風險時,才建議更換密碼。

定期更改密碼可能導致用戶選擇較弱的密碼,並增加密碼遺忘的風險。傳統策略經常要求定期更換密碼,例如每90天或180天更換一次,再加上長度、複雜度的規則,於是你就會設定這樣的密碼

password1
password2
password3

或者乾脆把密碼用便條紙貼在螢幕上


限制嘗試次數

應限制並減少未經授權的存取嘗試。

為了減少自動化攻擊的風險,應限制密碼輸入的失敗嘗試次數。當單位時間內達到設定的閾值後,應暫時鎖定帳號。鎖定時間可以隨著失敗次數而增加,或者強制用戶變更密碼才能解鎖帳戶 (強制要求變更,比較常出現在金融機構)。


顯示密碼

建議提供「顯示密碼」功能。

當系統使用複雜或長密碼的規則,使用情境允許的情況下,應提供用戶「顯示密碼」的功能,避免用戶因輸入錯誤而多次失敗的嘗試,從而提升整體的用戶體驗。


複製貼上

建議在密碼欄位允許「貼上」功能。

早期曾經有過禁止「貼上」功能的建議,猜測是觀察到有人會把密碼寫在記事本 (txt editor) 再貼過去,屬於前面便利貼記密碼的變形,所以建議禁掉「貼上」功能。

隨著密碼管理器的出現,它可以快速產生隨機的複雜長密碼,同時可對不同的網站系統的密碼進行管理,用戶可透過密碼管理器,很容易地建立、記憶個別的長密碼,不用仰賴人腦的記憶。而密碼管理器的運作,會使用到「貼上」的功能。

鼓勵使用密碼管理器,並允許「貼上」功能來輸入密碼,這有助於用戶選擇更強的密碼,並減少密碼遺忘的風險。


黑名單與字典檔檢查

對密碼進行黑名單或字典檔的檢查,避免用戶使用已知的常用或被泄露的密碼。

這是一個比較進階的防護方式,需要在系統中維護一份字典檔,用戶在設定密碼時,就檢查是否是高風險的組合,並提出警示或禁止。當然,這需要定期維護字典檔及付出一些運算資源。也可以直接整合外洩密碼查詢的公用服務,如 Have I Been Pwned(HIBP)。

不過要注意的是,檢查密碼這個行為,有可能引起用戶對於系統窺探密碼的疑慮。


多因素認證 (MFA)

使用多個獨立的認證因素來增強安全性。

除了使用密碼外,加入生物識別、實體或虛擬擁有物 (USB Key / 手機) 等複合認證因素,會顯著增加了非授權存取的難度。但相對的,它也是開發成本與維持成本相對高的認證方式,對用戶同樣也會帶來顯著的不便。通常用在企業內部等資訊安全要求較高的情境。


近來有些業主會要求,使用生物識別作為主要登入,確實幾個科技大廠有在提出 No-password 的概念。基於現有多數系統的架構與容錯性的考量,仍會建議用密碼作為標準認證方式,生物識別作為輔助登入,減少密碼的重複輸入。



有趣的是,所謂的 “傳統策略” ,其實大多是來自於 2003 年的 “NIST Special Publication 800-63. Appendix A.”。是的,它們也是來自於 NIST 的指南的早期版本。

但前幾年 (2017年),當初起草 2003年的 NIST 指南的成員 Bill Burr,發表了一個公開道歉。原因是當初訂的規則,現在回頭很看起來不僅無效且造成很多人的困擾

當時的編撰的背景,很多是基於理論上的計算,例如:「隨機組合的長密碼 "correcthorsebatterystaple",如果每秒猜1000次,電腦要費時550年才能破解。」。 Bill 及當時編撰的成員沒想到的是電腦系統發展的速度,和人的惰性。導致後來不少跟隨這份指南的系統,對密碼的設置要求都讓人覺得,比起防止入侵更像要防止自己登入。現代駭客攻擊的手法,也更多著重在社交工程 (白話:用騙的) ,而不是直接用破解的方式處理。這麼一來,不論多複雜的密碼規則,都完全沒有意義。


當然,也可能是 Bill 的策略確實太安全了,駭客們用騙的比較有效率。



創科資訊 https://trunk-studio.com

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.