無線局域網安全(一)———WEP加密

版權聲明:本文爲CSDN博主「奔跑的路」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lee244868149/article/details/52691266

這篇文章是關於無線局域網加密的第一篇文章,所以先對無線局域網的加密做一個簡單的概述。

其實我們平常在使用wifi的時候,往往會用到的加密方式主要有WEP(pre-RSNA), WPA(TKIP), WPA2(CCMP-AES), 如果有個別對安全要求比較高的也會使用企業級加密(802.1x). 在最新的802.11-2010標準中,有明確的支持新的無線設備應該拋棄WEP和WPA加密方式,而且必須支持WPA2加密方式,但是不得不接受的是,現在我們是有的大多數設備並沒有更新的這麼快,廣泛的WEP和WPA仍然在使用者,而且新開發的設備也應該保持對他們的兼容,所以即使在最新開發的產品中也並沒有完全按照802.11-2010的要求,直接放棄對WEP和WPA的支持。

個人覺得,即使剛開始瞭解無線加密,也有必要從WEP加密開始掌握WEP-WPA-WPA2-802.1x等相關知識,一是這些東西至少在當前階段還用的上,二是後面那些更高級的加密方法其實根本上還是基於WEP加密思想改進而來的。

其實無線加密主要是對數據在鏈路層進行加密,如下圖,802.11主要是對physical和Data-link層進行了定義,而數據鏈路層又分成兩個部分,媒介訪問控制(MAC)和邏輯鏈路控制(LLC),無線數據的加密處理就是在MAC和LLC兩個階段中間做的事情,加密的對象就是MSDU。

所以對於沒有MSDP的無線幀是不用加密的,比如管理幀只攜帶layer 2的信息,不需要加密;控制幀只有頭部和尾部,不需要加密;空幀沒有數據域(但有特定的功能),也不需要加密; 總之,需要加密的幀,往往是數據幀。

加密的分類主要包括共享祕鑰認證和開放系統認證,WEP加密是共享祕鑰式,而TKIP、CCMP和802.1x則是開放系統,這兩種分類個人覺得主要區別是先完成祕鑰認證再進行關聯,還是先完成關聯再進行祕鑰認證。比如,它要求無線客戶端發送的authentication報文中指定加密方式,如果是共享祕鑰就會進行祕鑰的確認,如果是開放系統,則會留到後面關聯成功後進行祕鑰的確認。

開放系統認證:這種認證方式不需要確認STA的任何信息,它只是和AP進行一個招呼式的交互,這個過程中並沒有交互身份信息,所以也可以認爲是一個空加密。這樣做的目的是,雙方都認爲應該在後面使用更安全的加密方式,在這裏只是先打個招呼,STA先進來,我們慢慢坐下覈對信息。所以STA發送的第一個Authentication報文只要表面自己使用的開放系統認證就好了,AP自然會給予successful答覆,接着後面順利完成關聯。

 

共享祕鑰認證:這種認證方式使用WEP認證STA,所以這種認證的前提是STA和AP都有配置靜態的WEP祕鑰,因此認證的目的就是確認兩者使用的祕鑰是否一致。共享祕鑰認證是通過4個認證幀的交互來完成的,STA首先發送一個Authentication request給AP,然後AP會給STA回覆一個挑戰明文,接着STA使用祕鑰對這個明文進行加密併發送給AP,最後AP對其進行解密,如果能夠解密成功並且明文一致則表示認證成功並回復。

雖然看起來,共享祕鑰認證比開放系統認證會更安全,其實實際上並不是這樣,因爲對於共享祕鑰認證,攻擊者可以捕獲明文內容,也可以捕獲加密後的密文,那就很容易被破解,而且祕鑰一旦被破解,那麼後面交互的所有數據包都能輕易的decrypt。關於這部分我們在後面詳細分析,瞭解後應該會對這點有更直觀的判斷。

根據加密算法的分類,可以分爲同步加密算法和異步加密算法:

同步加密算法:這種算法不管是加密還是解密,都是使用同一個祕鑰,爲了確保數據的安全,就需要對這麼祕鑰進行保護,但問題是在進行認證的時候必須對這個祕鑰進行確認,那麼就需要提出一種安全的確認祕鑰的方法,這些方法包括WEP, TKIP, and CCMP。

異步加密算法:這種算法包含了兩個祕鑰,分別是公鑰和私鑰,公鑰用於消息的加密,私鑰用於消息的解密,所以即使有好多人知道公鑰,沒有私鑰也破解不了消息。(這種算法這裏不詳細介紹)

流加密和塊加密: 流加密以一個bit爲單位進行處理,塊加密以一個塊爲單位進行處理,前者可以進行簡單的異或操作,如:

下面開始介紹一下WEP加密

WEP是一個Layer 2的加密方法,它使用的是ARC4流加密。它有一個數據完整性校驗操作,也就是Integrity Check Value (ICV),這個值是通過計算爲加密的數據域(MSDU)而來的。

802.11標準定義了兩個WEP版本,分別是WEP-40和WEP-104支持64bit和128bit加密,其實40和104都是從64與128減24得來的,這24位叫初始化向量Initialization Vector (IV),注意和ICV進行區分。

40和104則是指靜態祕鑰的bit長度,也就是說WEP-40支持輸入10 hex characters or 5 ASCII characters
,WEP-104支持輸入26 hex characters or 13 ASCII characters
:

一般來說,WEP支持4個key,使用時從中選一個進行加密。

那麼WEP加密過程是怎麼實現的呢?下面根據流程圖來分析一下

(1) IV是動態生成的24bit隨機數,標準沒有指定應該怎麼生成,而且在數據幀中以明文的方式進行發送,它和key結合生成隨機種子(seed),然後運用CR4算法生成祕鑰流(keystream)。

(2)對需要加密的明文進行CRC-32運算,生成 ICV(32位),然後將這個 ICV 追加到 plaintext的後面

(3)將尾部有 ICV的plaintext 與密碼流進行異或運算,得到加密數據

(4)將 IV 添加到加密數據的前面,進行傳送。

下面是WEP加密後的一個數據幀MPDU 格式:

從上圖可以看出,在幀體部分包括 IV + MSDU + ICV:

IV一共是4個字節,前3個字節是24bit的初始化向量,後面6bit暫時預留空白沒用,最後兩個bit用來指定使用哪個key,我們前面有提到過,WEP可以配置4個KEY。

MSDU和ICV是被加密的,在解密的時候,需要檢驗ICV是否一致

和加密相反,解密也需要這幾個過程:

(1)IV和key結合生成隨機種子(seed),然後運用CR4算法生成祕鑰流(keystream)

(2)將keystream和加密數據進行異或,得到 plaintext 和 ICV

(3)根據解密後得到的 plaintext 再計算一個 ICV 和包中的 ICV進行比較,判斷是否相等,這也算是一個可靠性的保證。

下面通過實際操作分析WEP加密的認證過程:

1. 將router設成WEP加密,並使用key1

2. 確認加密配置成功

3. 使用PC無線網卡和Router進行連接並抓包

(1)表明認證方式

(2)機密信息交互

4. 完成認證以後就進行關聯

5. 關聯完成,可以正常的加密數據傳輸

 

WEP加密比較簡單,交互步驟也比較少,關於WEP破解這裏不描述,介紹WEP主要是爲了更好的理解後面更高級的加密方式,後面將繼續介紹 TKIP加密。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章