密碼強度檢視原始碼討論檢視歷史
密碼強度,指一個密碼對抗猜測或是暴力破解[1] 的有效程度。一般來說,指一個未授權的訪問者得到正確密碼的平均嘗試次數。密碼的強度和其長度、複雜度及不可預測度有關。強密碼可以降低安全漏洞的整體風險,但並不能降低採取其他安全措施的需要。
攻擊者提交猜測密碼的速率是衡量一個系統安全性的重要因素。有的系統在多次嘗試失敗後會暫停登入一段時間,在沒有其他安全缺陷時,這種系統可以用相對簡單的密碼保護。但是系統必須以某種形式儲存用戶密碼,當這些數據被竊取時,就有極大的危險。
密碼驗證
使用密碼進行身份認證的系統都一定有一套驗證輸入密碼的機制,如果這些密碼只是簡單地以明文儲存在系統上,一個擁有足夠權限的攻擊者就可以獲取在系統上儲存的所有用戶名和密碼,使得整個系統向攻擊者敞開,甚至會危及其他使用同樣或相似的密碼的系統。一個減少危險的辦法就是用密碼散列函數加密密碼。諸如SHA的函數是很難由散列值算出原文的,一定程度上防範了攻擊。然而攻擊者可以用碰撞的方法猜測明文,如今的密碼破解程序也可以通過暴力破解的方式從散列值找出明文密碼。
日益進步的計算機科學也加快了測試密碼的速度。2007年8月,Elcomsoft|ElcomSoft公司發明了使用普通的繪圖卡反向計算密碼的技術並開始使用,隨後在美國申請了專利。2010年,喬治亞技術研究所|Georgia Tech Research Institute使用GPGPU使得破解密碼的速度提升。2011年,商業產品也宣稱他們可以在一台普通的桌上型電腦上使用高階的GPU來每秒測試高達2,800,000,000個密碼,這樣的設備可以在一天之內破解一個由10個字母組成的密碼。並且可以並行在多台計算機上進行處理來提高速度。
改變常見散列的算法可以相對地增加一些計算的時間,但並未廣泛採用。
弱密碼
弱密碼是易於猜測的密碼,主要有以下幾種:
- 順序或重複的字符:「12345678」、「111111」、「abcdefg」、「asdf」、「qwer」鍵盤上的相鄰字母。
- 使用數字或符號的僅外觀類似替換,例如使用數字「1」、「0」替換英文字母「i」、「O」,字符「@」替換字母「a」等。
- 登錄名的一部分:密碼為登錄名的一部分或完全和登錄名相同。
- 常用的單詞:如自己和熟人的名字及其縮寫,常用的單詞及其縮寫、寵物的名字等。
- 常用數字:比如自己或熟人的生日、證件編號等,以及這些數字與名字、稱號等字母的簡單組合。
下面是一些常見的弱密碼:
- admin —— 太容易猜出
- 123 —— 同上
- abcde —— 同上
- abc123 —— 同上
- 123456 —— 由於文化因素極其常用
- 1234 —— 同上
- 888888 —— 同上
- 1234567890 —— 同上
- susan —— 常見人名
- DonaldJTrump —— 高知名度人物
- monkey —— 常見動物名且正好六位
- password —— 經常被使用,極易猜出
- p@$$\/\/0rd —— 簡單的字母替換,易被軟件破譯
- rover —— 寵物的常用名稱,也是一個單詞
- 12/3/75 —— 日期
- nbusr123 —— 可能是用戶名,如果是這樣的話很容易被猜出
- asdf —— 常用鍵盤的鍵排列
- qwerty —— 常用鍵盤的鍵排列
- aaaaa —— 重複的字母,極易被破解
- Taiwan —— 地名
- administrator ——太容易猜出
以上僅列舉了極少部分弱密碼。
一家美國公司SplashData曾經總結出2011年最弱的25個密碼,部分已列於上方。而像let me in這樣的密碼由於屬於常見詞組,很容易被破譯。據統計,3.8%的密碼是字典裡的單詞,12%的密碼是單詞加一個數字,其中2/3的機會密碼是數字1。
很多用戶不更換預設密碼,而大部分計算機系統的預設密碼可以在網路上找到,極易被破解。如果用戶使用個人資訊(例如學號、朋友的名字、熟人的生日、電話號碼或駕駛執照號碼等)作為密碼,那麼密碼便會很容易被破解,因為如今很多個人資訊都可以在網路上找到。
太短的密碼,雖然容易輸入,但是也很容易被攻破。
強密碼
一個強密碼通常長度足夠長,排列隨機,這樣就需要花很多時間才能夠破解。下面是強密碼的一些例子(由於以下實例已經公開,所以已經不具備安全性,只作為說明例子):
- t3MEIfreryeT45410A ——不是字典的單詞,既有數字也有字母
- w2M1gD1cxJhs5UH4pQh1EgjOU9yWYRkk ——同上
- Convert_100£ to Euros! ——足夠長,並且有擴展符號增加強度
- *ot$fet÷×』Fr54⅛9&%u ——含鍵盤上沒有的字符
- 9fad37a6aab5912dfa273521d11e0175fa0e8c95 ——隨機字串
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbccdeertttteferwrwerewrwererewreew ——很長的字串幾乎不可能在短時間之內被破解
- hellomicrosoftwikiwikipediaandadminadmintestactioneditsection ——同上
- RBDeT9hqRfS9gw9bEXmRhBrkkgCs2NMfpzWfQXfN3MPZW25wSsHWEsbexVpYtsWs ——同上
- ru0 ej03m06vm03rm3vu04u3d9 g3fu/32u03h3w.6qul4 ——同上,對於兩者之間使用不同輸入法的人極難以破解
- correcthorsebatterystaple——夠長且無意義的句子或單詞組合
上面列出的強密碼的例子的共同特點是相對較長,使用大小寫字母、數字和符號的組合。密碼越長,使用的符號種類越多,就越難破解。值得注意的是,有些系統不支援例如:「#」、「@」和「!」等等符號作為密碼中的字符,因為這些字元可能在有些鍵盤很難找到。在這種情況下,增加其它的數字或字母可以達到同樣的安全效果。
一個10位長的隨機密碼,比如「BpR#e!ai@$」,雖然強度遠弱於上面列出的密碼,但由於常用鍵一共為95個,因此有<math>95^{10}</math>種組合,是不可能在短時間內通過全部列舉來破譯的。
目前的密碼建議為:即使沒有使用大小寫字母或加入其他符號,只要密碼夠長,使用一些無意義但便於記憶的句子或單詞組合也足夠安全。例如上例的「correcthorsebatterystaple」就是由四個英文單詞組成。
國家標準技術研究所改正建議
2017年6月,國家標準技術研究所(NIST)發佈新的《800-63》指引第三版,改正已沿用超過十年、受各大政府機構、銀行、業界採用的舊建議,不再強調使用人腦難以記憶的特別符號、數字的無意義組合,而且亦不再建議密碼需每九十日汰換,因為經研究證明此項指引並沒有對系統安全帶來有益的效果。NIST文件的舊版原作者伯爾(Bill Burr)並在《華爾街日報》訪問中公開道歉,稱當時他並無得到可靠的數據作嚴謹研究,只依靠來自八十年代、不合時宜的舊文件作為參考,而他的建議亦沒有考慮到一般人的生活習慣及思考模式。負責撰寫新版指引的NIST顧問格拉西(Paul Grassi)指出,舊的要求不利使用,對抵擋駭客攻擊的作用不大;如果用戶能夠在腦海中構想出一幅其他人無法想像的圖畫,以此作為密碼便是最好的,一句夠長的完整句子,會優於較短的字母、數字及符號混合密碼。華爾街日報引用廣泛流傳的xkcd漫畫,指出只要密碼夠長,拼合幾個看似無意義、但便於該用戶記憶的字詞作為密碼,更能有效抵擋駭客攻擊,暴力破解會需要更久的時間。
保護用戶密碼
通常,計算機用戶被建議「不要在任何地方因任何原因寫下密碼」或「不要在不同的帳號使用同一個密碼」。實際上,一個計算機用戶通常有十幾個受密碼保護的帳號,並使用同一個密碼。而那些試圖使用不同密碼的用戶往往由於密碼太多,而記不清哪個帳戶和哪個密碼相對應。2005年的一次安全會議上,來自微軟的一個專家提出:「我認為密碼策略應改為你可以寫下你的密碼。我有68個不同的密碼,如果我不允許將他們寫下來,我將怎麼辦?我不得不使用同樣的密碼」。比較好且實際的建議是在一個低安全性的帳號(如bbs)使用簡單的密碼,在高安全性的程序(例如:網路銀行)使用強密碼。
一旦密碼被寫下來,用戶不能將它放在一些明顯的地方,如通信錄,抽屜等。最糟糕可能也是最常見的情況是密碼被寫在一張便條紙上,放在計算機附近。比較安全的做法是放在保險箱裡。
亦可使用密碼管理器管理密碼。
創建密碼
密碼可以被自動(使用隨機方式)或人為創建出來,後一種更為常見。暴力破解隨機密碼的強度可以精確計算,而計算人類產生的密碼強度是比較難的。一般而言,人在創建一個新賬戶時都被要求輸入密碼。因為一般人創建密碼時都會有某種固定模式,粗略地估計這種密碼的強度是可能的,而掌握這些模式就可以方便攻擊者進行破解。
另外,密碼破解器經常從常用密碼錶中選取密碼,這些密碼錶包含各種人類語言的詞典、許多被竊取數據庫中的商業或社交賬戶的明文或散列密碼,與其他常見的密碼。因此,所有在表上的或與其相似的密碼都被認為是弱密碼。數十年來,對多用戶計算機系統的密碼調查表明,40%甚至更多密碼使用計算機程序就可以破解出來|time=2019-10-31T18:40:01+00:00,並且當某個賬戶已被侵入時更加容易。