Android Wifi

Android

基于Linux的系统,从上而下分为应用层,应用框架层、函数库、虚拟机、内核层

Netd

网络管理和控制的后台daemon(守护程序),主要有三个方面的功能:

  • 防火墙设置、网络地址转换、带宽控制、无线网卡软接入点、网络设备绑定
  • DNS的缓存与管理
  • 网络服务搜索

netd位于框架层与内核层之间,其main函数主要有四个成员:

NetLinkManager

网络链接管理器,简称NM,用于创建并接收来自Kernel(内核层)的UEvent消息,核心代码位于start函数中。start函数注册了三个用于接收UEvent的socket

  • KOBJECT:/sys/class/net下相关模块的加载与卸载
  • ROUTE:网络链路的断开与链接
  • NFlOG:带宽控制

CommandListener

命令监听器,简称CL,接收来自框架层NetWorkManageService的命令,定义了是11个Command类和10个controller类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J3JPFJQQ-1638444199769)(…/AppData/Roaming/Typora/typora-user-images/image-20211125152843447.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksY40KCU-1638444199771)(…/AppData/Roaming/Typora/typora-user-images/image-20211125154241104.png)]

InterfaceCmd

InterfaceCmd用来管理和控制系统中的网络设备

CL构造函数利用iptables等工具创建较多的Chain和Rule,以及对某些命令控制对象初始化

CL创建后filter表包含五部分内容:

  • target:目标名
  • prot:protocol 协议
  • opt:选项
  • source:数据包的源
  • destination:目标地址

bw_INPUT、bw_OUTPUT、bw_FORWARD Chain用于带宽(Bandwidth)控制

fw_INPUT、fw_OUTPUT、fw_FORWARD用于防火墙(Firewall)控制

narctrl_FROWARD用于网络地址转换(NAT)

oem_fwd、oem_out用于OEM厂商自定义的控制。

ndc测试工具:

  • 监视Netd中发生的事情
  • 支持命令行发命令给Netd执行

PPP(点对点协议),为同等单元之间传递数据包设计的链路层协议,提供全双工,按顺序传递数据包。主要包含三个部分

  • 链路控制协议(LCP):负责创建、维护或终止一次物理连接
  • 网络控制协议(NCP):包含一簇协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。
  • 认证协议:常用的有口令验证协议(PAP)、挑战握手验证协议。使用时,客户端会将自己的身份发送给远端的接入服务器。期间将使用认证协议避免第三方窃取数据或冒充远程客户接管与客户的连接。

pppd是运行ppp协议的后台进程。他和kernel中的ppp驱动联动,以完成在直连线路(DSL、拨号网络)上建立IP通信链路的工作

DnsProxyListener

域名解析socketAPI:

getaddrinfo:根据指定host名或service获得对应ip地址

getnameinfo:根据指定ip地址获得对应的host或service名称

域名代理监听,简称DPL,定义了两个命令:

  • GetAddrInfoCmd:和Bionic C库的getaddrinfo函数对应
  • GetHostByAddrCmd:和Bionic C库的gethostbyaddr函数对应

MDnsSdListener

组播域名服务,对应的框架层服务为NsdService(NetworkServiecDiscover),运行过程分三步:

  • Netd创建MDnsSdListener对象,其内部会创建Monitor对象,Monitor对象启动一个线程用于和mdnsd通信,并接收来自handler的请求
  • NsdServices启动完毕后向MDnsSdListener发送“start-service”命令
  • NsdService响应应用程序的请求,向MdnsSdListener发送其他命令,例如discover等,Monitor最终处理这些请求。

Linux中 iptables tc ip命令

iptables:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T8wojR9q-1638444199773)(…/AppData/Roaming/Typora/typora-user-images/image-20211125110751833.png)]

网络管理工具 iptables Target 和常用参数

iptables中的rule有四个默认定义的Target

  • ACCEPT:接收数据包
  • DROP:直接丢弃数据包。没有任何数据反馈给数据源端
  • RETURN:返回到调用chain,略过后续的rule处理
  • QUEUE:数据返回到用户空间去处理

设置防火墙:

iptables -t filter -A input -s 192.168.1.108 -j DROP

仅拦截协议为tcp的数据包

iptables -t filter -A input -p tcp -s 192.168.1.108 -j DROP

iptables仅支持IPV4

tc命令

