向攻擊者學習?密碼保護,你需要這樣的反套路!
只要你是人類,肯定不可避免反復(fù)用過某一兩個密碼。實際上,大部分年齡介于 18-65 歲之間的網(wǎng)民都這樣做過,并且越是年輕的網(wǎng)民,越有可能為自己的所有帳戶使用同一個密碼。
大家都知道這種做法不好,而且大部分網(wǎng)民都知道怎樣創(chuàng)建足夠強的密碼:應(yīng)該包含隨機字母、數(shù)字和字符,至少 16 位長,并且最重要的是:必須確保唯一性。
那么為什么大家不為自己的每個帳戶創(chuàng)建這樣不僅唯一,而且足夠安全的密碼?原因在于,按照美國國家標準與技術(shù)協(xié)會(NIST)去年發(fā)布的新版標識管理指南的結(jié)論,對于密碼“復(fù)雜性”的強調(diào),實際上忽略了需要持續(xù)管理大量密碼這一現(xiàn)實情況。
每個網(wǎng)民平均有大約 200 個在線帳戶,因此實際上很難去責怪用戶不保證自己大量密碼的唯一性。但同時我們更沒有理由去責怪那些為了遵守優(yōu)秀實踐而要求用戶必須使用足夠復(fù)雜密碼,但對用戶的忽視又束手無策的公司。
不幸的是,雖然 NIST 的新版標識管理指南對于密碼安全機制的矯正提供了看似非常卓越的路線圖,但在密碼要求、安全檢查或用戶密碼使用習慣方面,實際上并不會產(chǎn)生多大的影響。
是時候了,企業(yè)必須停止抵抗變化,引導(dǎo)自己的員工和客戶養(yǎng)成更安全、更可管理的密碼使用習慣。了解威脅的具體實施方式,這有助于我們采取簡單的預(yù)防性措施斬斷伸向受保護帳戶的黑手。
別被人猜到了
一如往常,網(wǎng)絡(luò)漫畫網(wǎng)站 XKCD 通過簡潔風趣的漫畫描述了帳戶被接管的實際情況(其實真不需要太多攻擊手段) —— “這把鑰匙能打開那個鎖嗎?”
我們可以非常合理地做出這樣的假設(shè):位于某地的某人針對某個網(wǎng)站運行了帳戶檢查工具,輸入一系列已知的郵件地址和類似密碼,或包含網(wǎng)站名稱的密碼。例如使用“123456”、“abcd1234”或“password”,畢竟這些都是不安全密碼界的佼佼者。
密碼不應(yīng)與用戶名相同,不應(yīng)包含網(wǎng)站或相關(guān)服務(wù)的名稱,也不應(yīng)是連續(xù)字母或數(shù)字,更不應(yīng)是簡單的組合或普通單詞。我們都知道,攻擊者可以通過一些工具非??焖俚貦z查所有此類密碼,進而判斷自己能否打開某個用戶帳戶的大門,這些工具還會試著使用密碼的各種變體,以此來應(yīng)對用戶們在簡單密碼基礎(chǔ)上發(fā)揮的“小聰明”。
為避免用戶使用易于猜測的密碼,企業(yè)應(yīng)創(chuàng)建或下載常用密碼列表,將用戶使用的密碼與這些列表進行對比。對于相符的,形式較為簡單的,或包含網(wǎng)站 / 服務(wù)名稱的密碼(或者其他類似的變體,例如為披薩外賣網(wǎng)站的帳戶使用“PapaJohn1”這樣的密碼),應(yīng)該建議用戶不要使用。更好的做法則是檢查并確保用戶選擇的密碼并不在第三方已泄露密碼范圍之列。如上文所述,大部分用戶會在多個網(wǎng)站上使用相同的密碼,如果一個網(wǎng)站的密碼外泄,就會將你的公司(以及用戶帳戶)置于危險之中。
別被人輕松破解了
簡單密碼還會造成另一個問題:手頭資源有限的攻擊者可以借助這樣的密碼更快速地破解加密算法。
一些全球很受歡迎的在線服務(wù)依然在使用過時、甚至不安全的加密技術(shù)來“保護”密碼,這一點著實令人感覺遺憾。這些加密算法雖然可以阻止低水平攻擊者通過讀取用戶密碼訪問數(shù)據(jù)庫,但在技能更嫻熟的攻擊者看來,這只不過是一種有趣的“拼圖游戲”而已。
除了使用字典防止用戶設(shè)置重復(fù)、簡單,或其他易于猜測的密碼,企業(yè)還需要了解自己所用哈希算法的局限,并建議用戶設(shè)置更復(fù)雜的密碼,例如同時包含數(shù)字和字母,甚至通過易于記憶的短句來生成更復(fù)雜的密碼。
如上所述,當今攻擊者所用的工具可以通過常用密碼列表發(fā)起攻擊,甚至可以自動嘗試常用密碼的各種變體。實際上,這意味著類似 MD5 這種古老(但依然常用)的哈希算法甚至可以在幾秒鐘內(nèi)被破解,哪怕用戶給密碼添加了一串數(shù)字或?qū)⒆帜?ldquo;o”用數(shù)字“0”替代,也于事無補。
幫助用戶創(chuàng)建更長、更復(fù)雜的密碼,這是一種增加暴力密碼破解難度的好方法,使用諸如 bcrypt 這樣的強哈希算法才能讓密碼更難以被暴力破解。通過將 bcrypt 這樣的算法與類似短句的長密碼(NIST 建議使用包含符號和空格,64 位長的密碼)配合使用,才能真正有效遏制暴力破解(這種情況下的暴力破解可能需要幾十年時間)。
不要直接交鑰匙
保護帳戶不被進行此類攻擊的好的方法是確保密碼沒有被“已經(jīng)”攻陷。攻擊者可能已掌握了數(shù)十億個密碼,這些密碼可能是從明網(wǎng)(Clearnet,“暗網(wǎng)”的對應(yīng)面)盜取而來,甚至被編譯為“組合列表”,其中包含各種用戶名以及對應(yīng)的密碼,而這樣的東西正在黑市以非常低廉的價格出售。好在白帽子和安全專家們也在收集這些密碼,借此追蹤已經(jīng)不再安全的憑據(jù)。
NIST 在新版指南中明確提出,針對已知被攻陷憑據(jù)檢查用戶的密碼,是一種可有效測試密碼安全性的做法。更重要的是,企業(yè)通過這樣的檢查可以幫助客戶和員工更全面地了解自己所面對的安全態(tài)勢,而用戶安全性的提高也有助于大幅改善整個網(wǎng)絡(luò)的安全性。
已知被攻陷憑據(jù)列表不僅可以免費獲取,甚至可以通過這樣的靜態(tài)列表,實現(xiàn)比以往單純提出密碼復(fù)雜度要求時更高程度的密碼安全保護。
然而靜態(tài)的列表會逐漸過時,因此 IT 團隊需要定期進行更新。從長遠的角度來看,具備一個持續(xù)更新的已知被盜密碼數(shù)據(jù)庫,這已經(jīng)成為一種更好的策略。但企業(yè)也不需要用手工的方式對這樣的列表進行增補,IT 團隊可以放心地定期檢查新密碼和現(xiàn)有密碼,而這些服務(wù)通常會包含自動化的緩解工具,對需要更新密碼的員工或用戶發(fā)出提醒。
這一點為何重要
很多人都會重復(fù)使用密碼,因此對企業(yè)來說,上文提到的檢查措施非常必要。尤其是對于員工每天都在用的應(yīng)用程序,簡單的或重復(fù)使用的密碼最容易違背 IT 有關(guān)密碼安全的要求,而企業(yè)網(wǎng)絡(luò)內(nèi)部很可能已經(jīng)有至少一個帳戶在使用重復(fù)的密碼。
更糟的是,員工們?yōu)榱朔?IT 要求采取的“小聰明”做法也成了攻擊者設(shè)法潛入受保護網(wǎng)絡(luò)內(nèi)部的最便捷途徑。
針對企業(yè)郵件系統(tǒng)的帳戶目錄使用 NIST 密碼安全檢查機制有助于確保員工沒有重復(fù)使用已被攻陷的密碼,這樣可以更好地保護業(yè)務(wù)數(shù)據(jù),同時也可以確保密碼不會太簡單,太易于猜測,或直接使用了已攻陷密碼的其他變體。
將這樣的措施與強哈希算法配合,這樣一種簡單、自動的機制不僅足以防止帳戶被接管,還有助于幫助用戶養(yǎng)成更好的密碼使用習慣,讓這樣的密碼在面對技能不那么嫻熟的攻擊者時發(fā)揮出更大的保護作用。