有線等效加密(WEP)標准是802.11無線安全早期的解決方案,WEP並不安全。
既然WEP並不安全,為什么還要學習WEP呢?
- WEP簡單,相比后續出現的加密協議,它不要求有多么強大的計算能力。一些老的設備,特別是缺乏足夠處理能力的手持設備,WEP已經是最佳選擇;
- 較新的技術,如TKIP,仍舊會用到WEP的幀處理能力;
1. WEP的密碼學背景
WEP用以保護數據的RC4密碼屬於對稱性(密鑰)流密碼(stream cipher),流密碼會用到稱為密鑰流(keystream)的位流,密鑰流隨后會與信息結合,產生密文(ciphertext)。為了還原原始信息,接收端會以相同的密鑰流處理密文。RC4會利用異或(exclusive OR,簡稱XOR)運算結合密鑰流與密文。如下圖所示。
流密碼的運作方式通常是先選用一把較短的密鑰,通過偽隨機數生成器(pseudorandom number generator,PRNG)將之展開為與信息等長的偽隨機數密鑰流,如下圖所示。
2. WEP的加密操作
通信安全有三個主要目的:
-
機密性
防止數據不受未授權的第三者攔截;
-
完整性
確保數據沒有被修改;
-
真實性
真實性是所有安全策略的基礎,因為數據的可信度部分取決於數據源的可靠性;
WEP的數據處理流程如下圖所示:
驅動程序以及接口硬件負責處理數據,然后送出加密過的封包,順序如下:
- 802.11幀被放在隊列中等待發送。幀由標頭(Header)和有效載荷(Payload)組成,根據有效載荷計算出完整性校驗值ICV,並放在有效載荷尾部;
- 隨后組裝幀加密密鑰(或稱WEP種子),WEP種子分為兩部分:秘鑰(secret key)以及初始向量(IV)。添加IV是為了避免出現使用相同密鑰流進行加密的情況,802.11並未限制選取IV時非得使用何種算法;
- 幀加密密鑰被當成RC4密鑰,用以加密步驟1有效載荷和ICV,整個加密過程通常通過RC4專用電路來完成;
- 有效載荷加密之后,就可以組裝待傳的幀。802.11標頭與加密過的有效載荷之間插入WEP標頭,除了IV,WEP標頭中還包含密鑰編號,WEP最多允許定義4個密鑰。一旦附加上最后的標頭,就可以針對真個MAC幀,計算出802.11幀校驗碼(FCS)。
以上闡述了WEP幀的組裝流程,解密的過程剛好相反。一旦使用WEP進行加密,幀主體就會增加8個字節。其中4個字節作為幀主體的IV標頭,另外4個字節作為ICV標尾,如下圖所示。
IV標頭使用3個字節來容納長度為24位的IV,第四個字節則包含填充位以及密鑰標識符(key ID)。數據幀的32位循環冗余校驗(CRC)碼提供了完整性檢查,附加於幀主體之后,同時被RC4保護。
3. 關於WEP的種種問題
-
手動管理密鑰對於變換密鑰工作量大;
-
標准的靜態WEP只提供長度為40位的密鑰,業界標准所提供的密鑰長度最多只達到104位;
-
一旦重復使用密鑰流(keystream),流密碼(stream cipher)就容易被識破。可供使用的IV值(24位)並不大,容易重復;
-
如果不常更換密鑰,攻擊者就可以采集解密字典(decryption dictionarie),即積累以相同密鑰流加密的大量幀,那么破解密鑰就指日可待;
-
WEP使用CRC進行完整性檢查,CRC並沒有密碼學上的安全性;
4. 動態WEP
不同於讓網絡中所有工作站共享一個靜態密鑰來加密所有幀,動態WEP讓網絡上所有工作站使用一個密鑰來加密廣播幀,但個別工作站使用自己的映射密鑰來加密單播幀。動態WEP每隔一段時間就會產生並分配新的密鑰。