Traffic Control 流量空限,通过建立数据包队列(Queue),并控制各个队列中 数据包的发送方式来实现

ip命令

网络管理工具,功能:

  • 可代替ipconfig命令,通过ip工具可管理系统中的网络接口,包括配置并查看网络接口情况
  • 可替代route命令,即ip工具支持主机路由,网络路由,网管参数等
  • 可替代arp命令,即ip工具支持查看、修改、管理系统的ARP缓存
    • ARP:地址解析协议

WiFi

Wireless Fidelity

Test Plan(Wi-Fi测试方案)参考了IEEE802.11规范,并拓展了802.11内容

IEEE802 局域网、城域网标准

IEEE802.11 无线局域网的介质访问控制协议以及物理层技术规范

计算机网络OSI七层模型

应用层

常见协议:HTTP、HTTPS、FTP、SMTP等。其数据单位为APDU

表示层

为不同客户端提供数据和信息的语法转换、压缩解压缩、加密解密等服务。数据单位为PPDU

会话层

为通信双方制定通信方式,创建和注销会话(双方通信)等。常见协议有ZIP、AppleTalk、SCP。数据单位为SPDU

传输层

控制数据流量,同时能进行调试及错误处理,确保通信顺利。发送端为数据分组加上序号,接收端将分组重组为有用的数据或文件。常见协议有TCP、UDP等。数据单位为TPDU

网络层

为数据传输的目的寻址,然后再选择一个传输数据最佳路线。网络层数据单位为Package或Datagram。常见设备有路由器等,常见协议有IP、IPv6

数据链路层

在物理层提供比特流的基础上,建立相邻节点之间的数据链路。通过差错控制提供数据帧(Frame)在信道上无差错的传输。数据链路层在不可靠的物理介质上提供可靠的传输。改层的作用包括物理地址寻址、数据的成帧、流量控制、数据检错、重发等。数据链路层的单位为Frame(帧),常见设备有二层交换机、网桥等。

物理层

数据单位为bit,定义了设备机械、电气、功能和过程等方面的特性。建立、维护、拆除物理链路连接。

TCP/IP四层协议 传输控制协议/网际协议

  • 应用层
    • 应用层
    • 表示层
    • 会话层
  • 传输层
    • 传输层
  • 网络层
    • 网络层
  • 网络接口层
    • 数据链路层
    • 物理层

数据链路层

数据链路层分为LLC子层和MAC子层

媒体访问控制子层(MAC)

解决局域网(LAN)共用信道的使用发生竞争时,如何分配信道的使用权。

无线局域网的介质访问控制协议只涉及MAC层,主要采用CSMA/CA(载波监听多路访问/冲突避免机制)

两种方式:延迟发送:当无线链路被占用时,设备随机为每一帧选择一段退避(backoff)时间,减少冲突发生。

​ RTS和CTS握手:

MAC层为上层提供MACService,MACService内部包含数个Entity。Entity封装了一组功能模块,MAC Entity对上层提供MAC Service。Entity可以相互调用来完成某个功能。

MAC Service 为上层提供服务时必须经由MAC Service access Point来访问。

逻辑链路控制子层(LLC)

实现了两个站点之间帧的交换,实现端到端(源到目的),无差错的帧传输和应答功能及流量控制功能。

802.11协议

规范定义了无线局域网中MAC层和PHY层的技术标准

802.11组件

  • 物理组件:820.11无线网络包含四种主要物理组件
    • WM(无线媒介):能传送无线MAC帧数据的物理层,包括红外和射频两种,使用最多的是射频物理层
    • STA(工作站):指携带无线网卡的设备
    • AP(Access Point,接入点):分布式STA
    • DS(分布式系统):
  • 无线网络的构建:无线网络由物理组件构成,基本服务集(BSS)是整个无线网络的基本构成组件,它有两种类型
    • 独立型BBS:不需要AP参与参与,各STA之间可直接交互
    • 基础结构型BBS:所有的STA之间交互必须经过AP,AP是BSS的中控台。
  • 拓展服务集ESS:几个BSS联合工作构建更大的无线网络

802.11 Service

从模块来看,802.11中的Service分为两大类别

  • SS(Station Service):他是STA应该具有的功能
  • DSS:从逻辑上指明DS应该具有的功能

数据传输相关服务

无线网络数据传输的数据是无线MAC帧数据。

  • Distribution Service(DS,分布式服务)
  • Integration Service(IS,整合服务)

