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

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

這還不是最可怕的,可怕的是WAP密碼可以很容易被破解,基于Aircrack-Ng 破解套件可以在幾分鐘內就能破解任何的WEP網絡。

WPA——WI-FI訪問保護
WPA的最初實現采用了802.11g WI-FI標準,該標準對WEP做了巨大地改進。 WPA從一開始就被設計為接受人性化的密碼,但其改進遠遠不止于此。

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

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

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