Android WiFi 相關(guān)的開發(fā)中,可能會(huì)使用到android.net.wifi.ScanResult類,在此類中有一個(gè)成員變量 capabilities,在官方文檔中如此描述她:
public String capabilities
Describes the authentication, key management, and encryption schemes supported by the access point.
意思是: capabilities 描述 access point的 認(rèn)證標(biāo)準(zhǔn)、密鑰管理、加密方案。
在Android項(xiàng)目中打印出capabilities的值,內(nèi)容如下:
[WPA-PSK-CCMP+TKIP]
[WPA2-PSK-CCMP+TKIP][ESS]
不禁產(chǎn)生疑問,這些由字母組合的而成的名詞代表的是什么意思? 又都扮演這什么角色?我們應(yīng)該如何去使用?
WiFi認(rèn)證標(biāo)準(zhǔn)
WEP: Wired Equivalent Privacy(有線等效加密) ,保護(hù)無線網(wǎng)絡(luò)信息安全的體制,無線網(wǎng)絡(luò)通過無線電傳播,為了保證數(shù)據(jù)機(jī)密性而設(shè)計(jì)。但是存在一些漏洞,比如針對(duì)EAP的密鑰截取攻擊,和針對(duì)數(shù)據(jù)完整性的Replay Attack(回放攻擊),已經(jīng)不推薦使用。
WPA: WiFi Protected Access (Wi-Fi訪問保護(hù)),是一種保護(hù)無線網(wǎng)絡(luò)訪問安全的技術(shù)標(biāo)準(zhǔn),WPA是為了解決EAP的幾個(gè)嚴(yán)重的弱點(diǎn)而產(chǎn)生的,通過128位密鑰加上48位初向量和可以在使用中動(dòng)態(tài)改變密鑰的“臨時(shí)密鑰完整性協(xié)議”(TKIP),使用RC4加密、使用Michael消息驗(yàn)證碼,避免針對(duì)EAP的密鑰截取攻擊和Replay Attack。
WPA2:WPA的升級(jí)版,采用CCMP計(jì)數(shù)器模式密碼塊鏈消息完整碼協(xié)議,使用CBC-MAC替代Michael消息驗(yàn)證碼,使用AES取代RC4加密算法。在身份認(rèn)證和保證數(shù)據(jù)完整性上更安全。
WiFi密鑰管理方案
NONE : 不使用WPA,使用明文或者靜態(tài)WEP;
WPA_PSK: WPA預(yù)共享密鑰(pre-shared key),需要指定 「preShareKey」,連接到網(wǎng)絡(luò)的用戶共享同一個(gè)密鑰,多數(shù)運(yùn)用到家庭和個(gè)人無線網(wǎng)絡(luò);
WPA_EAP: WPA使用EAP 身份認(rèn)證,通常與外部認(rèn)證服務(wù)器一起使用;
IEEE8021X: 使用EAP身份認(rèn)證和[可選]的動(dòng)態(tài)生成的WEP密鑰;
WPA2_PSK: WPA2預(yù)共享密鑰;
FT_PSK:具有PSK認(rèn)證的IEEE 802.11r快速BSS轉(zhuǎn)換;
FT_EAP:IEEE 802.11r Fast BSS Transition with EAP authentication
OSEN: Hotspot 2.0 r2 OSEN
名詞解釋:
EAP: Extensible Authentication Protocol (拓展認(rèn)證協(xié)議),是一種在無線網(wǎng)絡(luò)或者點(diǎn)對(duì)點(diǎn)連線中普遍使用的認(rèn)證框架,提供有很多認(rèn)證方法,允許協(xié)商所希望的認(rèn)證機(jī)制,無線網(wǎng)絡(luò)中的認(rèn)證方法通常包括EAP-TLS、EAP-SIM、EAP-AKA、LEAP、EAP-TTLS。
PSK: Pre-Shared Key (預(yù)共享密鑰) 管理方案,共享密鑰就是我們家庭WiFi設(shè)置的密碼。
Android FrameWork,WiFiConfiguration中提供的KeyMgmt內(nèi)部類,可以獲取相應(yīng)的安全協(xié)議
WiFi保證密鑰安全和信息完整性的安全協(xié)議 (加密方式)
CCMP : Counter CBC-MAC Protocol 計(jì)數(shù)器模式密碼塊鏈消息完成碼協(xié)議, 使用AES加密,使用CBC-MAC用于信息完整性計(jì)算。
TKIP : Temporal Key Integrity Protocol 臨時(shí)密鑰完整性協(xié)議,使用密鑰混合功能避免針對(duì)WEP的密鑰恢復(fù)攻擊,使用Michael信息認(rèn)證碼保證數(shù)據(jù)完整性。
WEP104 : 帶有104-bit 密鑰的WEP,使用104比特的鑰匙加上24比特的初始量,組成128比特的WEP鑰匙,無法保證數(shù)據(jù)完整性。
WEP40:帶有 40-bit 密鑰的WEP (原始802.11),使用40比特的鑰匙加上24比特的初向量,組成64比特的WEP鑰匙使用RC4(Rivest Cipher)串流加密技術(shù)完成加密,無法保證數(shù)據(jù)完整性。
GTK_NOT_USED: 熱點(diǎn)2.0 r2 OSEN
Android FrameWork,WiFiConfiguration中提供的GroupCipher內(nèi)部類,可以獲取相應(yīng)的安全協(xié)議。
知識(shí)應(yīng)用場(chǎng)景
根據(jù)當(dāng)前WiFi信息,生成二維碼,比如使用二維碼開源項(xiàng)目zxing,生成格式如下的WiFi配置字符串:
WIFI:T:WPA;S:mynetwork;P:mypass;;
其中T: WPA Authentication type; can be WEP or WPA, or 'nopass' for no password. Or, omit for no password.,意思為T需要設(shè)置當(dāng)前WiFi的認(rèn)證標(biāo)準(zhǔn),可以是WEP或者WPA或者nopass,此時(shí)我們就應(yīng)該知道如何去獲取認(rèn)證標(biāo)準(zhǔn)及對(duì)應(yīng)的含義。
結(jié)論
題初所提到的[WPA-PSK-CCMP+TKIP],翻譯過來的意思是當(dāng)前WiFi的認(rèn)證標(biāo)準(zhǔn)為WPA,密鑰管理方案是PSK,加密方案使用了CCMP和TKIP結(jié)合的方式。
謝謝大家,如何有問題或描述不清楚的地方,歡迎反饋。