如何逃離弱密碼黑洞?
全球遠程辦公大潮中,一些企業(yè)安全的脆弱性問題被放大,全球數(shù)據(jù)泄露事件的頻率和規(guī)模以肉眼可見的速度逐年遞增,如果說身份與訪問管理是數(shù)據(jù)安全的“重災區(qū)”,那么“弱密碼”則無疑是“震中”。
據(jù)安全牛CSO社區(qū)的一些央企安全主管反映,密碼相關的安全加固措施是疫情期間最重要的安全工作之一。
根據(jù)Verizon的《數(shù)據(jù)違規(guī)調(diào)查報告》,有81%與黑客相關的違規(guī)行為都利用了被盜密碼或弱密碼,只需一名員工的弱密碼就可以撬開重兵把守、重金打造的企業(yè)網(wǎng)絡安全防御體系。
事實上,雖然零信任、多因素認證是當下的企業(yè)網(wǎng)絡安全的熱點話題,但是冥頑不化的弱密碼問題,依然是企業(yè)網(wǎng)絡安全最大的軟肋之一,Centrify最近的一項調(diào)查顯示,受訪的1000名IT決策者中,74%的入侵事件涉及特權賬戶訪問。而今年RSAC2020的現(xiàn)場調(diào)查數(shù)據(jù)顯示:
- 接近四分之一的受訪者(23%)使用相同的工作和個人賬戶密碼,違反了行業(yè)最佳實踐
- 超過五分之一的受訪者(21%)仍將密碼存儲在手機、計算機或打印文檔中,同樣違反了行業(yè)最佳實踐
注意,以上調(diào)查是針對安全行業(yè)人士進行,普通企業(yè)員工的密碼違規(guī)情況要比上面的數(shù)據(jù)嚴重得多!
弱密碼黑洞
如今,一位普通消費者都至少使用20個以上的賬戶。二十個不同的賬戶,二十個不同的密碼,延伸出一系列的安全問題和安全隱患(上圖),甚至包括安全專家在內(nèi),都會犯下在不同賬戶中重復使用密碼的低級錯誤。密碼安全性已經(jīng)成為在線賬戶安全的主要問題,導致數(shù)據(jù)泄露、賬戶接管、欺詐性金融交易、敏感數(shù)據(jù)泄漏、個人數(shù)據(jù)濫用等。
截止到今天(2020年),最大的數(shù)據(jù)泄漏主要來自配置不當?shù)南到y(tǒng),包括身份驗證薄弱。
總而言之,在業(yè)界的不懈努力下,密碼安全性較差的現(xiàn)狀依然未能得到解決。
問題已經(jīng)足夠淺顯直白,但是我們有解決方案嗎?
對于弱密問題,很多企業(yè)采取強制頻繁更改密碼并使用單點登錄(SSO),以及將特權憑證存儲在密碼庫等措施,但企業(yè)應該認識到:弱密問題并不是一種或幾種技術方案(例如IAM和PAM)或者規(guī)則能夠根除的,需要參考和制定一套完善的密碼準則,以應對消費者、供應商和企業(yè)自身的數(shù)字身份管理挑戰(zhàn)。
以下,安全牛針對目前遠程辦公的“安全痛點”,老話重提,圍繞NIST的新版密碼指南與大家一起就密碼安全溫故知新:
NIST的十三條密碼準則
NIST SP 800-63是美國國家標準技術研究院(NIST)2017年發(fā)布的數(shù)字身份驗證準則的新修訂版(2020年3月更新),其中提供了有關密碼安全性要求的準則。
盡管SP 800-63是79頁的冗長文檔,但本文主要關注的是第5節(jié)“身份驗證器和驗證者要求 ”,該章針對如何處理身份驗證要求制定了許多具體準則。
簡而言之,它是密碼管理的一些最佳實踐的整理,包括存儲、使用和頒發(fā)。
那么,NIST 800-63到底在說什么呢?NIST 800-63的意義是什么?與先前發(fā)布的密碼安全性準則有何不同?
如果你比較趕時間,可以花1分鐘了解一下這個最新版NIST密碼指南的快速列表:
(1) 不再需要定期重置密碼
(2) 定義的最小密碼字符數(shù)–8(用戶生成)
(3) 密碼中定義的字符數(shù)至少為64+
(4) 允許ASCII可打印字符,包括空格和表情符號
(5) 定義的最小密碼字符數(shù)–6(系統(tǒng)生成)
(6) 密碼找回避免使用密碼提示/安全問題
(7) 限制密碼的復雜性要求
(8) 鼓勵2FA/MFA并避免2FA中使用SMS短信驗證
(9) 避免暴露以下來源的密碼:
- 以前暴露的違規(guī)賬號
- 字典單詞
- 包含重復或連續(xù)字符的密碼
- 特定于上下文的詞,例如服務的名稱、用戶 名及其派生詞
(10) 將失敗登錄嘗試次數(shù)限制為一定數(shù)量,例如10次
(11) 不要截斷密碼并始終將其存儲在單向哈希中
(12) 引導用戶使用指示器展示評估密碼強度
(13) 通過鹽化和單向哈希安全地存儲密碼,以防止密碼猜測攻擊
NIST 800-63有哪些重大更新?
- 嘗試淘汰過時的密碼實踐準則(例如定期更改密碼)
- 對2FA/MFA的用法給出了很好的建議
- 增加舊/不良密碼的作廢要求
- 強調(diào)密碼字符數(shù)量/長度(最小和最大值)的重要性
- 明確密碼重置的理由
- 明確定義最佳的密碼鹽化存儲方式
NIST密碼新政詳解
以下,我們逐項解讀NIST的密碼“新政”:
1. 不再需要定期重置密碼
一些服務提供商(例如在線銀行)和企業(yè)會強制用戶定期(例如30-90天)修改密碼。但是問題是,如果密碼很強并且沒有受到破壞,為什么我們必須更改密碼。
另外,當我們按定義的時間間隔定期更改密碼時,我們傾向于引入較弱的密碼。例如,您之前的密碼是“ [Pr3ttyMeLikesD!$n3y]”。這個密碼看上去非常強悍,但遺憾的是,在公開的密碼泄露檢查工具中,這條密碼的檢測結(jié)果是“陽性”。
雖然已經(jīng)泄露,但如此“牛C”的密碼用戶是舍不得一下拋棄的,因此,很常見的做法是在原密碼末尾添加一個或幾個數(shù)字,例如 “ [Pr3ttyMeLikesD!$n3y] 9”,這樣就可以滿足提供程序的密碼修改要求。
錯了!
如果您的原始密碼已被盜用,并且可以通過有針對性的攻擊與之相關聯(lián),攻擊者可以輕松地“猜出”您的“新密碼”。
這就是為什么NIST的密碼新規(guī)中強調(diào)避免強行使用任何類型的周期密碼,因為這會進一步削弱密碼流程。
2. 密碼長度更加重要
我們都知道NIST新規(guī)則格外強調(diào)密碼長度的重要性,但關鍵問題是如何設定密碼長度的最大值和最小值的合理范圍。
過去,密碼長度受到限制是為了適應存儲需求。但現(xiàn)在,隨著散列值的存儲,大小限制變得非常寬松,允許使用強而復雜的密碼。
無論密碼是“password”還是“ Itw@asAN!c3P@$$sword4ALL”,存儲這兩個密碼所需的存儲空間實際上沒有差異,這將由服務提供商使用的哈希算法確定。根據(jù)NIST的新準則,用戶創(chuàng)建的密碼長度至少應為8個字符,最大長度應允許超過64個字符。這意味著在線服務提供商常見的20-32個字符密碼長度限制需要大幅放寬。
但這引發(fā)了另一個問題:如果密碼是由服務/系統(tǒng)創(chuàng)建的(例如初始密碼和默認密碼),密碼字符數(shù)量(長度)的要求是什么?幸運的是,新規(guī)范中系統(tǒng)創(chuàng)建密碼的最小值減少到6個字符。這種6個字符的密碼可以在員工初始入職時設置。此后,將要求用戶強制執(zhí)行首次登錄密碼更改。
傳統(tǒng)上,密碼長度一直保持為少數(shù)字符,以適應存儲需求。
與最初起草的時間范圍相比,當前的存儲成本要低得多。之所以認為存儲是因為密碼是以前以純文本存儲的,因此導致了許多數(shù)據(jù)泄露事件,包括但不限于a,b,c。
3. 哪些字符可以作為密碼字符?
答案很簡單。允許所有可打印的ASCII字符集。
簡而言之,請允許使用標準鍵盤可以創(chuàng)建的任何內(nèi)容,甚至允許空格作為密碼的一部分!
那么,[ !@ #$%&*();',。/ <> ?:] 這樣的特殊字符呢?
再次強調(diào)!創(chuàng)建密碼時,不應限制特殊字符。
那么表情符號呢?
😍表情符號也是允許的😍
有效密碼表情符號
4. 安全問題不安全,避免密碼提示/安全問題
在很多場景,我們習慣于在密碼恢復和識別過程中輸入類似真心話大冒險的“安全問題”。例如你爸媽在哪相愛?你出生在哪?你家的狗狗跑丟時幾歲?你最討厭的高中老師的名字?你幾歲開始坐飛機?你老爸情人姓什么?之類。
在NIST新規(guī)中這是嚴格的禁忌。
原因是這些問題/答案很容易猜到。尤其對于針對性攻擊者來說,在個人隱私泄露數(shù)據(jù)極大豐富,社工攻擊泛濫的今天,這些問題的答案將不難找到。
在密碼管理過程中,NIST不再允許此類提示或線索。
5. 限制密碼復雜度要求
正如前文所述,新的NIST密碼規(guī)范極大拓展了可用于密碼的字符類型,強調(diào)密碼長度的重要性,同時建議取消密碼復雜度的強制要求。此外,還建議服務商取消過去并不合理的強制密碼復雜度要求,例如下面這個常見的規(guī)范:
“您的密碼只能包含字母數(shù)字字符。它還應包含一個字母,一個數(shù)字和一個特殊字符“
按照上面的規(guī)則,“ Password!23”是可接受的密碼,但它卻是最弱的密碼之一。
6. 鼓勵2FA / MFA并避免使用SMS短信驗證
過去幾年,隨著數(shù)據(jù)泄漏事件的頻率和規(guī)模不斷增長(下圖),越來越多的用戶名和密碼被暴露,甚至在網(wǎng)絡黑市中交易。
對于攻擊者而言,通過泄露數(shù)據(jù)獲取用戶登錄密碼變得越來越容易。
因此,建議在傳統(tǒng)的用戶名/密碼組合之外再增加一個認證層,例如雙因素身份驗證(2FA) 或多因素身份驗證(MFA)。
但是早期基于短信的雙因素認證今天越來越容易受到SIM交換和相關攻擊,因此建議避免使用基于SMS短信的身份驗證令牌。
替代方法是使用身份驗證器。第一步是用戶名/密碼組合。用于身份驗證的下一步令牌將通過應用程序(軟/硬件)創(chuàng)建。
安全社區(qū)強烈建議使用2FA或MFA這種方法,因為它已被證明可以擊敗幾乎所有針對用戶的基本密碼攻擊。
7. 限制失敗登錄嘗試次數(shù)
假設有人要登錄您的賬戶。
第一步和最簡單的步驟是猜測您的用戶名和密碼組合。如果用戶名和密碼很容易猜到,則該賬戶很容易受到破壞。
為避免這種情況,系統(tǒng)應強制執(zhí)行失敗登錄次數(shù)限制。例如,在第五次失敗登錄嘗試之后,系統(tǒng)可以逐級增加登錄時間間隔,隨著每一次登錄失敗,延遲可能會成倍增加,從而使攻擊者難以得手。
考慮到所有這些情況,NIST建議定義一個特定的登錄次數(shù)上限,從根本上杜絕非授權登錄嘗試,有助于確保此類賬戶的安全。
8. 不要截斷密碼
早些年程序員通常將較大的密碼截斷為最多8-20個字符,以最大程度地減少其存儲需求。
但現(xiàn)在,密碼存儲內(nèi)容僅限于散列,同時存儲設備的成本也已大大降低。
而且,密碼的哈希值將根據(jù)字符而變化,并且包括截斷在內(nèi)的每個更改都會對所述密碼的強度產(chǎn)生重大影響。
考慮到這些,NIST建議系統(tǒng)不應截斷密碼,而應僅存儲其單向哈希。這有助于提高密碼強度。
9. 用密碼強度指示器指導用戶
任何新密碼的強度都應在密碼強度指示器的幫助下直觀展示。由于當今大多數(shù)應用程序都可以在線訪問,因此強烈建議顯示可視化密碼強度指示器。(上圖)該可視密碼強度指示器可用于指導用戶設置更強的密碼。
2020年NIST密碼要求的關鍵要素
最后,我們將NIST密碼新規(guī)范的關鍵要素總結(jié)如下:
需要注意的是,雖然NIST800-63的實施準則非常淺顯易懂,但目前大多數(shù)在線服務提供商的合規(guī)性都很差。
【本文是51CTO專欄作者“安全牛”的原創(chuàng)文章,轉(zhuǎn)載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權】