BLOG: http://blog.csdn.net/gueter/
无线局域网鉴别与保密基础结构 WAPI ( WLAN Authentication and Privacy Infrastructure )是中国针对 IEEE 802.11 协议中的安全问题,提出的拥有自主知识产权的 WLAN 安全解决方案。 WAPI 已由 ISO/IEC 授权的 IEEE Registration Authority 审查获得认可,并分配了用于该机制的以太类型号( IEEE EtherType Field ) 0x88b4 ,这是我国在这一领域向 ISO/IEC 提出并获得批准的唯一的以太类型号。
WAPI 由无线局域网鉴别基础结构 WAI ( WLAN Authentication Infrastructure )和无线局域网保密基础结构 WPI ( WLAN Privacy Infrastructure )组成,其中, WAI 采用基于椭圆曲线的公钥证书体制,无线客户端 STA 和接入点 AP 通过鉴别服务器 AS 进行双向身份鉴别; WPI 采用国家商用密码管理委员会办公室提供的对称分组算法 SMS4 进行加解密,实现了保密通信。
WAPI 的协议流程总共有十个步骤,如下图所示:
WAI 鉴别基础结构在 BSS 中,当 STA 关联或重关联至 AP 时,必须进行相互身份鉴别。若鉴别成功,则 AP 允许 STA 接入,否则解除其链路验证。整个鉴别过程包括证书鉴别、单播密钥协商与组播密钥通告。
下图给出了与 WAI 相关的 STA 的状态转换图,同 802.11 状态图相比,该状态图将原有的 “ 鉴别 ” 改为了 “ 链路验证 ” :
若在上图基础上再增加专用于处理 WAI 过程的 “ 鉴别状态 ” 。这样, STA 总共需要维护三个状态变量:
l 链路验证状态;
l 关联状态;
l 鉴别状态。
由此决定了 STA 将会有四种本地状态:
l 状态 1 :链路未验证、未关联、未鉴别状态;
l 状态 2 :链路已验证、未关联、未鉴别状态;
l 状态 3 :链路已验证、已关联、未鉴别状态;
l 状态 4 :链路已验证、已关联、已鉴别状态。
其中 STA 和 AP 之间的 WAI 鉴别过程处于状态 3 ,各个状态中传输的帧类型也分为控制帧、管理帧、数据帧,具体可以参考标准。
WAPI 定义了若干新的名词,考虑到全文描述的规范性, WAPI 中各名词对比介绍如下:
l 鉴别请求者系统,类似于 802.11 的认证请求端( STA );
l 鉴别器系统,类似于 802.11 的认证端( AP );
l 鉴别服务系统,类似于 802.11 的认证服务器(如 RADIUS );
l 鉴别器实体( AE ):驻留在 AP 中,在接入服务前,提供鉴别操作;
l 鉴别请求者实体( ASUE ):驻留在 STA 中,需通过鉴别服务单元 ASU 进行鉴别;
l 鉴别服务实体( ASE ):驻留在 ASU 中,为鉴别器和鉴别请求者提供相互鉴别;
l 基密钥( BK ):用于导出单播会话密钥的密钥,基密钥由证书鉴别过程协商得到或由预共享密钥导出,类似于 PMK ;
l 基密钥安全关联( BKSA ),证书鉴别过程的结果或预共享密钥导出的结果,类似于 PMKSA ;
l 消息鉴别密钥( MAK ),提供密钥管理协议数据源鉴别和完整性校验的密钥,类似于 KCK ;
l 组播会话密钥( MSK ),用于保护站点发送的组播 MPDU 的随机值,组播会话密钥由组播主密钥导出,类似于 GTK ;
l 组播会话密钥安全关联( MSKSA ),组播密钥通告过程的结果,类似于 GTKSA ;
l 通告主密钥( NMK ),用于导出组播 / 站间加密密钥和组播 / 站间完整性校验密钥的辅助密钥。在组播密钥通告过程中,通告主密钥为组播主密钥;在站间密钥通告过程中,通告主密钥为站间主密钥,类似于 GMK ;
l 站间密钥( STAKey ),用来保护基础结构模式下一个基本服务集中站与站之间的直接通信的对称密钥,类似于 STK ;
l 站间密钥安全关联( STAKeySA ),基础结构模式下基本服务集中的站与站之间单播密钥协商的结果。一个站间密钥安全关联包含一个站间密钥,类似于 STKSA ;
l 单播会话密钥( USK ),由基密钥通过伪随机函数导出的随机值。它分为 4 个部分:单播加密密钥、单播完整性校验密钥、消息鉴别密钥、密钥加密密钥,类似于 PTK ;
l 单播会话密钥安全关联( USKSA ),单播密钥协商过程的结果,类似于 PTKSA 。
WAPI 中添加 ASUE 、 AE 、 ASE 的概念是为了考虑 WAPI 应用的灵活性, WAPI 主要的用户使用场景有:
l 企业级用户应用场景:有 AP 和独立的 AS (鉴别服务器),内部驻留 ASU (鉴别服务单元),实现多个 AP 和 STA 证书的管理和用户身份的鉴别;
l 小公司和家庭用户应用场景:有 AP , ASU 可驻留在 AP 中;
l 公共热点用户应用场景:有 AP , ASU 驻留在接入控制服务器中;
l 自组网用户应用场景:无 AP ,各 STA 在应用上是对等的,采用共享密钥来实现鉴别和保密。
类似于 802.1X , WAI 采用的三元结构和对等鉴别访问控制方法也是一种基于端口认证方法,如下图所示:
鉴别器的受控端口处于未鉴别状态时,鉴别器系统拒绝提供服务,鉴别器实体利用非受控端口和鉴别请求者通信。受控与非受控端口可以是连接到同一物理端口的两个逻辑端口,所有通过物理端口的数据都可以到达受控端口和非受控端口,并根据鉴别状态决定数据的实际流向。
l 受控端口:只有当该端口的鉴别状态为已鉴别时,才允许协议数据通过,只有通过鉴别的 STA 才能使用的 AP 提供的数据端口为受控端口,受控端口状态由系统鉴别控制参数确定;
l 非受控端口:协议数据的传送不受当前鉴别状态的限制, AP 提供 STA 连接到鉴别服务单元 ASU 的端口即为非受控端口。
一个重要概念是鉴别服务单元 ASU ,在整个 WAI 鉴别过程中, ASU 作为第三方起着提供鉴别服务的作用。此外, ASU 还为 STA 和 AP 提供证书的颁发、认证、吊销等功能。一个 ASU 可以管理一个或多个 BSS ,在同一个 ASU 的管理范围内, STA 与 AP 之间需通过 ASU 实现证书的双向认证。
STA 与 AP 之间的鉴别数据分组利用以太类型字段为 0x88B4 的 WAPI 协议传送, AP 与 ASU 之间的鉴别数据报文通过端口号为 3810 的 UDP 套接字传输。在 WAI 的整个过程中,涉及到数种加 / 解密和消息摘要等算法,具体可参考标准文档,限于篇幅,文章不深入详细介绍 WAI 的技术细节。
WPI-SMS4 的 MPDU 格式如下:
上图中各字段的含义可以参考标准文档。
WPI 的封装过程为:
l 利用完整性校验密钥与数据分组序号 PN ,通过工作在 CBC-MAC 模式的校验算法对完整性校验数据进行计算,得到完整性校验码 MIC ;
l 利用加密密钥和数据分组序号 PN ,通过工作在 OFB 模式的加密算法对 MSDU 数据及 MIC 进行加密,得到 MSDU 数据以及 MIC 密文;
l 封装后再组帧发送。
WPI 的解封装过程为:
l 判断数据分组序号 PN 是否有效,若无效,则丢弃该数据;
l 利用解密密钥与数据分组序号 PN ,通过工作在 OFB 模式的解密算法对分组中的 MSDU 数据及 MIC 密文进行解密,恢复出 MSDU 数据以及 MIC 明文;
l 利用完整性校验密钥与数据分组序号 PN ,通过工作在 CBC-MAC 模式的校验算法对完整性校验数据进行本地计算,若计算得到的值与分组中的完整性校验码 MIC 不同,则丢弃该数据;
l 解封装后将 MSDU 明文进行重组处理并递交至上层。
其中,加解密算法采用的是 SMS4 算法( 128bits 密钥长度、分组长度), MIC 计算采用的是 SMS4-CBC-MAC 模式,数据加密采用的是 SMS4-OFB 模式,分别介绍如下: