Android WiFi 相关的开发中,可能会使用到android.net.wifi.ScanResult类,在此类中有一个成员变量 capabilities,在官方文档中如此描述她:
public String capabilities
Describes the authentication, key management, and encryption schemes supported by the access point.
意思是: capabilities 描述 access point的 认证标准、密钥管理、加密方案。
在Android项目中打印出capabilities的值,内容如下:
[WPA-PSK-CCMP+TKIP]
[WPA2-PSK-CCMP+TKIP][ESS]
不禁产生疑问,这些由字母组合的而成的名词代表的是什么意思? 又都扮演这什么角色?我们应该如何去使用?
- 认证标准:WEP: Wired Equivalent Privacy(有线等效加密) ,保护无线网络信息安全的体制,无线网络通过无线电传播,为了保证数据机密性而设计。但是存在一些漏洞,比如针对EAP的密钥截取攻击,和针对数据完整性的Replay Attack(回放攻击),已经不推荐使用。
- WPA: WiFi Protected Access (Wi-Fi访问保护),是一种保护无线网络访问安全的技术标准,WPA是为了解决EAP的几个严重的弱点而产生的,通过128位密钥加上48位初向量和可以在使用中动态改变密钥的“临时密钥完整性协议”(TKIP),使用RC4加密、使用Michael消息验证码,避免针对EAP的密钥截取攻击和Replay Attack。
- WPA2:WPA的升级版,采用CCMP计数器模式密码块链消息完整码协议,使用CBC-MAC替代Michael消息验证码,使用AES取代RC4加密算法。在身份认证和保证数据完整性上更安全。
- 密钥管理方案NONE : 不使用WPA,使用明文或者静态WEP;
- WPA_PSK: WPA预共享密钥(pre-shared key),需要指定 「preShareKey」,连接到网络的用户共享同一个密钥,多数运用到家庭和个人无线网络;
- WPA_EAP: WPA使用EAP 身份认证,通常与外部认证服务器一起使用;
- IEEE8021X: 使用EAP身份认证和[可选]的动态生成的WEP密钥;
- WPA2_PSK: WPA2预共享密钥;
- FT_PSK:具有PSK认证的IEEE 802.11r快速BSS转换;
- FT_EAP:IEEE 802.11r Fast BSS Transition with EAP authentication
- OSEN: Hotspot 2.0 r2 OSEN
名词解释:
- EAP: Extensible Authentication Protocol (拓展认证协议),是一种在无线网络或者点对点连线中普遍使用的认证框架,提供有很多认证方法,允许协商所希望的认证机制,无线网络中的认证方法通常包括EAP-TLS、EAP-SIM、EAP-AKA、LEAP、EAP-TTLS。
- PSK: Pre-Shared Key (预共享密钥) 管理方案,共享密钥就是我们家庭WiFi设置的密码。
Android FrameWork,WiFiConfiguration中提供的KeyMgmt内部类,可以获取相应的安全协议
- 保证密钥安全和信息完整性的安全协议 (加密方式)CCMP : Counter CBC-MAC Protocol 计数器模式密码块链消息完成码协议, 使用AES加密,使用CBC-MAC用于信息完整性计算。
- TKIP : Temporal Key Integrity Protocol 临时密钥完整性协议,使用密钥混合功能避免针对WEP的密钥恢复攻击,使用Michael信息认证码保证数据完整性。
- WEP104 : 带有104-bit 密钥的WEP,使用104比特的钥匙加上24比特的初始量,组成128比特的WEP钥匙,无法保证数据完整性。
- WEP40:带有 40-bit 密钥的WEP (原始802.11),使用40比特的钥匙加上24比特的初向量,组成64比特的WEP钥匙使用RC4(Rivest Cipher)串流加密技术完成加密,无法保证数据完整性。
- GTK_NOT_USED: 热点2.0 r2 OSEN
Android FrameWork,WiFiConfiguration中提供的GroupCipher内部类,可以获取相应的安全协议。
应用场景根据当前WiFi信息,生成二维码,比如使用二维码开源项目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需要设置当前WiFi的认证标准,可以是WEP或者WPA或者nopass,此时我们就应该知道如何去获取认证标准及对应的含义。
结论题初所提到的[WPA-PSK-CCMP+TKIP],翻译过来的意思是当前WiFi的认证标准为WPA,密钥管理方案是PSK,加密方案使用了CCMP和TKIP结合的方式。
谢谢大家,如何有问题或描述不清楚的地方,欢迎反馈。