WiFi Security协议以及实现

协议架构

根据802.11各个讨论组制定的安全相关协议,WiFi联盟扩充完善并制定了WiFi安全相关的WPA/WPA2/WPA3系列认证标准。下图展示了WiFi主要的协议组织,红色线条框起来的是安全服务相关的部分,用于802.11认证、关联等处理的组件没有画出,在后边的描述里会提及。


802.11协议组织架构

上图中最上层部分IEEE802.1 X和IEEE 802.1 Authenticator or Supplicant,同样也是MAC层的应用,它们的内部以及和802.1X的交互如下图所示。

IEEE 802.1X Authenticatir or Supplicant
IEEE 802.1X Authenticatir or Supplicant

由以上结构图可以知道,802.11安全相关的主要组件如下所列。

  • MLME(对外部提供802.11认证、关联等的接口,即MLME-SAP)
  • SME
    • AP/STA管理(802.11认证、关联等的处理)(上边的图中没有画出)
    • RSNA Key Management(即802.11i,包括4路握手等内容)
    • IEEE 802.1X Authenticatir or Supplicant
    • EAP(可扩展的认证协议)
  • 802.1X (基于端口的网络访问控制)

同时802.11定义了这些组件所需要提供的各种服务,以此来描述协议,其中安全相关的服务有:

  • 访问控制服务
    • 认证服务(基于WEP、EAP、预共享密钥)
    • 去认证服务
  • 数据机密性服务
  • 密钥管理服务
  • 数据来源认证服务
  • 数据完整性服务
  • 重放攻击服务
  • 管理帧保护服务

软件架构

OpenWrt mt76平台是对协议的一个实现,MT76平台的软件组件如下。

  • hostapd/wpa_supplicant
  • cfg80211
  • mac80211
  • mt76(指Mediatek WiFi芯片在linux mac80211架构上的开源驱动)
  • FW

AP模式

下图标示了AP模式下相关的软件和协议的对应关系。

MT76 AP模式下的软件组件
MT76 AP模式下的软件组件

从图中可以看出,MLME、SME、802.1X都在hostapd这个user daemon里实现,kernel stack里,仅仅只有软加解密的部分,下图再更加详细地描述了软件的实现。

MT76 AP模式软件架构细节
MT76 AP模式软件架构细节

上图只是列出了各个模块的关键内容,hostapd中的实现和规范对应的比较好,软件中的符号定义基本是和协议里的描述对应,所以只要再软件里找到对应的模块,就可以结合协议去理解实现。

有个比较关键的问题需要说明一下,处于user space的daemon hostapd是怎么收发管理帧和eapol帧的?这个问题关系到安全管理的上下串通。

  • 对于管理帧,通过NL80211_CMD_FRAME这个nl80211 cmd来收发
  • 对于eapol帧,可以通过NL80211_CMD_CONTROL_PORT_FRAME或者PF_PACKET(l2_packet_recive)来收发

STA模式

STA模式和AP模式软件结构上的主要区别是MLME放到了mac80211里,其他结构不变,不过各个模块对Authenticator和supplicant的处理有不同,如下图所示。

MT76 STA模式软件架构细节
MT76 STA模式软件架构细节

SetKey

上边描述了软件的结构,以及一些认证管理相关的东西,下边对SetKey的流程做一个简单的描述。

AP模式下SetKey的流程如下图所示。

MT76 SetKey流程
MT76 SetKey流程

相关Package

下面的表里列出了OpenWrt上和securyt相关的package,以及它们的feature和可获得的版本。

Package AP support Client support WPA Enterprise OpenWrt Version
wpad yes yes yes 10.03+
wpad-mini yes yes no 10.03+
hostapd yes no yes 7.06+
hostapd-mini yes no no 8.09+
wpa-supplicant no yes yes 7.06+
wpa-supplicant-mini no yes no 8.09+

OpenWrt packages

Debug

  • hostapd_cli
  • wpa_cli
  • iw
  • sysfs
  • ftrace/tracepoint
WiFi Security协议以及实现
分享到:
滚动到顶部