密码强度

**密碼強度**，指一個密碼對抗猜測或是暴力破解的有效程度。一般來說，指一個未授權的存取者得到正確密碼的平均嘗試次數。密碼的強度和其長度、複雜度及不可預測度有關。強密碼可以降低安全漏洞的整體風險，但並不能降低採取其他安全措施的需要。

攻擊者提交猜測密碼的速率是衡量一個系統安全性的重要因素。有的系統在多次嘗試失敗後會暫停登入一段時間，在沒有其他安全缺陷時，這種系統可以用相對簡單的密碼保護。但是系統必須以某種形式儲存使用者密碼，當這些資料被竊取時，就有極大的危險。

## 建立密碼

密碼可以被自動（使用隨機方式）或人為建立出來，後一種更為常見。暴力破解隨機密碼的強度可以精確計算，而計算人類產生的密碼強度是比較難的。一般而言，人在建立一個新帳戶時都被要求輸入密碼。因為一般人建立密碼時都會有某種固定模式，粗略地估計這種密碼的強度是可能的，而掌握這些模式就可以方便攻擊者進行破解。

另外，密碼破解器經常從常用密碼表中選取密碼，這些密碼表包含各種人類語言的詞典、許多被竊取資料庫中的商業或社交帳戶的明文或雜湊密碼，與其他常見的密碼。因此，所有在表上的或與其相似的密碼都被認為是弱密碼。數十年來，對多使用者電腦系統的密碼調查表明，40％甚至更多密碼使用電腦程式就可以破解出來，並且當某個帳戶已被侵入時更加容易。

## 密碼驗證

使用密碼進行身分認證的系統都一定有一套驗證輸入密碼的機制，如果這些密碼只是簡單地以明文儲存在系統上，一個擁有足夠權限的攻擊者就可以取得在系統上儲存的所有使用者名稱和密碼，使得整個系統向攻擊者敞開，甚至會危及其他使用同樣或相似的密碼的系統。一個減少危險的辦法就是用密碼雜湊函式加密密碼。諸如 SHA 的函式是很難由雜湊值算出原文的，一定程度上防範了攻擊。然而攻擊者可以用碰撞的方法猜測明文，如今的密碼破解程式也可以透過暴力破解的方式從雜湊值找出明文密碼。

日益進步的電腦科學也加快了測試密碼的速度。2007 年 8 月，Elcomsoft 公司發明了使用普通的繪圖卡反向計算密碼的技術並開始使用，隨後在美國申請了專利。2010 年，喬治亞技術研究所使用 GPGPU 使得破解密碼的速度提升。2011 年，商業產品也宣稱他們可以在一台普通的桌上型電腦上使用高階的 GPU 來每秒測試高達 2,800,000,000 個密碼，這樣的裝置可以在一天之內破解一個由 10 個字母組成的密碼。並且可以並列在多台電腦上進行處理來提高速度。

改變常見雜湊的演算法可以相對地增加一些計算的時間，但並未廣泛採用。

## 弱密碼

弱密碼是易於猜測的密碼，主要有以下幾種：

1. 順序或重複的字元：「12345678」、「111111」、「abcdefg」、「asdf」、「qwer」鍵盤上的相鄰字母。
2. 使用數字或符號的僅外觀類似替換，例如使用數字「1」、「0」替換英文字母「i」、「O」，字元「@」替換字母「a」等。
3. 登入名的一部分：密碼為登入名的一部分或完全和登入名相同。
4. 常用的單詞：如自己和熟人的名字及其縮寫，常用的單詞及其縮寫、寵物的名字等。
5. 常用數字：比如自己或熟人的生日、證件編號等，以及這些數字與名字、稱號等字母的簡單組合。

下面是一些常見的弱密碼：

