WAPI凭什么跟802.11i博弈
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 
如果说 802.11i 已经完美的解决了 WLAN 的安全问题,那就不存在 WAPI 802.11i 的长达 10 年的博弈了,也就不存在中国标准在国际上的屡败屡战。那么究竟是什么原因使得 802.11i 质疑的声音逐渐强硬,又是什么原因使得 WAPI 站在风头浪尖呢?

我们先来看看 802.11i 从实现机制上还存在那些不足呢?

首先,从鉴别机制考虑, 802.11i 采用了通用 EAP over RADIUS 实现终端 STA AAA 服务器之间的单向或双向鉴别,终端却无法实现对 AP 的合法性鉴别。

其次,从鉴别方法来考虑,鉴别过程较为复杂,用户身份常为用户名 + 口令方式,采用 AP 端的 RADIUS AAA 服务器对用户进行认证,而且身份凭证简单,易被盗用。

再次,从密钥管理方面看, AP RADIUS 之间需要手工设共享密钥, AP STA 之间只定义了认证体系结构,不同厂商的具体设计可能不兼容,如此实现兼容代价不菲。

从上面三方面来看, 802.11i 虽没有致命之伤,但也并非完美。

也许是觉得从技术角度上仍有完善的前景,也许从国家专利长期受美欧压迫的不爽考虑,也可能更多的是市场的需要。这样便有了 WAPI 的面世。

   WAPI WLAN Authentication and private infrastructure 即无线局域网鉴别与保密架构的简称。 WAPI 其实是由两部分组成, WAI(WLAN 鉴别架构 ) WPI WLAN 保密架构)两部分,其中 WAI 负责无线链路接入用户的身份认证即单播及组播密钥协商,而 WPI 则利用 WAI 协商出来的密钥对无线 MPDU 数据进行加解密处理。

下图是 WAPI 典型的组网架构:

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />                 WAPI典型组网架构

     整个 WAPI 的环境由三个主要部分组成,移动接入终端工作站 STA ,在 WAPI 中称为 ASUE (鉴别请求者实体),接入服务之前请求进行鉴别操作的实体。 AP (无线接入点)有时是一个独立的胖设备,有时则是由性能更高的瘦 AP+AC 担任。这部分在 WAPI 中称为 AE (鉴别实体),主要负责为鉴别请求者接入服务之前提供鉴别操作的实体。该实体驻留在 AP AC 中。另外在 WAPI 中存在一个 AS 鉴别服务器及 AAA 认证服务器,这两个通常集成在一起,为 ASUE AE 提供双向的身份认证鉴别。

上面实际的环境在 WAPI 中被抽象为如下图中的三个部分:

 

                  WAI鉴别基础架构


  下面我们将把 WAPI 的整个处理流程按照功能进行划分为五部分:

1.     STA AP 关联的过程

                  安全关联的建立

一般来说 STA 接入 WLAN 时会被动侦听信标帧或采取主动探寻的方式获取 AP 的安全策略 (WAPI 信息元素 )

然后 STA 会发送链路验证请求,我们知道 WLAN 链路验证一般由开放式和 PSK 两种, WAPI 则采用了开放式,及来者不拒来响应链路验证,然后 STA AP 发送关联请求,其中也同样包含了 WAPI 的协商后的信息元素, AP 如协商成功则会返回关联响应报文完成整个关联过程。

2.     STA(ASUE) AP(AE) 的双向鉴别

                   证书鉴别过程

WAI 的身份鉴别一般由两种,一种为简单的 PSK ,一种则采用了公钥架构的非对称密钥证书机制实现身份的鉴别。以证书鉴别为例。当 STA AP 成功关联之后, AP 便会向 STA 发送鉴别激活分组,该分组中携带了本地可信任的 AS 的身份及 AE 的×××书,证书携带了 AP 的身份列表和属性签名。 STA 受到鉴别激活分组后根据分组中 AP 信任的 ASU 身份选择由该 ASU 颁发的证书或本地策略选项证书,产生用于 ECDH 交换的临时私钥 x ,临时公钥 x*P 和其 ASUE 挑战,生成接入鉴别请求分组,发送给 AP 。接入鉴别激活分组中包含了如下的字段: STA AP 的证书, STA 的挑战码及密钥以及用于 ECDH 交换的参数,另外也包含了可信任的第三方 ASU 身份列表及签名。

