1. WIFI认证标准
WEP: Wired Equivalent Privacy(有线等效加密)
作为 1997 年批准的原始 802.11 标准的一部分引入,它可能是最常用的 WiFi 安全协议。它的 10 位或 26 位十六进制数字(40 位或 104 位)的密钥非常容易识别。2004 年,两者WEP-40和WEP-104都被宣布弃用。有128-bit(最常见的)和256-bitWEP 变体,但随着计算能力的不断提高,攻击者能够利用许多安全漏洞。总而言之,这个协议已不能满足安全的需要
WPA: WiFi Protected Access (Wi-Fi访问保护),
是一种保护无线网络访问安全的技术标准,WPA是为了解决EAP的几个严重的弱点而产生的,
通过128位密钥加上48位初向量和可以在使用中动态改变密钥的“临时密钥完整性协议”(TKIP),
使用RC4加密、使用Michael消息验证码,避免针对EAP的密钥截取攻击和Replay Attack。
WPA2:WPA的升级版
采用CCMP计数器模式密码块链消息完整码协议,使用CBC-MAC替代Michael消息验证码,
使用AES取代RC4加密算法。在身份认证和保证数据完整性上更安全。
WPA3:WPA2的升级版
2018 年 1 月,Wi-Fi 联盟宣布 WPA3 替代 WPA2。新标准128-bit在 WPA3-个人模式(WPA-PSK预共享密钥)或192-bitWPA3-企业(RADIUS 身份验证服务器)中使用加密。WPA3 将更难被攻击,因为它的现代密钥建立协议称为“同时验证相等”(SAE)或蜻蜓密钥交换。SAE 提高了初始密钥交换的安全性,并针对离线字典攻击提供了更好的保护
2. WIFI加密方案
/** Security type for an open network. */
/*不加密直连*/
public static final int SECURITY_TYPE_OPEN = 0;/** Security type for a WEP network. */
/*比较老加密方式,已弃用*/
public static final int SECURITY_TYPE_WEP = 1;/** Security type for a PSK network. */
/** 1.WPA预共享密钥(pre-shared key),需要指定 「preShareKey」,* 连接到网络的用户共享同一个密钥,多数运用到家庭和个人无线网络* 2. 包含WPA-PSK和WP2-PSK*/
public static final int SECURITY_TYPE_PSK = 2;/** Security type for an EAP network. */
/** WPA使用EAP 身份认证,通常与外部认证服务器一起使用* EAP 的类型,是一种企业验证的安全类型,EAP 全称叫 802.1X/EAP* 最常见EAP 验证类型包括 EAP-MD-5、EAP-TLS、EAP-LEAP、EAP-TTLS、EAP-Fast、EAP-PEAP*/
public static final int SECURITY_TYPE_EAP = 3;/** Security type for an SAE network. */
/** 1.SAE最早是802.11s中为mesh网络提出的基于password的认证和key生成协议[1],* 在WPA2-PSK中,PMK就是PSK,直接来源于密钥;* 2.而SAE则保证任何STA pair(AP-STA,nonAP-STA)在不同的session都有不同的PMK,* 使用SAE认证的个人无线网络通常称为WPA3-PSK/WPA3-Personal* 3. 详细介绍 https://blog.csdn.net/qq_23087099/article/details/113921261*/
public static final int SECURITY_TYPE_SAE = 4;/** Security type for an EAP Suite B network. */
/*EAP网络的另一种加密形式*/
public static final int SECURITY_TYPE_EAP_SUITE_B = 5;/** Security type for an OWE network. */
/*未知,后续补充*/
public static final int SECURITY_TYPE_OWE = 6;/** Security type for a WAPI PSK network. */
/*我国自主研发并大力推行的无线网络WLAN安全标准*/
public static final int SECURITY_TYPE_WAPI_PSK = 7;/** Security type for a WAPI Certificate network. */
/*我国自主研发并大力推行的无线网络WLAN安全标准*/
public static final int SECURITY_TYPE_WAPI_CERT = 8;
3. 代码配置介绍
以Android 系统为例子。
- 配置wifi 加密类型
可以使用 Settings/src/com/android/settings/wifi/WifiConfigController.java 的 setSecurityParams 进行设置。
- 获取wifi加密类型
可以使用frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiConfigManager.java的allowedKeyManagement 获取加密类型,你可以自己封装getSecurity 和getSecurityString方法使用。
- wifi连接
config对象里面就有我们应用输入的信息比如:wifi名称,wifi密码,加密形式,是否有静态ip,是否有代理设置
protected void connect(WifiConfiguration config) {WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);wifiManager.connect(config, connectListener); //所有的数据都在config对象里面;connectListener 没啥作用,一般传null参数,不管密码是否正确都是回调success。}
4. WIFI的安全认证
以PCI 安全认证为例子,讲述WIFI连接安全认证的一些明确定义的规范。
禁止none和wep的连接方式,无论wifi的个人热点,手自动连接必须支持WPA2或WPA3 安全。