從安全角度分析WEP算法

我們已經(jīng)在WEP中發(fā)現(xiàn)了一些的漏洞, 它們極大地削弱了系統(tǒng)的安全性. 具體來講, 我們發(fā)現(xiàn)了下述幾種攻擊手法:

被動攻擊, 基于統(tǒng)計分析來解密數(shù)據(jù)流量.

主動攻擊, 基于已知的明文數(shù)據(jù), 經(jīng)未授權(quán)的移動站向網(wǎng)絡(luò)中注入偽造的數(shù)據(jù)流量.

主動攻擊, 通過欺騙接入點來解密數(shù)據(jù)流量.

字典攻擊, 在分析了大約一天的數(shù)據(jù)流量之后,可以實現(xiàn)實時自動解密所有數(shù)據(jù)流量.

我們的分析表明, 所有的這些攻擊手法, 只需要使用便宜易得的設(shè)備, 可以很容易地實施起來. 我們建議任何使用802.11無線網(wǎng)絡(luò)的用戶不要依賴WEP來提供安全性, 而應(yīng)該使用其它安全措施來保護(hù)他們的無線網(wǎng)絡(luò).

注意, 我們的攻擊手法同時適用于40位和128位的WEP. 它們同樣也適用于采用802.11b標(biāo)準(zhǔn)的無線網(wǎng)絡(luò)(802.11b是對802.11的擴(kuò)展, 可以支持更高的數(shù)據(jù)傳輸速率, 但仍然保留使用WEP協(xié)議).

WEP簡介

802.11標(biāo)準(zhǔn)制訂了無線局域網(wǎng)的通信規(guī)范. 有線等效加密協(xié)議(WEP)被用來防止無線通信被竊聽. WEP的另外一個功能是防止對無線網(wǎng)絡(luò)的未授權(quán)訪問; 該功能并非802.11標(biāo)準(zhǔn)的明確目標(biāo), 但它常常被認(rèn)為是WEP的一項特性.

WEP依賴于在移動站(例如,帶有無線網(wǎng)卡的筆記本)和接入點(即基站)之間共享的密鑰. 該密鑰被用來在發(fā)送數(shù)據(jù)之前加密數(shù)據(jù), 還有一個完整性檢查被用來確保數(shù)據(jù)包在傳輸過程中沒有被篡改. 標(biāo)準(zhǔn)并未說明密鑰是如何建立起來的. 在實踐中, 大多數(shù)設(shè)施在所有移動站和接入點之間共享一個單一密鑰. 更復(fù)雜的密鑰管理技術(shù)可以幫助阻止我們所描述的攻擊; 但是, 據(jù)我們所知, 還沒有商業(yè)產(chǎn)品支持這種技術(shù).

WEP使用RC4加密算法, 這是一個流密碼. 流密碼的原理是將一個短密鑰擴(kuò)展為一個無限的偽隨機(jī)密鑰流. 發(fā)送者通過將密鑰流與明文進(jìn)行XOR操作得到密文. 接收者擁有同樣的短密鑰, 使用它可以得到同樣的密鑰流. 將密鑰流與密文進(jìn)行XOR操作, 即可得到原來的明文.

這種操作模式使得流密碼容易遭受幾個攻擊. 如果攻擊者翻轉(zhuǎn)了密文中的一位, 解密之后, 明文中的相應(yīng)位也將被翻轉(zhuǎn). 此外, 如果竊聽者截獲到了兩份使用相同密鑰流加密的密文, 則他也能夠知道兩個明文的XOR結(jié)果. 已知XOR可以通過統(tǒng)計分析恢復(fù)明文. 統(tǒng)計分析隨著更多使用相同密鑰流加密的密文被截獲而變得更實用. 一旦其中一個明文已知, 很容易就可以恢復(fù)所有其它的.

WEP對這些攻擊均有防御策略. 為了確保數(shù)據(jù)包在傳輸過程中未被修改, 它在數(shù)據(jù)包中使用了一個完整性檢查(IC)的字段. 為了避免使用相同的密鑰流對兩份明文進(jìn)行加密, 一個初始化向量(IV)被用來與共享密鑰一起, 針對每個數(shù)據(jù)包產(chǎn)生不同的RC4密鑰. IV也被包括在數(shù)據(jù)包中. 然而, 它們均沒有被正確實現(xiàn), 導(dǎo)致了糟糕的安全性.

