图1 WAPI鉴别组网图
身份鉴别阶段WAPI提供两种身份鉴别方法:基于证书的方式(WAPI-CERT方式)和基于预共享密钥的方式(WAPI-PSK方式)。
WAPI-CERT方式身份鉴别是基于STA与AC双方的证书所进行的鉴别。鉴别前STA与AC必须预先拥有各自的证书,然后通过鉴别服务器对双方的身份进行鉴别,根据双方产生的临时公钥和临时私钥生成基密钥BK(Base Key),并为随后的密钥协商做好准备。
WAPI-CERT方式适用于大型企业网络或运营商网络,这种认证方式需要部署和维护昂贵的证书系统。
图2 WAPI证书鉴别流程图
如图2所示,WAPI证书鉴别流程如下:
鉴别激活:当STA关联或重新关联至AC时,AC判断该用户为WAPI用户时,由AC向STA发送鉴别激活以启动整个鉴别过程。
接入鉴别请求:STA向AC发出接入鉴别请求,将STA证书与STA的当前系统时间发往AC,其中系统时间称为接入鉴别请求时间。
证书鉴别请求:AC收到STA接入鉴别请求后,首先记录鉴别请求时间,然后向鉴别服务器发出证书鉴别请求,即将STA证书、接入鉴别请求时间、AC证书及使用AC的私钥对它们的签名构成证书鉴别请求发送给鉴别服务器。
证书鉴别响应:鉴别服务器收到AC的证书鉴别请求后,验证AC的签名和STA证书的有效性。若不正确,则鉴别过程失败;否则,进一步验证STA证书。验证完毕后,鉴别服务器将STA证书鉴别结果信息、AC证书鉴别结果信息和鉴别服务器对它们的签名构成证书鉴别响应发送给AC。
接入鉴别响应:AC对鉴别服务器返回的证书鉴别响应进行签名验证,得到STA证书的鉴别结果,根据此结果对STA进行接入控制。AC将收到的证书鉴别响应回送至STA。STA验证鉴别服务器的签名后,得到AC证书的鉴别结果,根据该鉴别结果决定是否接入该WLAN服务。若鉴别成功,则AC允许STA接入;否则,解除其关联。
WAPI-PSK方式:预共享密钥鉴别是基于STA与AC双方的预共享密钥所进行的鉴别。鉴别前STA与AC必须预先配置有相同的密钥,即预共享密钥。鉴别时直接将预共享密钥转换为BK。
WAPI-PSK方式不需要昂贵的证书系统,适用于家庭用户或小型企业网络。
AC经鉴别服务器认证成功后,会发起与STA的密钥协商过程,密钥协商包括单播密钥协商过程和组播密钥协商过程。
单播密钥协商过程
STA与AC之间交互的单播数据利用单播密钥协商过程所协商出的单播加密密钥和单播完整性校验密钥来实现数据的安全性。单播密钥协商是采用KD-HMAC-SHA256算法利用BK生成单播会话密钥USK。单播密钥协商过程不仅要协商出STA和AC会话时单播数据的加密密钥,而且还要协商出会话过程所使用的组播密钥的保护密钥和鉴别密钥。
图3 WAPI单播密钥协商流程图
如图3所示,单播密钥协商的流程如下:
单播密钥协商请求分组
建立有效的基密钥安全关联后,AC向STA发送单播密钥协商请求分组,开始与STA进行单播密钥协商。
单播密钥协商响应分组
STA收到AC的单播密钥协商请求分组后,进行如下处理:
检查此次单播密钥协商是否为更新过程。
如果是,执行步骤b;
如果不是,执行步骤c。
WAPI密钥管理协议也允许STA直接发送单播密钥协商响应分组给AC,主动发起单播密钥更新过程。
检查AC质询与本地保存的上次单播密钥协商过程所协商的质询是否相同。如果不同,丢弃分组。
STA生成随机数质询,利用基密钥、AC随机数质询、STA随机数质询,采用密钥导出算法KD-HMAC-SHA256,生成单播会话密钥和下次单播密钥协商过程的AC质询。
用消息鉴别密钥通过HMAC-SHA256算法计算本地消息鉴别码,构造单播密钥协商响应分组发送给AC。
单播密钥协商确认分组
AC收到单播密钥协商响应分组后,进行如下处理:
检查AC质询是否正确。如果不正确,丢弃分组。
利用基密钥、AC质询、STA质询,采用密钥导出算法KD-HMAC-SHA256,生成单播会话密钥和下次单播会话密钥协商过程的AC质询,利用消息鉴别密钥通过HMAC-SHA256算法计算本地消息鉴别码,与分组中的消息鉴别码比较。如果不同,丢弃分组。
如果为基密钥安全关联建立后的首次单播密钥协商,在基础模式下,检查响应分组中的WAPI信息元素和自己收到的关联请求帧的WAPI信息元素是否相同。如果不同,解除认证。在独立模式(即Ad-hoc网络模式)下,检查响应分组中的WAPI信息元素中的单播密钥算法是否支持,如果不支持,解除认证。
用消息鉴别密钥通过HMAC-SHA256算法计算本地消息鉴别码,构造单播密钥协商确认分组,发送给STA。
组播密钥协商过程
组播密钥协商过程建立在单播密钥协商过程基础上,完成AC组播密钥的通告。
AC利用自己通告的、由组播主密钥导出的组播加密密钥和组播完整性校验密钥对其发送的广播/组播数据实现安全性,而STA则采用AC通告的、由组播主密钥导出的组播
加密密钥和组播完整性校验密钥对收到的广播/组播数据进行解密。
图4 WAPI组播密钥协商流程图
如图4所示,组播密钥协商的流程如下:
组播密钥通告分组
单播密钥协商成功后,AC将组播主密钥(利用随机数算法生成的),利用前面协商出的单播密钥对组播密钥进行加密,发送组播密钥通告分组,向STA通告组播密钥。
组播密钥响应分组
STA收到组播密钥通告分组后,进行如下处理:
STA利用单播密钥标识字段标识的消息鉴别密钥计算校验和,与消息鉴别码字段进行比较。如果不同,丢弃分组。
检查密钥通告标识字段值是否单调递增。如果不是,丢弃分组。
对密钥数据解密得到16个八位位组的通告主密钥,利用KD-HMAC-SHA256算法进行扩展,生成长度为32个八位位组的会话密钥(其中前16个八位位组为加密密钥,后16个八位位组为完整性校验密钥)。
保存密钥通告标识字段值,生成组播密钥响应分组发送给AC。
WLAN服务端收到WLAN客户端的组播密钥响应分组后,进行如下处理:
利用单播密钥标识字段标识的消息鉴别密钥计算校验和,与消息鉴别码字段进行比较。如果不同,丢弃分组。
比较密钥通告标识等字段与发送的组播密钥通告分组中的相应字段值。如果都相同,则本次组播密钥通告成功;否则,丢弃分组。
密钥更新方式WAPI标准定义了密钥的动态协商,但是如果STA长时间使用相同的加密密钥,仍然存在安全隐患。WAPI提供基于时间的密钥更新机制。
基于时间更新:同一个STA使用的单播/组播密钥存在一定生存期(用户可以通过命令行配置)。当生存期结束后,STA和AC间将重新进行单播/组播密钥协商并生成新的单播/组播会话密钥。
,