无线网络三个重要的服务

  • 数据传输服务:无线网络的一个主要功能
  • 安全方面的服务:
  • 无线电测量服务:用于无线网络的组建。

802.11MAC服务和帧

MAC层定义了一些Service用于为上层LLC提供服务

  • request:供LLC层发送数据
  • indication:通知LLC层进行数据接收
  • STATUS.indaction:通知LLC层自己(MAC)层的状态
MAC帧

MAC帧由三个基本域组成

  • MAC Header:

    • 控制帧(Frame Control):共2字节16位

      • Protocol Version:版本号

      • Type:MAC的类型:

        • 数据帧:一般Frame Body最大长度为2312字节。

        • 控制帧:控制帧的作用包括协助数据帧的传递、管理无线媒介第访问等

          • RTS:申请无线媒介的使用时间。RTS的MAC标头由4个字段字段构成:

            • Frame Control(帧控制)
            • Duration(持续时间)
            • Address1字段:Receiver Address(接收端地址)
            • Address2字段:Transmitter Address(发送端地址)
          • CTS:用于回复RTS。CTS的MAC标头由3个字段构成

            • Frame Control(帧控制)
            • Duration(持续时间)
            • Address1字段:Receiver Address(接收端地址)
          • ACK:MAC以及任何数据的传输都需要得到肯定确认。这些数据包括普通的数据传输、RTS/CTS交换之前帧以及分片帧

          • PS-POLL:该控制帧被STA用于从AP中获取因省电模式而缓存的数据。其中AID的值是STA和AP关联时,由AP赋给该STA的

        • 管理帧:

          • Beacon(信标)帧:AP定时发送Beacon帧用来声明某个网络。必须包含

          • Timestamp:时间戳信息,定长字段,8字节,用于同步BSS中的STA,时间单位为微秒

          • Beacon Interval:宣布无线网络的存在

          • Capability:占2字节,该字段用于宣告此网络具备何种功能。

          • SSID:网络名,用字符串表达

          • Association Request/Response(关联请求/回复帧):当STA需要关联某个AP时,将发送此帧。

            • Capability:AP将检查该字段用于判断STA是否满足要求
            • Listen Interval:AP将根据该值分配PS时所需的缓冲
            • SSID:AP将检查SSID是否为自己所在的网络
            • Supported Rates:AP将检查是否满足STA的传输速率。
          • Probe Request/Response(探测请求/回复帧):用于搜索周围的无线网络必须包含:

            • SSID:要搜索的网络名。如果SSID长度为0,代表搜索周围的所有无线网络
            • Supported Rates:STA支持的传输速率,如果AP支持这些速率,他会允许STA加入网络。
            • Extended Supported Rates:拓展Supported Rates
          • Authentication/Deauthentication(认证/取消认证)帧:用于身份验证

            管理帧的MAC Header包含6个域,具体的管理信息数据将由Frame Body携带,管理信息数据又大体可分为两种类型:

          定长字段:长度固定的信息,Fixed Field

          • Authentication Alogorithm Number:占两字节,代表认证过程所使用的认证类型。取值如下

            • 0:代表开放系统身份认证(Open System Authentication)
            • 1:共享密钥身份认证(Shared Key Authentication)
            • 2:快速BBS切换(Fast BSS Transition)。
            • 3:SAE(Simultaneous Authentication of Equals)两个STA互相认证的方法,常用于Mesh BSS网络。
            • 65535:代表厂商自定义算法。
          • Beacon Interval field:占2字节。每隔一段时间AP就会发出Beacon信号用来宣布无线网络的存在。该信号包含了BSS参数等重要信息。所以STA必须要监听Beacon信号。Beacon Interval field字段表示Beacon信号之间的间隔时间,其单位为Time Units(TU,一个TU为1024微妙。)

          • Capability Information(性能信息):占2字节,一般通过Beacon帧、Probe Request和Response帧携带它。该字段用于宣告此网络具备何种功能。

          • Current AP Address:6字节,表示当前和STA关联的AP的MAC地址。作用是便于关联和重新关联操作

          • Listen Interval:2字节,和省电模式有关。作用是告知AP,STA进入PS模式后,每隔多长时间它会醒来接收Beacon帧。AP可根据该值为STA设置对应的缓存大小,该值越长,对应的缓冲也相应较大。

          • Association ID(AID):2字节。 STA和AP关联后,AP会为其分配一个AssociationID用于后续的管理和控制。最高2位永远为1,取值范围1~2007。

          • Reason Code:2字节,通知关联失败的原因。0->保留,1->未指定,2->前一个身份验证以失败,3->STA离开BSS或者ESS导致验证失败,4->STA不活跃时间超时故取消关联。5->AP没有资源再处理新的STA故取消关联

          • Status Code:2字节,用于反馈某次操作的处理结果。 0->成功,

          信息元素(IE):长度不固定的信息。标准结构由Element ID、 Length、Information构成。

      • SubType:子类型

      • ToDS:只用在数据类型的帧中

      • FromDS:只用在数据类型的帧中

        • ToDS:0,FromDS=0 IBSS:一个STA发送到另一个STA ;BSS:一个非AP的STA发送给另一个非AP的STA
          ToDS:1,FromDS=0 发送给DS或AP的STA的MAC帧,发给DS必须进过AP中转
          ToDS:0,FromDS=1 来自DS或AP的数据帧
          ToDS:1,FromDS=1
      • More Fragments:是否分片,只支持数据帧和管理帧

      • Retry:是否重传包,1->重传

      • PowerManagement:表明发送该帧的STA处于活跃模式还是省电模式

        • AP不缓存的管理帧,PM无用
        • 对于AP发送的帧,PM无用
        • STA发送给未与之关联的AP,PM无用
        • 1-> STA进入PS(Power Save)状态,
      • More Data:和省电模式相关。0 ->STA 已近接收完数据帧

      • Protected Frame :数据是否加密

      • Order:接收端必须按顺序处理该帧

    • 时长(Duration/ID ) :2字节16位,根据Type 和SubType不同而不同,大体代表ID和duration

      • PS-POLL帧:表示AID的值
      • 其它帧,代表离 下一帧到来还有多长时间,单位是微秒。
    • 地址(Address)

      Mac地址:6字节十六进制表示,组成包括两部分:

      • 0-23位:组织唯一标识符,后24位:网卡唯一编号
      • 第48位:表示地址是单播还是组播: 1->组播地址,0->单播,MAC地址全为1,则该MAC为广播地址。
      • 第47位表示该MAC地址是全球唯一还是本地唯一。1->本地唯一

      802.11MAC帧头部包含四个Address域

      • BSSID
        • 对于BSS,即为AP地址
        • 对于IBSS:本地唯一MAC地址,46位随机数产生,G/L位为1,本地唯一;U/M位为0,单播,
      • 目的地址(Destination Address,DA):用来描述MAC数据包的最终接收者,可以是单播或者组播地址
      • 源地址(Source Address,SA):用来描述最初发出MAC的STA地址,一般情况是单播
      • 发送STA地址(Transmitter Address,TA):将MAC数据包发送到WM(无线媒介)的ASTA地址
      • 接收STA地址(Receiver Address,RA):用于描述接收MAC帧数据的
  • Frame Body :帧域 长度可变

  • FCS(Frame Check Sequence,帧校验序列 ):保障帧数据的完整性

  • 802.11上层协议封装:802.11使用LLC层来封装上层协议。当Ethernet(以太网)帧要在无线网络上传输时,必须先将其转换成LLC帧,由RFC 1042规定。它主要在MAC Header和Type之间增加了4个字段,统称SNAP(子网访问协议)。

    • DSAP(目标服务接入点)
    • SSAP(原服务接入点)
    • Control(控制字段,未编号信息)
    • OUI

