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

相关文章

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

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

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

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

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

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

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。