WAPI凭什么跟802.11i博弈
如果说
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
典型的组网架构:
图
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
协商单播密钥,该分组格式大致如下:
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
不同,则丢弃该数据
;
。