完整性校驗字段被實現(xiàn)為一個CRC-32校驗和, 它是數(shù)據(jù)包有效載荷的一部分. 然而, CRC-32是線性的, 這意味著可以根據(jù)數(shù)據(jù)包的位差異計算出它們的CRC-32之間的位差異. 換句話說, 翻轉(zhuǎn)消息中的第n位, 可以明確推算出其CRC-32中必須被翻轉(zhuǎn)的位, 以產(chǎn)生與修改之后的消息對應(yīng)的校和. 因為位翻轉(zhuǎn)在RC4解密之后被仍然生效, 這使得攻擊者可以任意翻轉(zhuǎn)加密消息中的位, 并正確調(diào)整它的校檢和, 使最終得到的消息看起來合法.

WEP中的初始化向量是一個24位的字段, 作為消息的明文部分被發(fā)送. 初始化向量的取值空間如此之小必然會導(dǎo)致相同密鑰流的重復(fù)使用. 對于一個繁忙的接入點, 它不斷以11Mbps的速度發(fā)送1500字節(jié)的數(shù)據(jù)包, 將在1500 * 8 / (11 * 10^6) * 2^24 = ~18000秒, 或5小時耗盡IV. (時間可能會更少, 因為許多數(shù)據(jù)包小于1500字節(jié).) 這允許攻擊者收集以相同密鑰流加密的密文, 然后通過統(tǒng)計分析來恢復(fù)明文. 更糟的是, 當(dāng)所有移動站使用相同的密鑰時, IV沖突的概率將會更高. 例如, Lucent的無線網(wǎng)卡在網(wǎng)卡初始化時將IV重置為0, 并且每發(fā)送一個包將IV遞增1. 這意味著, 在大致相同的時間插入的兩個網(wǎng)卡將為攻擊者提供豐富的IV沖突機(jī)會. (更糟糕的是, 802.11標(biāo)準(zhǔn)規(guī)定, 改變與每個數(shù)據(jù)包的IV是可選的!)

第一種攻擊手法直接源自上面的分析結(jié)果. 一個被動的竊聽者可以攔截所有的無線流量, 直到發(fā)生IV沖突. 通過對兩個使用同一IV產(chǎn)生的密鑰流加密的密文進(jìn)行XOR操作, 攻擊者即可獲得兩個明文消息的XOR結(jié)果. 所得XOR結(jié)果可以用來推斷兩個消息的明文內(nèi)容. IP流量往往具有很好的可預(yù)測性, 并包括了很多的冗余數(shù)據(jù). 這些冗余數(shù)據(jù)可以用來消除很多關(guān)于消息明文的可能性. 對消息內(nèi)容的進(jìn)一步可信猜測, 可以從統(tǒng)計上減少消息明文可能性的搜索范圍, 在某些場景下, 甚至可以確定明文的確切內(nèi)容.

當(dāng)僅基于兩個數(shù)據(jù)包的統(tǒng)計分析還不能確定結(jié)果時, 攻擊者可以尋找更多的IV碰撞. 在多花一些時間的前提下, 完全有可能恢復(fù)相當(dāng)數(shù)量的使用相同密鑰流加密的數(shù)據(jù)包, 并且統(tǒng)計分析的成功率將快速增長. 一旦有可以恢復(fù)其中一條消息的明文, 所有其它使用相同IV加密的消息之明文均可恢復(fù), 因為所有的成對XOR結(jié)果是已知的.

對這種攻擊手法的一個擴(kuò)展方法是, 使用互聯(lián)網(wǎng)上某處的一臺主機(jī)從外部向無線網(wǎng)絡(luò)內(nèi)部的一臺主機(jī)發(fā)送數(shù)據(jù)流量. 這種流量的內(nèi)容對攻擊者而言是已知的, 即明文是已知的. 當(dāng)攻擊者在802.11上攔截到由他發(fā)送的加密消息時, 他將能夠解密所有使用相同的初始化向量加密的報文.

下面的攻擊手法也是直接源自上面的分析結(jié)果. 假設(shè)攻擊者知道了一條加密消息對應(yīng)的明文. 他可以利用這些知識來偽造合法的加密數(shù)據(jù)包. 該過程包括構(gòu)造一條新的消息, 計算其CRC-32, 并在原來的加密消息之上進(jìn)行位翻轉(zhuǎn), 將明文消息變?yōu)樾孪? 這里的原理是,

RC4(X) xor X xor Y = RC4(Y). 這一數(shù)據(jù)包現(xiàn)在可以發(fā)送給接入點或移動站, 它將作為一個有效的數(shù)據(jù)包而被接受.