* _admin_ —— 太容易猜出
* _123_ —— 同上
* _abcde_ —— 同上
* _abc123_ —— 同上
* _123456_ —— 由於文化因素極其常用
* _1234_ —— 同上
* _888888_ —— 同上
* _1234567890_ —— 同上
* _susan_ —— 常見人名
* _DonaldJTrump_ —— 高知名度人物
* _monkey_ —— 常見動物名且正好六位
* _password_ —— 經常被使用，極易猜出
* _p@$$\/\/0rd_ —— 簡單的字母替換，易被軟體破譯
* _rover_ —— 寵物的常用名稱，也是一個單詞
* _12/3/75_ —— 日期
* _nbusr123_ —— 可能是使用者名稱，如果是這樣的話很容易被猜出
* _asdf_ —— 常用鍵盤的鍵排列
* _qwerty_ —— 常用鍵盤的鍵排列
* _aaaaa_ —— 重複的字母，極易被破解
* _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 個，因此有 $95^{10}$ 種組合，是不可能在短時間內透過全部列舉來破譯的。

目前的密碼建議為：即使沒有使用大小寫字母或加入其他符號，只要密碼**夠長**，使用一些無意義但便於記憶的句子或單詞組合也足夠安全。例如上例的「correcthorsebatterystaple」就是由四個英文單詞組成。

### 國家標準技術研究所改正建議

2017 年 6 月，國家標準技術研究所（NIST）發佈新的《800-63》指引第三版，改正已沿用超過十年、受各大政府機構、銀行、業界採用的舊建議，不再強調使用人腦難以記憶的特別符號、數字的無意義組合，而且亦不再建議密碼需每九十日汰換，因為經研究證明此項指引並沒有對系統安全帶來有益的效果。NIST 檔案的舊版原作者伯爾（Bill Burr）並在《華爾街日報》存取中公開道歉，稱當時他並無得到可靠的數據作嚴謹研究，只依靠來自八十年代、不合時宜的舊檔案作為參考，而他的建議亦沒有考慮到一般人的生活習慣及思考模式。負責撰寫新版指引的 NIST 顧問格拉西（Paul Grassi）指出，舊的要求不利使用，對抵擋駭客攻擊的作用不大；如果使用者能夠在腦海中構想出一幅其他人無法想像的圖畫，以此作為密碼便是最好的，一句夠長的完整句子，會優於較短的字母、數字及符號混合密碼。華爾街日報參照廣泛流傳的 xkcd 漫畫，指出只要密碼夠長，拼合幾個看似無意義、但便於該使用者記憶的字詞作為密碼，更能有效抵擋駭客攻擊，暴力破解會需要更久的時間。

## 保護使用者密碼

通常，電腦使用者被建議「不要在任何地方因任何原因寫下密碼」或「不要在不同的帳號使用同一個密碼」。實際上，一個電腦使用者通常有十幾個受密碼保護的帳號，並使用同一個密碼。而那些試圖使用不同密碼的使用者往往由於密碼太多，而記不清哪個帳戶和哪個密碼相對應。2005 年的一次安全會議上，來自微軟的一個專家提出：「我認為密碼策略應改為你可以寫下你的密碼。我有 68 個不同的密碼，如果我不允許將他們寫下來，我將怎麼辦？我不得不使用同樣的密碼」。比較好且實際的建議是在一個低安全性的帳號（如 bbs）使用簡單的密碼，在高安全性的程式（例如：網路銀行）使用強密碼。

一旦密碼被寫下來，使用者不能將它放在一些明顯的地方，如通信錄，抽屜等。最糟糕可能也是最常見的情況是密碼被寫在一張便條紙上，放在電腦附近。比較安全的做法是放在保險箱裡。

亦可使用密碼管理器管理密碼。

## 參考文獻

## 外部連結

* （繁體中文）英特爾密碼評等工具 Archive.is 的存檔，存檔日期 2013-08-28
* （簡體中文）微軟密碼檢查器（頁面存檔備份，存於網際網路檔案館）
* （繁體中文）Password Meter 中文版
* （簡體中文）百度密碼安全鑑定
* （英文）Chrome 瀏覽器擴充：安全密碼產生器
* （英文）選擇一個好的密碼（頁面存檔備份，存於網際網路檔案館）
* （英文）密碼原理指導
* （英文）普通（弱）密碼範例
* （簡體中文）改善使用者體驗之密碼強度提示（頁面存檔備份，存於網際網路檔案館）