WAPI协议完整性测试之指定字段报文测试

来源:互联网 发布:建站工具源码 编辑:程序博客网 时间:2024/06/05 16:21

手机正在成为个人的数据中心,这也意味着手机正在成为在技术上日益高度集成的通信产品。例如,每一部手机中的通信部件都固化着不同的协议技术,并且还在不断增加。它们或者用于语音通信,或者用于蓝牙连接,或者用于微信类应用软件。但是你所不知道的是,这些协议技术都要经历符合性测试才能进入到手机当中,如果缺失这一步,肯定会导致设备之间无法互联互通。无线局域网鉴别与保密基础结构(WLAN Authentication and Privacy Infrastructure,简称WAPI)作为一项协议技术必然需要通过符合性测试。


  WAPI技术已被国家标准采纳,标准号为GB 15629.11-2003/XG1-2006。各种终端产品是否严格依照WAPI国家标准实现,关键在于WAPI协议符合性测试的落地程度。WAPI协议符合性测试包含协议互通性测试和协议完整性测试。其中WAPI协议完整性测试的内容主要包括以下6类,详见下图1。

图1 WAPI协议符合性测试

  近期,我们陆续介绍了WAI子类型报文、WAI头部字段报文的协议完整性测试,本期我们将重点分析指定字段报文的协议完整性测试要点、测试方法和步骤,以及容易遇到的问题。由于这些指定字段报文都是WAPI鉴别加密过程中非常关键并且容易出错的字段,所以在各种终端产品开发的过程中需要特别注意,一旦处理不当则将导致WAPI鉴别失败。


  指定字段报文的技术解析

  该检测项针对关键且容易出错的五个指定字段进行了检测。其中包括鉴别激活分组中的本地ASU身份标识字段、接入鉴别响应分组中的AE签名属性类型字段、单播密钥协商请求分组中的BKID字段、单播密钥协商确认分组中的ADDID字段、组播密钥通告分组中的ADDID字段。

  注:本文中涉及的英文缩略语,其全称见下:

  AE:鉴别器实体(Authenticator Entity)

  ASU:鉴别服务单元(Authentication Service Unit)

  BKID:基密钥标识(Base Key Identification)

  ADDID:地址索引(Address Index)

  MAC:媒体访问控制(Medium Access Control)

  USK:单播会话密钥(Unicast Session Key)

  USKID:单播会话密钥索引(Unicast Session Key Index)

  BKSA:基密钥安全关联(Base Key Security Association)


  鉴别激活的本地ASU身份标识字段

  鉴别激活分组作为证书鉴别过程的第一个分组,由接入点(Access Point,下文简称AP)发给移动终端的鉴别激活报文。鉴别激活分组数据字段格式如下图2:

图2 鉴别激活分组数据字段格

  通常,本地ASU的身份字段标识AP信任的ASU。身份字段标识格式如下图3:

图3 身份字段格式

  其中,身份标识字段表示身份类型。比如,“1”表示使用X.509 v3格式的证书。身份数据字段为从证书中提取出的持有者名称、颁发者名称和序列号字段。


  接入鉴别响应AE签名属性类型字段

  接入鉴别响应分组由AP发往移动终端,数据字段格式定义如下图4:

图4 接入鉴别响应分组数据格式

  AE的签名字段采用签名属性表示,它提供对本分组中除本字段之外所有数据字段的签名。属性字段采用“类型-长度-值”(TLV)的格式构成,格式如下图5:

图5 属性字段格式

  类型字段表示属性的类型,其长度为1个八位位组,类型值定义如下:1表示签名属性;2表示证书验证结果;3表示身份列表;其它值保留。举例来说,当属性字段中的类型字段值为“1”时,表示该字段属性类型为签名属性。签名属性格式如下:

图6 签名属性字段格式

  移动用户终端在接收到接入鉴别响应分组后,要进行一系列的校验,其中就包括“验证AE的签名是否正确”,AE签名属性类型字段应该为“1”,如果实际校验结果不为“1”时,测试工程师就应丢弃该接入鉴别响应分组不响应。


  单播密钥协商请求的BKID字段

  单播密钥协商请求分组是由AP发往移动用户终端的数据报文。其字段格式定义如下图7:

