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模式,分别介绍如下: