◆許國祥 李天昀 吳中超
(清華大學網絡與信息安全實驗室 北京 100871)
802.11i4-步握手安全性分析
◆許國祥 李天昀 吳中超
(清華大學網絡與信息安全實驗室 北京 100871)
本文簡要分析了4步握手協議的漏洞,指出4步握手協議在面對DoS攻擊時是脆弱的,提出了消息1認證機制和STA主動保護機制這兩種握手方法。前者將明文的消息1進行了單獨認證,使得入侵者無法偽造消息1進行DoS攻擊;后者會在收到合法消息1之后主動關閉端口,并開啟計時器驗證認證過程完整性。用這兩種方法與已知的兩種方法(Nonce重利用和增強的2-步握手協議)進行比較,比較結果表明了這兩種方法在應對DoS攻擊和DoS溢出攻擊時表現穩定,并對硬件部分和軟件部分改動較少。
IEEE802.11i;4-步握手;認證;DoS攻擊
2004年IEEE發布了最新版本的WLAN安全協議802.11i,這種協議是建立強健安全網絡(robust security network RSN)的基礎,被稱為WPA2協議。在數據加密方面,802.11i協議采用AES加密算法,相對于 RC4算法具有更高的安全性。在接入認證方面,802.11i采用 802.1x基于端口的擴展認證(EAP)協議,該協議包括三個認證實體,認證服務器(authentication server AS)、站點(station STA)和接入點(access point AP),在認證過程中AP起到傳遞認證數據包的作用,具體的認證工作在AS和 STA間完成,也可以近似認為是AP和STA之間的認證過程。
四步握手協議是密鑰管理機制中最主要的組成部分,主要目的是確定STA和AP得到的PMK是相同且最新的,以保證可以產生最新的PTK,其中PMK在認證結束時由STA和AP協商生成。密鑰協商過程均用 EAPOL-KEY 幀格式封裝。過程如圖 1所示。

