Wi-Fi安全協(xié)議簡(jiǎn)史,從無(wú)到WPA3
由WI-FI的不斷發(fā)展,我們即將都會(huì)用上新的802.11ax協(xié)議和比較安全穩(wěn)定的WI-FI安全協(xié)議WPA3。在我們到底能弄明白WPA3究竟能帶來(lái)哪些好處之前,有必要對(duì)之前WI-FI無(wú)線(xiàn)協(xié)議歷史有個(gè)歷史回顧,憶苦思甜才能真正知道有多甜,吃水不忘挖井人,只有知道前輩們?yōu)榱薟I-FI安全所做的那些努力我們才能知道任何一個(gè)系統(tǒng)安全保障是多么的不易。本文蟲(chóng)蟲(chóng)就給大家講講Wi-Fi協(xié)議發(fā)展簡(jiǎn)史以及關(guān)鍵的歷史點(diǎn)。
蠻荒時(shí)代
在上世紀(jì)90年代中后期,互聯(lián)網(wǎng)伊始,通過(guò)任何一個(gè)機(jī)器都可以"嗅探"任何其他給定機(jī)器的流量,即使在有線(xiàn)網(wǎng)絡(luò)上也是如此。當(dāng)時(shí)的以太網(wǎng)主要是通過(guò)集線(xiàn)器而不是交換機(jī)相連,任何稍微懂點(diǎn)互聯(lián)網(wǎng)協(xié)議的人都可以隨時(shí)通過(guò)網(wǎng)絡(luò)抓包瀏覽網(wǎng)絡(luò)流量中傳輸?shù)膬?nèi)容,從底層的網(wǎng)絡(luò)包到應(yīng)用層電子郵件的內(nèi)容都一覽無(wú)遺。
在世紀(jì)交替之際(2000年附近),有線(xiàn)以太網(wǎng)已經(jīng)從集線(xiàn)器(甚至是舊的同軸電纜網(wǎng))轉(zhuǎn)到了交換機(jī)。集線(xiàn)器會(huì)將收到的每個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)給連接到它的每臺(tái)機(jī)器,所以基于此的網(wǎng)絡(luò)嗅探非常簡(jiǎn)單。相比之下,交換機(jī)只會(huì)將數(shù)據(jù)包轉(zhuǎn)發(fā)到它們所指定的MAC地址,因此當(dāng)計(jì)算機(jī)B想要將數(shù)據(jù)包發(fā)送到路由器A時(shí),交換機(jī)不會(huì)向計(jì)算機(jī)C上的用戶(hù)提供網(wǎng)絡(luò)包。這一點(diǎn)點(diǎn)的微妙變化使有線(xiàn)網(wǎng)絡(luò)比以前更加值得信賴(lài)。當(dāng)1997年發(fā)布最初的802.11 Wi-Fi標(biāo)準(zhǔn)時(shí),包括WEP-無(wú)線(xiàn)加密協(xié)議,它提供了與時(shí)下用戶(hù)期望的有線(xiàn)網(wǎng)絡(luò)具有相同的安全性期望,所以他的名字也是源于此。
WEP——原始的無(wú)線(xiàn)加密協(xié)議
WEP的原始版本需要一個(gè)10位數(shù)字或者26位的十六進(jìn)制預(yù)共享密鑰,比如0A3FBE839A類(lèi)似的數(shù)字。由于十六進(jìn)制位數(shù)可用字符有限制,只能0-9和A-F字母,所以和日常使用的可讀字符比較差異很大,非常不易于閱讀和使用,很容易出現(xiàn)故障。比如你使用一個(gè)個(gè)不在0-F范圍的字母,就會(huì)報(bào)錯(cuò)。和大家預(yù)期的一樣,WEP很快就被拋棄不用。盡管要求用戶(hù)有效和準(zhǔn)確地分享10或26位十六進(jìn)制數(shù)字似乎非常不合理,但是在1997年確實(shí)是這樣用的。