通過細(xì)小的變形, 這種攻擊手法可以變得更加陰險. 即使不能完全知道分組的內(nèi)容, 也可以翻轉(zhuǎn)消息中選定的部分位, 并正確調(diào)整其加密形式的CRC(如前一節(jié)中描述的), 得到一個經(jīng)過篡改但是仍然正確的加密數(shù)據(jù)包. 如果攻擊者知道某個數(shù)據(jù)包的部分內(nèi)容, 他可以攔截它, 并在其上執(zhí)行選擇性地修改. 例如, 可以修改通過telnet會話發(fā)送給shell的命令, 或者修改與文件服務(wù)器之間的交互命令.

從兩端同時發(fā)起的主動攻擊

上面的攻擊手法可以被進(jìn)一步擴(kuò)展, 以解密任意數(shù)據(jù)流量. 在這里, 攻擊者并非猜測數(shù)據(jù)包的內(nèi)容, 而是數(shù)據(jù)包的包頭. 通常來講, 這些內(nèi)容是很容易知道或者猜測的; 實際上, 我們只需要猜測目標(biāo)IP地址. 借由這一點, 攻擊者通過翻轉(zhuǎn)某些位來改變目標(biāo)IP地址, 通過惡意移動站進(jìn)行傳送, 來將數(shù)據(jù)包發(fā)送到在互聯(lián)網(wǎng)上某處由他控制的機(jī)器上. 大多數(shù)無線設(shè)施都連接到了互聯(lián)網(wǎng)之上; 數(shù)據(jù)包將被接入點解密, 并將解密之后的包通過合適的網(wǎng)關(guān)和路由器轉(zhuǎn)發(fā)到攻擊者的機(jī)器上, 得到明文. 如果還可以猜測到TCP報頭, 甚至可以修改數(shù)據(jù)包的目標(biāo)端口號為80, 這使得它可以通過大多數(shù)防火墻.

字典攻擊

狹小的IV取值空間允許攻擊者構(gòu)建一個解密字典. 一旦他知道了某個數(shù)據(jù)包的明文, 他就可以計算出該IV對應(yīng)的RC4密鑰流. 該密鑰流可以用來解密其它所有使用相同IV的數(shù)據(jù)包. 隨著時間的推移, 使用上面的技術(shù), 攻擊者可以構(gòu)建一個IV-密鑰流字典. 這個表只需要極少的存儲空間(~15GB); 一旦構(gòu)建成功, 攻擊者可以解密該無線鏈路上任何一個數(shù)據(jù)包.

監(jiān)聽

盡管解碼2.4GHz的數(shù)字信號有難度, 但是監(jiān)聽802.11數(shù)據(jù)傳輸?shù)挠布τ诠粽邅碚f則是現(xiàn)成的, 即普通的802.11消費者產(chǎn)品. 這些產(chǎn)品具備所有必要的監(jiān)聽能力, 攻擊者所需要做的便是讓它物盡其用.

盡管大多數(shù)802.11設(shè)備被設(shè)計為忽略那些它們未知的加密內(nèi)容, 但是通過修改網(wǎng)卡驅(qū)動的配置, 我們還是能夠成功地截取到使用WEP加密的數(shù)據(jù)流量. 我們可以使用混雜模式讓網(wǎng)卡固件將未知的密文返回到我們這里來以便進(jìn)行進(jìn)一步的檢查和分析.

主動攻擊(這種手法要求傳輸數(shù)據(jù), 而不只是監(jiān)聽數(shù)據(jù))看起來更困難一些, 但并非不可能. 大多數(shù)802.11產(chǎn)品擁有可編程固件, 可以逆向工程并修改它來向攻擊者提供注入數(shù)據(jù)流量的能力. 當(dāng)然, 這樣的逆向工程需要投入相當(dāng)長的時間(我們自己沒有這樣做過), 但需要注意的是, 這是一個一次性投入. 一群有能力的人可以共同致力于此, 然后通過地下圈子分發(fā)惡意固件, 或?qū)⑵涑鍪劢o對間諜活動有興趣的團(tuán)體. 這是一個高利潤的業(yè)務(wù), 所以投入的時間可以很容易地賺回來.

有線等效加密協(xié)議(WEP)不安全. 這個協(xié)議的問題在于, 設(shè)計者錯誤地理解了密碼學(xué)原語, 導(dǎo)致以一種不安全的方式來組合使用它們. 這里的攻擊手法表明, 邀請密碼協(xié)議設(shè)計方面的專業(yè)人士進(jìn)行公開審稿是多么地重要; 只有這樣做了之后, 才能真正地避免這里指出的問題.