802.11协议
博客链接:https://www.blog.23day.site/articles/71
一、协议简介
IEEE 802协议簇是指IEEE标准中关于局域网(LAN)和城域网(MAN)的一系列标准。IEEE 802中定义的服务和协议限定在OSI七层网络模型的最低两层,即数据链路层和物理层。实际上,IEEE802又将OSI的数据链路层分成了两个子层,逻辑链路控制层(LLC)和媒介访问控制层(MAC)。
IEEE802协议簇由IEEE802标准委员会维护。其中最广泛应用的协议有以太网(802.3)和WLAN(802.11)。每一个工作组专注一个方向,每个工作组由数字编号,比如目前从802.1编到了802.24。
因此,802.11协议是IEEE802标准委员会下属的无线局域网工作组制定的无线局域网标准。
主要包含以下规范(技术族谱):
- 物理层规范:802.11b,802.11a,802.11g;
- 增强型MAC层规范:802.11i,802.11r,802.11h等;
- 高层协议规范:802.11f,802.11n,802.11p,802.11s等。
二、相关概念
- AP(Access Point):无线接入点,这个概念特别广,在这里,用大白话说,你可以把CC3200当做一个无线路由器,这个路由器的特点不能插入网线,没有接入Internet,只能等待其他设备的链接,并且智能接入一个设备。类似于点对点模式啦。
- STA(Station):任何一个接入无线AP的设备都可以称为一个站点。大白话说也就是平时接入路由器的设备
- SSID(Service Set Identifier):SSID,每个无线AP都应该有一个标示用于用户识别,SSID就是这个用于用户识别的的名字,也就是我们经常说到的wifi名。
- BSSID:每一个网络设备都有其用于识别的物理地址,这个东西呢就叫MAC地址,这个东西一般情况下出厂会有一个默认值,可更改,也有其固定的命名格式,也是设备识别的标识符。这个BSSID呢是针对设备说的,对于STA的设备来说,拿到AP接入点的MAC地址就是这个BSSID。
- ESSID:是一个比较抽象的概念,它实际上就和ssid相同(本质也是一串字符),只是能如果有好几个无线路由器都叫这个名字,那么我们就相当于把这个ssid扩大了,所以这几个无线路由器共同的这个名字就叫ESSID。(也就是如果在一台路由器上释放的wifi信号叫某个名字如“China_CMCC”,这个名字“China_CMCC”就称为SSID;如果在好几个路由器上都释放了这个wifi信号,那么大家都叫“China_CMCC”,这个时候大家都遵循的这个名字就是ESSID
三、发展历程
802.11
1990年IEEE 802.11委员会成立,1993年开始有热点部署。IEEE 802.11的第一个版本于1997年推出。
- 物理层调制技术:DSSS,2Mbps
802.11b/a/g
2007年发布了正式版本《IEEE Std 802.11-2007》,主要的扩展有802.11a/b/g/i/e。注意这里的2007是标准正式发布的年份,在这之前数年已经有草案发布,相应的产品也已推向市场。
- 802.11b: 1999年,2.4GHz;物理层调制技术:DSSS,11Mbps
- 802.11a: 2000年,5GHz;物理层调制技术:OFDM,最高64QAM调制,54Mbps
- 802.11g: 2003年,2.4GHz;物理层调制技术:OFDM,最高64QAM调制,54Mbps
- 802.11i: 2004年,MAC层安全增强,WiFi加密相关的协议
- 802.11e: 2005年,MAC层QoS增强
802.11n
2012年发布了正式版本《IEEE Std 802.11-2012》,主要扩展是802.11n,称为WiFi4。(这里的WiFi加数字表示方法由WiFi联盟为了推广802.11ax于2019年推出)
- 802.11n: 2009年,2.4GHz和5GHz;物理层技术:MIMO, OFDM; 最高64QAM调制,最高4条空间流,最大40MHz带宽。常用的双流40MHz带宽下,最高物理层速率是300Mbps。
802.11ac
2016年正式发布《IEEE Std 802.11-2016》,主要扩展是802.11ac,称为WiFi5。
- 802.11ac: 2014年,2.4GHz和5GHz;物理层技术:MIMO, OFDM,最高256QAM调制,最高8条空间流,最大160MHz带宽。常用的双流80MHz带宽下,最高物理层速率是866Mbps
802.11ax
802.11ax于2019年推出,当前还处在草案阶段,尚未发布正式版本,主要扩展是802.11ax,称为WiFi6。
- 802.11ax: 2018年;物理层技术:MIMO, OFDM, OFDMA,最高1024QAM调制,最高8条空间流,最大160MHz带宽。常用的双流80MHz带宽下,最高物理层速率是1201Mbps。
四、应用模式
AP:也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个AP。
STA站点:每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。
站点(STA,Station)在无线局域网(WLAN,WirelessLocalAreaNetworks)中一般为客户端,可以是装有无线网卡的计算机,也可以是有WiFi模块的智能手机,可以是移动的,也可以是固定的。在无线环境中STA接入的过程包括:认证STA有没有权限和接入点(AP,AccessPoint)建立链路;STA能不能接入WLAN;以及STA接入WLAN网络之后,认证STA能不能访问网络的权限。
在STA和AP建立链路的过程中,当STA通过信标(Beacon)帧或探测响应(Proberesponse)帧扫描到可接入的服务集标识符(SSID,ServiceSetIdentifier)后,会根据已接收到的Beacon帧或Proberesponse帧的信号强度指示(RSSI,ReceivedSignalStrengthIndication)来选择合适的SSID进行接入。
五、网络拓扑结构
WLAN有以下三种网络拓扑结构:
-
独立基本服务集(Independent BSS, IBSS)网络(也叫ad-hoc网络)
无AP,站点间直接通信。
-
基础架构型基本服务集(Infrastructure Basic Service Set, BSS)网络
一个AP和若干STA组成一个BSS,每个BSS由一个SSID(Service Set ID)来标识。无线站点通信首先要经过AP。
-
扩展服务集(Extent Service Set, ESS)网络
由多个SSID相同的BSS网络组成ESS网络。ESS网络常见于企业、学校、机场等较大的物理空间场所,需要部署多个AP才能满足无线网络覆盖需求。一个移动节点使用某 ESS 的 SSID 加入到该扩展服务集中,一旦加入ESS,移动节点便可实现从该ESS的一个BSS到另一个BSS的漫游(STA在ESS下不同BSS之间的切换称为漫游)
六、数据帧
帧间间隔
帧间间隔 (Interframe Space,简称 IFS)所有的站在完成发送后,必须再等待一段很短的时间(继续侦听)才能发送下一帧。这段时间的通称为帧间间隔 IFS 。
帧间间隔长度取决于该站欲发送的帧的类型。
高优先级帧需要等待的时间较短,因此可优先获得发送权,但低优先级帧就必须等待较长的时间。
若低优先级帧还没来得及发送而其他站的高优先级帧已发送到媒体,则媒体变为忙态,因而低优先级帧就只能再推迟发送了,这样就减少了发生碰撞的机会。
-
短帧间间隔(short interframe space,SIFS),用于高优先级的传输场合(RTS/CTS)
长度为10微妙(802.11g时为例),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站应当能够在这段时间内从发送方式切换到接收方式。
使用 SIFS 帧间间隔的场合:应答 ACK 帧、应答 CTS 帧、过长的 MAC 帧分片后的数据帧、应答 AP 探询帧、PCF 方式中接入点 AP 发送出的任何帧。
-
PCF帧间间隔(PCF interframe space,PIFS),用于无竞争式服务中
点协调功能帧间间隔(比SIFS长),是为了在开始使用 PCF 方式时(在PCF方式下使用,没有争用)优先获得接入到媒体中。PIFS 长度:SIFS 加一个时隙(slot)长度(其长度为微妙),即30微妙。
-
DCF帧间间隔(DCF interframe space,DIFS),用于竞争式服务中最短的媒介闲置时间
分布协调功能帧间间隔,在 DCF 方式中用来发送数据帧和管理帧。DIFS是竞争式服务中最短的媒体闲置时间。如果媒介闲置时间长于DIFS,则工作站可以立即对媒体进行访问。
-
扩展帧间间隔(extended interframe space,EIFS),用于帧传输出错时才会用到
帧格式
802.11 MAC帧格式如下图所示:
每个MAC帧都包含以下几部分:
- 一个MAC帧头
- 一个可变长度的帧体,包含特定于帧类型或子类型的信息
- 一个帧校验序列,简写为FCS,包含一个32bit的CRC
MAC Header(MAC头)
- Frame Control(帧控制域)
- Protocol Version(协议版本):通常为0;
- Type(类型域)和Subtype(子类型域):共同指出帧的类型;
- To DS:表明该帧是BSS向DS发送的帧;
- From DS:表明该帧是DS向BSS发送的帧;
- More Frag:用于说明长帧被分段的情况,是否还有其它的帧;
- Retry(重传域):用于帧的重传,接收STA利用该域消除重传帧;
- Pwr Mgt(能量管理域):1:STA处于power_save模式;0:处于active模式;
- More Data(更多数据域):1:至少还有一个数据帧要发送给STA ;
- Protected Frame: 1:帧体部分包含被密钥套处理过的数据;否则:0;
- Order(序号域):1:长帧分段传送采用严格编号方式;否则:0。
- Duration/ID(持续时间/标识)
- 表明该帧和它的确认帧将会占用信道多长时间;对于帧控制域子类型为:Power Save-Poll的帧,该域表示了STA的连接身份(AID, Association Indentification)。
- Address(地址域)
- Address(地址域):源地址(SA)、目的地址(DA)、传输工作站地址(TA)、接收工作站地址(RA),SA与DA必不可少,后两个只对跨BSS的通信有用,而目的地址可以为单播地址(Unicast address)、多播地址(Multicast address)、广播地址(Broadcast address)。
- Sequence Control(序列控制域)
- Sequence Control(序列控制域):由代表MSDU(MAC Server Data Unit)或者MMSDU(MAC Management Server Data Unit)的12位序列号(Sequence Number)和表示MSDU和MMSDU的每一个片段的编号的4位片段号组成(Fragment Number)。
帧控制字段定义帧类型,802.11协议的连接和通信过程就是由一系列不同类型的帧交互完成。
帧控制(Frame Control)字段,16Bit,其中B2B3表示这个帧的帧类型(Type),B4B7表示这个帧类型下的子类型(Subtype)。帧类型和子类型标识一个802.11帧的具体类型和其对应的功能。FC字段具体定义如下图所示:
Frame Body(帧体部分)
包含信息根据帧的类型有所不同,主要封装的是上层的数据单元,长度为0~2312个字节,可以推出,802.11帧最大长度为:2346个字节
FCS(校验域)
包含32位循环冗余码。
帧类型
管理帧
Type value B3 B2 | Type description | Subtype B7 B6 B5 B4 | Subtype description |
---|---|---|---|
00 | Management | 0000 | Association request(关联请求) |
00 | Management | 0001 | Association response(关联响应) |
00 | Management | 0010 | Reassociation request(重新关联请求) |
00 | Management | 0011 | Reassociation response(重新关联响应) |
00 | Management | 0100 | Probe request(探测请求) |
00 | Management | 0101 | Probe response(探测响应) |
00 | Management | 1000 | Beacon(信标) |
00 | Management | 1001 | ATIM(通知传输指示消息) |
00 | Management | 1010 | Disassociation(取消关联) |
00 | Management | 1011 | Authentication(身份验证) |
00 | Management | 1100 | Deauthentication(解除身份验证) |
00 | Management | 1101~1111 | Reserved(保留,未使用) |
控制帧
Type value B3 B2 | Type description | Subtype B7 B6 B5 B4 | Subtype description |
---|---|---|---|
01 | Control | 1010 | Power Save(PS)- Poll(省电-轮询) |
01 | Control | 1011 | RTS(请求发送) |
01 | Control | 1100 | CTS(清除发送) |
01 | Control | 1101 | ACK(确认) |
01 | Control | 1110 | CF-End(无竞争周期结束) |
01 | Control | 1111 | CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认) |
数据帧
Type value B3 B2 | Type description | Subtype B7 B6 B5 B4 | Subtype description |
---|---|---|---|
10 | Data | 0000 | Data(数据) |
10 | Data | 0001 | Data+CF-ACK |
10 | Data | 0010 | Data+CF-Poll |
10 | Data | 0011 | Data+CF-ACK+CF-Poll |
10 | Data | 0100 | Null data(无数据:未传送数据) |
10 | Data | 0101 | CF-ACK(未传送数据) |
10 | Data | 0110 | CF-Poll(未传送数据) |
10 | Data | 0111 | Data+CF-ACK+CF-Poll |
10 | Data | 1000 | Qos Data |
10 | Data | 1000~1111 | Reserved(保留,未使用) |
10 | Data | 1001 | Qos Data + CF-ACK |
10 | Data | 1010 | Qos Data + CF-Poll |
10 | Data | 1011 | Qos Data + CF-ACK+ CF-Poll |
10 | Data | 1100 | QoS Null(未传送数据) |
10 | Data | 1101 | QoS CF-ACK(未传送数据) |
10 | Data | 1110 | QoS CF-Poll(未传送数据) |
10 | Data | 1111 | QoS CF-ACK+ CF-Poll(未传送数据) |
七、协议机制
载波监听与冲突避免
无线传输是在开放环境中进行的,需要有一个协调各站点访问空口媒介的机制。不然各站点任意接入媒介的话,会互相干扰,最终谁都无法有效传输数据。
媒介的协调访问由协调功能(CF, coordination function)控制,802.11协议采用叫作CSMA/CA机制的分布式协调功能(DCF,distributed coordination function)来控制。
CSMA/CA,英文全称Carrier Sense Multiple Access/Collision Avoid,中文含义是载波监听多路访问与冲突避免。
载波监听:即当一个站点想访问媒介发送数据时,它先通过对媒介进行一个固定时长的监听来做信道可用性评估。这里的固定时长称为DCF帧间距(DCF inter-frame space, DIFS)。
冲突避免:即评估媒介处在空闲状态时,才能接入媒介。
随机回退过程
为减少多站点接入媒介时产生的碰撞,当一个站点检测媒介在一个DIFS时长内为空闲后,还不能立即接入媒介,还需要再等待一个随机回退时长。如果媒介在DIFS+随机回退时长期间都为空闲状态,则站点认为其可以接入媒介传输数据。
当媒介从繁忙转为空闲时,可能会有多个站点准备好了发送数据。为了减少碰撞,想要发起传输的站点从区间[0, CW]随机选取一个数,该数乘以时隙(slot)长度得出随机回退时长,然后按该时长进行回退。
在一个DIFS时长内检测媒介都为空闲状态后,开始随机时长回退。如果媒介在回退时长内变成繁忙,则随机回退过程被挂起;如果媒介在一个DIFS时长后重新变为空闲,则随机回退继续进行。
图中,STA1随机到的回退计数是8,STA2随机到的回退计数是2。STA1在回退计数减到5后,媒介再次变为繁忙,此时STA1的回退过程挂起,等待媒介空闲一个DIFS时长后,回退过程继续。
这里的整数值CW(contention window)叫做竞争窗口。CW参数初始值取为CWmin,为了进一步减少碰撞,在每次不成功的MPDU传输后CW取值翻倍,最大不超过CWmax。这即是二进制指数退避算法。CW在每次成功发送MPDU后被重置为CWmin。
CWmin CWmax在协议中的取值如下(这里的AC是access catogry的意思,由802.11i引入,即将报文按不同的业务类型划分优先级,实现QoS功能):
AC | CWmin | CWmax |
---|---|---|
AC_BK | 31 | 1023 |
AC_BE | 31 | 1023 |
AC_VI | 15 | 31 |
AC_VO | 7 | 15 |
legacy | 15 | 1023 |
数据重发
无线数据传输容易受外界干扰而发生错误,因此无线数据传输将受益于一个低延迟、链路级别的重发机制。这种机制允许那些没有被接收端正确解调的帧重新传输。
这个机制由接收端在正确接收到发给它的数据帧后,以ACK帧的格式发送一个及时的、肯定的确认。如果发送端没有收到接收端回的ACK帧,则其假定该数据帧未被接收成功,发送端可以重发该帧。
一个无碰撞场景下的数据/ACK时序图如下:
八、连接过程
STA (工作站)启动初始化、开始正式使用、AP 传送数据帧之前,要经过四个阶段才能接入:
- 扫描(SCAN)
- 认证(Authentication) :STA 和 AP 互相认证一下对方是不是 802.11设备以及预设共享密钥检查
- 关联(Association) :关联总是由STA发起的,实际上关联就是STA和AP间无线链路服务协商的过程。
- 握手(Handshake):生成秘钥。经过这个过程,双方生成了相同的PTK,用于数据加密,同时,通过对帧合法性检查,确认双方拥有相同的PSK(即PMK),认证通过。
相关概念 :
- PSK(PreShared Key):STA 与 AP 直接约定的 “暗语” ,用于认证(Authentication)的,通常情况下就是 WIFI密码。
- SNonce:STA 生成的随机数。
- ANonce:AP生成的随机数。
- PMK:PMK 是由 ESSID + PSK(通俗的密码) 通过 SHA-1 (一个Hash 算法) 计算出来的。
- PTK:Pairwise Transit Key,用来加密 AP 和 STA 通讯的单播数据包,AP 与每个 STA 通讯的PTK都是唯一的。
- PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac (SA))
- PRF:是一个随机的函数
- PMK:Pairwise Master Key,PMK 会驻留在 AP 和 所有的 STA 中。
- MAC(AA/SA):AP 和 STA 对应的 Mac 地址。
- MIC:Message Integrity Check,PTK 的前 16 位通过Hash算法得出,用于校验消息的完整性。
- AES:Advanced EncryptionStandard,高级加密标准。AES是美国NIST制定的替代DES的分组加密算法。AES具有优秀的密钥扩展方案,灵活的密钥生成算法。算法对内存要求极低,即使在限制较大的环境中也能获得很好的性能。分组和密钥被设计成可以在三种长度中选择的形式,AES具有128、192、256位的密钥。802.11规定CCMP中的AES使用的是128位密钥,它的加密块大小也是128位。
整体流程:
- Open System Authentication (Request initiate by client)
- Open system Authentication (Response by AP)
- Association Request (sent by client)
- Association Response (send by AP)
- 4-Way Handshake – EAPoL Key Exchange Message 1
- 4-Way Handshake – EAPoL Key Exchange Message 2
- 4-Way Handshake – EAPoL Key Exchange Message 3
- 4-Way Handshake – EAPoL Key Exchange Message 4
- DHCP Discover (send by client to L2 broadcast)
- DHCP Offer (send by DHCP server)
- DHCP Reqeust (send by client to L2 broadcast)
- DHCP ACK (send by DHCP server to client)
AP广播发送Beacon(信标帧)
STA向AP发送携带有指定SSID的Probe Request(探测请求帧)
AP向STA发送Probe Response(探测回应帧)
STA对AP发送Authentication Request(认证请求帧)
- AP向STA发送Authentiction Response (Challenge)(加密认证)
- STA对AP发送Authentication Response (Encrypted Challenge)(加密认证)
AP向STA发送Authentiction Response(认证应答帧)
STA向AP发送Association Request(关联请求帧)
AP向STA发送Association Response(关联应答帧)
*** 正常数据传输(浏览网页、看视屏等)***
STA向AP发送Disassociation(取消关联帧)
扫描
-
Passive Scanning
原理:通过侦听AP定期发送的Beacon帧来发现网络,该帧提供了AP及所在BSS相关信息
特点:找到时间较长,但STA节电
-
Active Scanning
原理:STA依次在13个信道发出Probe Request帧,寻找与STA所属有相同SSID的AP,若找不到相同SSID的AP,则一直扫描下去
特点:能迅速找到
认证
当STA找到与其有相同SSID的AP,在SSID匹配的AP中,根据收到的AP信号强度,选择一个信号最强的AP,然后进入认证阶段。只有身份认证通过的站点才能进行无线接入访问。AP提供如下认证方法:
- 开放系统身份认证(open-system authentication):没有预设密钥
- 共享认证(shared-key authentication):采用WEP、WPA加密算法
- WPA PSK认证( Pre-shared key)
- 802.1X EAP认证
WPA-PSK/WPA2-PSK主要是针对个人或家庭网络等,对安全性要求不是很高的用户。而WPA /WPA2是针对企业的,对安全性要求很高的用户,在WPA/WPA2选项中,大家可以看到它比WPA-PSK/WPA2-PSK多了一个Radius服务器,这个就是认证服务器。而对我们家庭网络来说,适合选择WPA-PSK/WPA2-PSK选项,因为我们不需要认证服务器。
关联
当AP向STA返回认证响应信息,身份认证获得通过后,进入关联阶段。
- STA向AP发送关联请求
- AP 向STA返回关联响应
握手
Handshake Message 1
首先 Authenticator 向 Supplicant 发送一个携带 ANonce 的 EAPOL-Key frame
Handshake Message 2
Supplicant 将获得的 ANonce 和 AA,这个时候 Supplicant 已经拥有 PMK,AA 和 SPA,所以可以通过下面的函数计算出 PTK
PTK = PRF (PMK + ANonce + SNonce + AA + SPA)
Supplicant 根据 ANonce、 自己生成的一个 Nonce( SNonce) 、 自己所设置的 PMK 和 Authenticator 的 MAC 地址等信息进行密钥派生。(MAC(AA)无线网卡 MAC(SPA) AP 产生的随机值(ANonce) WiFi 随机尝试的值(SNonce)PRF(pseudo-random-function))
Supplicant 随后将 SNonce 以及一些信息通过第二个 EAPOL-Key 发送给 Authenticator。 Message 2 还包含一个 MIC 值,该值会被 KCK 加密。 接收端 Authenticator 取出 Message 2 中的 SNonce 后, 也将进行和 Supplicant 中类似的计算来验证 Supplicant 返回的消息是否正确。 如果不正确,这将表明 Supplicant 的 PMK 错误, 于是整个握手工作就此停止。
Handshake Message 3
如果 Supplicant 密钥正确, 则 Authenticator 也进行密钥派生。 此后, Authenticator 将发送第三个 EAPOL-Key 给 Supplicant, 该消息携带组临时密码( Group Transient Key, GTK, 用于后续更新组密钥, 该密钥用KEK 加密) 、 MIC( 用 KCK 加密) 。 Supplicant 收到 Message 3 后也将做一些计算, 以判断 AP 的 PMK 是否正确。 注意, IGTK( Integrity GTK) 用于加解密组播地址收发的管理帧。
Handshake Message 4
Supplicant 最后发送一次 EAPOL-Key 给 Authenticator 用于确认,如果认证成功, 双方将安装( Install) Key。 Install 的意思是指使用它们来对数据进行加密。
Controlled Port Unlocked
双方完成认证以后,authenticator 的控制端口将会被打开,这样 802.11 的数据帧将能够正常通过,而且所有的单播数据帧将会被 PTK 保护,所有的组播数据以及广播数据将会被 GTK 保护。
Supplicant 和 Authenticator 就此完成密钥派生和组对, 双方可以正常进行通信了。
九、无线安全协议
WEP协议
WEP作为 1997 年批准的原始 802.11 标准的一部分引入,它可能是最常用的 WiFi 安全协议。它的 10 位或 26 位十六进制数字(40 位或 104 位)的密钥非常容易识别。2004 年,两者WEP-40和WEP-104都被宣布弃用。有128-bit(最常见的)和256-bitWEP 变体,但随着计算能力的不断提高,攻击者能够利用许多安全漏洞。总而言之,这个协议已不能满足安全的需要。
它使用 RC4 密码来确保隐私,并使用 CRC-32 校验和来确保传输数据的完整性。首先,网络用户之间共享一个密钥 k(协议未指定如何共享)要发送消息 M,必须计算消息的完整性校验和c(M)并将其连接:现在有Mc(M)。然后,通过与由 k 生成的 RC4 流和名为 v 的 24 位公共初始化向量 (IV) 进行异或运算来加密<Mc(M)> 。我们将其记为RC4 (v, k)。 结果C =<Mc(M)> ⊕ RC4(v, k)被发送到网络,知道 k 的用户可以通过 XORing C 与 RC4(v, k) 得到消息。
WEP 使用的 RC4 流密码基于两种算法:
- 第一个是 RC4-Key Scheduled Algorithm (
KSA
),它将长度为 1 到 256 位的密钥转换为数字 0 到 N 的初始排列 S。RC4 的内部状态由两个数字 i 和 j 组成,用作指针为 S 的元素。 - 第二种算法是 RC4-伪随机生成算法 (
PRGA
)。它从 RC4 的当前内部状态生成单个字节的密钥流,然后更新内部状态。最初,N=255,但该算法可以使用不同的 N 值。 使用 CRC32,原始消息与 32 位常量进行异或运算,后跟尽可能多的 0,以达到消息的长度。结果成为新的“消息”并重复操作,直到结果的长度低于常数的长度。需要注意的是,这个散列函数是线性的且无键的。
WEP 攻击
- 数据包注入
- 假认证
- FMS 攻击
- KoreK 攻击
- ChopChop 攻击
- 碎片攻击
- PTW 攻击(Pychkine、Tews、Weinmann)
包注入
这允许外部人员在网络上生成大量流量,而无需以任何方式与之关联。首先,他必须捕获特定类型的数据包。尽管隐藏在加密后面,但可以根据数据包大小轻松猜测数据包类型。
一个 ARP 请求包总是 28 个字节。通过将其重新注入网络,AP 将响应此伪造请求,向合法客户端发送数据包。额外的流量用于更快地收集加密数据包,并且数据包越多,他就越有可能更快地破坏 WEP。
假认证
假身份验证攻击允许攻击者加入受 WEP 保护的网络,即使他不知道根密钥。客户端可以通过两种方式在 WEP 保护的网络中对自己进行身份验证: 第一种方法是开放系统认证,基本上没有保护。 第二种方法称为共享密钥身份验证。这个使用秘密根密钥和质询-响应身份验证。客户端要求 AP 连接,AP 发送一个包含挑战(随机字节字符串,明文)的帧,客户端使用 WEP 加密帧进行回答。如果没问题,AP 会成功回复。 嗅出握手的攻击者可以加入网络本身。除了 AP 挑战,第 3 帧中的所有字节都是恒定的。挑战在第 2 帧以明文形式传输,因此攻击者可以恢复用于加密第 3 帧的密钥流(和 IV)。有了它,他现在可以启动身份验证握手并构造一个有效的帧(编号 3)。
FMS 攻击
由 Fluhrrer、Mantin 和 Shamir 于 2001 年发布,它基于RC4 弱点与 IV(初始化向量或随机数,每个数据包密钥的 3 个字节)的意识相结合。
攻击者可以对 RC4 进行操纵,使他能够猜测密钥的一个字节(5% 的概率)。如果密钥错误,攻击者会使用新密钥重试。为了达到 50% 的成功率,攻击者需要捕获大量数据包(最多 600 万个)。 如果我们知道每个数据包密钥的前“l”个字节,我们可以模拟RC4-KSA. 不想在这里的数学太深入,基本上下一个字节的密钥取决于(有点相关)当前的字节,可以用来检查我们是否在正确的轨道上。每次迭代,我们都会多得到一个字节的密钥,并最终对其进行测试。如果它是错误的,则密钥的字节正在与另一个可能的值切换并重新启动过程。
KoreK攻击
这是基于 FMS 攻击(首次出现在netstumbler 论坛,2004 年),但让攻击者更快地找到密钥。
ChopChop攻击
也由“KoreK”发现,它反对利用 RC4 的弱点,它攻击 WEP 协议本身(CRC32 校验和和缺乏重放保护)。它使攻击者能够在不知道密钥的情况下解密数据包。
翻转密文中的一位,然后计算必须翻转加密的 CRC32 值中的哪一位,以使数据包仍然有效。经常提到的方法是取出最后一个字节并尝试猜测它的值。
碎片攻击
如果当前没有客户端连接到接入点,则可以运行很好的攻击。类似于 ChopChop 攻击,它通过将任意数据包注入 AP 来加速破解过程。它将产生足够的流量来捕获大量 IV,从而提高破解密钥的机会 (aircrack-ng)。“aireplay-ng”和“packetforge-ng”是这种攻击的标准工具包。
PTW 攻击
Pyshkin Tews Winmann (PTW) 攻击,于 2007 年发布。
使 PTW 比所有其他攻击更强大的原因在于它可以利用捕获的每个数据包。它实现了一个键排序策略,而不是尝试所有可能的键组合,而是选择一组可能的键并基于这些键继续 RC4 算法。使用不同的投票策略,攻击者可以在树中的每个决策中选择最有可能的密钥字节来确定正确的密钥。
测试表明,只需 35,000 到 40,000 个数据包即可获得 50% 的成功概率。其他消息来源指出,我们可以在 85,000 帧中获得 95% 的概率。
WPA
WPA 于 2003 年推出,它是 Wi-Fi 联盟对 WEP 加密标准日益明显的漏洞的直接响应和替代。最常见的 WPA 配置是WPA-PSK(预共享密钥)。WPA 使用的密钥是,比WEP 系统中使用的和密钥256-bit显着增加。64-bit128-bit
WPA-PSK 基本上意味着 Wi-Fi 网络有一个密码,由每个 Wi-Fi 网络客户端共享。 WPA 包括消息完整性检查(以确定攻击者是否已捕获/更改在接入点和客户端之间传递的数据包)和临时密钥完整性协议 (TKIP)。TKIP 采用了每包密钥系统,它比 WEP 使用的固定密钥系统更加安全。TKIP 加密标准后来被高级加密标准 (AES) 取代。 TKIP 使用与 WEP 相同的底层机制,因此容易受到许多类似攻击(例如 Chop-Chop、MIC 密钥恢复攻击)的攻击。 通常人们不会直接攻击 WPA 协议,而是使用 WPA 推出的补充系统——Wi-Fi Protected Setup (WPS)。 注意:TKIP(临时密钥完整性协议)——RC4流密码与128-bit每个数据包密钥一起使用,这意味着它为每个数据包动态生成一个新密钥。虽然仍在使用,但在 2009 年被 CCMP 取代后被认为已过时。
WPA 攻击
- Back and Tews 对 RC4、2008、Inject 的改进攻击
- Ohigashi-Morii Attack(Beck and Tews’ + Man in the middle)
- Michael Attacks
- 字典攻击握手,密钥恢复 攻击“要求”启用服务质量 (QoS)(实际方面)。这允许使用多个通道。每个通道都有自己的 TSC(TKIP 序列计数器)。通道 0 拥有大部分流量,其他通道的 TSC 较低。攻击要求 Key Renewal Interval 大于 15 分钟(解密 ARP 数据包所需的时间)。
攻击者取消对站点的身份验证,然后捕获 ARP 数据包。接下来,他将执行修改后的 ChopChop 攻击以恢复数据包的 ICV(完整性检查值)和 MIC。这样,攻击者需要猜测数据包的最后一部分,即 IP 地址。最后,他反转MICHAEL算法并获得MIC密钥。有了它,他现在可以将自定义数据包注入网络。 对策:禁用 QoS。
用于数据加密的两种类型的密钥
Pairwise Transient Key (PTK) – 用于保护单播数据帧 组临时密钥 (GTK) – 用于保护组寻址数据帧(例如广播 ARP 帧) 攻击者发送一个 ARP 请求(带有他的 MAC 和 AP 的 IP 地址),因此其他客户端更新他们的 ARP 表。这样,所有客户端都会将他们的数据包发送给攻击者。攻击者将收到AP解密的数据包,并用自己的密钥重新加密它们。每个人都可以使用 GTK 构建和广播虚假数据包。使用组密钥发送的消息没有针对欺骗的保护。
WPA2 协议
当然,WPA2 取代了 WPA。认证于 2004 年 9 月开始,从 2006 年 3 月 13 日起,所有新设备都必须带有 Wi-Fi 商标。最重要的升级是强制使用 AES 算法(而不是之前的 RC4)和引入 CCMP(AES CCMP,具有块链接消息验证码协议的计数器密码模式,128 位)作为 TKIP(WPA2 中仍然存在)的替代品,作为后备系统和 WPA 互操作性)。
与以前的版本一样,对 WPS 的攻击是最常见的攻击。
注意:WPA/WPA2 MGT(管理)表示密码不是预加密密钥,而是使用身份验证服务,通常是验证 Wi-Fi 网络客户端的用户名/密码的 RADIUS 服务。MGT 最常与企业/专业环境相关联。
WPA2 攻击
- KRACK 攻击
- PMKID 攻击 (PSK)
- WPS攻击
- 字典攻击
KRACK 攻击
该攻击针对用于在 WPA2 协议中建立随机数(一种“共享秘密”)的四次握手。WPA2 标准预计 WiFi 偶尔会断开连接,并允许在第三次握手时使用相同的值重新连接(以实现快速重新连接和连续性)。因为该标准不要求在这种类型的重新连接中使用不同的密钥,这可能随时需要,所以重放攻击是可能的。
对策:接入点具有可在密钥安装期间禁用 EAPOL-Key 帧重新传输的配置选项。 有用:密钥重新安装攻击:在 WPA2 中强制 Nonce 重用
PMKID 攻击 (PSK)
2018 年 8 月 4 日,针对使用 WPA/WPA2-PSK(预共享密钥)的 Wi-Fi 网络发布了新的漏洞利用。该漏洞允许攻击者获取用于特定 SSID 的 PSK。
该攻击是在寻找攻击新 WPA3 安全标准的新方法时意外发现的。
与其他攻击相比的主要区别在于,在此攻击中,不需要捕获完整的 EAPOL 4 次握手。新的攻击是针对单个 EAPOL 帧的 RSN IE执行的。 不再需要普通用户——因为攻击者直接与 AP 通信(也称为“无客户端”攻击)。 您无需等待普通用户和 AP 之间完成 4 次握手。 不再重传 EAPOL 帧(这可能导致无法破解的结果)和普通用户发送的无效密码。 当普通用户或 AP 距离攻击者太远时,不会丢失 EAPOL 帧。 不再需要修复 nonce 和重播计数器值(导致速度稍高)。 不再有特殊的输出格式(pcap、、hccapx等)——最终数据将显示为常规的十六进制编码字符串。
对策:建议在 WPA/WPA2-PSK 网络上禁用 802.11r。
WPS攻击
WPS 于 2006 年推出,该协议的目标是允许对无线安全知之甚少的家庭用户设置 Wi-Fi 保护访问,以及无需输入长密码即可轻松将新设备添加到现有网络.
2011 年 12 月,一个漏洞被发现影响了具有 WPS 功能的无线路由器。该漏洞允许远程攻击者通过暴力攻击在几个小时内恢复 WPS PIN,并使用 WPS PIN 恢复网络的WPA/WPA2预共享密钥。
WPS 使客户端能够向接入点发送 8 位引脚,接入点对其进行验证,然后允许客户端连接。Pin 仅包含数字,WPS 存在延迟,因为攻击者需要等待 AP 响应。因此,攻击者可以每秒尝试几个键(或每几秒一个键)。 我们这里有 8 个数字和 10 个数字,10 8 (100.000.000)。这太多了。第 8 位是前 7 位的校验和,所以我们有 10 7。此外,用于验证的密码分为两半,因此我们可以独立验证前 4 位和后 4 位数字。一次猜测 4 位数 2 比 8 位数 1 要容易得多。最后,数学最终得到:10 4 + 10 3 = 11,000 次猜测。
虽然这种策略过去需要几个小时,但较新的 WPS Pixie-Dust 攻击可以在几秒钟内破解网络。自 2011 年以来,许多路由器现在具有检测和减速(速率限制)或关闭 Reaver 类型攻击(锁定过多失败的 PIN 尝试)的保护。
路由器更新了一些设置以防止 WPS,但它们实施加密的方式仍然存在缺陷。创建真正的随机数相对困难,这是产生强加密所必需的。为了实现这一点,通常有一个函数接受“种子”并产生一个伪随机数。
如果使用长的或可变的“种子”数字,您可以获得与实际上随机的数字相同的结果,但如果您使用容易猜到的“种子”,或者更糟糕的是,一次又一次地使用相同的“种子”,你最终会具有易于破解的弱加密。这就是那些更新的路由器所发生的事情,WPS Pixie-Dust 攻击利用的东西。
对策:关闭WPS功能。
字典攻击
这依赖于捕获 WPA 握手,然后使用单词列表或暴力破解密码。根据密码强度(长度、字符集),在“合理”的时间内破解它可能很困难或不可能。
对策:使用长密码 (12+) 和不同的字符集(字母数字、特殊字符、大写/小写)。
WPA3 协议
2018 年 1 月,Wi-Fi 联盟宣布 WPA3 替代 WPA2。新标准128-bit在 WPA3-个人模式(WPA-PSK预共享密钥)或192-bitWPA3-企业(RADIUS 身份验证服务器)中使用加密。
WPA3 将更难被攻击,因为它的现代密钥建立协议称为“同时验证相等”(SAE)或蜻蜓密钥交换。SAE 提高了初始密钥交换的安全性,并针对离线字典攻击提供了更好的保护。
但它同样容易受到中间人攻击,并且无法抵御邪恶的WiFi钓鱼攻击。
十、WIFI攻击
Deauthentication攻击
- 如果一个
STA
想要从AP
取消认证,或者一个AP
想要从STA
取消认证,无论哪一个设备都可以发送取消认证帧。 - 因为认证帧是关联帧的先决条件,所以取消认证帧会自动的导致取消关联发生。取消认证帧不能被任何一方拒绝,除非双方已经协商了管理帧保护协议(定义在
802.11w
),并且MIC
完整性检查失败。 - 结论:取消认证帧的发送会导致
STA
断开网络。
Disassociation`攻击
- 一旦
STA
连接到AP
,任何一方都可以通过发送取消连接帧来中断连接。它和取消认证帧有相同的帧格式。 - 如果手动点击断开连接或者
STA
想要切换网络(比如漫游),那么STA
就会发送取消连接帧。 - 如果
STA
尝试发送不合法的参数,AP
会发送取消连接帧。 - 结论:取消连接帧的发送会导致
STA
断开网络。