天天看點

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

安全是無線網絡技術中一個很重要的部分,它主要有三個保護點。

·資料的完整性(Integrity):用于檢查資料在傳輸過程中是否被修改。

·資料的機密性(Confidentiality):用于確定資料不會被洩露。

·身份驗證和通路控制(Authentication and Access Control):用于檢查受訪者的身份。

安全知識點中會經常見到Key(密鑰)和Password(密碼,也叫Passphrase)這兩個詞。它們本質意思都一樣,隻不過Password代表可讀(human readable,如字元串、數字等)的Key,而Key一般指由算法生成的不可讀(如二進制、十六進制資料等)的内容

802.11規則首先提出了WEP(Wired Equivalent Privacy,有線等效加密)

人們發現WEP很容易破解。在802.11規範提出新解決方案之前,WFA

提出了一個中間解決方案,即WPA(Wi-Fi Protected Access)。這個方案後來成為802.11i草案的一部分。

·802.11i專門用于解決無線網絡的安全問題。該規範提出的最終解決方案叫RSN(Robust Security Network,強健安全網絡),而WFA把RSN稱為WPA2。

  1. WEP介紹

保護資料Confidentiality的一個主要方法就是對所傳輸的資料進行加密,而WEP采用了流密碼(Stream Cipher)對資料進行加密。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

·源資料通過Key Stream(密鑰流)進行加密,加密方式就是異或(XOR),得到密文。

·接收端得到密文後,再用相同的Key Stream進行異或操作,這樣就能得到目标資料。兩次異或操作,Key Stream又一樣,是以目标資料就是源資料。

·整個過程中,隻要Key Stream保證随機性,那麼不知道Key Stream的人理論上就無法破解密文。

使用者輸入一個Secret Key(即密碼)到僞随機數生成器(PseudoRandom Number Generator,PRNG)中,而PRNG會根據這個Secret Key生成密鑰流。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

WEP加密過程如下。

·左上角PRNG的輸入(即随機數種子),包括一個IV(Initialization Vector,初始向量,長24位)和WEP Key(Key長度有40、104和128位。位數越多,安全性越高)。IV的值由設

備廠商負責生成。PRNG最終輸出Key Stream。

·XOR(即加密)操作的一方是Key Stream,另一方是資料和ICV(Integrity Check Value,完整性校驗值)。ICV長32位,其值由CRC-32方法對Data進行計算後得到。XOR操作後的資料即圖3-29所示的Encrypted部分。可知Data和ICV都經過了加密。

·最終的MAC幀資料(frame payload)包括IV以及加密後的Data以及ICV。

WEP身份驗證有以下兩種。

·開放系統身份驗證(Open System Authentication):這種驗證其實等同于沒有驗證,因為無論誰來驗證都會被通過。

·共享密鑰身份認證(Shared Key Authentication):Shared Key這個詞以後還會經常碰到,它表示共享的密碼。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

Shared Key驗證的方法包括四次幀互動。

·STA(即圖中的Client)發送Authentication請求給AP。

·AP收到請求後,通過Authentication Response發送一個質詢明文(Challenge Text,長度為128位元組)給STA。

·STA取出Challenge Text,通過圖3-31所示的WEP加密方法利用自己設定的密鑰對質詢文進行加密,然後再次發送Authentication Request給AP。

·AP收到第二次Authentication Request幀後,會利用AP的密鑰進行解密,同時還要驗證資料完整性。如果ICV正确,并且解密後的譯文等于之前發送的質詢文,則可知STA擁有正确的密碼,故STA身份驗證通過。

·AP傳回驗證處理結果給STA。如果成功,STA後續将通過Association請求加入該無線網絡。

·WPA采用了新的MIC(Message Integrity Check,消息完整性校驗)算法用于替代WEP中的CRC算法。新算法名為Michael。

·采用TKIP(Temporal Key Integrity Protocol,臨時密鑰完整性協定)用于為每一個MAC幀生成不同的Key。這種為每幀都生成單獨密鑰的過程稱為密鑰混合(Key Mixing)。

TKIP将為每一幀資料都使用不同的密鑰進行加密,故其安全性比WEP要高。另外,由于生成密鑰和計算完整性校驗時會把MAC位址(如DA、SA、TA)等資訊都考慮進去,是以它可以抵抗幾種不同類型的網絡攻擊。不過,從加密本身來考慮,TKIP和WEP一樣都屬于流密碼加密。

CCMP出現在WPA2中,它比TKIP更安全,因為它采用了全新的加密方式CCMP(Counter Mode with CBC-MAC Protocol,計數器子產品及密碼塊鍊消息認證碼協定),這是一種基于AES(Advanced Encryption Standard,進階加密标準)的塊的安全協定。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

3.EAP和802.1X介紹