圖1 4-步握手過程
消息1:AP生成ANonce,采用局域網擴展認證(EAPOL-key)幀發送消息1,消息1包含隨機數ANonce,序列號sn等,消息1明文傳輸。STA收到消息1后,檢驗消息1是否為重放消息。檢測通過后產生 SNonce,由 ANonce,SNonce,PMK,AP_mac和STA_mac等用PRF函數生成PTK,公式為:
PTK = PRF - X (PMK,min(AP_ MAC,STA_ MAC)
P max(AP_ MAC,STA_ MAC ) P min(SNonce,ANonce)
P max(SNonce,ANonce) ),進而生成MIC,構造消息 2,消息2用EAPOL-key幀發送,包含網絡安全元素(RSN IE)相關信息,MIC 用于消息2完整性保護,sn用于防止重放攻擊。
消息2:AP收到消息2后檢查序列號sn是否大于消息1的序列號sn,如果成立則檢測通過,否側丟棄。由ANonce,SNonce,PMK,STA_mac,AP_mac等相關信息生成PTK,用于消息 2的完整性MIC值檢測,MIC不同則丟棄。檢測通過后,提取并核對網絡安全信息相關元素,進而構建并發送消息3,消息3 同樣用EAPOL-key幀發送用MIC值進行保護。
消息3:STA收到消息3后,首先檢測消息3的sn值是否比消息 2的 sn值大,檢測通過后核對 ANonce是否和消息 1的ANonce值一致,如有不成立、則丟棄該幀,檢測通過后進行后續操作。核對網絡安全元素和檢測MIC值是否與用EAPOL-key幀發送的一致,如有不成立則丟棄,檢測通過后進行后續操作。提取RSNIE,安裝PTK至STA_mac,激活數據加密機制,序列號sn加1,構建并發送消息4。
消息4:AP收到消息4后,檢測序列號sn和MIC值,檢測不通過則丟棄、檢測通過后,繼續后續步驟。安裝PTK至AP_mac,激活數據加密機制,同時更新序列號sn。
(1)消息1明文傳輸漏洞分析
STA在進行4步握手時必須同時保持幾個握手實例,以便順利完成握手過程。理由如下:AP向STA發送消息1后啟動定時裝置,等待STA回復消息2,假設消息2在傳輸過程中丟失AP沒有收到消息2,定時器到期后AP將重新發送消息1,如果僅保持一個握手實例,這時STA希望收到消息3,信息1無法通過檢測將被丟棄,所以握手過程到此結束不能順利完成,因此為了順利完成握手實例STA必須允許多個握手實例同時進行,隨時能接收消息1。
STA采用多個握手實例以便于順利完成4步握手的同時也引入了安全隱患。分析如下:AP向 STA發送第一個消息 1,STA收到消息 1后生成隨機數 SNonce由 ANonce,SNonce,PMK,AP_mac和STA_mac生成PTK,進而生成MIC等,發送消息2并存儲ANonce,SNonce和PTK。由于STA允許同時運行多個握手實例,則當第二個消息1到來時,STA做同樣的處理,但這時存儲的ANonce,SNonce和PTK是最新收到的第二個消息1所對應的,第一個消息相關信息被覆蓋了。當第一個消息1對應的消息3到來時STA檢測其MIC值,發現MIC值不相同于是丟棄,只有當最后一個消息1對應的消息3到來時握手才可以繼續進行。當惡意攻擊者不停的向STA發送偽造的消息1時(對于攻擊者來說這是很容易做到的,消息1是明文傳輸的,且沒有保護措施),那么4步握手過程將一直不能完成,形成了針對STA的DoS攻擊。
為了解決上述缺陷,802.11i建議除了存儲PTK外再存儲一個TPTK(temporary PTK),每次STA收到消息1時產生不同的SNonce,計算PTK并存儲ANonce,SNonce和PTK形成一個列表,當收到正確的消息3時查找列表對應的ANonce,SNonce和PTK,并清空列表。
上述建議的解決方案也有一個重大缺陷,當惡意攻擊者不停地向STA發送偽造的消息1時,STA要不停地計算PTK,并分配內存存儲ANonce,SNonce和PTK,消耗STA的資源。由于PRF算法不是很復雜運算量不大,不易形成CPU耗盡的DOS攻擊,更容易耗盡STA 的內存、造成內存耗盡的DOS攻擊。
由上面的分析可知,造成針對STA攻擊的原因在于:
①STA必須允許同時運行多個握手實例,給攻擊者提供了機會。
②消息1容易偽造且沒有方法確認消息來源或完整性檢測機制,是造成DOS 攻擊的原因。
(2)消息4丟失缺陷分析
STA收到消息3后,檢測sn,ANonce和MIC值等參數,檢測通過后,STA安裝PTK至STA_mac,構造并發送消息4,同時激活數據加密機制。消息4用于通知AP,STA準備就緒,請AP安裝PTK并激活數據加密機制。現在假設消息4在傳輸過程中丟失,AP沒有收到消息4,則定時器超時后AP會重新發送消息3,以便4步握手可以繼續完成。但是此時STA處于準備接受加密數據階段,對AP發送來的消息3將給予丟棄,于是AP還是沒有收到消息4,定時器繼續超時。AP由于沒有收到消息4,沒有安裝PTK并激活數據加密機制,重復到一定次數后,AP放棄重發消息3,則握手過程中斷。
我們知道在 4-步握手協議中的每個握手實例都要生成和存儲不同的SNonce來導出PTK,有人于是提出Nonce重利用的解決方案。但這種提案核心思想是STA重復利用最初SNonce的值,直到完成合法的握手過程。但是,在這個方法中要分別在接收信息1和信息3時計算一次PTK,從而在STA端可能造成CPU耗盡攻擊。而且,這種方法還對當前軟件部分改動較多。
還有人提出增強的 2-步握手協議,這一方案的核心思想是在消息1中加入認證信息。但這一方案也有缺點:
(1)由于要將一段新的加密字段取代MIC字段插入原消息中,這個方案需要對消息格式進行較大修改。
(2)將4-步握手協議從4個消息減少到2個消息對當前已安裝的硬件部分改動較多。
(3)當有DoS溢出攻擊時,可能會有CPU耗盡情況,因為STA在接收消息1時必須逐條檢查加密字段。
雖然增強的2-步握手協議可以有效的防止DoS攻擊,但它對現有的協議格式和硬件要求的改動太多。為了克服這些缺點而受到啟發,可以設計一種基于消息1認證機制的改進方案,不僅和增強的 2-步握手協議功能相近,而且可以大大減少涉及對當前協議格式和硬件的改動。2-步握手協議將一段新的加密字段取代 MIC字段插入原消息,而這個方案是將認證字段--MIC部分重利用,由于MIC字段在其他三個消息中都能應用,所以能防止未經授權的更改信息1。
由于AP在接收消息2后只能訪問SNonce部分,我對TPTK(temporary PTK)值的計算方法做了如下修改:
Temp_PTK = PRF - X (PMK, || Min(AP_ MAC ,STA_ MAC)|| Max(AP_ MAC , STA_ MAC) || ANonce || ANonce), 而 TPTK用于計算消息1的MIC字段。
對協議的修改細節如下:
(1)AP端消息1的生成過程
首先,AP和原始協議一樣生成隨機數ANonce,之后AP 提取 STA_ MAC值,該值在認證過程前期已被認證服務器傳送至AP。最后,AP通過修改的PTK計算公式計算出TPTK的值,并計算出用于消息1認證的MIC。
(2)STA端消息1的接收過程
(2)橋梁伸縮縫設計。由于橋梁的混凝土建筑材料會受溫度影響,從而出現收縮情況,影響橋梁的伸縮量。面對這種情況,工程師一般采用對伸縮縫裝置進行重新設置來解決問題。為確保這一方法的有效性,就要在設計過程中從橋梁實際長度的基礎上出發,對伸縮量進行綜合性計算,從而確定伸縮縫具體形式。另外在曲線橋梁的設計中,伸縮量由內外側的梁長所決定,直線橋通常會小于伸縮量,這就需要綜合橋梁的縱向變形和橫向變形情況,并與矢量結合在一起進行綜合考慮。
當從AP接收到信息1之后,STA必須按照AP端的流程用存儲的PMK的值重新計算消息1的MIC字段。如果認證成功,STA繼續用接收到的SNonce和其他信息生成PTK。緊接著發出消息3。

