翻譯自http://www.isaac.cs.berkeley.edu/isaac/wep-faq.htmlhtml
這篇文章講述了咱們對有線等效加密協議(WEP, 802.11標準的一部分)的一些分析, 由Nikita Borisov, Ian Goldberg, 和David Wagner 3人共同完成. 若是你有任何疑問, 請經過wep@isaac.cs.berkeley.edu與咱們聯繫.web
咱們已經在WEP中發現了一些的漏洞, 它們極大地削弱了系統的安全性. 具體來說, 咱們發現了下述幾種攻擊手法:算法
咱們的分析代表, 全部的這些攻擊手法, 只須要使用便宜易得的設備, 能夠很容易地實施起來. 咱們建議任何使用802.11無線網絡的用戶不要依賴WEP來提供安全性, 而應該使用其它安全措施來保護他們的無線網絡.
注意, 咱們的攻擊手法同時適用於40位和128位的WEP. 它們一樣也適用於採用802.11b標準的無線網絡(802.11b是對802.11的擴展, 能夠支持更高的數據傳輸速率, 但仍然保留使用WEP協議).shell
802.11標準制訂了無線局域網的通訊規範. 有線等效加密協議(WEP)被用來防止無線通訊被竊聽. WEP的另一個功能是防止對無線網絡的未受權訪問; 該功能並不是802.11標準的明確目標, 但它經常被認爲是WEP的一項特性.編程
WEP依賴於在移動站(例如,帶有無線網卡的筆記本)和接入點(即基站)之間共享的密鑰. 該密鑰被用來在發送數據以前加密數據, 還有一個完整性檢查被用來確保數據包在傳輸過程當中沒有被篡改. 標準並未說明密鑰是如何創建起來的. 在實踐中, 大多數設施在全部移動站和接入點之間共享一個單一密鑰. 更復雜的密鑰管理技術能夠幫助阻止咱們所描述的攻擊; 可是, 據咱們所知, 尚未商業產品支持這種技術.安全
下面的兩節內容分別說明了協議中存在的問題以及攻擊的技術細節; 這些內容假設讀者具有一些加密協議方面的背景知識. 你不妨直接跳轉到下述章節, 它們討論了攻擊的可行性.服務器
WEP使用RC4加密算法, 這是一個流密碼. 流密碼的原理是將一個短密鑰擴展爲一個無限的僞隨機密鑰流. 發送者經過將密鑰流與明文進行XOR操做獲得密文. 接收者擁有一樣的短密鑰, 使用它能夠獲得一樣的密鑰流. 將密鑰流與密文進行XOR操做, 便可獲得原來的明文.網絡
這種操做模式使得流密碼容易遭受幾個攻擊. 若是攻擊者翻轉了密文中的一位, 解密以後, 明文中的相應位也將被翻轉. 此外, 若是竊聽者截獲到了兩份使用相同密鑰流加密的密文, 則他也可以知道兩個明文的XOR結果. 已知XOR能夠經過統計分析恢復明文. 統計分析隨着更多使用相同密鑰流加密的密文被截獲而變得更實用. 一旦其中一個明文已知, 很容易就能夠恢復全部其它的.less
WEP對這些攻擊均有防護策略. 爲了確保數據包在傳輸過程當中未被修改, 它在數據包中使用了一個完整性檢查(IC)的字段. 爲了不使用相同的密鑰流對兩份明文進行加密, 一個初始化向量(IV)被用來與共享密鑰一塊兒, 針對每一個數據包產生不一樣的RC4密鑰. IV也被包括在數據包中. 然而, 它們均沒有被正確實現, 致使了糟糕的安全性.ide
完整性校驗字段被實現爲一個CRC-32校驗和, 它是數據包有效載荷的一部分. 然而, CRC-32是線性的, 這意味着能夠根據數據包的位差別計算出它們的CRC-32之間的位差別. 換句話說, 翻轉消息中的第n位, 能夠明確推算出其CRC-32中必須被翻轉的位, 以產生與修改以後的消息對應的校和. 由於位翻轉在RC4解密以後被仍然生效, 這使得攻擊者能夠任意翻轉加密消息中的位, 並正確調整它的校檢和, 使最終獲得的消息看起來合法.
WEP中的初始化向量是一個24位的字段, 做爲消息的明文部分被髮送. 初始化向量的取值空間如此之小必然會致使相同密鑰流的重複使用. 對於一個繁忙的接入點, 它不斷以11Mbps的速度發送1500字節的數據包, 將在1500 * 8 / (11 * 10^6) * 2^24 = ~18000秒, 或5小時耗盡IV. (時間可能會更少, 由於許多數據包小於1500字節.) 這容許攻擊者收集以相同密鑰流加密的密文, 而後經過統計分析來恢復明文. 更糟的是, 當全部移動站使用相同的密鑰時, IV衝突的機率將會更高. 例如, Lucent的無線網卡在網卡初始化時將IV重置爲0, 而且每發送一個包將IV遞增1. 這意味着, 在大體相同的時間插入的兩個網卡將爲攻擊者提供豐富的IV衝突機會. (更糟糕的是, 802.11標準規定, 改變與每一個數據包的IV是可選的!)
第一種攻擊手法直接源自上面的分析結果. 一個被動的竊聽者能夠攔截全部的無線流量, 直到發生IV衝突. 經過對兩個使用同一IV產生的密鑰流加密的密文進行XOR操做, 攻擊者便可得到兩個明文消息的XOR結果. 所得XOR結果能夠用來推斷兩個消息的明文內容. IP流量每每具備很好的可預測性, 幷包括了不少的冗餘數據. 這些冗餘數據能夠用來消除不少關於消息明文的可能性. 對消息內容的進一步可信猜想, 能夠從統計上減小消息明文可能性的搜索範圍, 在某些場景下, 甚至能夠肯定明文的確切內容.
當僅基於兩個數據包的統計分析還不能肯定結果時, 攻擊者能夠尋找更多的IV碰撞. 在多花一些時間的前提下, 徹底有可能恢復至關數量的使用相同密鑰流加密的數據包, 而且統計分析的成功率將快速增加. 一旦有能夠恢復其中一條消息的明文, 全部其它使用相同IV加密的消息之明文都可恢復, 由於全部的成對XOR結果是已知的.
對這種攻擊手法的一個擴展方法是, 使用互聯網上某處的一臺主機從外部向無線網絡內部的一臺主機發送數據流量. 這種流量的內容對攻擊者而言是已知的, 即明文是已知的. 當攻擊者在802.11上攔截到由他發送的加密消息時, 他將可以解密全部使用相同的初始化向量加密的報文.
下面的攻擊手法也是直接源自上面的分析結果. 假設攻擊者知道了一條加密消息對應的明文. 他能夠利用這些知識來僞造合法的加密數據包. 該過程包括構造一條新的消息, 計算其CRC-32, 並在原來的加密消息之上進行位翻轉, 將明文消息變爲新消息. 這裏的原理是, RC4(X) xor X xor Y = RC4(Y). 這一數據包如今能夠發送給接入點或移動站, 它將做爲一個有效的數據包而被接受.
經過細小的變形, 這種攻擊手法能夠變得更加陰險. 即便不能徹底知道分組的內容, 也能夠翻轉消息中選定的部分位, 並正確調整其加密形式的CRC(如前一節中描述的), 獲得一個通過篡改可是仍然正確的加密數據包. 若是攻擊者知道某個數據包的部份內容, 他能夠攔截它, 並在其上執行選擇性地修改. 例如, 能夠修改經過telnet會話發送給shell的命令, 或者修改與文件服務器之間的交互命令.
上面的攻擊手法能夠被進一步擴展, 以解密任意數據流量. 在這裏, 攻擊者並不是猜想數據包的內容, 而是數據包的包頭. 一般來說, 這些內容是很容易知道或者猜想的; 實際上, 咱們只須要猜想目標IP地址. 藉由這一點, 攻擊者經過翻轉某些位來改變目標IP地址, 經過惡意移動站進行傳送, 來將數據包發送到在互聯網上某處由他控制的機器上. 大多數無線設施都鏈接到了互聯網之上; 數據包將被接入點解密, 並將解密以後的包經過合適的網關和路由器轉發到攻擊者的機器上, 獲得明文. 若是還能夠猜想到TCP報頭, 甚至能夠修改數據包的目標端口號爲80, 這使得它能夠經過大多數防火牆.
狹小的IV取值空間容許攻擊者構建一個解密字典. 一旦他知道了某個數據包的明文, 他就能夠計算出該IV對應的RC4密鑰流. 該密鑰流能夠用來解密其它全部使用相同IV的數據包. 隨着時間的推移, 使用上面的技術, 攻擊者能夠構建一個IV-密鑰流字典. 這個表只須要極少的存儲空間(~15GB); 一旦構建成功, 攻擊者能夠解密該無線鏈路上任何一個數據包.
儘管解碼2.4GHz的數字信號有難度, 可是監聽802.11數據傳輸的硬件對於攻擊者來講則是現成的, 即普通的802.11消費者產品. 這些產品具有全部必要的監聽能力, 攻擊者所須要作的即是讓它物盡其用.
儘管大多數802.11設備被設計爲忽略那些它們未知的加密內容, 可是經過修改網卡驅動的配置, 咱們仍是可以成功地截取到使用WEP加密的數據流量. 咱們可使用混雜模式讓網卡固件將未知的密文返回到咱們這裏來以便進行進一步的檢查和分析.
主動攻擊(這種手法要求傳輸數據, 而不僅是監聽數據)看起來更困難一些, 但並不是不可能. 大多數802.11產品擁有可編程固件, 能夠逆向工程並修改它來向攻擊者提供注入數據流量的能力. 固然, 這樣的逆向工程須要投入至關長的時間(咱們本身沒有這樣作過), 但須要注意的是, 這是一個一次性投入. 一羣有能力的人能夠共同致力於此, 而後經過地下圈子分發惡意固件, 或將其出售給對間諜活動有興趣的團體. 這是一個高利潤的業務, 因此投入的時間能夠很容易地賺回來.
有線等效加密協議(WEP)不安全. 這個協議的問題在於, 設計者錯誤地理解了密碼學原語, 致使以一種不安全的方式來組合使用它們. 這裏的攻擊手法代表, 邀請密碼協議設計方面的專業人士進行公開審稿是多麼地重要; 只有這樣作了以後, 才能真正地避免這裏指出的問題.