每年,私人數字安全公司NordPass都會發布一份包含30個國家/地區最流行密碼的列表。與往常一樣, 2022年的最新列表 也包含令人震驚的簡單密碼。前五個密碼是:“password”、“123456”、“123456789”、“guest”和“qwerty”。
毋庸置疑,這些都是弱密碼——但什麼才是好密碼呢?大多數人都知道一些經驗法則:密碼應該儘可能長,包含特殊字元,並且不是一個簡單的單詞。您還應該定期更改密碼,為每個使用者帳戶選擇不同的密碼,並且永遠不要寫下來。同時滿足所有這些要求似乎幾乎是不可能的。而且,一旦您找到了一個好密碼,網站可能還不接受它:要麼太短,要麼包含非法字元,要麼就是太長。例如,PayPal不允許密碼超過20個字元。這些限制使大多數使用者在選擇密碼時感到非常沮喪。
對於其安全密碼要求,許多網際網路服務提供商依賴於美國國家標準與技術研究院釋出的2003年指南,該指南建議密碼應儘可能多地混合使用特殊字元、大寫字母和小寫字母。前NIST員工比爾·伯爾制定了這些指南,但此後他告訴《華爾街日報》,他對其中許多建議感到後悔。這是因為強迫人們更改密碼並要求他們使用特殊字元通常會導致他們選擇易於記住(因此不安全)的密碼,這些密碼遵循特定的方案或模式。例如,“password1”並不比“password”更安全。因此,NIST現在已經修訂了其指南,但並非所有提供商都已效仿。很多時候,您被迫在密碼中使用特殊字元、數字以及大寫和小寫字母。
支援科學新聞報道
如果您喜歡這篇文章,請考慮透過以下方式支援我們屢獲殊榮的新聞報道 訂閱。透過購買訂閱,您正在幫助確保關於塑造我們今天世界的發現和想法的具有影響力的故事的未來。
密碼是如何被破解的?
要了解如何選擇安全密碼,您需要了解駭客是如何工作的。最簡單的方法是系統地嘗試所有可能的密碼組合,這被稱為暴力破解攻擊。幸運的是,以這種方式登入線上提供商(例如電子郵件服務提供商)的情況很少發生。如今,大多數網站都集成了安全機制,可以在多次輸入錯誤的情況下阻止進一步的登入嘗試。然後,您必須以另一種方式確認您的身份(例如,透過單擊電子郵件中的連結)或等待幾分鐘才能再次嘗試登入。
這就是為什麼這種暴力破解攻擊通常在所謂的“離線攻擊”中進行,在這種攻擊中,駭客從網站竊取了登入憑據列表。幾乎所有提供商都對密碼進行加密,而不是以純文字形式儲存其使用者的登入資料。因此,攻擊者收到使用者名稱列表和一個加密字串,該字串不能用於登入網站。但是,透過一些技巧,駭客仍然可以獲得密碼。
為了保護登入資訊,許多提供商使用所謂的雜湊函式來加密其使用者的訪問資料。這些函式將任何長度的字串(例如密碼)轉換為固定長度的程式碼(“雜湊”),例如32個字元。雜湊函式的特殊之處在於:它們實際上是不可逆的。雖然很容易計算任何輸入的雜湊值(至少對於計算機而言),但實際上不可能從雜湊值中獲取原始輸入。因此,當用戶登入網站時,他們輸入密碼,網站會從中計算雜湊值,並將其與儲存的使用者資料(使用者名稱和密碼的雜湊值)進行匹配。透過這種方式,使用者的密碼受到保護。
但是,如果攻擊者能夠捕獲使用者資料和關聯雜湊值的列表,仍然有可能進行暴力破解攻擊。您可以讓計算機建立各種密碼,並使用已知的雜湊函式將其轉換為密文值。然後可以將這些密文值與捕獲列表中的雜湊值進行比較。如果存在匹配項,那麼您很可能找到了相應的密碼。(儘管不太可能,但密碼仍然可能不正確,因為雜湊函式可能會為不同的輸入返回相同的雜湊值)。攻擊者可以花費任意多的時間來執行此操作,因為列表在他們手中,並且他們可以離線處理它。
然後,駭客可以選擇花費大量的計算精力或計算機記憶體來破解雜湊值。在第一種情況下,人們從一個使用者到另一個使用者地工作,每次都嘗試生成雜湊值並與使用者的相應雜湊值進行比較的所有可能的密碼組合。在第二種情況下,人們預先生成所有可能的密碼的雜湊值,並將它們儲存在一個巨大的表中,他們可以將其與使用者的資料進行匹配。這兩種情況都會造成困難。人們要麼需要極其強大的計算機,要麼需要巨大的儲存空間。
巧妙的技巧破解複雜密碼
彩虹表提供了一種折衷方案。基本上,它們提供了一種對密碼及其關聯的雜湊值進行分組的方法,以便您可以儲存更少的內容。從表中提取所需內容需要一定的計算量,但遠小於單獨為每個使用者計算雜湊值所需的計算量。
這種方法背後的想法如下:一旦您從可能的密碼(例如“password”)計算出雜湊值,例如“920ECF10”,您可以使用函式f(920ECF10) = kjhsedn將其轉換回可能的密碼錶示形式。這個新密碼“kjhsedn”與“password”分配到同一組。然後,您計算“kjhsedn”的雜湊值——例如FB107E70——並再次應用f,從而生成一個新的可能的密碼,您將其分配到同一組。
雜湊函式 (H) 用於計算密碼的關聯雜湊值。例如,“wikipedia”的雜湊值為ao4kd。然後,使用另一個函式 (R) 將其轉換回對應於密碼的字串。來源: tradoph/Dake的彩虹表 (CC BY-SA 2.5)
重複此過程n次(其中n應儘可能大)以獲得包含n個可能密碼的組。然後,您選擇一個尚未分配的密碼,並以相同的方式建立一個包含n個內容的新組。重複此步驟,直到您涵蓋了您想要考慮的所有密碼可能性(例如,從八個小寫字母開始)。在彩虹表中,您僅儲存初始密碼(在我們的示例中為“password”)和從中生成的第n個密碼的雜湊值。因此,彩虹表比儲存所有密碼組合的雜湊值要小得多。
現在,如果您想破解被盜列表中的雜湊值,則需要做一些數學運算。使用f,您可以將雜湊值轉換為密碼字串,並再次從中計算雜湊值,直到最終找到彩虹表中的雜湊值。然後您就知道被盜密碼所屬的組。透過計算該組中所有字元組合的雜湊值,您最終會找到相應的密碼。這樣,計算量大大低於計算所有字串的相應雜湊值所需的計算量。
為了防止此類攻擊,許多網站在雜湊函式的輸入中新增一個稱為“鹽”的隨機字串。這些字元在形成雜湊值之前新增到使用者的密碼中。每個使用者都會收到不同的鹽,這些鹽儲存在訪問資料列表中。因此,當駭客嘗試竊取使用者資料時,即使該駭客獲得了關聯的鹽,破解密碼也變得更加困難。攻擊者不必為所有可能的密碼建立雜湊值並將其與列表進行匹配,而是被迫單獨處理每個使用者的資訊。攻擊者必須將特定於使用者的鹽新增到每個可能的密碼中,才能從中計算雜湊值。這種額外的保護層也阻止了彩虹表的使用。引入鹽會使暴力破解攻擊的計算時間增加許多倍。
特殊字元並不總是有幫助
暴力破解攻擊效率低下。然而,對於今天的計算機來說,它們並非特別具有挑戰性。畢竟,計算機有時每秒可以計算數百萬個密碼。如果您選擇了一個僅由小寫字母組成的六位密碼(例如“qwerty”),則計算機必須檢查266,即308,915,776個組合。(六個字母中的每一個都有26種可能性)。計算機只需要幾秒鐘即可計算出該密碼。
透過選擇更長的密碼並擴大字元選擇範圍,所有可能的密碼組合空間也迅速增長。對於由26個大寫字母、26個小寫字母、10個數字和32個特殊字元組成的八字元組合(例如“p4$sW0Rd”),駭客現在將不得不篩選(26 + 26 + 10 + 32)8 = 6.10 x 1015個可能的組合空間。這大約是“qwerty”情況下的2000萬倍,理論上需要花費2000萬倍的時間。
因此,專家根據包含所選字元組合的空間大小對密碼的安全性進行分類。並且因為這是計算機科學的一個子領域,所以人們不考慮十進位制表示的空間大小(“空間包含數萬億個組合”),而是以二進位制表示,它僅由0和1組成(“空間的大小包含32個1和0的組合”)。
此值稱為密碼的熵,並以單位“位元”衡量。例如,四位數的PIN碼包含在大小為104的空間中,這在二進位制表示中對應於10011100010000,因此熵為14位。十進位制表示中的數字N與其熵(二進位制長度)之間的關係由log2N的整數部分給出。(如果log2N產生一個小數,則必須向上舍入到下一個整數。)因此,“qwerty”的熵為log2(308,915,776) ≈ 28.2,即29位。另一方面,“p4$sW0Rd”的熵為log2(6.10 x 1015) ≈ 52.4,即53位。
但僅僅尋找高熵是不夠的。實際上,“p4$sW0Rd”或“qwerty”等密碼的熵比理論計算的熵差得多。這是因為駭客通常不進行純粹的暴力破解攻擊。相反,他們使用“字典”。密碼字典不僅包含一種語言的常用詞,還包含從被盜資料中匯出的流行密碼組合資料集。例如,NordPass使用此類列表來確定不同國家/地區年度最流行的密碼。與此同時,有許多易於訪問的程式,例如 John the Ripper ,用於執行此類字典攻擊。
駭客將常用名稱和單詞與字元和數字字串組合在一起。他們 還進行流行的替換,例如將A變成4。“如果你用3替換E……,不要認為這很聰明,因為它不是,” 計算機科學家邁克·龐德在YouTube頻道Computerphile上的一個影片中說。攻擊可以很容易地利用現有的計算能力破解這種型別的替換。
密碼管理器提供最佳保護
那麼,最安全的密碼是什麼樣的呢?為了充分利用熵,應該從所有可能性的空間中選擇一個隨機字串。對於一個包含特殊字元、數字以及小寫和大寫字母的八字元密碼,這樣的選擇可能是“MA9^Wc7f”。但是記住這樣一個密碼將是很困難的——特別是如果您應該為您的每個其他帳戶選擇一個不同的(且同樣強大的)密碼。
密碼管理器,即生成隨機字串並存儲個人密碼的程式,為這個問題提供了一個解決方案。當然,在選擇提供商時應格外小心,並檢查使用了哪些安全機制。密碼是如何加密的?程式使用的隨機生成器有多好?
一旦您找到了值得信賴的提供商,您仍然需要記住一個用於訪問所有登入資料的“主密碼”。仍然需要一個安全密碼——但只需要一個。您應該能夠很好地記住它,以便隨時訪問密碼管理器,從而訪問您的所有帳戶。 一種流行的策略是“correct-horse-battery-staple”方法:選擇由特殊字元分隔的四到五個單詞的序列。由於字元很多,熵非常大——特別是如果您決定在單詞中間放置另一個特殊字元,例如:“bat%tery”。這可以防止直接的字典攻擊。
如果您隨機選擇單詞,密碼的安全性會提高。為此,您可以使用“diceware方法”。例如:您連續擲骰子五次,得到五個從1到6的數字。然後在 diceware單詞列表中查詢相應的單詞。該列表包含數千個單詞,這些單詞按介於1到6之間的五個骰子數字編號。這樣,您就可以獲得一個易於記住且無法透過字典或暴力破解攻擊直接破解的密碼。
密碼的終結?
與此同時,人們越來越努力地想要徹底擺脫密碼。 多年來,這一直是一個反覆出現的主題, 但在2023年5月,科技巨頭谷歌邁出了第一步:允許使用者使用僅需生物特徵資料的通行金鑰登入。另一種選擇是在經過身份驗證的裝置上接收程式碼(例如透過簡訊傳送到手機),然後在網站上輸入該程式碼。特定於使用者的資料(例如,生物特徵)本地儲存在使用者的裝置上——因此谷歌等提供商無法直接訪問它。 微軟、蘋果和其他主要公司在2022年宣佈,他們也在關注安全的密碼替代方案。
在我們可以不再需要記住密碼的那一天到來之前(如果那一天真的會到來),密碼管理器可能提供最強的保護。即使您有一個複雜的系統,可以為每個使用者帳戶生成不同的密碼,但僅僅因為您可以記住該模式,就意味著它可能不夠複雜。
本文最初發表在《Spektrum der Wissenschaft》上,並經許可轉載。