目前身份驗證方面最基礎的安全協定就是EAP(Extensible Authentication Protocol),協定文檔定義在RFC3748中。EAP是一種協定,更是一種協定架構。

·Authenticator(驗證者):簡單點說,Authenticator就是響應認證請求的實體(Entity)。對無線網絡來說,Authenticator往往是AP。

·Supplicant(驗證申請者①)發起驗證請求的實體。對于無線網絡來說,Supplicant就是智能手機。

·BAS(Backend Authentication Server,後端認證伺服器):某些情況下(例如企業級應用)Authenticator并不真正處理身份驗證,它僅僅将驗證請求發給背景認證伺服器去處理。

正是這種架構設計拓展了EAP的适用範圍。

·AAA(Authentication、Authorization and Accounting,認證、授權和計費):另外一種基于EAP的協定。實作它的實體屬于BAS的一種具體形式,AAA包括常用的RADIUS伺服器

等。在RFC3748中,AAA和BAS的概念可互相替代。

·EAP Server:表示真正處理身份驗證的實體。如果沒有BAS,則EAP Server功能就在Authenticator中,否則該功能由BAS實作。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

EAP沒有強制定義位于最底層(Lower Layer,LL)的傳輸層。目前支援EAP協定的網絡有PPP、有線網(EAPOL,也就是802.1X協定)、無線網絡(即802.11WLAN)、TCP、UDP等

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

·Code:EAP協定第一位元組,目前僅有四種取值,分别為1(Request)、2(Response)、3(Success)、4(Failure)。

·Identifier:消息編号(ID),用于配對Request和Response。

EAP Method Type取值如下。

·1:代表Identity。用于Request消息中。其Type Data字段一般将攜帶申請者的一些資訊。一般簡寫為EAP-Request/Identity或者Request/Identity。

·2:代表Notification。Authenticator用它傳遞一些消息(例如密碼已過期、賬号被鎖等)給Supplicant。一般簡寫為Request/Notification。

·3:代表Nak,僅用于Response幀,表示否定确認。例如Authenticator用了Supplicant不支援的驗證類型發起請求,Supplicant可利用Response/Nak消息以告知Authenticator其支援的驗證類型。

·4:代表身份驗證方法中的MD5質詢法。Authenticator将發送一段随機的明文給

Supplicant。Supplicant收到該明文後,将其和密碼一起做MD5計算得到結果A,然後将結果A

傳回給Authenticator。Authenticator再根據正确密碼和MD5質詢文做MD5計算得到結果B。A和

B一比較就知道Supplicant使用的密碼是否正确。

·5:代表身份驗證方法為OTP(One Time Password,一次性密碼)。

·6:代表身份驗證方法為GTC(Generic Token Card,通用令牌卡)。GTC和OTP類似,隻不過GTC往往對應一個實際的裝置,例如許多國内銀行都會給申請網銀的使用者一個動态密碼牌。它就是GTC。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分
鄧凡平WIFI學習筆記3: WiFi 協定安全部分
鄧凡平WIFI學習筆記3: WiFi 協定安全部分

·0x888e代表EAPOL在802.11幀中的類型。

·Key Descriptor Type值為2,表示EAPOL RSN Key。

·Descriptor Body的内容就是大括号中所包含的資訊。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

Supplicant主動向Authenticator發送EAPOL-Start消息來觸發認證。注意,EAPOL-Start消息不是必需的。

·Authenticator收到EAPOL-Start消息後,将發出EAP-Request/Identity消息以要求Supplicant輸入使用者名。由于EAPOL-Start消息不是必需的,是以一個未經驗證的Supplicant發送了其他資料包也将觸發Authenticator發送EAP-Request/Identity消息。

·Supplicant将使用者名資訊通過EAP-Response/Identity消息發送給Authenticator。Authenticator再将它經過封包處理後(轉換成RADIUS Access-Request消息)送給AS(Authenticator Server)進行處理。

·AS收到Authenticator轉發的使用者名資訊後,将其與資料庫中的使用者名表對比,找到該使用者名對應的密碼資訊。然後随機生成的一個MD5質詢文并通過RADIUS Access-Challenge消息發送給Authenticator,最後再由Authenticator轉發給Supplicant。

·Supplicant收到EAP-Request/MD5 Challenge消息後,将結合自己的密碼對MD5質詢文進行處理,處理結果最終通過EAP-Response/MD5 Challenge消息經由Authenticator傳回給AS。

·AS将收到RADIUS Access-Request消息和本地經過加密運算後的密碼資訊進行對比,如果相同,則認為該Supplicant為合法使用者,然後回報認證成功消息(RADIUS Access-Accept和

EAP-Success)。

·Authenticator收到認證通過消息後将端口改為授權狀态,允許Supplicant通路網絡。注意,有些Supplicant還會定期向Supplicant發送握手消息以檢測Supplicant的線上情況。如果Supplicant狀态異常,Authenticator将禁止其上線。