802.11MAC管理实体

MAC子层中专门用于管理的Entity(实体):MLME,对外提供接口:MLME_SAP

Scan:用于扫描周围的无线网络,常用参数
  • Request:Scan.request用于扫描周围的无线网络

    • BSSType
    • BSSID:类型为MAC地址。可以是某个指定的BSSID或广播BSSID
    • SSID:类型为字符串。0~32字节长,如果长度为0,则为wild ssid。
    • ScanType:类型为枚举,可取值为ACTIVE(主动)、PASSIVE(被动)
    • ProbeDelay:整型,单位为微妙,用于ACTIVE模式扫描
    • ChannelList:类型为有序整数列表(Ordered set of integers) ,扫描时使用。
    • MinChannelTime和MaxChannelTime:类型均为整型。用于指示扫描过程中在每个信道上等待的最小和最长时间。单位为TU
  • 两种扫描模式:

    • ACTIVE模式:STA在每个Channel(信道)上都会发出Probe Request帧用来搜索某个网络。STA首先调整到某个网络,然后等待来帧指示(表明该信道有人使用)或超时时间Probedelay。两个条件满足任意一个,STA都将发送Probe Request帧,然后STA在该信道上等待最少时间(信道一直空闲),最长MaxChannelTime时间
    • PASSIVE模式:STA不发任何信号,只是在ChannelList中各个信道不间断切换并等待Beacon帧。
  • confirm:用于通知扫描结果

    • BSSDescriptionSet:类型为BSSDescription列表
    • ResultCode:类型为枚举,可取值为SUCCESS和NOT_SUPPORTED

