計(jì)算機(jī)的處理能力不斷增強(qiáng),幫助用戶更快地解決日益復(fù)雜的問題。但副作用是,幾年前還無法猜到的密碼可以在2024年被黑客在幾秒鐘內(nèi)輕松破解。例如,RTX 4090 GPU能夠在17秒內(nèi)猜出由相同大小寫的英文字母和數(shù)字組成的8個(gè)字符的密碼,或者36個(gè)可組合字符。
卡巴斯基實(shí)驗(yàn)室對(duì)暴力攻擊抵抗力的研究發(fā)現(xiàn),很大比例的密碼(59%)可以在一小時(shí)內(nèi)被破解。
密碼通常是如何存儲(chǔ)的?
為了能夠?qū)τ脩暨M(jìn)行身份驗(yàn)證,網(wǎng)站需要一種方法來存儲(chǔ)登錄密碼對(duì),并使用這些密碼對(duì)來驗(yàn)證用戶輸入的數(shù)據(jù)。在大多數(shù)情況下,密碼以哈希而非明文形式存儲(chǔ),這樣攻擊者就無法在發(fā)生泄露時(shí)使用它們。為了防止在彩虹表的幫助下猜到密碼,密碼存儲(chǔ)時(shí)還會(huì)在哈希之前添加鹽。
雖然哈希本質(zhì)上是不可逆的,但是可以訪問泄露數(shù)據(jù)庫的攻擊者可以嘗試猜測(cè)密碼。他們的嘗試次數(shù)是無限的,因?yàn)閿?shù)據(jù)庫本身沒有任何防止暴力破解的保護(hù)機(jī)制?,F(xiàn)成的密碼猜測(cè)工具(如hashcat)也可以在網(wǎng)上輕松獲取。
方法論
卡巴斯基的研究調(diào)查了在各種暗網(wǎng)網(wǎng)站上發(fā)現(xiàn)的1.93億個(gè)密碼,并估計(jì)了使用暴力和各種高級(jí)算法(如字典攻擊和/或常見字符組合枚舉)從哈希中猜測(cè)密碼所需的時(shí)間。通過字典,我們可以了解密碼中常用的字符組合列表。它們包括但不限于真正的英語單詞。
暴力攻擊
暴力破解方法仍然是最簡單、最直接的方法之一:計(jì)算機(jī)嘗試所有可能的密碼選項(xiàng),直至找到有效的為止。但這并非一種“放之四海而皆準(zhǔn)”的方法:枚舉會(huì)忽略字典密碼,而且在猜測(cè)較長的密碼時(shí)明顯比猜測(cè)較短的密碼更差。
卡巴斯基研究人員分析了應(yīng)用于所審查數(shù)據(jù)庫的暴力破解速度。為了清楚起見,研究人員將示例中的密碼根據(jù)其包含的字符類型劃分為不同模式。
- a:密碼只包含小寫字母或大寫字母。
- aA:密碼同時(shí)包含小寫字母和大寫字母。
- 0:密碼包含數(shù)字。
- !:密碼包含特殊字符。
使用暴力破解密碼所需的時(shí)間取決于字符類型的長度和數(shù)量。表中的結(jié)果是針對(duì)RTX 4090 GPU和加鹽MD5哈希算法計(jì)算的。此配置中的枚舉速度是每秒1640億個(gè)哈希值。表格中的百分比為四舍五入。
密碼模式 |
該類型密碼在數(shù)據(jù)集中的份額,% |
暴力破解密碼的份額(按模式,%) |
最長密碼長度(按破解時(shí)間) |
|||||||
<60s |
60s-60min |
60min-24h |
24h-30d |
30d-365d |
>365d |
24h-30d |
30d-365d |
>365d |
||
aA0! |
28 |
0.2 |
0.4 |
5 |
0 |
9 |
85 |
- |
0 |
10 |
a0 |
26 |
28 |
13 |
15 |
11 |
10 |
24 |
11 |
12 |
13 |
aA0 |
24 |
3 |
16 |
11 |
0 |
15 |
55 |
- |
10 |
11 |
a0! |
7 |
2 |
9 |
0 |
14 |
15 |
59 |
9 |
10 |
11 |
0 |
6 |
94 |
4 |
2 |
0 |
0 |
0 |
- |
- |
- |
a |
6 |
45 |
13 |
10 |
9 |
6 |
17 |
12 |
13 |
14 |
aA |
2 |
15 |
22 |
11 |
14 |
0 |
38 |
10 |
- |
11 |
a! |
1 |
6 |
9 |
11 |
0 |
11 |
62 |
- |
10 |
11 |
aA! |
0.7 |
3 |
2 |
12 |
10 |
0 |
73 |
9 |
- |
10 |
0! |
0.5 |
10 |
27 |
0 |
18 |
13 |
32 |
10 |
11 |
12 |
! |
0.006 |
50 |
9 |
10 |
5 |
6 |
19 |
11 |
12 |
13 |
最流行的密碼類型(28%)包括小寫字母和大寫字母、特殊字符和數(shù)字。在所審查的樣本中,大多數(shù)密碼都很難被暴力破解。大約5%的密碼可以在一天內(nèi)被猜出,但85%的密碼需要一年以上才能破解。破解時(shí)間取決于密碼的長度:9個(gè)字符的密碼可以在一年內(nèi)被猜出,但包含10個(gè)字符的密碼則需要一年多。
最難抵御暴力破解的密碼是那些僅由字母、數(shù)字或特殊字符組成的密碼。樣本中這樣的密碼占比14%。它們中的大多數(shù)可以在不到一天的時(shí)間內(nèi)破解。
智能暴力攻擊
如上所述,暴力破解是一種次優(yōu)密碼猜測(cè)算法。密碼通常由特定的字符組合組成:單詞、姓名、日期、序列(“12345”或“qwerty”)。如果讓暴力算法考慮下述內(nèi)容將可以加速這一過程:
- Bruteforce_corr是暴力破解方法的優(yōu)化版本。您可以使用大樣本來測(cè)量某個(gè)密碼模式的頻率。接下來,您可以為每個(gè)品種分配與其實(shí)際頻率相對(duì)應(yīng)的計(jì)算時(shí)間百分比。因此,如果有三種模式,并且第一種模式在50%的情況下使用,第二種和第三種模式在25%的情況下使用,那么我們的計(jì)算機(jī)每分鐘將花費(fèi)30秒來枚舉模式1,15秒來枚舉模式2和模式3。
- ZXCVBN是一種用于測(cè)量密碼強(qiáng)度的高級(jí)算法。該算法識(shí)別密碼所屬的模式,如“單詞、三位數(shù)字”或“特殊字符、字典單詞、數(shù)字序列”。接下來,它計(jì)算枚舉模式中每個(gè)元素所需的迭代次數(shù)。因此,如果密碼包含字典單詞,那么查找它將需要與字典大小相等的迭代次數(shù)。如果模式的一部分是隨機(jī)的,則需要對(duì)其進(jìn)行暴力破解。如果您知道猜測(cè)模式的每個(gè)組件所需的時(shí)間,則可以計(jì)算破解密碼的總復(fù)雜性。此方法有一個(gè)限制:成功枚舉需要指定密碼或假設(shè)模式。但是,您可以通過使用被盜樣本來發(fā)現(xiàn)模式的流行程度。然后,與暴力破解選項(xiàng)一樣,為模式分配與出現(xiàn)次數(shù)成比例的計(jì)算時(shí)間。我們將這個(gè)算法命名為“zxcvbn_corr”。
- Unogram是最簡單的語言算法。它不需要密碼模式,而是依賴于從密碼樣本中計(jì)算出的每個(gè)字符的頻率。該算法在枚舉時(shí)優(yōu)先考慮最流行的字符。因此,要估計(jì)破解時(shí)間,只需計(jì)算密碼中出現(xiàn)字符的概率即可。
- 3gram_seq、ngram_seq是根據(jù)前n-1個(gè)字符計(jì)算下一個(gè)字符的概率的算法。該算法首先枚舉一個(gè)字符,然后依次添加下一個(gè)字符,同時(shí)從最長和最頻繁出現(xiàn)的n-gram開始。在這項(xiàng)研究中,研究人員使用了n-gram(從1到10個(gè)字符不等),其在密碼數(shù)據(jù)庫中出現(xiàn)了50多次。3gram_seq算法限制為n-gram,最多包括三個(gè)字符。
- 3gram_opt_corr、ngram_opt_corr是n-grams的優(yōu)化版本。之前的算法通過每次添加一個(gè)字符來從頭生成密碼。然而,在某些情況下,如果從末尾、中間或同時(shí)從多個(gè)位置開始,枚舉速度會(huì)更快。*_opt_*算法檢查上述特定密碼的變體,并選擇最佳密碼。然而,在這種情況下,我們需要一個(gè)密碼模式,允許我們確定從哪里開始生成。當(dāng)針對(duì)不同的模式進(jìn)行調(diào)整時(shí),這些算法通常較慢。不過,它們可以為特定密碼提供顯著的優(yōu)勢(shì)。
此外,對(duì)于每個(gè)密碼,我們計(jì)算了一個(gè)最佳值:在所使用的所有算法中最佳的破解時(shí)間。這是一個(gè)假設(shè)的理想情況。為了實(shí)現(xiàn)它,您需要“猜測(cè)”一個(gè)合適的算法,或者在自己的GPU上同時(shí)運(yùn)行上述每個(gè)算法。
下面是通過在RTX 4090 GPU上運(yùn)行加鹽MD5算法來測(cè)量密碼強(qiáng)度的結(jié)果。
破解時(shí)間 |
被暴力破解密碼的百分比 |
|||||||
ngram_seq |
3gram_seq |
unogram |
ngram_opt |
3gram_opt |
zxcvbn |
bruteforce |
最佳 |
|
<60s |
41% |
29% |
12% |
23% |
10% |
27% |
10% |
45% |
60s-60min |
14% |
16% |
12% |
15% |
12% |
15% |
10% |
14% |
60min-24h |
9% |
11% |
12% |
11% |
12% |
9% |
6% |
8% |
24h-30d |
7% |
9% |
11% |
10% |
11% |
9% |
9% |
6% |
30d-365d |
4% |
5% |
7% |
6% |
8% |
6% |
10% |
4% |
>365d |
25% |
30% |
47% |
35% |
47% |
35% |
54% |
23% |
結(jié)果顯示,當(dāng)使用最有效的算法時(shí),所審查的樣本中有45%的密碼可以在一分鐘內(nèi)猜出,59%可以在一小時(shí)內(nèi)猜出,73%可以在一個(gè)月內(nèi)猜出。只有23%的密碼需要一年以上才能破解。
重要的是,猜測(cè)數(shù)據(jù)庫中的所有密碼所花費(fèi)的時(shí)間幾乎與猜測(cè)其中一個(gè)密碼所花費(fèi)的時(shí)間一樣多。在攻擊過程中,黑客會(huì)檢查數(shù)據(jù)庫中當(dāng)前迭代中獲得的哈希值。如果哈希值存在于數(shù)據(jù)庫中,那么該密碼將被標(biāo)記為已破解,算法將繼續(xù)處理其他密碼。
使用字典單詞會(huì)降低密碼強(qiáng)度
為了找到最能抵御黑客攻擊的密碼模式,研究人員計(jì)算了一組擴(kuò)展標(biāo)準(zhǔn)的最佳值。為此,研究人員創(chuàng)建了一個(gè)包含四個(gè)或更多字符的常用組合的字典,并將它們添加到密碼模式列表中。
- dict:密碼包含一個(gè)或多個(gè)字典單詞。
- Dict_only:只包含字典單詞。
密碼模式 |
該類型密碼在數(shù)據(jù)集中的份額,% |
字典攻擊破解密碼的份額(按模式,%) |
最長密碼長度(按破解時(shí)間) |
|||||||
<60s |
60s-60min |
60min-24h |
24h-30d |
30d-365d |
>365d |
24h-30d |
30d-365d |
>365d |
||
dict_a0 |
17 |
63 |
15 |
8 |
5 |
3 |
7 |
10 |
11 |
12 |
aA0! |
14 |
5 |
6 |
5 |
5 |
3 |
76 |
6 |
7 |
8 |
dict_aA0 |
14 |
51 |
17 |
10 |
7 |
4 |
11 |
9 |
10 |
11 |
dict_aA0! |
14 |
34 |
18 |
12 |
10 |
6 |
20 |
7 |
8 |
8 |
a0 |
10 |
59 |
22 |
6 |
6 |
1.8 |
6 |
10 |
11 |
12 |
aA0 |
10 |
19 |
13 |
13 |
6 |
7 |
42 |
9 |
10 |
11 |
0 |
6 |
92 |
5 |
1.5 |
1.3 |
0 |
0 |
15 |
- |
- |
dict_a0! |
5 |
44 |
16 |
10 |
8 |
5 |
17 |
9 |
9 |
10 |
dict_a |
4 |
69 |
12 |
6 |
4 |
2 |
6 |
11 |
12 |
13 |
a0! |
2 |
31 |
19 |
13 |
9 |
5 |
23 |
9 |
9 |
10 |
a |
1.2 |
76 |
7 |
6 |
3 |
3 |
6 |
11 |
12 |
13 |
dict_aA |
1.2 |
56 |
15 |
8 |
6 |
3 |
11 |
9 |
10 |
10 |
dict_a! |
0.8 |
38 |
16 |
10 |
8 |
5 |
23 |
8 |
9 |
10 |
aA |
0.7 |
26 |
10 |
28 |
7 |
2 |
27 |
9 |
10 |
10 |
dict_aA! |
0.5 |
31 |
17 |
11 |
10 |
6 |
26 |
8 |
9 |
9 |
0! |
0.4 |
53 |
15 |
8 |
7 |
5 |
13 |
9 |
10 |
11 |
dict_only |
0.2 |
99.99 |
0.01 |
0.0002 |
0.0002 |
0 |
0 |
18 |
- |
- |
dict_0 |
0.2 |
89 |
6 |
2 |
2 |
0 |
0 |
15 |
- |
- |
aA! |
0.2 |
11 |
8 |
10 |
16 |
3 |
52 |
8 |
9 |
9 |
a! |
0.1 |
35 |
16 |
10 |
9 |
5 |
25 |
8 |
9 |
10 |
dict_0! |
0.06 |
52 |
13 |
7 |
6 |
4 |
17 |
9 |
10 |
11 |
! |
0.006 |
50 |
10 |
6 |
8 |
4 |
20 |
8 |
9 |
10 |
結(jié)果顯示,大多數(shù)(57%)被審查的密碼包含字典單詞,這大大降低了密碼的強(qiáng)度。其中一半可以在不到一分鐘的時(shí)間內(nèi)破解,67%可以在一小時(shí)內(nèi)破解。只有12%的字典密碼足夠強(qiáng),需要一年以上的時(shí)間才能猜到。即使使用了所有推薦的字符類型(大寫字母、小寫字母、數(shù)字和特殊字符),也只有20%的密碼能抵抗暴力破解。
研究發(fā)現(xiàn)最流行的字典序列包括以下幾種:
- 名字:“艾哈邁德”、“阮”、“kumar”、“凱文”、“丹尼爾”;
- 熱門詞匯:“永遠(yuǎn)”、“愛”、“谷歌”、“黑客”、“游戲玩家”;
- 標(biāo)準(zhǔn)密碼:password、qwerty12345、admin、12345、team。
非字典密碼占樣本的43%。有些為弱密碼,例如由相同大小寫的字母和數(shù)字組成(10%)或僅由數(shù)字組成(6%)。然而,添加所有推薦的字符類型(a0 !模式)使得76%的密碼足夠強(qiáng)大。
結(jié)語
現(xiàn)代GPU能夠以驚人的速度破解用戶密碼。最簡單的暴力破解算法可以在不到一天的時(shí)間內(nèi)破解任何八個(gè)字符以內(nèi)的密碼。智能黑客算法甚至可以快速猜出更長的密碼。這項(xiàng)研究讓我們對(duì)密碼強(qiáng)度得出了以下結(jié)論:
- 許多用戶的密碼不夠強(qiáng):59%的密碼可以在一小時(shí)內(nèi)被猜出。
- 使用有意義的單詞、名稱和標(biāo)準(zhǔn)字符組合可以顯著減少猜測(cè)密碼所需的時(shí)間。
- 最不安全的密碼是完全由數(shù)字或單詞組成的密碼。
為了保護(hù)用戶帳戶免受黑客攻擊,建議遵循如下建議:
- 記住,最好的密碼是隨機(jī)的,由計(jì)算機(jī)生成的。許多密碼管理器都能夠生成密碼。
- 使用助記詞,而不是有意義的短語。
- 檢查您的密碼是否能抵御黑客攻擊。您可以在密碼檢查器或zxcvbn的幫助下做到這一點(diǎn)。
- 確保您的密碼不包含在任何泄露的數(shù)據(jù)庫中。使用安全解決方案,提醒用戶密碼泄露。
- 避免在多個(gè)網(wǎng)站使用相同的密碼。如果您的密碼是唯一的,那么破解其中一個(gè)密碼會(huì)大大降低損害。
原文鏈接:https://securelist.com/password-brute-force-time/112984/