·Supplicant也可以發送EAPOL-Logoff消息給Authenticator以主動要求下線。

4.RSNA介紹

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

為什麼要進行密鑰派生呢?它涉及密碼安全方面的問題,不過其目的并不難了解。在WEP中,所有STA都使用同一個WEP Key進行資料加密,其安全性較差。而RSNA中要求不同的STA和AP關聯後使用不同的Key進行資料加密,這也就是RSNA中Pairwise(成對)概念

的來曆。

如何解決不同STA使用不同密碼的問題呢?原來,我們在STA中設定的密碼叫PMK(Pairwise Master Key,成對主密鑰),其來源有兩種。

·在SOHO網絡環境中,PMK來源于預共享密鑰(Pre-Shared Key,PSK)。Shared Key概念在3.3.7節介紹WEP身份驗證時提到過,即在家用無線路由器裡邊設定的密碼,無須專門的驗證伺服器,對應的設定項為"WPA/WPA2-PSK"。由于适用家庭環境,是以有些無線路由器設定界面中也叫"WPA/WPA2-個人"(WFA認證名為"WPA/WPA2-Personal")。

·在企業級環境中,PMK和Authenticator Server(如RADIUS伺服器)有關,需要通過EAPOL消息和背景AS經過多次互動來擷取。這種情況多見于企業級應用。讀者可在無線路由器設定界面中見到"WPA/WPA2-企業"(有時叫“WPA或WPA2”,WFA認證名為"WPA/WPA2-Enterprise")的安全類型選項,并且會要求設定RADIUS伺服器位址。

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

·Personal模式不需要RADIUS伺服器參與。AP和STA雙方的Key屬于PSK,即事先就配置好了。

·Enterprise模式下,STA、AP和RAIDUS的PMK通過多次EAPOL消息來擷取。擷取的方法和具體的EAP Method有關。顯然,相比Personal模式,這種方式更加安全,但其耗費的時間也較長。

·STA和AP得到PMK後,将進行密匙派生以得到PTK。最後,PTK被設定到硬體中,用于資料的加解密。

·由于AP和STA都需要使用PTK,是以二者需要利用EAPOL Key幀進行資訊交換。這就是4-Way Handshake的作用。

有了PMK後,AP和STA将進行密鑰派生,正是在派生的過程中,AP和不同STA将生成獨特的密鑰。這些密鑰用于實際的資料加解密。由于STA每次關聯都需要重新派生這些Key,是以它們稱為PTK(Pairwise Transient Key,成對臨時Key)

鄧凡平WIFI學習筆記3: WiFi 協定安全部分

1)Authenticator生成一個Nonce(ANonce),然後利用EAPOL-Key消息将其發給Supplicant。

2)Supplicant根據ANonce、自己生成的一個Nonce(SNonce)、自己所設定的PMK和Authenticator的MAC位址等資訊進行密鑰派生。Supplicant随後将SNonce以及一些資訊通過第

二個EAPOL-Key發送給Authenticator。Message 2還包含一個MIC值,該值會被圖3-48中的KCK加密。接收端Authenticator取出Message 2中的SNonce後,也将進行和Supplicant中類似的

計算來驗證Supplicant傳回的消息是否正确。如果不正确,這将表明Supplicant的PMK錯誤,于是整個握手工作就此停止。

3)如果Supplicant密鑰正确,則Authenticator也進行密鑰派生。此後,Authenticator将發送第三個EAPOL-Key給Supplicant,該消息攜帶組臨時密碼(Group Transient Key,GTK,用于後續更新組密鑰,該密鑰用圖3-48中的KEK加密)、MIC(用KCK加密)。Supplicant收到Message 3後也将做一些計算,以判斷AP的PMK是否正确。注意,圖中的IGTK(Integrity

GTK)用于加解密多點傳播位址收發的管理幀

4)Supplicant最後發送一次EAPOL-Key給Authenticator用于确認。

5)此後,雙方将安裝(Install)Key。Install的意思是指使用它們來對資料進行加密。

Supplicant和Authenticator就此完成密鑰派生群組對,雙方可以正常進行通信了。

根據802.11規範,PMK緩存資訊的名稱叫PMKSA(PMK Security Association),它包括AP的MAC位址、PMK的生命周期(lifetime),以及PMKID(PMK IDentifier,用于标示這個

PMKSA,其值由PMK、AP的MAC位址、STA的MAC位址等資訊用Hash計算得來)。

當STA和AP進行關聯(或重關聯)時:

·STA首先根據AP的MAC位址判斷自己是否有緩存了的PMKSA,如果有則把PMKID放在RSNE中然後通過Association/Reassociation Request發送給AP。

·AP根據這個PMKID再判斷自己是否也保持了對應的PMKSA。如果是,雙方立即進入4-Way Handshake過程,進而避免802.1X協商步驟。

繼續閱讀