每份報名表都有一個力量表,他們很少同意。一個變成綠色 Summer2024!另一個人稱之為弱,第三個想要一個你已經輸入的符號。分歧不是隨機的。每個儀表都是攻擊者如何猜測的小模型,每個模型都有盲點。
本指南解釋瞭如何估計密碼強度、使用真實密碼上的熵公式、破解時間數字假設什麼、檢查器可以檢測哪些模式和不能檢測哪些模式,以及 NIST 目前的指南建議使用什麼而不是符號規則。範例使用 密碼強度檢查器,下面的每個數字都是該工具報告的所示密碼。
TL;DR: 密碼強度是攻擊者需要的猜測次數,通常以位元表示為熵:長度×log2(字元池的大小)。每個額外的位元都會使工作量加倍。密碼強度檢查器計算該數字,將其削減為常見密碼、重複模式、序列和鍵盤運行,並將結果從非常弱(28 位元以下)到非常強(128 位元及以上)進行評級,破解時間估計每秒100 億次離線猜測和每秒線上猜測。熵公式看不到帶有替換的字典單詞,因此
P@ssw0rd1仍然得分公平。長度和隨機性是有幫助的。支票以客戶端方式運行,免費,無需註冊,密碼永遠不會上傳。
密碼強度是什麼意思?
密碼強度是衡量攻擊者平均需要多少猜測才能找到密碼的指標。它不是衡量密碼看起來有多複雜的指標。當密碼不可預測時,密碼很強;當密碼是從大量同樣可能的選項中選擇時,密碼是不可預測的。
這就是為什麼強度通常以位元來引用。具有 40 位元熵的密碼就像從 2^40(約 1.1 兆)中選擇一項一樣難以猜測,同樣可能的選擇。每增加一位,搜尋就會加倍。
密碼熵是如何計算的?
標準估計值將密碼乘以#39;長度乘以每個字元貢獻的位數,這取決於它從中抽取了多少個可能的字元:
entropy (bits) = length × log2(pool size)
檢查器根據密碼中存在的字元類型建立池:
| 字元類型 | 添加到池中 | 如果單獨使用,則每個字元的位數 |
|---|---|---|
| 小寫 a 到 z | 26 | 4.70 |
| 大寫 A 到 Z | 26 | 4.70 |
| 數字 0 到 9 | 10 | 3.32 |
| ASCII 符號和空間 | 33 | 5.04 |
| ASCII 以外的任何內容(口音、表情符號) | 100 | 6.64 |
使用所有四種 ASCII 類型的密碼每個字元的池數為 26 + 26 + 10 + 33 = 95,log2 (95) = 6.57 位元。
工作範例:隨機 16 個字元的密碼
- 池:全部四種類型,95 個字元。
- 每個字元的位數:log2 (95) = 6.5699。
- 熵:16 × 6.5699 = 105.1 位元。
檢查器對強者進行評級。來自同一池的 20 個字元隨機密碼給出 20 × 6.5699 = 131.4 位,它跨越 128 位元線進入非常強。
只有當密碼確實是從該池中隨機產生時,該公式才是誠實的。人類選擇的密碼使用一小部分可預測的空間,這就是模式檢查的用武之地。
檢查器使用什麼分數帶?
調整模式後,檢查器將熵轉換為五個標籤之一。
| 調整後的熵 | 標籤 | 它在實踐中意味著什麼 |
|---|---|---|
| 28 位元以下 | 很弱 | 幾乎立即被任何攻擊發現 |
| 28 至 36 位元以下 | 弱 | 快速離線;線上保護有限 |
| 36 至 60 位元以下 | 公平的 | 在線猜測中倖存下來;離線容易受到快速哈希的影響 |
| 60 至 128 位元以下 | 強 | 在當前速度下,暴力是遙不可及的 |
| 128 位元及以上 | 非常強壯 | 超越任何可預見的蠻力 |
哪些模式會降低分數?
原始熵處理 aaaaaaaaaaaa 作為一個 12 個字元的小寫密碼,價值 56 位元。沒有人會稱它為強。檢查器在評分前應用四次調整:
- 常用密碼。 將小寫密碼與 53 個洩漏最多的密碼的內建清單進行比較,包括
123456,password,qwerty,letmein和p@ssw0rd. 匹配將熵上限限制為 8 位元。 - 全密碼重複。 如果整個密碼重複一個短單位,例如
abcabc或者aaaaaa1,熵大約崩潰為一個單位加幾個位的熵。 - 運行相同的字元。 連續三個或更多相同的字符,例如
zzz,將熵乘以 0.75。 - 序列。 任何三個字元都從字母表、數字或鍵盤行開始
qwertyuiop,asdfghjkl和zxcvbnm(向前或向後)使熵乘以 0.75。
它還警告,當密碼短於 8 個字元、僅使用一種字元或僅使用數字時,無需更改數字。
檢查器對真實密碼有何說明?
以下是該工具報告人們常用或建議使用的一組密碼的內容。破解時間使用檢查器' 的兩種攻擊者模型。
| 密碼 | 長度 | 調整後的熵 | 評級 | 離線裂紋時間 | 線上破解時間 | 發出警告 |
|---|---|---|---|---|---|---|
password |
8 | 8.0 位元 | 很弱 | 瞬間 | 瞬間 | 通用密碼;一種字元類型 |
qwerty123 |
9 | 6.0 位元 | 很弱 | 瞬間 | 瞬間 | 通用密碼;順序 |
aaaaaaaaaaaa |
12 | 8.3 位元 | 很弱 | 瞬間 | 瞬間 | 重複圖案;一種字元類型 |
4829 |
4 | 13.3 位元 | 很弱 | 瞬間 | 5秒 | 太短;僅限數字;一種 |
P@ssw0rd1 |
9 | 59.1 位元 | 公平的 | 12個月 | 幾個世紀 | 沒有 |
Summer2024! |
11 | 72.3 位元 | 強 | 幾個世紀 | 幾個世紀 | 沒有 |
Tr0ub4dor&3 |
11 | 72.3 位元 | 強 | 幾個世紀 | 幾個世紀 | 沒有 |
correct horse battery staple |
28 | 164.7 位元 | 非常強壯 | 幾個世紀 | 幾個世紀 | 沒有 |
其中一些可以手工檢查。 qwerty123 與公共清單匹配,將其上限限制為 8 位,並包含鍵盤運行和數字序列,因此 8 × 0.75 = 6.0。為了 4829,池是 10 位,所以 4 × 3.32 = 13.3 位元。平均猜測次數是空間的一半:2^13.3 /2 = 5,000。 1,000 次猜測一秒,即線上 5 秒。
P@ssw0rd1 是有趣的行。它使用所有四種字元類型,因此 9 × 6.57 = 59.1 位,並且它不在公共列表中,因為該列表包含 p@ssw0rd 沒有尾隨數字。檢查器無法知道它是單字"密碼"使用最可預測的替換,破解工具首先嘗試。
裂紋時間估計假設什麼?
這兩個數字模擬了兩個截然不同的攻擊者,並且都從相同的數字開始:所需的平均猜測,即 2 的一半提高到熵。
| 模型 | 每秒猜測 | 代表 |
|---|---|---|
| 離線(快) | 10,000,000,000 | GPU 硬體上遭到攻擊的快速、無鹽雜湊的被盜資料庫 |
| 在線(節流) | 1,000 | 猜測即時登入表單 |
離線數字是悲觀的情況,它是正確的計劃,因為一旦網站'密碼資料庫洩漏,攻擊者就不再受速率限制。每秒 100 億的真實程度完全取決於網站儲存密碼的方式。故意減慢雜湊值(例如 bcrypt)會降低攻擊者的攻擊率'速率很多數量級,其中 bcrypt 產生器指南 詳細解釋,而像無鹽 MD5 或 SHA-1 這樣的快速哈希允許在此範圍內的速率。這 哈希生成器指南 涵蓋這些演算法之間的差異。
顯示器的兩個限制值得了解:
- 在 60 位元或更多位元時,檢查器停止計算並顯示 "世紀"。 根據其自己的離線假設,60 位元平均為 2^59/10^10 = 約 5800 萬秒,約 1.8 年,而這個數字直到約 66 位元才達到一個世紀。對待與引用;世紀與引用;在低 60 年代的密碼上為 "年,而不是世紀"。
- 估計沒有提及違規行為。 洩漏中出現的密碼首先從洩漏清單中猜測,無論其熵如何。
為什麼我的長密碼仍然很弱?
因為只有當角色不可預測時,長度才會有所幫助。檢查器會降低攻擊者首先嘗試的模式分數:重複的區塊,類似運行 1111,一個序列,就像 abcd 或者 9876,或者像鍵盤走路一樣 asdfgh. abcabcabcabc 長 12 個字符,但它是一個重複的三字母單元,包含一個字母序列,因此檢查器給它打分 13.3 位:比完整 95 個字符池中的隨機 3 個字符密碼少,該密碼價值 19.7 位。
反之亦然,而且更重要。有些密碼得分高且較弱,因為字元池公式無法辨識:
- 字典單字、名稱和地點,其中字母交換為相似的數字或符號,例如
Tr0ub4dor&3; - 一個季節或月份加一年加一個符號,例如
Summer2024!; - 個人訊息,例如 pet' 的姓名和出生年份;
- 根據名言或著名例子建構的密碼短語,包括
correct horse battery staple,這來自 xkcd漫畫936 現在出現在破解的單字清單中。
密碼的誠實熵取決於單字的選擇方式,而不是其字元。從 2,048 個單字清單中隨機選取四個單字給出 4 × log2 (2048) = 4 × 11 = 44 位元。六個這樣的單字給出 66 位元。這低於字元公式報告,但它是真實的,這就是為什麼密碼產生器透過隨機過程選擇單字而不是讓人們選擇的原因。
NIST 對密碼有何建議?
美國國家標準與技術研究院制定了密碼指南 NIST 特別出版品 800-63B數位身分指南。其關於檢查密碼的服務建議與舊強度計鼓勵的幾個習慣相符:
- 不要強加諸如 " 之類的構成規則。必須包含一個符號和一個大寫字母"。他們推動人們進行可預測的替換。
- 將新密碼與已知被洩露、常見或預期的值清單進行比較,並拒絕匹配。
- 在沒有妥協證據的情況下,請勿強制定期更改密碼。
- 允許使用長密碼,包括空格和所有可列印字符,因此密碼有效。
目前的修訂版 SP 800-63B-4 保留了這些原則,並提高了用作唯一身份驗證因素的密碼的最小長度。
選擇密碼的人的實用閱讀:長度和隨機性可以完成工作,密碼管理器使隨機密碼可用,而違規檢查與強度計一樣重要。 我是否被 Pwned's 被 Pwned 密碼 服務可讓您使用 k-anonymity 範圍查詢檢查密碼是否出現在已知洩漏中,該查詢僅發送密碼的前五個字元's SHA-1 雜湊值而不是密碼本身。
如何檢查密碼's 力量,一步一步
- 打開 免費密碼強度檢查器 並將密碼輸入或貼上到欄位中。使用眼睛按鈕顯示或隱藏它。
- 讀取評級、調整後的熵(以位元為單位)和長度。
- 比較兩個破解時間,記住"世紀"從 60 位元開始。
- 查看小寫、大寫、數字和符號的組成計數。非 ASCII 字元使用此行中的符號進行計數。
- 閱讀警告,其中列出了特定問題,例如序列或通用密碼。
- 遵循建議並觀看輸入時數字更新。當密碼得分強或更好且沒有警告時,建議會變更為提醒,僅在一個地方使用它並將其儲存在密碼管理器中。
一個小怪癖:長度計算 UTF-16 程式碼單元,JavaScript 測量字串的方式,因此大多數表情符號計算為兩個字元。
在強度檢查器中輸入真實密碼安全嗎?
使用此檢查器,分析完全在您的瀏覽器中以普通 JavaScript 進行。密碼不會透過網路發送、記錄或存儲,並且頁面會繼續斷開網路。該工具僅記錄檢查發生的情況,而不記錄檢查的內容。
一般習慣仍然很合理:不要在您不信任的網站中輸入真實密碼,因為您看不到頁面'程式碼對它們的作用。如果您想在不暴露真實密碼的情況下測試密碼的形狀,請測試相同結構的密碼:相同的長度、相同的字元、相同的單字。
如何使密碼強?
提高實際力量的方法,依影響順序排列:
| 方法 | 熵範例 | 筆記 |
|---|---|---|
| 來自管理器的隨機密碼,20 個字符,所有類型 | 131 位元 | 每個站點都是獨一無二的;沒有什麼好記住的 |
| 隨機密碼,7,776 個單字清單中的 6 個單字 | 6 × 12.9 = 77.5 位元 | 易於輸入;適合主密碼 |
| 隨機密碼,12 個字符,所有類型 | 78.8 位元 | 很難記住 |
| 人類選擇的單字+替換+年份 | 遠低於它的分數 | 出現在破解規則中 |
7,776 字清單的大小與標準骰子清單相同,其中五個骰子擲出每個字,log2 (7776) = 每個字 12.9 位元。
要建立隨機密碼, 密碼產生器 使用瀏覽器繪製字元's Web Crypto 隨機數來源,以及 密碼產生器指南 涵蓋長度和字元集選擇。這 安全工具集線器 列出相關工具,包括 bcrypt 產生器 對於儲存密碼的開發人員。
這種力量檢查器的替代品
- zxcvbn,開源估計器發布 GitHub 上的 Dropbox,將密碼與字典、姓名、日期和常見替換相匹配,並且更擅長捕捉
P@ssw0rd-樣式密碼。它是開發人員的庫而不是頁面。 - 密碼管理器審核 立即檢查您所有帳戶中已儲存的密碼是否重複使用、漏洞和已知漏洞。
- 違規檢查 例如 Pwned Passwords 回答了一個不同的問題:理論上密碼的可猜性如何,而是攻擊者是否已經擁有它。
此檢查器和#39;它的優點是透明度和隱私:它顯示熵、攻擊者模型和確切的警告,並且密碼永遠不會離開您的裝置。