​ 获取周围的无线网络后,STA可以选择加入(join)其中的一个BSS

Authenticate:关联某个AP前,用于STA的身份验证。

​ 关联到某个AP之前,STA必须通过身份验证。

  • MLME-Authenticate.request:STA A向AP B发起身份验证请求

    • PeerSTAAddress:类型为MAC地址,代表对端STA的地址
    • AuthenticationType:类型为枚举,可取值有OPEN_SYSTEN、SHARED_KEY、FAST_BSS_TRANSITION和SAE。
    • AuthenticateFailureTimeout:类型为整型代表认证超时时间,单位为TU。
    • ResultCode:代表认证处理结果
  • MLME-Authenticate.confirm: STA A收到来自AP B的身份验证处理结果

  • MLME-Authenticate.indication:AP B收到来自STA A的身份验证处理请求

  • MLME-Authenticate.response:AP B向STA A发送身份验证处理结果

Associate:关联某个AP。成功后,STA就正式加入无线网络了
  • PeerSTAAddress:相应Association请求的STA的MAC地址,即AP地址
  • AssociateFailureTimeout:整型,代表关联超时时间,单位为TU
  • CapabilityInformation:指定AP的性能信息
  • ListenInterval:用于告知AP,STA进入省电模式之后,监听Beacon的间隔时间
  • RSN:类型为RSNE,指示STA选设置的安全方面的信息
  • ResultCode:AP返回处理的结果
  • AssociationID:AP返回的关联ID
  • SupportedRates:AP返回的所支持的传输速率列表。
STA状态切换

MAC帧一共有三种类别、CLASS1、CLASS2、CLASS3,各自包含不同的数据帧

类别 控制帧 管理帧 数据帧
Class1 RTS、CTS、ACK Probe Request/Response、Beacon、Authentication、Deauthentication、Public Action
Class2 Association Request/Response Reassociation Request/Response
Class PS-POLL等 除Class和Class2包含的管理帧之外的其他管理帧 BSS中所有数据帧

STA从最初到最终经历四个阶段

  • State1:未认证,未关联。
  • State2:已认证,未关联
  • State3:已认证,已关联,未通过RSN(Robust Security Network,强健安全网络)认证的状态。未通过RSN认证,只能发送处理认证第数据帧,即4-Way Handshake(四次握手)帧。
  • State4:已认证,已关联, 成功后,STA进入State4.此时他完全加入无线网络,所有数据帧就能正常传输。

无线网络安全

无线网络主要有三个保护点。

  • 数据的完整性(Integrity):用于检查数据在传输过程中是否被修改
  • 数据的机密性(Confidentiality):用于确保数据不会被泄露
  • 身份验证和访问控制(Authentication and Access Control):用于检查受访者的身份。

无线网络安全技术发展历程:WEP(有线等效加密)------>WPA(Wi-Fi Protected Access)--------->RSN(Robust Security Network,强健安全网络),WFA将RSN称之为WPA2

WEP

WEP身份验证:

  • 开放身份验证(Open System Authentication):只有通过开放式验证才能使用RSNA验证
  • 共享密钥身份验证(Shared Key Authentication):共享的密码,shared Key验证的方法包括四次帧交互。
    • STA发送Authentication请求给AP
    • AP接收到请求后,通过Authentication Response 发送一个质询明文(Challenge Text,128字节)给STA
    • STA取出Challenge Text,通过WEP加密方法利用自己设置的密钥对质文进行加密,然后再次发送Authentication Request 给AP。
    • AP收到第二次Authentication Request帧后,会利用AP的密钥进行解密,同时还要验证数据完整性。如果ICV(完整性校验值)正确,并解密之后的译文等于之前发送的质询文,则可知STA拥有正确的密码,故STA身份验证通过。
    • STA返回验证处理结果给STA。如果成功,STA后续将通过Association请求加入该无线网络
