Android Wi-Fi 相关的开发中, 可能会使用到 Android.NET.Wi-Fi.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: Wi-Fi 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 (预共享密钥) 管理方案, 共享密钥就是我们家庭 Wi-Fi 设置的密码.
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 内部类, 可以获取相应的安全协议.
应用场景
根据当前 Wi-Fi 信息, 生成二维码, 比如使用二维码开源项目 https://github.com/zxing/zxing , 生成格式如下的 Wi-Fi 配置字符串:
Wi-Fi: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 需要设置当前 Wi-Fi 的认证标准, 可以是 WEP 或者 WPA 或者 nopass, 此时我们就应该知道如何去获取认证标准及对应的含义.
结论
题初所提到的[WPA-PSK-CCMP+TKIP], 翻译过来的意思是当前 Wi-Fi 的认证标准为 WPA, 密钥管理方案是 PSK, 加密方案使用了 CCMP 和 TKIP 结合的方式.
谢谢大家, 如何有问题或描述不清楚的地方, 欢迎反馈.
来源: http://www.jianshu.com/p/9316c433ec5f