萬盛學電腦網

 萬盛學電腦網 >> 無線網絡知識 >> 無線網絡密碼WPA/WPA2基礎知識講解

無線網絡密碼WPA/WPA2基礎知識講解

  首先大家要明白一種數學運算,它叫做哈希算法(hash),這是一種不可逆運算,你不能通過運算結果來求解出原來的未知數是多少,有時我們還需要不同的未知數通過該算法計算後得到的結果不能相同,即你不太可能找到兩個不同的值通過哈希得到同一個結果。哈希是一類算法的統稱,通常哈希算法都是公開的,比如MD5,SHA-1等等。;

  我們平時說的WPA密碼其實叫PSK(pre-shared key),長度一般是8-63字節,它加上ssid通過一定的算法可以得到PMK(pairwise master key)。PMK=SHA-1(ssid,psk) ,PMK的長度是定長的,都是64字節。由於計算PMK的過程開銷比較大,是我們破解花費時間長的關鍵,所以采用以空間換時間的原則把PMK事先生成好,這個事先生成好的表就是常說的HASH表(生成PMK的算法是一種哈希),這個工作就是用airlib-ng這個工具來完成的,我們的快速破解就是這麼來的。

  認證的時候會生成一個PTK(pairwise temporary),這是一組密鑰,具體細節不詳細說了,它的生成方法也是采用的哈希,參數是連接的客戶端MAC地址、AP的BSSID、A-NONCE、S-NONCE、PMK,其中A-NONCE和S-NONCE是兩個隨機數,確保每次連接都會生成不同的PTK。PTK的計算消耗很小。PTK加上報文數據采用一定的算法(AES或TKIP),得到密文,同時會得到一個簽名,叫做MIC(message integrality check),tkip之所以被破解和這個mic有很大關系。

  四次握手包中含有以上的哪些東西呢?客戶端的MAC地址,AP的BSSID,A-NONCE,S-NONE,MIC,最關鍵的PMK和PTK是不包含在握手包裡的!

  8 A2 m6 T& }) U2 J認證的原理是在獲得以上的所有參數後,客戶端算出一個MIC,把原文連同MIC一起發給AP,AP采用相同的參數與算法計算出MIC,並與客戶端發過來的比較,如果一致,則認證通過,否則失敗。

  目前的破解方法是我們獲得握手包後,用我們字典中的PSK+ssid先生成PMK(如果有HASH表則略過),然後結合握手包中的(客戶端MAC,AP的BSSID,A-NONCE,S-NONCE)計算PTK,再加上原始的報文數據算出MIC並與AP發送的MIC比較,如果一致,那麼該PSK就是密鑰。

  目前最耗時的就是算PMK,可謂破解的瓶頸。即使搞定了運算量的問題,海量的密鑰存儲也是個問題(PMK都是64字節長度)!

  最近出來的tkiptun-ng只是可以解開使用tkip加密了的數據包,並不是說能夠快速算出PMK或PSK。如果感興趣,可以到書店看看講哈希的書,說不定你把這些HASH算法都破解出來了。

  wpa_supplicant套件中有個小工具,叫做wpa_passphrase,它和airolib-ng的作用差不多,都是用來生成PMK,在backtrack中應該自帶這個工具。比如有個ssid為TP-LINK,PSK是12345678,那麼生成PMK的方法就是wpa_passphrase TP-LINK 12345678,結果應該是這樣:

  network={ ssid="TP-LINK"

  #psk="12345678"

  psk=1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da

  psk=1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da其實就是PMK了,一般在電腦上運行查看無線密碼的軟件就是得到這個,把1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da直接輸入到無線客戶端中就可以連上該ssid,相當於輸入了12345678,生成PMK的過程是不可逆的,即無法通過1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da來逆推得到12345678。可以看到同樣是psk是12345678,如果ssid名字改變,那麼pmk就會發生改變,這就是為什麼用airolib-ng建表是只能按ssid生成

copyright © 萬盛學電腦網 all rights reserved