D-Link的DI-514 802.11b是WEP路由器的一個(gè)例子。
后續(xù)版本的WEP提供了對(duì)客戶(hù)端和路由器都一致方式,自動(dòng)將任意長(zhǎng)度的人類(lèi)可讀密碼hash散列化到10或26位十六進(jìn)制代碼。因此,盡管WEP的底層仍使用原始的40位或104位數(shù)字進(jìn)行處理,但是至少不用人們使用閱讀和分享這些難記的數(shù)字串。從數(shù)字到密碼的轉(zhuǎn)變開(kāi)始,使得WEP使用量開(kāi)始攀升。
雖然人們實(shí)際使用中WEP還挺好,但這個(gè)早期的安全協(xié)議仍然有很多問(wèn)題。一方面,它故意使用了很弱的加密算法,盡管可以手動(dòng)設(shè)置加強(qiáng)的加密算法,仍然容易被同一網(wǎng)絡(luò)的其他機(jī)器嗅探。由于所有流量都使用相同的PSK進(jìn)行加密和解密,所以任何人都可以輕松截取你的流量,并且解密。

這還不是最可怕的,可怕的是WAP密碼可以很容易被破解,基于Aircrack-Ng 破解套件可以在幾分鐘內(nèi)就能破解任何的WEP網(wǎng)絡(luò)。

WPA——WI-FI訪(fǎng)問(wèn)保護(hù)
WPA的最初實(shí)現(xiàn)采用了802.11g WI-FI標(biāo)準(zhǔn),該標(biāo)準(zhǔn)對(duì)WEP做了巨大地改進(jìn)。 WPA從一開(kāi)始就被設(shè)計(jì)為接受人性化的密碼,但其改進(jìn)遠(yuǎn)遠(yuǎn)不止于此。

WPA引入了TKIP,即Temporal Key Integrity Protocol臨時(shí)密鑰完整性協(xié)議。 TKIP主要兩個(gè)主要用途。首先,它為每個(gè)每個(gè)發(fā)送的數(shù)據(jù)包創(chuàng)建一個(gè)新的128位密鑰。這可以防止WEP網(wǎng)絡(luò)在幾分鐘被攻破的窘境。TKIP還提供了比WEP簡(jiǎn)單循環(huán)冗余校驗(yàn)(CRC,Cyclic Redundancy Check)強(qiáng)得多的消息認(rèn)證碼。CRC通常可用于低可信度的數(shù)據(jù)驗(yàn)證,以減輕網(wǎng)絡(luò)線(xiàn)路噪聲的影響,但它有個(gè)天然缺陷,無(wú)法有效抵御針對(duì)性地威脅。
TKIP還使得不會(huì)自動(dòng)將你的流量暴露給其他新加入Wi-Fi網(wǎng)絡(luò)的人。WEP的靜態(tài)預(yù)共享密鑰意味任何人都可以完全清楚地接收其他人的流量。但是TKIP為每個(gè)傳輸?shù)臄?shù)據(jù)包使用了一個(gè)新的短暫密鑰,所以其他人并不能使用這個(gè)密鑰。連接到公共Wi-Fi網(wǎng)絡(luò)的人,雖然大家都知道密碼,但是各自用的數(shù)據(jù)加密密鑰都不一樣,你就無(wú)法直接瀏覽別人傳輸?shù)木W(wǎng)絡(luò)包的內(nèi)容。
但是TKIP也有其問(wèn)題,并在2008年遭遇了MITM(Man In The Middle)。安全研人員Martin Beck和Erik Tews發(fā)現(xiàn)了一種利用802.11e QoS功能解密WPA/TKIP網(wǎng)絡(luò)中短數(shù)據(jù)包的方法,該方法也叫"Beck-Tews"。過(guò)程只需要12-15分鐘,但這并不是最糟糕的,當(dāng)時(shí)還相對(duì)有很少的網(wǎng)絡(luò)實(shí)際上實(shí)施了802.11e。
WPA2——棄用TKIP,換上AES-CCMP
2004年,針對(duì)WEP和TKIP的已知的問(wèn)題,電氣和電子工程師協(xié)會(huì)(IEEE)創(chuàng)建了新的802.11無(wú)線(xiàn)網(wǎng)絡(luò)標(biāo)準(zhǔn)802.11i擴(kuò)展。擁有Wi-Fi商標(biāo)的行業(yè)監(jiān)管機(jī)構(gòu)Wi-Fi Alliance則基于802.11i擴(kuò)展宣實(shí)現(xiàn)了WPA2。該版本的改進(jìn)是用AES-CCMP代替TKIP用于非企業(yè)認(rèn)證(企業(yè)通常使用RADIUS來(lái)為每個(gè)用于單獨(dú)分配密碼,這兩個(gè)密碼,可以避免大多數(shù)身份驗(yàn)證威脅問(wèn)題)。

