OKCOpportunistic Key Caching

OKC,也叫OPC(Opportunistic PMK Caching),是微软定义的一套标准,并不在802.11标准中。不过多数厂商都支持这种方式,也成为了一种事实标准。

其流程大致如下:

当STA跟AP1经过完整的EAP/802.1X建立连接后,产生一条PMKSA,里面包含一个PMKID1,然后AP1把这个PMKSA传给它的邻居,其中一个就是AP2。

Fast Roaming发生前,STA要根据AA,SPA和PMKID1计算出一个PMKID2,把这个PMKID2放在RSN IE里,送给AP2。

AP2在收到这个PMKID2后,就像平时一样,会在自己的PMKSA Cache里找,当然,这是找不到的。因为Cache没有一个的PMKID是PMKID2。然后,AP2就要对Cache中的每一个Entry计算一次新的PMKID,其必要的几个元素,AA,SPA和PMKID1都是有的。每计算一个就跟PMKID2匹配一次,匹配成功就可以直接进行4次握手。

Preauthentication虽然在Roaming期间略过了802.1X,但还是每次都要做,只不过提前罢了。

OKC的出现,就是为了解决每次都要做802.1X的问题,可以提高效率,降低网络负荷。可是,OKC的方便是建立在牺牲安全性的基础上的。这会导致每个AP上都拿到相同的PMK。

802.1X连接过程

802.1X连接的正常流程。需要多次EAP  request/reponse与RADIUS服务器交互,然后再进行四次握手。步骤如下:

1 申请者连接至802.11 网络。连接只用到两个帧,这种简单的交换程序几乎都会成功。

2 申请者发出一个EAPOL-Start 信息,开始进行802.1X 交换程序。这个步骤并非必要。并非所有申请者都会送出EAPOL-Start 信息,因此可能没有这个步骤。

3 “正常的”EAP 交换程序开始。认证者(基站)发出一个EAP-Request/Identity 帧。如果基站只为已经认证成功的连接转送帧,Request/Identity 帧之前可能就没有EAPOL-Start。主动发出Request/Identity 帧用来指示申请者必须进行802.1X 身份认证。

4 申请者以EAP-Response/Identity 帧进行答复, 此帧随后被转换为Radius-Access-Request 封包送给RADIUS 服务器。

5 RADIUS 服务器判断需要使用那个类型的身份认证,并且在所送出的EAP-Request 信息中指定认证方式类型。EAP-Request 被封装于Radius-Access-Challenge 封包送给基站。地台收到封包后。将EAP-Request 传递给申请者。AP-Request 信息通常会被表示为EAP-Request/Method。其中的Method 代表所使用的EAP 认证方式。如果目前使用的是PEAP,则传回的封包将以EAP-Request/PEAP 来表示。

6 申请者从使用者方面取得回应,然后回传EAP-Response。认证者会将此回应转换为送给RADIUS 的Radius-Access-Request 封包,针对挑战信息所做的回应则存放于数据字段。步骤5 与步骤6 不断重复进行,直到身份认证完成为止。如果所使用的是需要交换凭证的EAP 认证方式,免不了要重复这些步骤几次。有些EAP 交换可能需要在用户端与RADIUS 服务器间,反覆进行10 到20 个回合。

7 既然RADIUS 服务器送出一个Radius-Access-Accept 封包允许对方访问网络,因此认证者会发出一个EAP-Success 帧,并且授权使用连接埠。访问权限也可以由RADIUS 服务器所回传的参数来决定。

8 收到Access-Accept 封包后,基站会立即使用EAPOL-Key 信息将密钥传给申请者。

9 一旦申请者安装好密钥,就可以开始传送数据帧来访问网络DHCP 配置设置通常会在此刻进行。

10 当申请者不再需要访问网络,就会送出一个EAPOL-Logoff 信息,使连接埠回复未授权状态。

验证方法

在WCNSS_qcom_cfg.ini文件中有一个选项OkcEnable。默认值是1,默认是打开OKC。漫游的时候,只有首次连接到802.1X的网络时,会有多次EAP  request/response数据包的交互,在success之后,再进行四次握手。在漫游的过程中,直接进行四次握手,也就是EAPOL-key包的交互。

测试的时候,尝试将OkcEnable的值设置成0。无论是首次连接到802.1X网络其后漫游过程中,都会有EAP  request/response数据包的交互,然后才是四次握手,这样流程多了几步,对漫游的效率也是有影响的。

抓包分析

首次连接。

漫游情况下。OKcEnable=1的情况。没有EAP request和EAP response。

OkcEnable=0的时候,漫游时任然会进行EAP request/reponse的交互。

EAP request:

EAP response:

EAP-FAST:

Success:

参考文档

《802.11无线网络权威指南》

https://blog.csdn.net/ollins136/article/details/28277717