圖2 消息1認證機制
由于消息1被加密,入侵者無法偽造消息1來進行DoS攻擊。而且,只要 DoS溢出攻擊不是很嚴重,該方案是可以有效防止DoS溢出攻擊的。
所有上述提案在DoS溢出攻擊下的表現情況都不是很好,因為STA要么要儲存太多nonce值,要么要執行MIC值的大量運算,前者能導致內存耗盡,后者能導致 CPU耗盡。為了彌補這種缺陷,我提出了“STA主動保護機制”,具體過程如下:
(1)在接收到具有有效PMKID的消息1之后,STA必須執行以下流程:
①阻止端口再接收任何其他的消息1;
②生成并存儲SNonce;
④創建和發送消息2。
(2)在發送消息2之后,STA會開啟定時器并希望在定時器到期之前接收到消息3:
①如果在時間結束之前收到消息 3,會繼續使用 Message 4作為原始協議。
②否則它會重新打開端口來接收消息1并回到第一步。
(3)如果STA在數次嘗試了第一步和第二步之后,依然不能成功進行握手,會終止該AP的認證并重啟認證進程。
由于PMKID只存在于合法的消息1中,所以到達STA的第一條消息1一定是來自合法的AP。在收到來自AP的消息1之后,STA會拒絕之后的其他消息1。
如果在傳輸過程中消息2或者消息3丟失,則STA不能在定時器結束之前接收到消息3,則STA會重啟端口接收消息1。而如果有一些極端情況出現,比如由于消息2和消息3在傳輸過程中丟失導致第一個握手實例失敗,或者入侵者發出的消息1導致后續嚴重的DoS溢出攻擊,則STA會主動斷開連接和認證并重啟認證進程,防止被入侵者劫持。

