世界口令日=糟糕建議日?
常換口令就安全?未必!
5月份第一個星期四是“世界口令日”,本應是提醒人們重新審視自己口令策略的日子,卻被某些公司當成了公關機會,社交媒體上滿是糟糕的建議。
今年的“糟糕口令建議”獎花落無線通信行業游說機構CTIA(美國無線通信與互聯網協會)。該協會甚至為此專門設立了一個網頁,在口令日當天上午各種發推宣傳。
它在推文寫道:“今天是世界#口令日!提醒你pin碼/口令要常換常新哦。”然而,正如很多人立馬指出的,這條建議根本臭不可聞。
不過,認真想想:這不是正確的建議嗎?難道不是幾乎所有系統管理員都不得不修改系統讓人們每隔幾個月就重置口令以更好地保證安全嗎?
沒錯,但那都是2014年時的老黃歷了。自2015年末開始,世界幾大政府部門,從英國間諜機構GCHQ(政府通信總部)到美國標準設立機構國家標準與技術局(NIST),再到消費者機構聯邦貿易委員會(FTC),都強烈建議不要頻繁更換口令。
話雖如此,數十億的用戶名和口令泄露基本上定義了剛剛過去的這幾年,從電子郵件提供商到信用征詢機構、家裝商店、零售店,甚至政府部門,都沒能逃過用戶名/口令泄露的魔爪。
既然是這樣,難道不是更應該讓人們定期更換口令嗎?不好說。可以說是,也可以說不是。
說是,是因為這些信息總會過時,迅速變得無關緊要。說不是,是因為頻繁重置傷精費神,容易讓人們傾向于采用更簡單的口令,并不能真正給使用暴力破解的黑客增加任何難度。
不過,即便2019年隨著黑客攻擊模式的改變而每個人都建議定期修改口令,即便到了2021年人們又嚴厲譴責那些提出了2018年建議的組織,我們都無需大驚小怪。
從來都不缺組織機構和個人上趕著告訴你你應該怎樣操作口令:NCSC、CESG、NIST、FTC、谷歌、微軟、Mozilla、斯諾登……
但那又怎樣?他們都說是時候審視口令的不同方面了,但給出的建議又經常相互沖突。最后拿出的所謂最佳口令建議我們往往能在此后兩年一遍又一遍地拎出來開嘲諷。
隨機口令還是可讀口令?
是個人都知道口令直接設成“password”就跟銀行卡密碼設成“123456”一樣蠢。但還是有眾多用戶這么干,以致大多數登錄門戶設計者不得不直接設了硬編碼的“愚蠢口令禁用”門檻。
但是,然后呢?“password1”又能好上多少?足夠好了嗎?替換幾個字符,弄成“p@ssw0rd”這樣的行不行?顯然,客觀講,后者看起來是比前者強上一些。但問題是比這好得多的辦法不是沒有啊。不過,這些好辦法基本落入兩種選擇:隨機口令,或是可讀口令。
最好的隨機口令是真正隨機的,不是什么轉頭就忘的奇怪拼寫,而是壓根兒永遠記不住的字母、數字和符號的組合,比如“4&bqJv8dZrXgp”。
這種口令之所以更好,是因為要產生并使用它,你得用個口令管理器。口令管理器是個好東西,我們稍后再討論。
但是還有個問題:如果有人想要破解你的隨機口令,他們很可能會用自動化軟件對一個系統狂轟濫炸成千上萬個可能口令組合,直到最后命中正確的哪一個。
這種情況下,再怎么隨機都沒用,口令的長度決定一切。計算機無所謂你用哪種語言的字符當口令,但口令長度越長,所需猜解次數越多,而且是指數級增多。
經過20年的不懈努力,我們終于教會大家使用人類很難記住,但計算機很容易猜解的口令了。
當然,以上假設中很大一部分落在大家都會在口令中引入數字、符號和大寫字母上。如果不引入這些東西,口令破解軟件就只需嘗試小寫字母,破解時間會大幅縮短。
因為長度是關鍵,也因為輸入隨機字母和數字太考驗人的耐性,有很多組織和個人就認為口令應由用戶能實際記住的幾個隨機單詞構成,比如“correct horse battery staple”。
這么做有點好處,谷歌已經推行好幾年了。于是,哪種選擇更好呢?隨機口令?可讀口令?
答案是:都好,也都不好。如果你想記住口令并親自敲入,那可讀單詞組合更好。但如果太多人都不在口令中用到數字和符號,口令的強度會受到影響。
而且,很多組織機構嚴格的口令策略也要求用戶注冊時必須在口令中含有大寫字母、數字和符號。這種情況下,可讀單詞組合式口令事實上并不可行。
總體看來,隨機口令相比之下有效得多。因為隨機口令通常會迫使用戶轉向另一種完全不同的口令使用方式——不同用戶使用不同口令。這樣就能規避掉使用相同口令的其他賬戶被黑的風險了。而且,如果用戶已經啟用反正都記不住的隨機口令,那就不妨再長一點咯!
結論:如果想記住口令,用可讀式的;否則,用隨機的。但一定要確保口令長度不太短,至少要超過10位吧。
隨之而來的另一個問題:
口令管理器還是大腦?
推薦使用口令管理器的理由簡直不要太多。首先,如果你能養成每次登錄都用口令管理器的習慣,那你基本上就是在提升自己的整體安全狀況了——因為每次登錄都不一樣了。
另外,既然都已經用軟件保存&粘貼口令了,為什么不增加點口令長度呢?隨機+夠長,真的是護住在線安全的好辦法,也是僅憑用戶名/口令訪問機密信息的不安全系統中用戶所能獲得的最佳安全方式了。
不過,缺點也不是沒有。源遠流長的人腦還是會有些獨特的優勢的。
最大的優勢當然就是存在人腦里的口令不會被黑,而存在某個數據庫中的口令是有可能被黑的。口令管理器雖然很棒,但它們依然只是個軟件,并不能免疫安全漏洞這種東西。
口令管理器提供商自然會加倍努力地保護自身產品安全。但商業需求會導致解決方案安全性作出妥協。比如說,最好口令管理器之一的1Password,就將其賬戶遷移到了“在線保險柜”中,用戶的所有口令都存在線上,通過手機/計算機訪問,而不是直接存在用戶設備本地。
這么做有幾個好處。比如,用戶無需再在各設備間同步以確保所有東西都是最新的。公司角度來看,這么做也大大方便了按月計費而不是一錘子買賣。
然而不幸的是,這種方法也讓口令管理器提供商成為了全球黑客的眾矢之的:只要能破解這一個系統,它托管的所有口令就盡在我手。另外,別忘了,各國政府總有辦法強迫這些公司交出這些本應保密的信息,有時候還附帶禁言令,拿了你的口令你都不知道。
可用性也是個問題:每次想登錄個網站都要打開個App或運行個軟件也是件蠻痛苦的事。
相反,記在腦子里倒是可以隨時隨地毫無障礙地取用,還不用付費,可算作是不上鎖還黑不著的數據庫了吧。
結論:使用并慣于使用口令管理器吧。除非你要保護的東西真的極端機密。但如果真的是極端機密的東西,那你就不應該只通過用戶名/口令的方式訪問之。
經常修改口令?
如前文討論過的,經常修改和根本不改都有各自的理由。
經常修改意味著舊口令毫無用處。至少理論上毫無用處。但實際上,很多研究人員都發現,因為我們是人不是機器,這種方法帶來了其他一系列問題。
舉個例子,如果不得不經常修改自己的口令,人們就傾向于使用更短更不安全的口令。人們會弱化對口令本身固有安全性的重視程度,因為很快又會換掉了嘛。這明顯不合邏輯,但老實說,也并非全無道理,畢竟我們大多數人并不真的覺得自己會被黑。
經常修改口令還會吞掉大量的資源:各種系統需要頻繁更新,人們老是被催著去該口令。而且,“新”口令沒那么容易記住,也就導致不斷的重置和不停麻煩技術部那些本就不堪重負的技術支持人員。
改還是不改?多久改一次?那就是個平衡問題:定期修改口令的好處超出了其不利因素嗎?大多數情況下,并不。
在有充分理由懷疑已經被黑客盯上的情況下,修改口令是有意義的。但那時處于這種情況下的人們應該已經強烈注意到了運營安全的需求,其中就包括使用會定期修改的復雜長口令。每隔幾個月就從IT部門調幾個人過來告訴他們那些本就已經在做的事毫無必要,也很煩人。
于是,我們真正討論的是那些身處高位卻對安全毫無概念的人:基本上,就是那些首席級高管和政客了。對他們而言,讓手下人去做就對了。
最常見的強制修改口令的情況最容易發生在被黑過的公司身上,比如推特,被黑后讓每個用戶都改了口令。但在企業層面上,還是別費力不討好了,強制定期更換口令不適合作為一項策略規定。
結論:雖然很有吸引力,但別強制定期更改口令。
雙因子身份驗證?
雙因子身份驗證最棒的一點,是多了層額外的安全保護——以正確用戶名/口令登錄后還短信一條臨時驗證碼之類的。
也就是說,除了掌握你的用戶名/口令,還必須持有(或能訪問)你的手機,才可以登錄你的賬戶。這大概是當前正常預算范圍內普通用戶能獲得的合理安全和抵御遠程訪問最有效的方式了。
雙因子方法沒有物理安全或生物特征掃描器那么好,但也足夠好了。基本可以確信試圖訪問某系統的人就是其所聲稱的那個人。
當然,無論是對系統管理員還是對用戶而言,雙因子身份驗證也有可能帶來痛苦的體驗。每次訪問系統都會帶來額外的費用和繁瑣手續,還有時間延遲。但如果是個重要系統,不用權衡,直接上雙因子吧。
自己的銀行賬戶需不需要雙因子身份驗證?當然需要!那可都是血汗錢。那么,Facebook或者亞馬遜賬戶呢?嗯,可能需要吧。于是,在線安全的另一大問題浮現——超越口令和用戶本身。
結論:重要登錄(社交媒體、電子商務、銀行業務)上用雙因子身份驗證。自己運營的每個重要系統上都提供雙因子身份驗證選項。就這么做吧,雖然會麻煩一點,但黑客也同樣覺得雙因子身份驗證很麻煩啊。
更健壯的系統
雖然每個人都會擔心用戶及其口令問題,隨時在變還會相互沖突的各種建議就是這種擔心的明證,但事實上,口令問題沒有所謂的正確答案。
任何僅依賴用戶名/口令訪問的系統基本上都是在“歡迎入侵”。真正的安全工作,真正應該重視的地方,是口令現象背后的東西。
暴力破解只適用于容忍數千次登錄嘗試的系統。雖然X次錯誤嘗試之后鎖定賬戶會讓用戶沮喪乃至暴躁,但這確實是遏制暴力破解攻擊的超有效方法。
同樣的,引入雙因子身份驗證系統或許有點麻煩,但它也能大幅增強安全。設置入侵檢測系統并安排專人管理,是比試圖改變每個用戶的行為更有效的資源和時間利用方式。NIST其實在這方面有挺多好建議。
引入具體的口令策略是把雙刃劍。強制用戶使用超過8位的口令,還至少要包含1個大寫字母、1個數字,有助于改善安全狀況。
但這種做法完全無視了用戶再三設置口令都不被通過的挫敗感。更別說還有些讓人抓狂的小決定:可以用“#”不能用“%”,可以用冒號不能用分號等等。
準備好應付大量口令重置請求和令人生無可戀的技術支持要求電話吧,同時千萬記住別犯蠢用明文發送口令。
理想世界中會有一套標準供不同系統溝通可接受的口令類型,口令管理器能自動配置新口令,而整個過程只需用戶點擊一下按鈕即可完成。
當然,這就是Facebook和谷歌的做法,他們利用自身龐大的既有用戶群讓公司企業可以更容易地讓用戶安全登錄公司系統,雖然同時也雁過拔毛地刮取信息轉手變賣……
“用Facebook登錄”按鈕的吸引力是巨大的,但真的用Facebook登錄的IT專業人士最好去面壁懺悔一下。
然后,還有個更殘酷的真相:如果每個人都用同一個系統,那大家就都不安全了。安全出自多樣性。
總結
綜上,更有水平的口令使用指南如下:
- 使用口令管理器和長口令。
- 盡量啟用雙因子身份驗證,別抱怨那額外的一步。
- 腦子里常備2套口令:用在不甚重要但不創建賬戶就登錄不了的網站上的一兩個隨時可以拋棄的簡單口令;還有就是可以記住且永遠不會告訴別人的一兩個重要的長口令(四五個對你自身有意義的隨機單詞就挺好)。后者用于銀行賬戶和類似的重要系統。如果用戶不幸遭遇災禍提前到閻王面前報到,想要訪問這些賬戶的人就必須發函并親自前來驗明與用戶的合法關系才行。
- 使用2個瀏覽器:一個用來登錄Facebook、谷歌之類的,另一個用來訪問其他的。別讓這些瘋狂吞噬數據的大家伙侵入你的日常在線生活。
- 最后,別浪費時間試圖教導別人應該怎樣管理口令。這么做對你沒有任何好處,你不是在浪費時間做無用功,就是把你自己放到了別人IT支持員工的位置上——相信我,IT支持不是什么愉快的經歷。
有疑問?想想斯諾登會怎么做就好了啊!