1.2.1 蠻力攻擊與字典攻擊
構(gòu)造一個Crack程序,有兩種方法可選擇,一種是使用蠻力攻擊,另一種是字典攻擊。下面,分別估算一下它們的效率。
Unix一共是 [0x00~0xff] 共128個字符,小于0x20 的都是控制符,不能輸入為 口令, 0x7f 為轉(zhuǎn)義符, 不能輸入。 那么總共128- 32 - 1 = 95 個字符可作為口令的字符。 即10(數(shù)字)+33(標點符號)+26*2(大小寫字母) = 95個。
首先估算蠻力攻擊的嘗試次數(shù)。很顯然,該值為m的n次冪。其中,基數(shù)m為可能使用的字符集的大小;冪次n為口令的長度。分下面幾種情形討論:
僅使用字母的組合序列,則m = 26*2 = 52。
使用字母數(shù)字的組合序列,則m = 52 + 10 = 62。
使用字母數(shù)字以及特殊字符的組合序列,則m = 95
表1.3列舉幾個例子,計算所需的嘗試次數(shù)K,對其數(shù)值大小得到一個較確切的印象。
表1.3 不同字符集與長度的口令嘗試次數(shù)
M N K 52
5 38,0204,032
52 6 19,770,609,664
52 7 1,028,071,702,528
62 5 916,132,832
62 6 56,800,235,584
62 7 3,521,614,606,208
95 5 7,737,809,375
95 6 735,091,890,625
95 7 69,833,729,609,375
從該表中可以看出,隨著字符集的擴大與口令長度的增大,所需的嘗試次數(shù)明顯增加。選擇盡量大的字符集和較長的口令,能獲得較高的口令安全。
但如果5個字母是一個常用漢字的拼音或英文單詞,估算一下設(shè)常用詞10000條, 從10000個常用詞中取一個詞與任意一個數(shù)字字符組合成口令,即:10000* 10 = 100000 (10萬種可能性)。因此,借助于資料字典的幫助,可以使Crack的效率大大提高。
構(gòu)造一個Crack程序,有兩種方法可選擇,一種是使用蠻力攻擊,另一種是字典攻擊。下面,分別估算一下它們的效率。
Unix一共是 [0x00~0xff] 共128個字符,小于0x20 的都是控制符,不能輸入為 口令, 0x7f 為轉(zhuǎn)義符, 不能輸入。 那么總共128- 32 - 1 = 95 個字符可作為口令的字符。 即10(數(shù)字)+33(標點符號)+26*2(大小寫字母) = 95個。
首先估算蠻力攻擊的嘗試次數(shù)。很顯然,該值為m的n次冪。其中,基數(shù)m為可能使用的字符集的大小;冪次n為口令的長度。分下面幾種情形討論:
僅使用字母的組合序列,則m = 26*2 = 52。
使用字母數(shù)字的組合序列,則m = 52 + 10 = 62。
使用字母數(shù)字以及特殊字符的組合序列,則m = 95
表1.3列舉幾個例子,計算所需的嘗試次數(shù)K,對其數(shù)值大小得到一個較確切的印象。
表1.3 不同字符集與長度的口令嘗試次數(shù)
M N K 52
5 38,0204,032
52 6 19,770,609,664
52 7 1,028,071,702,528
62 5 916,132,832
62 6 56,800,235,584
62 7 3,521,614,606,208
95 5 7,737,809,375
95 6 735,091,890,625
95 7 69,833,729,609,375
從該表中可以看出,隨著字符集的擴大與口令長度的增大,所需的嘗試次數(shù)明顯增加。選擇盡量大的字符集和較長的口令,能獲得較高的口令安全。
但如果5個字母是一個常用漢字的拼音或英文單詞,估算一下設(shè)常用詞10000條, 從10000個常用詞中取一個詞與任意一個數(shù)字字符組合成口令,即:10000* 10 = 100000 (10萬種可能性)。因此,借助于資料字典的幫助,可以使Crack的效率大大提高。