美文网首页程序员Android开发Android开发经验谈
Android WiFi 之 认证标准、密钥管理、加密方案

Android WiFi 之 认证标准、密钥管理、加密方案

作者: 罗永慧 | 来源:发表于2019-02-27 21:27 被阅读4次

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结合的方式。

谢谢大家,如何有问题或描述不清楚的地方,欢迎反馈。

相关文章

  • Android WiFi 之 认证标准、密钥管理、加密方案

    Android WiFi 相关的开发中,可能会使用到android.net.wifi.ScanResult类,在...

  • WIFI

    [RK3288][Android6.0] WIFI接入过程的加密和认证方式小结 [RK3288][Android6...

  • Android签名

    Android签名用到的基础概念 对称加密和非对称加密 对称加密是加密解密密钥是同一个的加密方案,可以加密大数据量...

  • 密码学:对称加密

    一、算法介绍 对称加密:明文通过密钥加密得到密文,密文通过密钥解密得到明文。 1.1常见算法 DES:数据加密标准...

  • Putty使用秘钥认证登录Centos

    Putty秘钥认证:SSH服务支持一种安全认证机制,即密钥认证。所谓的密钥认证,实际上是使用一对加密字符串,一个称...

  • 关于wifi portal认证--为浏览器添加wifi认证功能

    关于wifi portal认证--为浏览器添加wifi认证功能 1.什么是portal认证 2.android的原...

  • GIT关联已存在的仓库

    1.添加密钥 在GIT上用户设置/管理SSH密钥/增加密钥,添加本地GIT GUI HERE/HELP/SHOW ...

  • 利用Python加密解密

    拥有密钥就可以加密解密,方便隐私通信实现方案如下: 设置密钥,只有接发双方才拥有 写好明文,密钥介入进行加密 接受...

  • Android 安全

    Android 秘钥库系统 利用 Android 密钥库系统,您可以在容器中存储加密密钥,从而提高从设备中提取密钥...

  • Android数据加密(转)

    Android数据加密之Rsa加密 Android数据加密之Aes加密 Android数据加密之Des加密 And...

网友评论

    本文标题:Android WiFi 之 认证标准、密钥管理、加密方案

    本文链接:https://www.haomeiwen.com/subject/vrsquqtx.html