◆許國祥 李天昀 吳中超
(清華大學(xué)網(wǎng)絡(luò)與信息安全實驗室 北京 100871)
802.11i4-步握手安全性分析
◆許國祥 李天昀 吳中超
(清華大學(xué)網(wǎng)絡(luò)與信息安全實驗室 北京 100871)
本文簡要分析了4步握手協(xié)議的漏洞,指出4步握手協(xié)議在面對DoS攻擊時是脆弱的,提出了消息1認(rèn)證機(jī)制和STA主動保護(hù)機(jī)制這兩種握手方法。前者將明文的消息1進(jìn)行了單獨認(rèn)證,使得入侵者無法偽造消息1進(jìn)行DoS攻擊;后者會在收到合法消息1之后主動關(guān)閉端口,并開啟計時器驗證認(rèn)證過程完整性。用這兩種方法與已知的兩種方法(Nonce重利用和增強的2-步握手協(xié)議)進(jìn)行比較,比較結(jié)果表明了這兩種方法在應(yīng)對DoS攻擊和DoS溢出攻擊時表現(xiàn)穩(wěn)定,并對硬件部分和軟件部分改動較少。
IEEE802.11i;4-步握手;認(rèn)證;DoS攻擊
2004年IEEE發(fā)布了最新版本的WLAN安全協(xié)議802.11i,這種協(xié)議是建立強健安全網(wǎng)絡(luò)(robust security network RSN)的基礎(chǔ),被稱為WPA2協(xié)議。在數(shù)據(jù)加密方面,802.11i協(xié)議采用AES加密算法,相對于 RC4算法具有更高的安全性。在接入認(rèn)證方面,802.11i采用 802.1x基于端口的擴(kuò)展認(rèn)證(EAP)協(xié)議,該協(xié)議包括三個認(rèn)證實體,認(rèn)證服務(wù)器(authentication server AS)、站點(station STA)和接入點(access point AP),在認(rèn)證過程中AP起到傳遞認(rèn)證數(shù)據(jù)包的作用,具體的認(rèn)證工作在AS和 STA間完成,也可以近似認(rèn)為是AP和STA之間的認(rèn)證過程。
四步握手協(xié)議是密鑰管理機(jī)制中最主要的組成部分,主要目的是確定STA和AP得到的PMK是相同且最新的,以保證可以產(chǎn)生最新的PTK,其中PMK在認(rèn)證結(jié)束時由STA和AP協(xié)商生成。密鑰協(xié)商過程均用 EAPOL-KEY 幀格式封裝。過程如圖 1所示。
圖1 4-步握手過程
消息1:AP生成ANonce,采用局域網(wǎng)擴(kuò)展認(rèn)證(EAPOL-key)幀發(fā)送消息1,消息1包含隨機(jī)數(shù)ANonce,序列號sn等,消息1明文傳輸。STA收到消息1后,檢驗消息1是否為重放消息。檢測通過后產(chǎn)生 SNonce,由 ANonce,SNonce,PMK,AP_mac和STA_mac等用PRF函數(shù)生成PTK,公式為:
PTK = PRF - X (PMK,min(AP_ MAC,STA_ MAC)
P max(AP_ MAC,STA_ MAC ) P min(SNonce,ANonce)
P max(SNonce,ANonce) ),進(jìn)而生成MIC,構(gòu)造消息 2,消息2用EAPOL-key幀發(fā)送,包含網(wǎng)絡(luò)安全元素(RSN IE)相關(guān)信息,MIC 用于消息2完整性保護(hù),sn用于防止重放攻擊。
消息2:AP收到消息2后檢查序列號sn是否大于消息1的序列號sn,如果成立則檢測通過,否側(cè)丟棄。由ANonce,SNonce,PMK,STA_mac,AP_mac等相關(guān)信息生成PTK,用于消息 2的完整性MIC值檢測,MIC不同則丟棄。檢測通過后,提取并核對網(wǎng)絡(luò)安全信息相關(guān)元素,進(jìn)而構(gòu)建并發(fā)送消息3,消息3 同樣用EAPOL-key幀發(fā)送用MIC值進(jìn)行保護(hù)。
消息3:STA收到消息3后,首先檢測消息3的sn值是否比消息 2的 sn值大,檢測通過后核對 ANonce是否和消息 1的ANonce值一致,如有不成立、則丟棄該幀,檢測通過后進(jìn)行后續(xù)操作。核對網(wǎng)絡(luò)安全元素和檢測MIC值是否與用EAPOL-key幀發(fā)送的一致,如有不成立則丟棄,檢測通過后進(jìn)行后續(xù)操作。提取RSNIE,安裝PTK至STA_mac,激活數(shù)據(jù)加密機(jī)制,序列號sn加1,構(gòu)建并發(fā)送消息4。
消息4:AP收到消息4后,檢測序列號sn和MIC值,檢測不通過則丟棄、檢測通過后,繼續(xù)后續(xù)步驟。安裝PTK至AP_mac,激活數(shù)據(jù)加密機(jī)制,同時更新序列號sn。
(1)消息1明文傳輸漏洞分析
STA在進(jìn)行4步握手時必須同時保持幾個握手實例,以便順利完成握手過程。理由如下:AP向STA發(fā)送消息1后啟動定時裝置,等待STA回復(fù)消息2,假設(shè)消息2在傳輸過程中丟失AP沒有收到消息2,定時器到期后AP將重新發(fā)送消息1,如果僅保持一個握手實例,這時STA希望收到消息3,信息1無法通過檢測將被丟棄,所以握手過程到此結(jié)束不能順利完成,因此為了順利完成握手實例STA必須允許多個握手實例同時進(jìn)行,隨時能接收消息1。
STA采用多個握手實例以便于順利完成4步握手的同時也引入了安全隱患。分析如下:AP向 STA發(fā)送第一個消息 1,STA收到消息 1后生成隨機(jī)數(shù) SNonce由 ANonce,SNonce,PMK,AP_mac和STA_mac生成PTK,進(jìn)而生成MIC等,發(fā)送消息2并存儲ANonce,SNonce和PTK。由于STA允許同時運行多個握手實例,則當(dāng)?shù)诙€消息1到來時,STA做同樣的處理,但這時存儲的ANonce,SNonce和PTK是最新收到的第二個消息1所對應(yīng)的,第一個消息相關(guān)信息被覆蓋了。當(dāng)?shù)谝粋€消息1對應(yīng)的消息3到來時STA檢測其MIC值,發(fā)現(xiàn)MIC值不相同于是丟棄,只有當(dāng)最后一個消息1對應(yīng)的消息3到來時握手才可以繼續(xù)進(jìn)行。當(dāng)惡意攻擊者不停的向STA發(fā)送偽造的消息1時(對于攻擊者來說這是很容易做到的,消息1是明文傳輸?shù)?,且沒有保護(hù)措施),那么4步握手過程將一直不能完成,形成了針對STA的DoS攻擊。
為了解決上述缺陷,802.11i建議除了存儲PTK外再存儲一個TPTK(temporary PTK),每次STA收到消息1時產(chǎn)生不同的SNonce,計算PTK并存儲ANonce,SNonce和PTK形成一個列表,當(dāng)收到正確的消息3時查找列表對應(yīng)的ANonce,SNonce和PTK,并清空列表。
上述建議的解決方案也有一個重大缺陷,當(dāng)惡意攻擊者不停地向STA發(fā)送偽造的消息1時,STA要不停地計算PTK,并分配內(nèi)存存儲ANonce,SNonce和PTK,消耗STA的資源。由于PRF算法不是很復(fù)雜運算量不大,不易形成CPU耗盡的DOS攻擊,更容易耗盡STA 的內(nèi)存、造成內(nèi)存耗盡的DOS攻擊。
由上面的分析可知,造成針對STA攻擊的原因在于:
①STA必須允許同時運行多個握手實例,給攻擊者提供了機(jī)會。
②消息1容易偽造且沒有方法確認(rèn)消息來源或完整性檢測機(jī)制,是造成DOS 攻擊的原因。
(2)消息4丟失缺陷分析
STA收到消息3后,檢測sn,ANonce和MIC值等參數(shù),檢測通過后,STA安裝PTK至STA_mac,構(gòu)造并發(fā)送消息4,同時激活數(shù)據(jù)加密機(jī)制。消息4用于通知AP,STA準(zhǔn)備就緒,請AP安裝PTK并激活數(shù)據(jù)加密機(jī)制?,F(xiàn)在假設(shè)消息4在傳輸過程中丟失,AP沒有收到消息4,則定時器超時后AP會重新發(fā)送消息3,以便4步握手可以繼續(xù)完成。但是此時STA處于準(zhǔn)備接受加密數(shù)據(jù)階段,對AP發(fā)送來的消息3將給予丟棄,于是AP還是沒有收到消息4,定時器繼續(xù)超時。AP由于沒有收到消息4,沒有安裝PTK并激活數(shù)據(jù)加密機(jī)制,重復(fù)到一定次數(shù)后,AP放棄重發(fā)消息3,則握手過程中斷。
我們知道在 4-步握手協(xié)議中的每個握手實例都要生成和存儲不同的SNonce來導(dǎo)出PTK,有人于是提出Nonce重利用的解決方案。但這種提案核心思想是STA重復(fù)利用最初SNonce的值,直到完成合法的握手過程。但是,在這個方法中要分別在接收信息1和信息3時計算一次PTK,從而在STA端可能造成CPU耗盡攻擊。而且,這種方法還對當(dāng)前軟件部分改動較多。
還有人提出增強的 2-步握手協(xié)議,這一方案的核心思想是在消息1中加入認(rèn)證信息。但這一方案也有缺點:
(1)由于要將一段新的加密字段取代MIC字段插入原消息中,這個方案需要對消息格式進(jìn)行較大修改。
(2)將4-步握手協(xié)議從4個消息減少到2個消息對當(dāng)前已安裝的硬件部分改動較多。
(3)當(dāng)有DoS溢出攻擊時,可能會有CPU耗盡情況,因為STA在接收消息1時必須逐條檢查加密字段。
雖然增強的2-步握手協(xié)議可以有效的防止DoS攻擊,但它對現(xiàn)有的協(xié)議格式和硬件要求的改動太多。為了克服這些缺點而受到啟發(fā),可以設(shè)計一種基于消息1認(rèn)證機(jī)制的改進(jìn)方案,不僅和增強的 2-步握手協(xié)議功能相近,而且可以大大減少涉及對當(dāng)前協(xié)議格式和硬件的改動。2-步握手協(xié)議將一段新的加密字段取代 MIC字段插入原消息,而這個方案是將認(rèn)證字段--MIC部分重利用,由于MIC字段在其他三個消息中都能應(yīng)用,所以能防止未經(jīng)授權(quán)的更改信息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字段。
對協(xié)議的修改細(xì)節(jié)如下:
(1)AP端消息1的生成過程
首先,AP和原始協(xié)議一樣生成隨機(jī)數(shù)ANonce,之后AP 提取 STA_ MAC值,該值在認(rèn)證過程前期已被認(rèn)證服務(wù)器傳送至AP。最后,AP通過修改的PTK計算公式計算出TPTK的值,并計算出用于消息1認(rèn)證的MIC。
(2)STA端消息1的接收過程
(2)橋梁伸縮縫設(shè)計。由于橋梁的混凝土建筑材料會受溫度影響,從而出現(xiàn)收縮情況,影響橋梁的伸縮量。面對這種情況,工程師一般采用對伸縮縫裝置進(jìn)行重新設(shè)置來解決問題。為確保這一方法的有效性,就要在設(shè)計過程中從橋梁實際長度的基礎(chǔ)上出發(fā),對伸縮量進(jìn)行綜合性計算,從而確定伸縮縫具體形式。另外在曲線橋梁的設(shè)計中,伸縮量由內(nèi)外側(cè)的梁長所決定,直線橋通常會小于伸縮量,這就需要綜合橋梁的縱向變形和橫向變形情況,并與矢量結(jié)合在一起進(jìn)行綜合考慮。
當(dāng)從AP接收到信息1之后,STA必須按照AP端的流程用存儲的PMK的值重新計算消息1的MIC字段。如果認(rèn)證成功,STA繼續(xù)用接收到的SNonce和其他信息生成PTK。緊接著發(fā)出消息3。
圖2 消息1認(rèn)證機(jī)制
由于消息1被加密,入侵者無法偽造消息1來進(jìn)行DoS攻擊。而且,只要 DoS溢出攻擊不是很嚴(yán)重,該方案是可以有效防止DoS溢出攻擊的。
所有上述提案在DoS溢出攻擊下的表現(xiàn)情況都不是很好,因為STA要么要儲存太多nonce值,要么要執(zhí)行MIC值的大量運算,前者能導(dǎo)致內(nèi)存耗盡,后者能導(dǎo)致 CPU耗盡。為了彌補這種缺陷,我提出了“STA主動保護(hù)機(jī)制”,具體過程如下:
(1)在接收到具有有效PMKID的消息1之后,STA必須執(zhí)行以下流程:
①阻止端口再接收任何其他的消息1;
②生成并存儲SNonce;
④創(chuàng)建和發(fā)送消息2。
(2)在發(fā)送消息2之后,STA會開啟定時器并希望在定時器到期之前接收到消息3:
①如果在時間結(jié)束之前收到消息 3,會繼續(xù)使用 Message 4作為原始協(xié)議。
②否則它會重新打開端口來接收消息1并回到第一步。
(3)如果STA在數(shù)次嘗試了第一步和第二步之后,依然不能成功進(jìn)行握手,會終止該AP的認(rèn)證并重啟認(rèn)證進(jìn)程。
由于PMKID只存在于合法的消息1中,所以到達(dá)STA的第一條消息1一定是來自合法的AP。在收到來自AP的消息1之后,STA會拒絕之后的其他消息1。
如果在傳輸過程中消息2或者消息3丟失,則STA不能在定時器結(jié)束之前接收到消息3,則STA會重啟端口接收消息1。而如果有一些極端情況出現(xiàn),比如由于消息2和消息3在傳輸過程中丟失導(dǎo)致第一個握手實例失敗,或者入侵者發(fā)出的消息1導(dǎo)致后續(xù)嚴(yán)重的DoS溢出攻擊,則STA會主動斷開連接和認(rèn)證并重啟認(rèn)證進(jìn)程,防止被入侵者劫持。
圖3 STA主動保護(hù)機(jī)制流程圖
總之,這種方案能明顯抵御DoS攻擊,并將DoS溢出攻擊降低到一個可接受的較低的程度。
基于以上分析,我們得出了四種方案的比較結(jié)果:
表1展示了在DoS攻擊下四種方案的表現(xiàn)情況,很明顯,方案3——消息1認(rèn)證機(jī)制不僅能抵御DoS攻擊,還對硬件部分和軟件部分的改動都比較少,實用性更強。
表1 在DoS攻擊下四種方案的定性評估
表2展示了在DoS溢出攻擊下四種方案的表現(xiàn)情況,可以發(fā)現(xiàn),方案4——STA主動保護(hù)機(jī)制性能要更優(yōu)異,消耗更少的內(nèi)存和更少的CPU計算功率。
由以上分析可知,消息1認(rèn)證機(jī)制和STA主動保護(hù)機(jī)制通過對四步握手協(xié)議認(rèn)證機(jī)制的調(diào)整,不改變軟件協(xié)議,不調(diào)整硬件設(shè)備,使得抵御DoS攻擊和DoS溢出攻擊的能力顯著提升,實用性較強。
表2 在DoS溢出攻擊下四種方案的定性評估
4步握手協(xié)議雖然安全性較強,但也只是相對的,由于它本身的設(shè)計漏洞,使得握手信息在認(rèn)證傳輸過程中易泄露用戶信息,當(dāng)面對DoS攻擊時顯得無從招架。雖然有人提出一些改進(jìn)措施,但這些措施涉及對802.11i協(xié)議的修改或者需要對硬件作出較大調(diào)整,代價較大。本文提出了消息1認(rèn)證機(jī)制和STA主動保護(hù)機(jī)制,能夠提高握手過程中信息傳輸?shù)陌踩?,對DoS攻擊和DoS溢出攻擊具有較強抵御能力,有一定的實用價值。
[1](美)Jim Geier著,王群,李馥娟,葉清揚譯.無線局域網(wǎng)[M].北京:人民郵電出版社,2001.
[2]曹秀英.無線局域網(wǎng)安全系統(tǒng)[M].北京:電子工業(yè)出版社,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]錢進(jìn).無線局域網(wǎng)技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2004.
[7]劉建偉,王育民.網(wǎng)絡(luò)安全技術(shù)與實踐[M].北京:清華大學(xué)出版社,2005.
[8]Yang Zhe.Advanced wireless network offensiv e& defensive technique[M].Beijing:Publishing House of Electronics Industry,2011.
[9]楊哲.無線網(wǎng)絡(luò)安全攻防實戰(zhàn)進(jìn)階[M].北京:電子工業(yè)出版社,2011.
[10]顏炳風(fēng).無線局域網(wǎng)的安全機(jī)制、漏洞破解以及解決方案[D].上海交通大學(xué),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四次握手協(xié)議的攻擊分析與改進(jìn)[J].計算機(jī)工程,2007.