有一些些802.11g路由器支持AES,但是真正大量的使用是從802.11n路由器開(kāi)始的,比如上圖中的 Linksys WRT310n。
這里的字母湯很厚很熱:AES是高級(jí)加密標(biāo)準(zhǔn)(the Advanced Encryption Standard),CCMP是計(jì)數(shù)器模式密碼塊鏈接消息認(rèn)證碼協(xié)議(the Counter Mode Cipher Block Chaining Message Authentication Code Protocol.)。 AES-CCMP可以避免Beck-Tews及變種的MITM。WPA2雖然支持AES-CCMP,但沒(méi)有強(qiáng)制啟用,為了兼容舊的非WPA2設(shè)備,很多用戶(hù)仍然使用TKIP。
KRACK攻擊——WI-FI安全性思考
經(jīng)管WPA2和AES-CCMP可以避免中間人工降,但是也并不是沒(méi)有永遠(yuǎn)地解決安全問(wèn)題。2017年出現(xiàn)了的KRACK像一般利箭刺穿了AES/CCMP的壁壘。

802.11i預(yù)期到偶爾會(huì)丟失網(wǎng)絡(luò)連接,并且為了加速重新連接,它允許斷開(kāi)連接的設(shè)備重新使用舊密鑰重新連接。因此,精心偽裝的偵聽(tīng)器可以捕獲數(shù)據(jù)包并使用重放攻擊來(lái)強(qiáng)制網(wǎng)絡(luò)重復(fù)發(fā)送具有新隨機(jī)數(shù)的相同已知塊。這樣黑客可以,通過(guò)這些信息重建整個(gè)密鑰串,從而實(shí)現(xiàn)完全網(wǎng)絡(luò)訪(fǎng)問(wèn)。
KRACK由于利用了802.11i的漏洞,所以WPA2無(wú)法修復(fù)。雖然可以通過(guò)在密鑰安裝期間禁用EAPOL-Key幀重新傳輸?shù)仍O(shè)置可以在很大程度上緩解攻擊,但是這會(huì)導(dǎo)致下線(xiàn)設(shè)備回復(fù)重連的時(shí)間加長(zhǎng)。不過(guò),這是僅有的可以防止KRACK,提高安全性的方法。
WPA3——NFC,PFS,SAE以及其他
Wi-Fi聯(lián)盟于2018年1月推出了WPA3。WPA3通過(guò)將密鑰預(yù)共享(PSK)替換為同等身份驗(yàn)證(SAE)來(lái)避免重放攻擊。SAE是一種旨在強(qiáng)大而安全地識(shí)別對(duì)等設(shè)備的協(xié)議,它提出了適用于Wi-Fi網(wǎng)狀網(wǎng)絡(luò)的802.11s標(biāo)準(zhǔn)。Wi-Fi聯(lián)盟聲稱(chēng),IEEE 802.11-2016中提到的SAE的實(shí)施將解決用戶(hù)由于大意或者設(shè)置而導(dǎo)致的安全問(wèn)題。SAE還解決了針對(duì)短密碼設(shè)置的網(wǎng)絡(luò)的(非暴力或字典)威脅。
WPA3認(rèn)證還引入了利用NFC進(jìn)行身份驗(yàn)證的能力。NFC或近場(chǎng)通信是一種極短距離無(wú)線(xiàn)通訊技術(shù),用于通過(guò)將設(shè)備靠近驗(yàn)證設(shè)備而進(jìn)行認(rèn)證。如果WPA3路由器或接入點(diǎn)啟用了NFC網(wǎng)絡(luò)加入,你只需拿著支持NFC的手機(jī)或者互聯(lián)網(wǎng)設(shè)備靠經(jīng)路由器/接入點(diǎn),就能通過(guò)認(rèn)證,加入網(wǎng)絡(luò)。雖然從某種意義上來(lái)說(shuō)這是一種低安全性,任何可以利用手機(jī)輕輕靠就能上網(wǎng)。但是由于NFC會(huì)話(huà)無(wú)法被遠(yuǎn)程捕獲,并且方便好用,無(wú)需記憶密碼,而且可以基于入網(wǎng)設(shè)備進(jìn)行審計(jì)和事后行為追蹤,所以這是相對(duì)比較方便靠譜的方法,權(quán)衡了安全性和易用性的要求。
WPA3還通過(guò)添加Perfect Forward Secrecy修補(bǔ)了Wi-Fi實(shí)施加密的另一個(gè)明顯漏洞。對(duì)于WEP,WPA或WPA2,不知道Wi-Fi密碼的黑客可以記錄他們所在范圍內(nèi)的所有內(nèi)容,然后獲得密鑰后再解密。通過(guò)Perfect Forward Secrecy杜絕了預(yù)先錄網(wǎng)絡(luò)包的可能。即使你以后破解了網(wǎng)絡(luò),你先前捕獲的包仍然不可解碼。使用WPA3,即使較弱的HTTPS連接和未加密的網(wǎng)絡(luò)包,如DNS解析等都將受到保護(hù)。
無(wú)線(xiàn)WI-FI安全保障
WPA3上距離上市還有距離,目前市面上還找不到支持它的路由器。但也不要因此而恐慌。大多數(shù)現(xiàn)代路由器,也都支持KRACK攻擊緩解設(shè)置。
如果可能的話(huà),你絕對(duì)不應(yīng)該再使用任何非802.11ac設(shè)備;
你應(yīng)該絕對(duì)確定你已經(jīng)更新了所有路由器上的固件以及新的可用版本。
如果你的設(shè)備的新可用固件版本早于2017年11月,則毫無(wú)疑問(wèn)會(huì)容易受到KRACK攻擊。這時(shí)候你要做就是換一個(gè)更新的路由器。
Windows,Linux或BSD以及Apple個(gè)人計(jì)算機(jī)通常沒(méi)有什么問(wèn)題,只要操作系統(tǒng)本身經(jīng)過(guò)修補(bǔ)和更新即可。通用計(jì)算機(jī)上的WPA2身份驗(yàn)證通常獨(dú)立于操作系統(tǒng),通過(guò)硬件驅(qū)動(dòng)程序就可以解決。
如果設(shè)備本身是很新的,那么Apple IOS設(shè)備以及Google Pixel和Nexus設(shè)備將會(huì)很好。Android設(shè)備通常會(huì)有很多問(wèn)題,因?yàn)樵S多Android OEM和運(yùn)營(yíng)商都無(wú)法及時(shí)提供新的安全補(bǔ)丁。物聯(lián)網(wǎng)設(shè)備同樣是安全問(wèn)題的多發(fā)點(diǎn)。如果你有一個(gè)非谷歌的Android設(shè)備或物聯(lián)網(wǎng)設(shè)備一般,你需要關(guān)注安全動(dòng)態(tài),確保你的設(shè)備沒(méi)有問(wèn)題。
Wi-Fi安全協(xié)議的變化歷史告訴我們,沒(méi)有任何一種設(shè)備或者協(xié)議是永保安全的,安全是動(dòng)態(tài)的,解決了一個(gè),馬上會(huì)涌出新的漏洞,只有不斷迭代,不斷更新才是保證安全的法則。