吳一塵
(中國(guó)人民解放軍電子工程學(xué)院網(wǎng)絡(luò)系,安徽 合肥 230037)
隨著無(wú)線(xiàn)網(wǎng)絡(luò)應(yīng)用的蓬勃發(fā)展,無(wú)線(xiàn)網(wǎng)絡(luò)的安全問(wèn)題成為用戶(hù)關(guān)心的焦點(diǎn)。WEP(Wired Equivalent Privacy)標(biāo)準(zhǔn)由于本身設(shè)計(jì)上的缺陷,導(dǎo)致攻擊者只要能夠收集到足夠多的無(wú)線(xiàn)數(shù)據(jù)包,就一定能夠破解獲得WEP密鑰。目前,已經(jīng)有許多用于破解WEP密鑰的黑客工具被公布,例如:Aircrack-ng、Cain&Abel、SpoonWEP2等[1]。為了克服這一問(wèn)題,Wi-Fi聯(lián)盟相繼提出了WPA(Wi-Fi Privacy Access)和WPA2安全標(biāo)準(zhǔn),WPA2被認(rèn)為是無(wú)線(xiàn)網(wǎng)絡(luò)安全問(wèn)題的最終解決方案,但在實(shí)際應(yīng)用中,WPA/WPA2仍然存在一些缺陷可以被攻擊者利用。WPA/WPA2有兩種模式,分別是:WPA/WPA2-Enterprise(企業(yè)版)和 WPA/WPA2-PSK(個(gè)人版)。WPA/WPA2-Enterprise具有很高的安全性,但其配置和維護(hù)費(fèi)用昂貴,一般小型企業(yè)和個(gè)人用戶(hù)難以負(fù)擔(dān)。攻擊者對(duì)于WPA/WPA2的攻擊主要針對(duì)WPA/WPA2-PSK,在這種模式下,攻擊者只需要截獲幾個(gè)特定的無(wú)線(xiàn)數(shù)據(jù)包,就可以利用字典破解的方式獲得用戶(hù)密碼(passphrase)[1],目前有多種類(lèi)型的黑客軟件可以用于破解WPA/WPA2-PSK 用戶(hù)密碼,例如 Aircrack-ng、Cowpatty 等[2]。另外,隨著計(jì)算機(jī)運(yùn)算速度與存儲(chǔ)容量的迅速提高,許多研究[3-4]都提出了加速破解WPA/WPA2-PSK用戶(hù)密碼的方法,嚴(yán)重威脅無(wú)線(xiàn)網(wǎng)絡(luò)的安全。針對(duì)這一安全隱患,本文首先分析字典破解WPA/WPA2-PSK用戶(hù)密碼的原理,發(fā)現(xiàn)攻擊者實(shí)現(xiàn)破解的原因在于能夠從截獲的特定無(wú)線(xiàn)數(shù)據(jù)包中獲取用于生成WPA/WPA2-PSK會(huì)話(huà)密鑰的明文密鑰材料。根據(jù)這一分析結(jié)果,本文采用對(duì)稱(chēng)密鑰加密技術(shù)對(duì)WPA/WPA2-PSK模式下動(dòng)態(tài)協(xié)商會(huì)話(huà)密鑰的四次握手過(guò)程進(jìn)行改進(jìn),改進(jìn)后的四次握手過(guò)程能夠避免攻擊者通過(guò)字典破解的方式獲取WPA/WPA2-PSK用戶(hù)密碼,提高了WPA/WPA2-PSK模式的安全性。
IEEE802.1X為認(rèn)證會(huì)話(huà)過(guò)程定義了3個(gè)組件,分別是:申請(qǐng)者、認(rèn)證者和認(rèn)證服務(wù)器。對(duì)WLAN來(lái)說(shuō),申請(qǐng)者請(qǐng)求接入無(wú)線(xiàn)網(wǎng)絡(luò),通常為支持IEEE802.1X的工作站。認(rèn)證者指需要訪(fǎng)問(wèn)控制的端口,一般為無(wú)線(xiàn)接入點(diǎn)。認(rèn)證者在認(rèn)證過(guò)程中只起到透明傳輸?shù)淖饔?,所有的認(rèn)證工作都在申請(qǐng)者和認(rèn)證服務(wù)器上完成。認(rèn)證服務(wù)器實(shí)現(xiàn)具體的認(rèn)證功能,并通知認(rèn)證者是否允許用戶(hù)訪(fǎng)問(wèn)端口所提供的服務(wù)。認(rèn)證服務(wù)器通常是一臺(tái)RADIUS(Remote Authentication Dialin User Service)服務(wù)器,該服務(wù)器存儲(chǔ)了用戶(hù)的相關(guān)信息,如用戶(hù)名、密碼、用戶(hù)訪(fǎng)問(wèn)控制列表等。IEEE802.1X采用EAP協(xié)議作為認(rèn)證信息交互機(jī)制,EAP消息封裝在EAPOL分組中[5-6]。
一次完整的IEEE802.1X認(rèn)證過(guò)程包括申請(qǐng)者和認(rèn)證者之間的握手、認(rèn)證者和認(rèn)證服務(wù)器之間的握手以及申請(qǐng)者和認(rèn)證服務(wù)器之間的握手(通過(guò)認(rèn)證者轉(zhuǎn)發(fā))。通過(guò)這些握手過(guò)程,申請(qǐng)者和認(rèn)證服務(wù)器彼此相互認(rèn)證并生成一個(gè)共同的密鑰,叫做主會(huì)話(huà)密鑰(Master Session Key,MSK)。認(rèn)證服務(wù)器將 MSK安全地傳輸給認(rèn)證者,申請(qǐng)者和認(rèn)證者利用MSK生成成對(duì)主密鑰(Pairwise Master Key,PMK),用于接下來(lái)成對(duì)臨時(shí)密鑰(Pairwise Transient Key,PTK)的生成[7]。
IEEE802.1X認(rèn)證具有很高的安全性,但這種認(rèn)證模式需要架設(shè)一臺(tái)專(zhuān)用的RADIUS服務(wù)器,對(duì)于小型企業(yè)和個(gè)人用戶(hù)來(lái)說(shuō),代價(jià)過(guò)于昂貴,維護(hù)也很復(fù)雜,所以WPA-Enterprise主要應(yīng)用于大型企業(yè)。針對(duì)小型企業(yè)和個(gè)人用戶(hù),WPA/WPA2提供了一種不需要RADIUS服務(wù)器的預(yù)共享(Pre-Shared Key,PSK)模式。在PSK模式下,申請(qǐng)者和認(rèn)證者預(yù)先輸入一個(gè)passphrase,然后根據(jù)式(1):
PSK=pbkdf 2(passphrase,ssid,ssidLength,4096,256)(1)
計(jì)算生成PSK,其中,ssid是認(rèn)證者的服務(wù)集標(biāo)識(shí)(Service Set Identifier,SSID)。計(jì)算得到的PSK用于替代PMK。該P(yáng)SK被申請(qǐng)者和認(rèn)證者存儲(chǔ)起來(lái)用于同一個(gè)申請(qǐng)者和認(rèn)證者之間多次重復(fù)關(guān)聯(lián),從而減少生成PSK的計(jì)算負(fù)載。
生成PMK(或PSK)之后,申請(qǐng)者和認(rèn)證者發(fā)起四次握手過(guò)程,動(dòng)態(tài)協(xié)商用于此次會(huì)話(huà)的PTK。
四次握手過(guò)程[8-9]的消息均由EAPOL-Key幀格式封裝,消息交換過(guò)程如圖1所示,其中,STA和AP分別表示申請(qǐng)者和認(rèn)證者,SNonce和ANonce是STA和AP生成的隨機(jī)值,STA_MAC和AP_MAC分別表示STA和AP的MAC地址,RSN IE(Robust Security Network Information Element)是健壯安全網(wǎng)絡(luò)信息元素,MIC(Message Integrity Code)是消息完整性校驗(yàn)值,GTK(Group Temporal Key)是WLAN目前正在使用的組臨時(shí)密鑰。
圖1 四次握手過(guò)程
(1)消息1:AP生成并向STA發(fā)送ANonce。
(2)消息2:STA收到ANonce之后,生成SNonce,根據(jù)式(2)計(jì)算得到PTK,其中,“‖”表示連接操作。
PTK=prf- x(PSK,"pairwise key expansion",min(STA_MAC,AP_MAC)‖max(STA_MAC,AP_MAC)‖min(ANonce,SNonce)‖max(ANonce,SNonce)) (2)
PTK包含3個(gè)部分,分別是:EAPOL密鑰確認(rèn)密鑰(EAPOL Key Confirmation Key,KCK)、EAPOL 密鑰加密密鑰(EAPOL Key Encryption Key,KEK)、臨時(shí)密鑰(Temporal Key,TK)。其中,KCK 用于計(jì) 算EAPOL-Key幀的校驗(yàn)和,KEK用來(lái)加密EAPOL-Key幀的數(shù)據(jù),TK用以加解密STA與AP之間的單播數(shù)據(jù)。STA向AP發(fā)送SNonce和STA的RSN IE,并且利用KCK對(duì)整個(gè)消息2進(jìn)行MIC校驗(yàn)。
(3)消息3:AP得到SNonce之后,利用同樣的方法計(jì)算出PTK并且對(duì)消息2進(jìn)行MIC校驗(yàn),如果校驗(yàn)失敗則丟棄消息2,成功則向STA發(fā)送ANonce(和消息1中的ANonce相同)、AP的RSN IE、MIC、是否安裝PTK、用KEK加密的GTK。
(4)消息4:STA收到消息3并校驗(yàn)正確后即裝入PTK和GTK,然后向AP發(fā)送消息4,表示已經(jīng)裝入PTK和GTK。AP收到消息4并校驗(yàn)正確后也裝入PTK。至此,四次握手過(guò)程完成。
WPA/WPA2-Enterprise的安全性非常高,破解難度極大,但目前已經(jīng)有多種黑客軟件可以破解WPA/WPA2-PSK模式下的用戶(hù)密碼,例如 Aircrack-ng、Cowpatty等。這些軟件都是采用字典破解的方式獲得PSK模式下的用戶(hù)密碼。
從對(duì)四次握手過(guò)程的描述可知,WPA/WPA2-PSK的認(rèn)證實(shí)際上是對(duì)MIC的認(rèn)證。MIC由KCK計(jì)算生成,而KCK是由PTK分解得到的。計(jì)算PTK需要 ANonce、SNonce、AP 的 MAC 地址 AP_MAC、STA的MAC地址STA_MAC以及PSK,在四次握手過(guò)程中,消息1和消息2中的ANonce、SNonce沒(méi)有經(jīng)過(guò)加密,是明文傳送的,攻擊者只要捕獲到這兩個(gè)消息,就能得到ANonce和SNonce,而PSK是由passphrase和AP的SSID計(jì)算得出的,根據(jù)這些已知的數(shù)據(jù),攻擊者可以利用先假設(shè)再驗(yàn)證的思想,試探得到passphrase,這種破解方式被稱(chēng)為字典破解。
字典破解中的字典是事先已經(jīng)獲取的passphrase的集合。攻擊者利用假設(shè)的思想,從字典中取出一條passphrase,聯(lián)合AP的SSID,計(jì)算得到PSK’,然后根據(jù)截獲到的消息1和消息2中的ANonce、SNonce、AP_MAC和STA_MAC,計(jì)算得到PTK’,再將PTK’分離得到KCK’,用KCK’對(duì)消息2進(jìn)行MIC校驗(yàn),如果之前假設(shè)的passphrase是正確的,那么,MIC校驗(yàn)的結(jié)果必然和截獲到的消息2中的MIC值一致,否則說(shuō)明之前假設(shè)的passphrase不正確,繼續(xù)從字典中取出下一條passphrase,重復(fù)以上過(guò)程,直到找到正確的passphrase為止[10]。由此可以看出,字典破解的成功率依賴(lài)于字典的大小,如果字典中不包含正確的用戶(hù)密碼,就不可能破解成功。
另外,傳統(tǒng)的WPA/WPA2-PSK字典破解工具一般采用單機(jī)單核進(jìn)行破解,破解速度有限,加之密鑰的定時(shí)自動(dòng)更新機(jī)制,往往因?yàn)槠平馑俣冗^(guò)慢,在PSK更新周期內(nèi)未完成密鑰空間的搜索而失效。目前,已有許多研究針對(duì)如何提高WPA/WPA2-PSK的破解速度進(jìn)行了探索和嘗試。文獻(xiàn)[3]提出一種分布式多核CPU加GPU的WPA/WPA2-PSK高速暴力破解器,文獻(xiàn)[4]提出了利用彩虹表和GPU破解對(duì)稱(chēng)密碼的技術(shù)。同時(shí),也已經(jīng)有相關(guān)的商業(yè)軟件和開(kāi)源軟件被發(fā)布。俄羅斯軟件公司ElcomSoft推出了一款商業(yè)單機(jī)軟件Wireless Security Auditor,利用GPU的運(yùn)算性能提升WPA/WPA2-PSK的破解速度,開(kāi)源Pyrit是專(zhuān)門(mén)的WPA/WPA2-PSK破解工具,支持多核心CPU和GPU,基于Python語(yǔ)言開(kāi)發(fā),該破解工具的最新版本引入了網(wǎng)絡(luò)核心概念,將網(wǎng)絡(luò)上的協(xié)作破解機(jī)器作為本機(jī)外的另一個(gè)計(jì)算核心。這些研究的提出和相關(guān)軟件的發(fā)布,大大提高了WPA/WPA2-PSK的破解速度,也進(jìn)一步威脅到WPA/WPA2-PSK模式的安全性。
通過(guò)上述對(duì)字典破解的描述可以看出,攻擊者需要獲取幾個(gè)關(guān)鍵信息,才能夠進(jìn)行PSK的猜測(cè)和驗(yàn)證。如果能夠?qū)⑦@些關(guān)鍵信息至少隱藏起一部分,使得攻擊者無(wú)法獲取其明文,那么字典破解就不能進(jìn)行下去。在字典破解中,攻擊者首先根據(jù)假設(shè)的passphrase以及AP的SSID計(jì)算得到PSK’,然后需要截獲四次握手過(guò)程中的消息1和消息2(或者消息2和消息3),從中獲取明文 ANonce和 SNonce,聯(lián)合AP的MAC地址AP_MAC、STA的MAC地址STA_MAC以及PSK’,計(jì)算得到PTK’。由此可見(jiàn),在字典破解中,攻擊者必須要獲得的關(guān)鍵信息包括:AP的SSID、AP_MAC、STA_MAC、ANonce和 SNonce。其中,AP 的SSID、AP_MAC、STA_MAC在 AP的 Beacon幀、STA的Probe request幀以及AP的Probe response幀中都是明文出現(xiàn)的,很容易獲得且無(wú)法被隱藏,因此,唯一能夠隱藏的關(guān)鍵信息就是ANonce和SNonce。如果AP能夠?qū)ο?中的ANonce進(jìn)行加密而STA能夠正確解密,那么,由于攻擊者不知道加解密的密鑰,即使截獲了消息1,也無(wú)法得到正確的明文ANonce,同理,可以對(duì)消息2中的SNonce和消息3中的ANonce進(jìn)行相同的處理,經(jīng)過(guò)這一改進(jìn)后,由于攻擊者無(wú)法獲取明文ANonce和SNonce,字典破解將無(wú)法進(jìn)行。
根據(jù)以上分析,本文提出一種基于對(duì)稱(chēng)密鑰加密技術(shù)[11-12]的 WPA/WPA2-PSK改進(jìn)方法。由于在消息1的傳遞過(guò)程中,AP和STA共享的密鑰只有PSK,同時(shí),為了保護(hù)PSK的安全,根據(jù)式(3)將PSK展開(kāi)成PEK,作為加解密ANonce和SNonce的對(duì)稱(chēng)密鑰。
PEK=PRF - X(PSK,″Pairwise Encryption Key″,Min(STA_MAC,AP_MAC)||Max(STA_MAC,AP_MAC)) (3)
在這種改進(jìn)方法中,AP與STA之間的四次握手過(guò)程如圖2所示。
圖2 WPA/WPA2-PSK改進(jìn)方法
(1)消息1:AP根據(jù)式(3)計(jì)算得到PEK,生成隨機(jī)數(shù) ANonce并用 PEK加密,加密采用 AES(Advanced Encryption Standard)算法[13-14],AP 向 STA 發(fā)送加密后的ANonce。
(2)消息2:STA按照同樣的方法計(jì)算得到PEK,利用PEK對(duì)收到的消息1解密獲得ANonce,STA生成SNonce并根據(jù)式(2)計(jì)算得到PTK,然后向AP發(fā)送用PEK加密的SNonce、STA的RSN IE以及用KCK計(jì)算得到的MIC值。
(3)消息3:AP收到消息2,解密得到SNonce并計(jì)算PTK,然后利用KCK對(duì)消息2進(jìn)行MIC校驗(yàn),如果校驗(yàn)失敗,則丟棄消息2,如果校驗(yàn)成功,則向STA發(fā)送用PEK加密后的ANonce、AP的RSN IE、是否安裝PTK、用KEK加密的GTK,整個(gè)消息3用KCK進(jìn)行MIC校驗(yàn)。
(4)消息4:STA收到消息3并校驗(yàn)正確后即裝入PTK和GTK,然后向AP發(fā)送消息4,表示已經(jīng)裝入PTK和GTK。AP收到消息4并校驗(yàn)正確后也裝入PTK。
由于攻擊者不知道 PEK,對(duì)密文 ANonce和SNonce解密后必然會(huì)有某些不可讀的符號(hào)和字符,無(wú)法獲得正確的明文ANonce和SNonce,因此字典破解無(wú)法繼續(xù)進(jìn)行。
在WPA/WPA2的四次握手過(guò)程中,AP和STA之間的消息都是通過(guò)EAPOL-Key幀格式封裝的。為了盡可能減少對(duì)協(xié)議的修改,應(yīng)該保證改進(jìn)方法中所產(chǎn)生的新的數(shù)據(jù)傳遞能夠封裝在EAPOL-Key幀中,同時(shí)不會(huì)打亂已有數(shù)據(jù)在該幀格式中存放的位置。EAPOL-Key幀格式如圖3所示。
圖3 EAPOL-Key幀格式
在本文提出的WPA/WPA2-PSK改進(jìn)方法中,消息1、2、3中的ANonce和SNonce需要加密傳送,其余數(shù)據(jù)沒(méi)有發(fā)生變動(dòng)。在WPA/WPA2四次握手過(guò)程中,傳遞消息 1時(shí),EAPOL-KEY幀中的 Key Data Length字段和Key Data字段沒(méi)有被使用,所以,在改進(jìn)方法中,消息1中加密的ANonce可以存放在Key Data字段,而密文的長(zhǎng)度可以存放在Key Data Length字段。在WPA/WPA2四次握手過(guò)程傳遞消息2時(shí),EAPOL-Key幀的Key Data字段已經(jīng)被用于存放STA的RSN IE,但由于Key Data Length字段存放了該RSN IE的長(zhǎng)度,所以,在改進(jìn)方法中,可以接著該RSN IE之后,繼續(xù)在Key Data字段存放加密后的SNonce,而密文的長(zhǎng)度可以存放在EAPOL-Key幀的Reserved字段中,該字段在WPA/WPA2中一直沒(méi)有被使用,作為保留字段。類(lèi)似地,在WPA/WPA2四次握手過(guò)程傳遞消息3時(shí),EAPOL-Key幀的Key Data字段已經(jīng)存放了AP的RSN IE和用KEK加密后的GTK,同時(shí)Key Data Length字段存放了該RSN IE和GTK的長(zhǎng)度,在改進(jìn)方法中,仍然可以繼續(xù)在 Key Data字段中接著存放加密后的Anonce,同時(shí)將密文長(zhǎng)度存放在Reserved字段中。由此可見(jiàn),本文所提出的WPA/WPA2-PSK改進(jìn)方法不需要修改EAPOLKey幀的幀格式,并且不會(huì)打亂幀中已經(jīng)存放的數(shù)據(jù)的位置。
針對(duì)WPA/WPA2-PSK容易遭受字典破解的安全隱患,本文提出了一種基于對(duì)稱(chēng)密鑰加密技術(shù)的WPA/WPA2-PSK動(dòng)態(tài)密鑰協(xié)商過(guò)程改進(jìn)方法,采用AES算法對(duì)字典破解所依賴(lài)的明文 ANonce和SNonce進(jìn)行加密傳輸。攻擊者由于不知道加解密密鑰,因此無(wú)法獲取正確的明文ANonce和SNonce,從而無(wú)法進(jìn)行字典破解。
隨著計(jì)算機(jī)運(yùn)算能力的不斷提高和存儲(chǔ)器容量的不斷增大,越來(lái)越多的研究采用分布式、多核CPU、GPU、彩虹表等技術(shù)對(duì)WPA/WPA2-PSK進(jìn)行高速字典破解,雖然WPA/WPA2-Enterprise的安全性非常高,但面向小型企業(yè)和個(gè)人用戶(hù)的WPA/WPA2-PSK卻是無(wú)法被替代的,因此,進(jìn)一步增強(qiáng)WPA/WPA2-PSK的安全性,將是未來(lái)研究的方向。
[1]楊哲.無(wú)線(xiàn)網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)進(jìn)階[M].北京:電子工業(yè)出版社,2011:63-98.
[2]楊哲.無(wú)線(xiàn)網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2008.
[3]劉永磊,金志剛,陳喆,等.WPA/WPA2-PSK高速暴力破解器的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2011,37(10):125-127.
[4]金銓.DES密碼算法的彩虹攻擊技術(shù)及其GPU實(shí)現(xiàn)[D].上海:上海交通大學(xué),2010.
[5]王小軍,陸建德.基于802.11i四次握手協(xié)議的攻擊分析與改進(jìn)[J].計(jì)算機(jī)工程,2007,33(3):169-171.
[6]王小軍,陸建德.基于802.11i的四次握手協(xié)議的攻擊[J].計(jì)算機(jī)與現(xiàn)代化,2006(5):72-75.
[7]梁峰,史杏榮,曲阜平.IEEE802.11i中四次握手過(guò)程的安全分析和改進(jìn)[J].計(jì)算機(jī)工程,2007,33(3):149-150,179.
[8]IEEE 802.11i-2004,Amendment 6:Medium Access Control(MAC)Security Enhancements[S].
[9]Matthew S Gast.802.11無(wú)線(xiàn)網(wǎng)絡(luò)權(quán)威指南[M].南京:東南大學(xué)出版社,2007:179-180.
[10]白珅,王軼駿,薛質(zhì).WPA/WPA2協(xié)議安全性研究[J].信息安全與通信保密,2012(1):106-108.
[11]王亞弟,束妮娜,韓繼紅,等.密碼協(xié)議形式化分析[M].北京:機(jī)械工業(yè)出版社,2006:8-10.
[12]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2011:287-289.
[13]柯海清,馮啟明.數(shù)據(jù)加密技術(shù)及網(wǎng)絡(luò)應(yīng)用[J].武漢理工大學(xué)學(xué)報(bào):交通科學(xué)與工程版,2002,26(6):818-821.
[14]肖國(guó)鎮(zhèn),白恩健,劉曉娟.AES密碼分析的若干新進(jìn)展[J].電子學(xué)報(bào),2003,31(10):1549-1554.