AE 接受到鉴别请求分组后,查询 AP 身份字段是否跟自己的一致,以及 ECDH 参数字段是否与自己在鉴别激活分组中的 ECDH 参数一致,一致则验证 ASUE 的数字签名,如果 AE 本地策略中要求使用第三方 ASU 鉴别 STA 证书,则 AE 会生成证书鉴别请求分组,发给 ASU

3.     AS RADIUS )服务器对 AP(AE) 进行证书鉴别

AE 鉴别策略要求需要 AS 服务器来鉴别 STA 的证书,便产生证书鉴别请求分组给 AS 服务器,该分组中将包含如下字段:

AE ASUE MAC 组成的 ADDID AE ASUE 的挑战码, AE ASUE 的证书以及 ASUE 信任的 ASU 列表。

   ASU 接受到证书鉴别请求分组后处理如下:

   ASU AE ASUE 证书进行验证,一般鉴别过程是这样的, ASU 对证书做签名认证,确认该证书是由合法的 CA 办法的,是可信的即可。鉴别结束之后会根据 AE ASUE 的证书验证结果,构造证书鉴别响应分组,并附加响应的签名发往 AE

   AE 受到证书鉴别响应分组后,根据 ADDID 确认对应的证书鉴别请求分组,检查证书的验证结果字段,并查找自身信任的 ASU 的签名,验证其签名。若 ASUE 证书鉴别结果为成功,本地生成用于 ECDH 交换的临时密钥 y 和临时公钥 y*p ,使用自己的临时私钥 y ASUE 的临时公钥 x*p 进行 ECDH 计算,得到密钥种子( x*y*p acscissa ,然后对其进行 KD-HMAC-SHA256 扩展,生成长度为 16 个八位位组的基密钥 BK 和长度为 32 个八位位组的下一次证书鉴别过程的鉴别表示种子。在 PSK 中基密钥 BK 则直接来自设置的 Pre-shared key 。然后将利用证书鉴别结果,双方挑战,双方证书及签名等构造接入鉴别响应分组发给 ASUE 。下图描述了基密钥 BK 是如何导出的:

                  证书认证过程中BK导出

                预共享密钥协商过程中BK的导出

   ASUE 受到鉴别响应分组后判断上方的身份信息,比较挑战码是否和鉴别请求分组中一致,比较 ASUE 密钥数据是否和鉴别请求分组中一致,验证 AE 签名的正确性,若鉴别相应分组中鉴别结果为成功,则 AE ASUE 的链路验证。

4.     AP STA 间单播组播密钥协商

一种好的密码学算法,必然包括完善且高效的密钥管理及协商机制。 WAI 也是一样的,用于数据加解密的密钥是由多个分组协商,通过密钥扩展算法扩展而得到的。跟 802.11i 一样, WAPI 用于数据加解密的密钥可以分为两种,一种是用于 STA 之间独立处理的单播密钥,另一种则是用于无线链路广播用的组播密钥。单播密钥 USK 来源于 BK ,而组播密钥 MSK 则由 USK 协商而来,这样环环相扣,拥有较高的安全性。

                  USK协商过程

鉴别完成之后 AE 会向 ASUE 发送单播密钥协商请求分组,开始于 STA 协商单播密钥,该分组格式大致如下:

会话算法标识
BKID
USKID
ADDID
AE 签名

 ASUE 收到单播密钥协商请求分组之后会一次验证安全参数索引 ADDID AP 签名信息, ASUE 利用随机数产生器产生 ASUE 挑战 N2 ,然后计算 KD-HMAC-SHA256 BK  ADDID||

N1||N2|| pairwise key expansion for unicast and additional keys and nonce ”) ,其中 N1 AE 挑战, N2 ASUE 挑战。生成 96 个八位位组,前 64 个八位位组为单播会话密钥(第一个 16 个八位位组为单播加密密钥,第二个 16 个八位位组为单播完整性校验密钥,第三个 16 个八位位组为 WAI 协议消息鉴别密钥,第四个 16 个八位位组为组播密钥 / 站间密钥加密密钥) 。最后 32 个八位位组为下一次单播会话密钥协商过程的 AE 挑战的种子, 然后对该种子使用 SHA-256 函数计算得到长度为 32 个八位位组的下一次单播密钥协商过程的 AE 挑战并保存。用 WAI 协议消息鉴别密钥通过 HMAC-SHA256 算法本地计算消息鉴别码,构造单播密钥协商响应分组发往 AE

     AE 接收到如下单播密钥协商响应分组之后也会计算 KD-HMAC-SHA256 BK ADDID|| N1||N2|| pairwise key expansion for unicast and additional keys and nonce ”) ,其中 N1 AE 挑战, N2 ASUE 挑战。生成 96 个八位位组,前 64 个八位位组为单播会话密钥(第一个 16 个八位位组为单播加密密钥,第二个 16 个八位位组为单播完整性校验密钥,第三个 16 个八位位组为 WAI 协议消息鉴别密钥,第四个 16 个八位位组为组播密钥 / 站间密钥加密密钥) 32 个八位位组为下一次单播会话密钥协商过程的 AE 挑战的种子,然后对种子使用 SHA-256 函数计算得到长度为 32 个八位位组的下一次单播会话密钥协商用。 WAI 协议消息鉴别密钥通过 HMAC-SHA256 算法本地计算消息鉴别码,构造单播密钥协商确认分组,发送给 AE

   ASUE 收到单播密钥确认分组之后便会检查 ASUE 挑战与自己在单播响应分组中的值是否相同,利用消息鉴别密钥通过 HMAC-SHA256 算法计算本地消息鉴别码,与分组中的值相比较,进而确认 WAPI 信息元素。以完成链路的验证。下图也进一步说明了单播密钥的到处体系:

   单播密钥协商完成之后,便会利用单播密钥的协商结果进一步协商出组播密钥,整个过程如下:

           组播密钥协商过程