[转载]Wifi OKC 验证相关推荐

  1. android wifi 验证失败怎么办,手机连接wifi身份验证失败怎么回事【图】

    原标题:"手机连接wifi身份验证出现问题怎么办?[图]"的相关路由器192.168.1.1登陆页面设置教程资料分享.- 来源:191路由网. 问:手机连接wifi身份验证出现问题 ...

  2. 电脑连接公司中国电信爱wifi反复验证无法连接wifi

    电脑连接公司中国电信爱wifi反复验证无法连接wifi 最近遇到一个有意思的问题 解决方案: 最近遇到一个有意思的问题 情况描述: 之前电脑只需要输入手机号实现wifi登录(不需要密码),过了一段时间 ...

  3. WiFi身份验证出现问题该如何解决?——时讯无线

    很多小伙伴在连接WiFi时都遇到过这种问题,明明感觉密码正确,但手机却提示"身份验证出现问题".相信遇到这种情况大多数小伙伴都是"一脸懵逼"的.小编今天教大家几 ...

  4. Android 中的WiFi学习笔记(转载)----WIFI启动 代码流程走读---网络连接流程

    Android的WiFi 我们通常看到WiFi的守护进程wpa_supplicant在我们的ps的进程列表中,这个就是我们的wifi守护进程.wpa_supplicant在external/wpa_s ...

  5. Wi-Fi身份验证出现问题应该如何解决?

    很多小伙伴在连接WiFi时都遇到过这种问题,明明感觉密码正确,但手机却提示"身份验证出现问题".相信遇到这种情况大多数小伙伴都是"一脸懵逼"的.小编今天教大家几 ...

  6. android wifi身份验证,连接wifi出现“身份验证出现问题”如何解决

    带Wi-Fi无线上网功[能的]笔记本在[工作].[生活].[学习][中的]应用[已经][相当][普遍],它[的方]便性[也得][到了]众[人的]认可.而[随着]娱乐.商务便携化需求的[提升],[越来] ...

  7. 连接wifi没有验证页面

    在一些公众场所连接wifi,特别是在酒店中,有时候会自动弹出验证页面,需要验证手机号才能上网,但是有时候手机却没办法登上这个验证界面,就算在手机浏览器中随便打开一个网页,也没法自动跳转,这个时候怎么办 ...

  8. 金立手机连接wifi显示服务器,金立手机连接wifi身份验证出现问题是怎么 – 手机爱问...

    2013-10-03 360提示我 要我把无线wifi的账号和密码全部改了 ! 改后为什么只有 我的手机可以连接得上?其他的手机输入账号和密码都是对的 但提示说身份验证出现了问题.这到底是怎么一回事? ...

  9. 【转载】C#验证控件的使用方法(RegularExpressionValidator)的使用

    ControlToValidate="要验证的控件名称"  ValidationExpression="验证规则"  ErrorMessage="所要 ...

  10. [转载]使用正则表达式验证本地化数据

    使用正则表达式验证本地化数据 数据验证是编写任何用户界面时经常要处理的一项杂务.Java™ 语言的正则表达式支持可以使数据验证变得更容易.您可以定义一个正则表达式,用于描述有效数据,然后让 Java ...

最新文章

  1. matlab去除图片水印_Python利用OpenCV去除图片水印
  2. [原创]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...
  3. js 动态绑定事件 on click 完美解决绑定不成功
  4. 工业视觉智能实战经验之IVI算法框架2.0
  5. 互联网教育+大数据=新型大学?
  6. 软件工程学习进度第七周暨暑期学习进度之第七周汇总
  7. html5比赛策划书,FashionAI 天池竞赛 - Top5 技术方案简汇
  8. php clearinterval,JavaScript定时函数(2)setInterval与clearInterval
  9. 安装天文软件karma和设置环境变量---conda安装和环境变量设置
  10. python建立源文件
  11. rrpp协议如何修改_RRPP单环
  12. 百鸡问题扩展-N鸡问题
  13. 开头的单词_c开头的英语单词三年级到六年级的英语单词记忆
  14. 即插即涨2-3%!AC-FPN:用于目标检测的注意力引导上下文的特征金字塔网络
  15. iphone通讯录 android,3个方法,教你如何快速而又有效的将联系人从iPhone转移到安卓...
  16. Android反向进度条(ProgressBar)的实现——从右到左的进度条
  17. 按照字典序大小遍历字符串的方法
  18. 中文维基百科分类提取(jwpl)--构建知识图谱
  19. Matlab创建蕨形叶和塞平斯基三角形的图形用户界面(wzl)
  20. SQL中的字母的大小写转换

热门文章

  1. Oracle随机抽样sample使用说明
  2. 基于zynq的千兆网udp项目_米联客 ZYNQ/SOC 精品教程 S05-CH03-UDP千兆光通信
  3. 网页的“六度分隔理论”:从一个网页到另外一个网页,最多只需19次点击
  4. python建站部署_2个Python学习网站制作教程
  5. 电脑计算机为什么不是有效程序,电脑提示“不是有效的win32应用程序”是什么原因【解决方法】...
  6. (2011-12-11 旧博文搬运)闪耀十字军(ティンクル☆くるせいだーす)【1】
  7. Ruby编程语言简介
  8. 一段美好的记忆,一份真挚的感情,已经远去......
  9. 手机微信中的文档存放位置
  10. 计算机笔记检讨,上课没做笔记的反省检讨书范文550字