解讀WLAN安全機制
摘 要:本文介紹了基于IEEE 802.11 WLAN的安全機制,分析了有線等效保密協議(WEP)的工作原理及存在的安全漏洞,并對802.11i安全協議進行了詳細的闡述。
關鍵詞:WLAN安全;WEP;TKIP;CCMP;802.11i
引言
WLAN在許多領域得到了充分的應用。但是WLAN的媒質是共享的,數據通過無線電波在空中傳播,就有可能到達預期之外,對數據安全造成重大的威脅,因此WLAN安全問題更為引人注目。本文對無線網絡安全機制進行了全面的分析。
802.11標準的安全機制
大多數WLAN設備都是以IEEE 802.11協議為基礎的,該標準為解決WLAN的安全問題,提出了一系列的安全機制,包括有線等效保密協議(Wired Equivalent Privacy,WEP)、開放式系統認證(Open System Authentication)和共享密鑰認證(Shared Key Authentication)等。
有線等效保密協議——WEP
WEP的目標是應能支持自同步、計算能力強且具有可輸出性。為實現這些目標,WEP協議采用RC4偽隨機數據產生器(Pseudo Random Number Generator,PRNG)生成密碼流,對WLAN中的數據流進行加密保護。由于WEP不提供對數據的認證功能,且RC4為一種對稱的密碼流加密算法,因此WEP不使用數據完整性密鑰,而只使用數據加密密鑰,解密密鑰與加密密鑰相同。
圖1展示的是WEP封裝的媒體訪問控制協議數據單元(MAC Protocol Data Uint,MPDU)格式擴展的Framebody部分,從圖中可以清楚地看到,它相對于傳統802.11標準定義的MPDU單元額外擴展了8個字節。最左端是32位的初始向量(Initialization Value,IV)區域,包含3字節的初始向量值、2比特的密鑰ID值和6比特的填充字段。附于數據右端的是4字節的完整性檢驗值(Integrity Check Value,ICV),它采用CRC-32算法,由明文數據計算而得。對于WEP加密機制來說,需要RC4密碼流加密的數據應包含圖中的數據和ICV兩部分。
WEP加密封裝過程如下:24比特的初始向量與40比特(或104比特)的靜態共享密鑰WEP密鑰連接起來組成64比特(或128比特)的密鑰種子(Seed),輸入到RC4偽隨機數據產生器中以產生密碼流(Key Stream)。同時,MPDU明文數據(Plaintext)經由CRC-32算法計算出完整性校驗值,附在MPDU明文數據之后,與RC4 PRNG產生的密碼流作異或(Exclusive)操作得到密文(Ciphertext),最后將初始向量、加密的數據和ICV值按照圖1定義的格式封裝好等待發送。RC4為對稱的密碼流加密算法,因此解密時只需將加密封裝反向操作,就可獲得MPDU明文數據,不同之處在于解密時需要比較ICV,即將由解密后的明文計算出來的ICV值與封包上的ICV值進行比較,以確保數據完整性。
WEP存在的安全漏洞
如果WLAN的竊聽者攔截到具有兩個相同初始向量的數據包,將它們進行異或,就可以得到這兩個數據包明文的異或值,如果推斷出其中一條消息的明文,或者攻擊者根本就很清楚其中某一條消息的明文,那么另一條消息的具體內容也就顯而易見了。造成這個缺陷的主要原因就是這兩個數據包使用了相同的IV,而由IV與靜態共享密鑰組成的RC4密鑰種子相同,因此通過RC4偽隨機密碼產生器產生的密碼流也是相同的,即相對于兩個數據包來說,加密用的密碼流重用了。
在802.11標準中并沒有明確規定何時更換IV和如何更換IV的法則,而且將IV在明文中直接傳送。制造廠商在設計時為了方便起見,通常將IV的初始值設置為0,然后往上遞增,這樣,小數值的IV使用頻率增大,密碼流重用的幾率也增大了,同時攻擊者攔截到相同密碼流加密的數據包的幾率也就增大了。
從WEP的MPDU格式中可以知道,初始向量IV只有24位,這是非常有限的,就算IV把所有可能值輪循一次,竊聽者也可以在幾個小時之內獲得重復IV所產生的相同的密鑰種子及密碼流,這樣便縮短了密鑰的使用壽命。
WEP的封裝過程顯示,它并沒有額外進行數據完整性校驗,而僅僅使用CRC-32算法對需要加密的明文計算了一次完整性檢驗值。眾所周知,CRC-32算法是一個線性函數,攻擊者可以利用這個特性來構建正確的加密包,而僅需要為篡改的消息計算出相應的ICV值即可。
802.11i 構建安全網絡
目前迫切需要一種比WEP更完善的網絡安全機制來有效地加強WLAN的安全性,鑒于這個原因,IEEE成立了專門的802.11 Task Group I(TGi)來制定并不斷修改、完善具備更高安全性能的網絡安全協議——802.11i。802.11 TGi提出了為WLAN構建健全安全網絡的構想RSNA(Robust Security Network Association),并將WEP列為pre-RSNA安全算法。RSNA定義了過渡時期的安全通信協議——暫時性密碼完整協議(Temporal Key Integrity Protocol,TKIP)和強制實施的計數器模式及密碼區塊鏈信息認證碼協議(Counter Mode and Cipher Block Chaining Message Authentication Code Protocol,或Counter Mode/CBC-MAC Protocol,CCMP),并采用IEEE 802.1X來提供身份認證和密鑰分配的框架結構。
TKIP
TKIP的提出,是為了兼容那些僅支持WEP的硬件,使它們在不改變原來硬件框架的同時,只需要本地升級就可以支持TKIP,從而達到增強網絡安全性的目的。
相對于WEP來說,TKIP的MPDU增加了序列計數器TSC(TKIP Sequence Counter)和信息完整碼MIC(Message Integrity Code)的信息,TSC為48比特,由初始向量IV的第一和最后一個字節,再加上擴展初始向量(Extended IV)的4個字節組成。密鑰ID字節的Ext IV比特位應設置為1,用以標志隨后的4個字節為TKIP的擴展初始向量。需要WEP封裝加密的字段為數據、MIC以及WEP封裝中計算出的ICV值。
暫時性密碼TK(Temporal Key)和MIC密鑰都是由802.1X事先協商出來的成對密碼衍生出來的。MIC密鑰、目的地址DA、源地址SA、優先級及媒體訪問控制服務數據單元MSDU(MAC Service Data Unit)共同輸入到信息完整碼函數(Michael Function)中,計算出MIC并附在MSDU原文后,再與序列計數器TSC共同送入拆包函數(Fragment Function)中,若需要則分割成多個較小的MPDU。與此同時,傳輸器地址TA、暫時性密碼TK及TSC輸入到混合函數(Key Mixing Function)中,經過兩個階段的混合運算,為相應TSC的MPDU計算出個別封包密碼,802.11i協議規定這個密碼總共128比特,由104比特的RC4密鑰和24比特的WEP IV組成。最后,將MPDU與對應的個別封包密碼送入有線等效保密協議封裝函數(WEP Encapsulation)中進行加密。由于TKIP使用對稱加密的WEP作為加密引擎,因此解密的時候只需將這個加密封裝過程反向操作即可。
雖然TKIP的核心加密運算仍然為WEP中采用的RC4算法,但是TKIP卻提供了額外的運算單元,對初始向量、原文及密碼進行了先期處理,因此比WEP更具有可靠的數據傳輸安全性。首先,傳輸者計算出MIC值,附在MSDU之后分割成若干個MPDU,以待加密后發送。接收者在解密并成功通過ICV校驗之后,將這若干MPDU整合成一個MSDU,并根據接收的數據計算出本地MIC值,與接收到的MIC值比較,若不符則拋棄該MSDU,同時采取相應的措施,如及時更換暫時性密鑰等,這樣便有效地防止了偽造攻擊;其次,用于計算信息完整碼的Michael函數是一個單向的雜湊函數,而并非線性的CRC-32函數,這樣就增加了黑客截取數據包并篡改內容的難度。同時,TKIP還采取了許多措施來限制攻擊者偽造成功的幾率和通過大量數據流獲取密鑰的可能性;第三,TKIP為每個MPDU包引入了不同的TSC序列值,接收者在接收時丟棄掉TSC值順序不符的MPDU包,以此來防止重演攻擊;第四,TKIP利用混合函數將TSC與WEP密鑰捆綁起來,接收者從MPDU中恢復出TSC,同樣通過混合函數計算出與發送方相同的WEP密鑰后才能正確解密,這樣就有效地破壞了黑客針對WEP密鑰的攻擊。
CCMP
在802.11i構建健全安全網絡的構想中,除了TKIP安全機制以外,還有一種強制實施的安全通信協議,就是計數器模式及密碼區塊鏈信息認證碼協議CCMP。任何宣稱為RSNA的安全系統都必須強制性地支持CCMP安全機制。
CCMP安全機制完全不同于WEP,它采用高級加密標準AES(Advanced Encryption Standard)作為加密引擎。FIPS PUB 197標準中定義AES加密區塊長度為128比特,密碼長度則有128比特、192比特、256比特三種可選,在802.11i標準中則限定AES加密引擎的區塊和密碼長度均為128比特。CCMP還配備了兩種運算模式,即計數器模式(Counter Mode)和密碼區塊鏈信息認證碼模式(CBC-MAC Mode),其中計數器模式用于數據流的加密/解密,而密碼區塊鏈信息認證碼模式則用于身份認證及數據完整性校驗。
CCMP的MPDU格式如圖2所示。從圖中可以看出,CCMP的處理機制將802.11標準定義的MPDU格式擴充了16個字節,其中8個字節為CCMP起始碼,8個字節為MIC。CCMP起始碼是由PN(Packet Number)、Ext IV和密鑰ID組成的,PN值是48位的數據包序列號。Ext IV比特位設置為1,用以標志CCMP將MPDU起始碼擴展了8位,而不是像WEP那樣只擴展了4位,對于CCMP來說,這一位總是設置為1的。附加在數據域后面的MIC是通過前述的CBC-MAC模式計算出來的,它和數據域一樣需要進行加密運算。
CCMP加密用的TK仍然是由成對的密碼衍生出來的。數據包序列值PN是不斷增加的,每個MPDU可以獲得一個不同的PN值,這樣對于同樣的TK,PN永遠也不會重復。MAC起始碼部分用來構造附加認證數據AAD(Additional Authentication Data),PN、MPDU的Address 2以及優先級則構造出CCM Nonce值,上述二者與TK、MPDU原文一起送入CCM加密模塊,計算MIC值并進行加密運算。PN與密鑰ID共同組成CCMP起始碼,再與MAC起始碼、加密后數據和MIC共同構成圖2所示的CCMP MPDU格式。解密的封裝過程與加密封裝對稱,僅需在反向操作后比較MIC值,用以確保數據完整性即可。
由此可見,CCMP的安全機制與WEP、TKIP截然不同,它除了能對數據進行保護外,還可以提供對MAC起始碼的保護,加密引擎AES可靠性、安全性更高,同時對硬件的要求也更高。總的來說,CCMP能夠提供保密、鑒別、完整性及重演攻擊的保護措施,也必須具備它,才能滿足健全安全網絡的構想。
結語
IEEE 802.11 TGi所制定的802.11i標準能夠提供足夠的安全保障,以防止目前所知的攻擊方式,加強WLAN的安全性能,構建健全的安全網絡,確保數據的保密性、完整性和身份認證都得到良好的解決。■
pid控制器相關文章:pid控制器原理
評論