组播密钥的协商是通过 AE ASUE 发送组播密钥通告分组,然后返回组播密钥响应分组来完成的。具体的过程有点类似单播密钥的协商。不再赘述。另外下图也进一步的描述了组播密钥的到处体系:

                   组播密钥导出体系

从上面的密钥协商过程可以看出协商结束之后我们分别将会得到如下的后续用于数据处理的密钥:

单播数据加密密钥 UEK

单播数据完整性校验密钥 UCK

组播数据加密密钥 MUK

组播数据完整性校验密钥 MCK

而这些密钥会根据用户的具体要求进行周期性的更新。

5.     WPI 数据帧加密处理

WAI 完成身份鉴别及密钥协商,而 WPI 则负责 MPDU 的数据加解密机密性保护,以及完整性校验处理。与 WPA TKIP 不同,也与 WPA2 CCMP 也不同, WPI 采用了全新的 SMS-4 套件算法对数据处理。其实整个 SMS-4 CCMP 类似其实是由两个独立的算法组成,一种是 OFB 加密模式,另一种跟 CCMP 相同的 CBC-MAC 完整性校验算法。

当数据要发送时就会首先采用 OFB 加密算法利用加密密钥和数据分组序号 PN MSDU 数据进行加密,得到 MSDU 密文。

            OFB加密模式

然后利用完整性校验密钥与数据分组序号 PN ,通过工作在 CBC-MAC 模式的校验算法对数据进行完整性校验计算,得到完整性校验码 MIC

                 CBC-MAC模式

最后对加密后的数据进行封装,封装后便在无线接口发送出去。

                    WPI数据封装处理

   可以发现 WPI 的数据封装过程跟 802.11i 基本是一致的, MAC 头, key id PN ,加密载荷, MIC FCS

数据接收时, WPI 的解封装过程为 :1. 判断数据分组序号 PN 是否有效,若无效,则丢弃该数据 ;2. 利用完整性校验密钥与数据分组序号 PN ,通过工作在 CBC-MAC 模式的校验算法对完整性校验数据进行本地计算,若计算得到的值与分组中的完整性校验码 MIC 不同,则丢弃该数据 ;