可拓展身份验证协议(EAP)

EAP是一种简单的封装方式,可以运行于任何的数据链路层以及使用各种身份验证的方式。

EAP的封包格式:

  • Code(类型代码):1个字节,代表EAP封包的类型。封包的Data(数据)字段必须通过此字段来解析。
  • Identifier(标识符):Identifier(标识符)的长度为1字节。 内容为1个无符号整数,用来匹配请求与响应。重传时会使用相同的Identifier number(标识符编号),新的传送使用新的Identifier number。
  • Length(长度):Length(长度)本身占2字节。它记载了整个封包的总字节数,包括Code、Identifier、Length以及Data这4个字段。
  • Data(数据):最后一个是Data(数据)字段,其长度不定,取决于封包的类型,Data也可能不占用任何字节。Data字段如何解析完全取决于Code字段的值

EAP的请求与响应

EAP的交换操作由请求(Request)与响应(Response)构成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bro0wiF2-1638444199773)(%E5%AD%A6%E4%B9%A0.assets/image-20211201100147030-16383301375571.png)]

Code字段的值为1代表请求,2代表响应。Data字段用来携带请求与响应所使用的数据。每个Data字段会携带一种数据,可再分为Type Identifier code(类型标识符)以及associated data(关联数据):

  • Type(类型):Type字段的长度为1个字节,代表请求或响应类型。每个封包只能使用一种类型。响应的Type字段与其对应的请求一致,当无法接受某个请求时,对方可以发送一个NAK来提议使用不同的类型。大于或等于4的Type字段值代表身份验证方式。
  • Type-Data(类型-数据)
  • Type-Data(类型-数据)字段长度不定,必须根据每种类型规则加以诠释。
    • 类型代码1:Identity(身份)
    • 类型代码2:Notification(通知)
    • 类型代码3:NAK(否定确认)

Transport Layer Security(传输层安全,简称TLS)

Secure Socket Layer(安全套接层,简称SSL)

WPA
  • WPA 采用MIC(Message Integrity Check,消息完整性校验)算法用于替代WEP中的CRC算法,取名为Michael
  • 采用TKIP(Temp Key Integrity Protocol,临时密钥完整性协议)用于为每一个MAC帧生成不同的Key。这种为每帧都生成单独密钥的过程称为密钥混合(Key Mixing。)
RSN数据加密及完整性校验
  • TKIP(Temp Key Integrity Protocol,临时密钥完整性协议)加密方式
  • CCMP (Counter Mode with CBC-MAC Protocol,计数器模块及密码块链消息认证码协议)

PMK(Pairwise Master Key,成对主密钥):

PTK(PairwiseTransient Key,成对传输密钥):用于单播数据帧的加密和解密

GTK(Group Temporal Key,组临时密钥):用于组播数据帧和广播数据帧的加解密

MIC(Message Integrity Check,数据及消息校验码)

PTK包含四个部分:

  • KCK:用来在EAPOL4-way handshake时校验完整性
  • KEK:用于EAPOL4-way handshake的3/4阶段加密GTK
  • TK用于加密单播数据
  • MIC:用于数据传输时TKIP方式的Michael完整性校验
四次握手过程:

**目的:**为确保无线传输数据的安全性和完整性,通过四次握手协商密钥产生PTK 、GTK

过程:

  • 1/4:Authenticator---->Supplicant

    Authenticator(认证者)将ANonce发送给Supplicant(请求者)。Supplicant收到M1后,就有了生成PTK的所有元素

  • 2/4:Supplicant------>Authenticator

    Supplicant计算出PTK,将SNonce和自己的MAC地址发送给Authenticator。同时从2/4开始每个报文都会有MIC

  • 3/4:Authenticator---->Supplicant

    Autenticator向Supplicant证明自己是有效的,同样有MIC加入其中

  • 4/4:Supplicant------>Authenticator

    Supplicant向Authenticator发送ACK,确认PTK已经装好,后面的数据可以进行加密。

    **WPA 、WPA2 在4次握手上的区别:**WPA的GTK在4次握手完成后进行安装,WPA2在4次握手的过程中就进行了安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lFqoheC-1638444199774)(%E5%AD%A6%E4%B9%A0.assets/image-20211201174139700-16383517070781.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Smhcr5Ax-1638444199775)(%E5%AD%A6%E4%B9%A0.assets/image-20211201180120959.png)]