图7 单播密钥协商请求分组数据字段格式

  其中:

  ——BKID字段长度为16个八位位组,表示当前作为共享密钥的基密钥。

  ——USKID字段长度为1个八位位组,其中比特0表示当前协商的单播会话密钥,其它位保留。该比特0字段在BKSA建立后第一次单播密钥协商时初始值为0,以后再重新进行单播密钥协商时在0和1之间翻转。

  ——AE询问字段长度为32个八位位组。若标识字段的USK更新标识值为0,即非会话更新时,AE询问为AP产生的随机数;若标识字段的USK更新标识值为1,即表示会话密钥更新时,AE询问为上一次单播密钥协商过程所协商的值。

  移动用户终端在接收到AP发送的单播密钥协商请求分组后,要检查BKID所指BKSA是否有效,若无效,则丢弃该分组;若BKID所指BKSA有效,则进一步执行后续校验鉴别动作。


  单播密钥协商确认的ADDID字段

  单播密钥协商确认分组字段的数据格式如下图8:

图8 单播密钥协商确认分组的数据字段格式

  其中ADDID字段长度为12个八位位组。MAC地址1为AP的MAC地址,其中MAC地址2为移动用户终端的MAC地址。在密钥协商过程中要用到ADDID计算密钥。因此,一旦ADDID地址出现异常,密钥更新过程将无法成功实现。


  组播密钥通告的ADDID字段

  组播/站间密钥通告分组数据字段格式如下图9:

图9 组播/站间密钥通告分组数据字段格式

  其中,ADDID长度字段为12个八位位组。当通告的密钥是站间会话密钥主密钥时,该字段的值为发起方的MAC地址||对端的MAC地址;当通告的密钥为组播主密钥时,该字段的值为MACAE||MACASUE。


  指定字段报文协议完整性测试简介和测试环境

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

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

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


  指定字段报文协议完整性测试方法

  以接入鉴别响应AE签名属性类型字段的协议完整性测试样本为例,进行分析, 如下图,11和图12所示,利用WAPI协议分析工具对抓取的报文数据包进行解析。其余四项指定字段报文协议完整性测试的方案和步骤与上述方案和步骤相似。

  1、如图11, AE签名属性类型值应该为“1”。在图示报文中,AE签名属性类型被赋予了异常值。如果被测移动用户终端并未对该异常报文进行响应,则通过该测试用例检测。如果被测移动用户终端在收到异常的接入鉴别响应分组后,仍能继续后续密钥协商步骤,,那么将导致不能通过该测试用例的检测。

图11 异常AE签名属性类型字段的接入鉴别响应分组报文解析

  2、负面测试仪先发送两次异常组播密钥通告分组报文,报文之间间隔100毫秒。移动用户终端不应对异常的组播密钥通告分组报文做出响应。然后,负面测试仪发送一次正常的组播密钥通告分组报文(AE签名属性类型字段值为“1”),正常报文与异常报文之间间隔100毫秒。移动用户终端应能对正常的组播密钥通告分组报文做出响应,完成后续密钥协商的全过程,最终建立连接。如图12所示。

图12 正常AE签名属性类型字段的接入鉴别响应分组报文解析


  指定字段协议完整性测试中常见问题及解析

  1、常见问题:

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

  (1)在收到异常的报文时没有对指定字段进行校验,而默认指定字段值是正确的随即发出响应。例如,在被测移动用户终端收到异常本地ASU身份标识字段的鉴别激活分组报文后,默认本地ASU身份标识字段是正常的,未对收到的报文的本地ASU身份标识字段进行校验,便直接发出接入鉴别请求继续WAI鉴别过程。这样的实现方式是错误的,将无法通过协议完整性检测。

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

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

  2、问题分析及解决方法:

  在WAPI鉴别过程中,任何一个字段的异常都有可能导致鉴别失败。协议完整性检测中的指定字段的协议完整性检测,即针对其中一部分容易出错的重点字段进行的检测,让指定字段值都有对应的规范定义标准。终端厂商在实现过程中,需要注意校验在不同分组中的指定字段值是否正确。终端产品应能够解析并识别异常的指定字段,并丢弃异常的报文不进行处理。

  终端产品在前两次收到异常的指定字段报文后不应断开连接,如果第三次收到正常的WAI头部字段的报文,应正常处理并最终建立连接;倘若第三次仍旧收到异常的WAI头部字段报文,这时候则应该断开连接。

0 0