WAPI协议完整性测试——WAI头部字段报文

2024-03-20 19:20

本文主要是介绍WAPI协议完整性测试——WAI头部字段报文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       无线局域网鉴别与保密基础结构(WLAN Authentication and Privacy Infrastructure,简称WAPI)是无线局域网安全协议。被应用到各种终端产品的WAPI协议是否符合各项技术参数,关键在于WAPI协议符合性测试的落地程度。WAPI协议符合性测试包含协议互通性测试和协议完整性测试。其中WAPI协议完整性测试的内容主要包括以下6类,详见下图1。

图1 WAPI协议符合性测试

  上一期我们介绍了针对WAI子类型报文的协议完整性测试,本期我们重点介绍WAI头部字段报文的协议完整性测试要点、测试方法和步骤,以及测试中容易出现的高频问题。

  针对WAI头部字段的技术解析

  该项检测是针对各个分组数据中的WAI头部的部分字段,包括版本、类型和分组序号等进行的协议完整性测试。WAI协议分组数据基本格式如图2。

图2 WAI协议分组数据基本格式

  在该数据报文中:

  1、版本字段长度为2个八位位组,表示WAPI协议的版本号,当前值为1。

  2、类型字段长度为1个八位位组,表示协议类型。定义如下:当类型字段为1时,表示该组数据为WAI协议分组。其它值保留。

  3、子类型字段长度为1个八位位组,当类型字段为1时,即当该组数据为WAI分组数据时,子类型字段的值分别为1到12,代表各个分组(如上一期WAI子类型部分详述)。其它值保留。

  4、保留字段长度为2个八位位组,默认值为0。

  5、长度字段长度为2个八位位组,其值表示WAI协议分组所有字段的八位位组数。

  6、分组序号字段长度为2个八位位组,其值表示协议分组序号。第一个分组序号为1,后序分组依次按1递增。

  7、分片序号字段长度为1个八位位组,其值表示分片的顺序编号,每一个分组的第一个分片序号为0,后序分片依次按1递增。

  8、标识字段长度为1个八位位组,比特0表示后续是否有分片,值为0表示没有,值为1表示有。比特1至比特7保留。

  其中:分组序号字段、分片序号字段和标识字段仅在移动用户终端和AP之间的WAI协议分组中有效。

  根据上述WAI协议分组数据报文的定义:版本字段代表当前WAPI协议版本号,当前版本号都是“1”,随着WAPI技术演变和发展,可能会出现其它版本的WAPI协议,对应新的版本号数值。因此,必须对版本字段值进行校验。后续,在有多个版本号并存的技术背景下,同一鉴别过程中使用版本号也应该是相同的。

  类型字段表示该分组的类型,值为“1”时表示该组数据为WAI协议分组,因此在WAI鉴别过程中,各个分组的类型字段值均为“1”。

  分组序号和分片序号字段根据各个分组情况按规定取值。

  WAI头部字段报文协议完整性测试简介和测试环境

  WAI头部字段的数据报文由鉴别激活,接入鉴别响应,单播密钥协商请求,单播密钥协商确认,组播密钥通告组成。当被测移动终端在接收到含有异常WAI头部字段的数据报文后,通过检测该终端对异常报文的处理情况,判断其是否符合WAI头部字段报文协议完整性测试规范。实现完好的移动终端应该在接收到报文后先做判断,丢弃异常的报文不做响应;在未超时内且没有达到最大重发次数的情况下,实现完好的移动终端在先接收到异常报文之后又接收到了正常报文,应能对正常报文做出响应。

  WAI头部字段报文的协议完整性测试包含五个测试用例:

  ——针对鉴别激活分组的WAI版本号的协议完整性测试;

  ——针对接入鉴别响应分组的WAI类型的协议完整性测试;

  ——针对单播密钥协商请求分组的WAI版本号的协议完整性测试;

  ——针对单播密钥协商确认分组的WAI类型的协议完整性测试;

  ——针对组播密钥通告分组的WAI分组序号的协议完整性测试。

  如图3所示,搭建协议完整性测试环境,开展协议完整性整改和测试。测试环境中用到了西电捷通公司研发的WAPI负面测试仪(XWN1000T)和WAPI协议分析工具(XWT300)。WAPI负面测试仪可以构建异常报文,用于测试STA对异常报文的判断和处理能力。WAPI协议分析工具可以高效地捕获WAPI协议相关报文,对报文内容进行全面细致的解析,并对可能存在的错误字段和出现位置给予准确的提示。

图3 协议完整性测试环境拓扑图

  WAI头部字段报文协议完整性测试方法

  以针对组播密钥通告分组的WAI分组序号的协议完整性测试样本为例进行分析,如下图4和图5所示,利用WAPI协议分析工具对抓取的报文数据包进行解析:

  1、WAI分组序号被赋予了异常值“0”,通常WAI分组序号从“1”开始,逐个递增。如果被测移动用户终端并未对该异常报文进行响应,则通过该测试用例检测。如果被测移动用户终端在收到异常的组播密钥通告分组后,发出组播密钥响应分组,会导致不能通过该测试用例检测。

图4 异常WAI分组序号的组播密钥通告分组报文解析

  2、负面测试仪先发送两次异常组播密钥通告分组报文,报文之间间隔100毫秒。移动用户终端不应对异常的组播密钥通告分组报文做出响应。然后,负面测试仪发送一次正常的组播密钥通告分组报文,在WAI分组序号值为“1”,正常报文与异常报文之间间隔100毫秒。移动用户终端应能对正常的组播密钥通告分组报文做出响应,完成后续密钥协商的全过程,最终建立连接。

图5 正常WAI分组序号的组播密钥通告分组报文解析

  其它四项WAI头部字段报文协议完整性测试的方案和步骤,与上述方案和步骤相似。

  WAI头部字段协议完整性测试中常见问题及解析

  1、常见问题

  被测移动用户终端针对异常WAI头部字段的数据报文无法做出正确响应。该问题可能存在以下四种情况:

  (1)在收到异常的报文时,没有对WAI头部字段进行校验,而默认WAI头部字段值是正确的随即发出响应。例如,在被测移动用户终端收到异常WAI分组序号的组播密钥通告分组报文后,默认WAI分组序号正常,一旦未对收到的报文的WAI分组序号进行校验,便直接发出组播密钥通告响应完成密钥协商。显然,这样的实现方式是错误的,如此将无法通过协议完整性检测。

  (2)在收到异常WAI头部字段的报文后对报文进行校验,但是未能成功识别异常的报文,并将异常报文按照正确报文处理。

  (3)在收到异常WAI头部字段的报文后对报文进行了校验并识别出该异常,丢弃异常报文不做处理,但对在异常报文之后接收到的正确报文也未能作出响应。这样的实现方式也是错误的,且无法通过协议完整性检测。

  (4)在第一次或者第二次收到异常WAI头部字段的报文后断开连接。

  2、问题分析及解决方法

  WAI头部字段值都有对应的规范定义标准。首先,需要注意校验在不同分组中的WAI头部字段值是否正确,移动用户终端应能够解析并识别异常的WAI头部字段,并丢弃异常的报文不进行处理。同时,移动用户终端也应能处理包含正常WAI头部字段的报文并完成鉴别和密钥协商,最终建立连接。

  移动用户终端在前两次收到异常的WAI头部字段的报文后不应断开连接,如果第三次收到正常的WAI头部字段的报文,应正常处理并最终建立连接;如果第三次仍旧收到异常的WAI头部字段报文,则应该断开连接。

这篇关于WAPI协议完整性测试——WAI头部字段报文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830494

相关文章

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接