WPA2四握手协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBnEqTYY-1638444199776)(%E5%AD%A6%E4%B9%A0.assets/image-20211201182227746-16383541515593.png)]

WPA3 是 WFA 新制定的适用于个人网络和企业网络的安全标准。WPA3 旨在通过使用现代安全算法和更强大的加密套件来提高 WLAN 的整体安全性。WPA3 分为两个部分:

  • WPA3-Personal:使用对等实体同时验证 (SAE) 而不是预共享密钥 (PSK),可以为用户提供更强大的安全保护,抵御离线字典攻击、密钥恢复和消息伪造等攻击。
  • WPA3-Enterprise:提供更强大的身份验证和链路层加密方法,以及适用于敏感安全环境的可选 192 位安全模式。

Wi-Fi Enhanced Open 是 WFA 新推出的适用于公共网络的安全标准,基于机会性无线加密 (OWE)。Wi-Fi Enhanced Open 可以为咖啡馆、酒店、餐馆和图书馆等场所内无密码保护的开放网络提供加密和隐私保护。Enhanced Open 不提供身份验证。

WPA3 和 Wi-Fi Enhanced Open 可以提升 WLAN 的整体安全性,从而提供更好的隐私保护和稳健性来抵御已知攻击。由于许多设备尚不支持这些标准或尚未进行软件升级来支持这些功能,因此 WFA 提供了以下过渡模式:

  • WPA2/WPA3 过渡模式:服务接入点同时支持 WPA2 和 WPA3 标准。在该模式下,搭载 Android 10 的设备使用 WPA3 建立连接,搭载 Android 9 或更低版本的设备使用 WPA2 连接到同一接入点。
  • WPA2/WPA3-Enterprise 过渡模式:服务接入点同时支持 WPA2-Enterprise 和 WPA3-Enterprise 标准。
  • OWE 过渡模式:服务接入点同时支持 OWE 和开放式标准。在该模式下,搭载 Android 10 的设备使用 OWE 建立连接,搭载 Android 9 或更低版本的设备无需任何加密即可连接到同一接入点。

Android 12 支持“过渡停用”指示,这是一种指示设备不使用 WPA2 而改用 WPA3 的机制。设备收到此指示后,会使用 WPA3 连接到支持过渡模式的 WPA3 网络。Android 12 还支持 WPA3 Hash-to-Element (H2E) 身份验证交换。

WPA3 和 Wi-Fi Enhanced Open 仅在客户端模式下受支持。

Wifi Framework

Wifi工作步骤:

  • WiFi初始化
  • WiFi启动
  • 扫描
  • 显示扫描的AP
  • 配置AP
  • 连接AP
  • 获取IP地址
  • 上网
  • WPA2/WPA3 过渡模式:服务接入点同时支持 WPA2 和 WPA3 标准。在该模式下,搭载 Android 10 的设备使用 WPA3 建立连接,搭载 Android 9 或更低版本的设备使用 WPA2 连接到同一接入点。
  • WPA2/WPA3-Enterprise 过渡模式:服务接入点同时支持 WPA2-Enterprise 和 WPA3-Enterprise 标准。
  • OWE 过渡模式:服务接入点同时支持 OWE 和开放式标准。在该模式下,搭载 Android 10 的设备使用 OWE 建立连接,搭载 Android 9 或更低版本的设备无需任何加密即可连接到同一接入点。

Android 12 支持“过渡停用”指示,这是一种指示设备不使用 WPA2 而改用 WPA3 的机制。设备收到此指示后,会使用 WPA3 连接到支持过渡模式的 WPA3 网络。Android 12 还支持 WPA3 Hash-to-Element (H2E) 身份验证交换。

WPA3 和 Wi-Fi Enhanced Open 仅在客户端模式下受支持。

Wifi Framework

Wifi工作步骤:

  • WiFi初始化
  • WiFi启动
  • 扫描
  • 显示扫描的AP
  • 配置AP
  • 连接AP
  • 获取IP地址
  • 上网

你可能感兴趣的:(android,网络,java)