java spi机制原理(WAPI协议完整性测试解析系列)
无线局域网鉴别与保密基础结构(WLAN Authentication and Privacy Infrastructure, WAPI)是无线局域网安全协议。被应用到各种终端产品的WAPI协议是否符合各项技术参数,关键在于WAPI协议符合性测试的落地程度。WAPI协议符合性测试包含协议互通性测试和协议完整性测试。具体来说,协议互通性测试主要检测设备正确处理正常协议数据的能力,而协议完整性测试则围绕设备正确处理异常协议数据的能力进行检测。从根本上讲,WAPI协议完整性检测的推出对于产品的互通性和性能提出了更高要求,进而促进了WAPI产品功能更加完备。
尽管WAPI协议完整性检测工作已在测试机构开展多年,不过在诸如手机等移动终端检测中仍然暴露出不少问题,究其原因还是部分终端厂商缺乏对于WAPI协议完整性及测试的深刻理解。为此,我们对手机WAPI协议完整性测试,以及其中出现的问题进行归纳、解析,进而提出整改建议,希望让终端厂商的研发和检测有的放矢。
WAPI协议完整性测试的内容主要包括以下6类,详见图1。
图2 WAI协议分组数据格式
在该数据报文中,当类型字段为“1”时,表示该组数据为WAI协议分组。子类型字段长度为一个八位位组。在WAI协议分组中子类型字段的值定义如下:
1、表示预鉴别开始分组;
2、表示站间密钥请求分组;
3、表示鉴别激活分组;
4、表示接入鉴别请求分组;
5、表示接入鉴别响应分组;
6、表示证书鉴别请求分组;
7、表示证书鉴别响应分组;
8、表示单播密钥协商请求分组;
9、表示单播密钥协商响应分组;
10、表示单播密钥协商确认分组;
11、表示组播密钥/站间密钥通告分组;
12、表示组播密钥/站间密钥响应分组。
其他值保留。
图3是WAI协议流程图。图3包括证书鉴别过程、单播密钥协商过程和组播密钥通告过程,同时也详细标注了WAI各分组子类型的值。
图3 证书鉴别、单播密钥协商及组播密钥通告过程
WAI子类型协议完整性测试简介和测试环境
当被测移动终端在接收到含有异常WAI子类型的数据报文(鉴别激活,接入鉴别响应,单播密钥协商请求,单播密钥协商确认,组播密钥通告)后,通过检测被测移动终端对异常报文的处理情况,判断其是否符合WAI子类型协议完整性测试要求。实现完好的移动终端应该在接收到报文后先做判断,丢弃异常的报文不做响应;在未超时内且没有达到最大重发次数的情况下,实现完好的移动终端在先接收到异常报文之后又接收到了正常报文,应能对正常报文做出响应。
如图4所示搭建协议完整性测试环境,开展协议完整性整改和测试。测试环境中用到了西电捷通公司的WAPI负面测试仪(XWN1000T)和WAPI协议分析工具(XWT300)。WAPI负面测试仪可以构建异常报文,用于测试STA对异常报文的判断和处理能力。WAPI协议分析工具可以高效地捕获WAPI协议相关报文,对报文内容进行全面细致的解析,并对可能存在的错误字段和出现位置给予准确的提示。
图4 协议完整性测试环境拓扑图
WAI子类型协议完整性测试方法
以针对鉴别激活分组的WAI子类型协议完整性测试样本为例进行分析,如下图5和图6所示,利用WAPI协议分析工具对抓取的报文数据包进行解析:
1、WAI子类型被赋予了异常值“103”,如果被测移动用户终端并未对该异常报文进行响应,则通过该测试用例检测。如果被测移动用户终端在收到异常的鉴别激活分组后发出接入鉴别请求分组,会导致无法通过该测试用例检测。
图5 异常WAI子类型的鉴别激活分组报文解析
2、负面测试仪先发送两次异常鉴别激活分组报文,报文之间间隔100毫秒。移动用户终端不应对异常的鉴别激活分组报文做出响应。然后,负面测试仪发送一次正常的鉴别激活分组报文(WAI子类型值为“3”),正常报文与异常报文之间间隔100毫秒。移动用户终端应能对正常的鉴别激活分组报文做出响应,完成后续接入鉴别和密钥协商的全过程,最终建立连接。
图6 正常WAI子类型的鉴别激活分组报文解析
其它四种WAI子类型协议完整性测试的方案和步骤与上述鉴别激活分组的WAI子类型协议完整性测试的方案和步骤相似。
WAI子类型的协议完整性测试中常见问题及解析
1、常见问题
被测移动用户终端针对异常WAI子类型的数据报文无法做出正确响应。该问题可能存在以下三种情况:
(1)在收到异常的报文时没有对WAI子类型进行校验,而默认WAI子类型值是正确的随即发出响应。例如:在被测移动用户终端发出接入鉴别请求分组报文后,默认从AP收到的下一条报文是接入鉴别响应分组,未对收到的报文进行校验,便直接依照接入鉴别响应分组的格式对报文进行处理。这样的实现方式是错误的,将无法通过协议完整性检测。
(2)在收到异常WAI子类型的报文后对报文进行校验,但是未能成功识别异常的报文,并将异常报文按照正确报文处理。
(3)在收到异常WAI子类型的报文后对报文进行了校验并识别出该异常,丢弃异常报文不做处理,但对在异常报文之后接收到的正确报文也未能做出响应。这样的实现方式也是错误的,且无法通过协议完整性检测。
2、问题分析及解决方法
WAI子类型字段根据不同分组定义了其对应的字段值。首先,需要注意校验在不同分组中的WAI子类型字段值是否正确,移动用户终端应能够解析并识别异常的WAI子类型字段,并丢弃异常的报文不进行处理。同时,移动用户终端也应能处理包含正常WAI子类型字段的报文并完成鉴别和密钥协商,最终建立连接。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com