圖3 STA主動保護機制流程圖
總之,這種方案能明顯抵御DoS攻擊,并將DoS溢出攻擊降低到一個可接受的較低的程度。
基于以上分析,我們得出了四種方案的比較結果:
表1展示了在DoS攻擊下四種方案的表現情況,很明顯,方案3——消息1認證機制不僅能抵御DoS攻擊,還對硬件部分和軟件部分的改動都比較少,實用性更強。

表1 在DoS攻擊下四種方案的定性評估
表2展示了在DoS溢出攻擊下四種方案的表現情況,可以發現,方案4——STA主動保護機制性能要更優異,消耗更少的內存和更少的CPU計算功率。
由以上分析可知,消息1認證機制和STA主動保護機制通過對四步握手協議認證機制的調整,不改變軟件協議,不調整硬件設備,使得抵御DoS攻擊和DoS溢出攻擊的能力顯著提升,實用性較強。

表2 在DoS溢出攻擊下四種方案的定性評估
4步握手協議雖然安全性較強,但也只是相對的,由于它本身的設計漏洞,使得握手信息在認證傳輸過程中易泄露用戶信息,當面對DoS攻擊時顯得無從招架。雖然有人提出一些改進措施,但這些措施涉及對802.11i協議的修改或者需要對硬件作出較大調整,代價較大。本文提出了消息1認證機制和STA主動保護機制,能夠提高握手過程中信息傳輸的安全性,對DoS攻擊和DoS溢出攻擊具有較強抵御能力,有一定的實用價值。
[1](美)Jim Geier著,王群,李馥娟,葉清揚譯.無線局域網[M].北京:人民郵電出版社,2001.
[2]曹秀英.無線局域網安全系統[M].北京:電子工業出版社,2004.
[3]IEEE Standard 802.11i:Institute of Eleetrical and Eleetronies Engineers.Information technology-Telecom mu-nications and information exchange between systems-Local and metropolitan area networks-Sp eeific requirements.Part11:Wireless LAN Medium Access Control(MAC)and Physical layer PHY)s Pecifieations Anlendment 6:Medium Aceess Control(MAC) Security Enhancements.IEEE Standard 802.11i,2004.
[4]T.C.Clancy,Secure handover in enterprise WLAN:CAPWAP,HOKEY,AND IEEE 802.11r,IEEE Wireless Communications 15 (2008).
[5]N.Manivannan,P.Neelameham,Alternative pairwi se key exchange protocols(IEEE 802.11i)in Wireless LANs,Proceedings of International Conference on Wireless and Mobile Communications,ICWMC '06,2006.
[6]錢進.無線局域網技術與應用[M].北京:電子工業出版社,2004.
[7]劉建偉,王育民.網絡安全技術與實踐[M].北京:清華大學出版社,2005.
[8]Yang Zhe.Advanced wireless network offensiv e& defensive technique[M].Beijing:Publishing House of Electronics Industry,2011.
[9]楊哲.無線網絡安全攻防實戰進階[M].北京:電子工業出版社,2011.
[10]顏炳風.無線局域網的安全機制、漏洞破解以及解決方案[D].上海交通大學,2010.
[11]WANG Xiaojun,LU Jiande.Analysisand improvement against the attack on 4-way handshaking protocol of 802.11i[J].Computer Engineering,2007.
[12]王小軍,陸建德.基于 802.11i四次握手協議的攻擊分析與改進[J].計算機工程,2007.