1. EAP

EAP其实并不是WiFi专有的协议,但在802.1X认证中经常碰到EAP,而且自己老是把一些相关的概念搞混淆,所以还是得做做笔记。

EAP,全称Extensible Authentication Protocol,是一个认证框架,这个框架一种简单的request/response方式,传递认证算法(EAP method)所需要的信息并完成认证。

2. EAP中的常见概念

Supplicant:向Authenticator申请认证的一方,和Peer是一个概念

Authenticator:对Supplicant进行认证并提供网络连接或其他资源的一方,通常还会见到的NAS(Network Access Server)就属于Authenticator。

Backend Authentication Server:Authenticator的后备支援。Authenticator可能实现了部分的EAP method,也可能一个都不支持,这个时候,所有和EAP method相关的事务就都需要经由Authenticator转给BAS(有时简称为AS)来处理。通常见到的AAA server和BAS是一个概念,RADIUS是BAS的一种实现。为理解方便,可以认为BAS=AAA Server=RADIUS。

EAP server:当Authenticator处于pass-through模式时,EAP server就是BAS;否则,EAP server是Authenticator。换句话说,谁实现的EAP method,谁就是EAP Server。

AAA:Authentication,Authorization,and Accounting(你是谁?能给你什么权限/资源?你曾经做过些什么?)

RADIUS:Remote Authentication Dial-In User Service,如上所述,是AAA server的一种实现

其802.1X的实现结构如下图

FIg> 1 EAP架构 (802.1X实现)[1]​​​​

3. EAP协议的分层思想

如图2,EAP协议在概念上分为以下几个层次:Lower Layer、EAP Layer、EAP Peer/Authenticator Layer、EAP Method Layer.

1)最底层的LL负责链路上的EAP frame接收和发送,具体实现根据链路层协议而不同。

2)EAP Layer负责重传和重复帧的检测

3)EAP Peer/Authenticator Layer根据EAP frame中的Type,确认该由哪个具体EAP method处理该信息。

4)EAP method层完成最终的认证

FIg.2 EAP分层[2]

但是,上面提到,Authenticator并不一定实现了相应的EAP method。这种情况,Authenticator在EAP认证的过程中起到的就是转发的作用。其数据经由的路线如图3。Authenticator在EAP Authenticator层发现这个EAP method我们不支持,于是就转发给AS进行处理。

Fig.3 Pass-through Authenticator [2]

通常一个EAP认证由1)Authenticator发起Identity的request开始,2)然后会是多个回合的Request/Response用于确认使用的EAP method以及使用该EAP method的认证过程,3)最后会以Success或Failure结束。

Fig. 4 EAP-process (Pass-Through Authenticator)

4. EAP数据包格式

EAP数据包格式如下图:

Fig. 5 EAP packet format

Code表示的含义如下表:

Table. 1 EAP packet Code
Code 含义
1 Request
2 Response
3 Success
4 Failure

Identifier用于将Request和Response配对。

当EAP发送的是Request和Response时,Data域可以拆分成Type+Data。Type即表示具体的EAP method或特殊用途,举几个例子,如下表

Table. 2 EAP packet Request/Resonse Type
1 2 3 4 5 6 13 17 25 43 254 255
Identity Notification NAK MD5 OTP GTC TLS LEAP PEAP FAST Expanded method

Experimental Use

其中,Identity用来询问认证对象的身份,Notification用于一些通知信息,NAK仅用于response帧告诉authenticator不支持该Type的EAP method。254为扩展EAP method,产商可以自定义Auth alg.,255留作他用。其余数值表示具体的算法。

5. 802.1X

802.1X讨论了EAP在无线局域网的具体封装和实现方式。802.1X中对EAP的封装如图,当Type为0,也就是EAPOL-Packet时,包中的Data就是完整Fig 5。

Fig. 6 EAPOL packet format

Fig.6 中,Protocol type是0x888E,protocol version是EAPOL的协议版本,Type和EAP packet中的Type不是一回事,这里的Type主要有以下几种

Table. 3 EAPOL Type
Type 含义
0 EAPOL-Packet
1 EAPOL-Start
2 EAPOL-Logoff
3 EAPOL-Key

EAPOL-Start通常由supplicant发送给Authenticator,告诉Authenticator有peer要求认证(但是EAPOL-Start并不是必须的),随后Authenticator发起Identity询问。EAPOL-Packet包含了EAP Request/Response的数据。

802.1X基本流程如图(默认Authenticator实现在AP中),当认证成功后并完成4次握手,Supplicant就可以上网了。

Fig. 7 802.1X Auth & 4-way handshake

6. 小结

几个Server的概念;两个Type的区分;EAP是个框架,802.1X讨论了EAP在局域网的封装,EAPOL只是个封装格式。

7. 参考资料

[1] https://www.kancloud.cn/alex_wsc/android-wifi-nfc-gps/414053

[2] https://datatracker.ietf.org/doc/html/rfc3748

[3] https://mrncciew.com/2013/03/03/eap-overview/

学一点Wi-Fi:EAP EAPOL相关推荐

  1. 大学生学python到底有没有有-为什么我会想建议每个大学生都学一点编程?

    原标题:为什么我会想建议每个大学生都学一点编程? 一个今年上岸.成功录取到中山大学的同学,昨天疯狂轰炸我: 他没想到导师主动联系他,让他参加非常重要的课题研究. "当初抱着试一试的心态学的编 ...

  2. 人人都要学一点深度学习(1)- 为什么我们需要它

    人人都要学一点深度学习(1)- 为什么我们需要它 版权声明 本文由@leftnoteasy发布于 http://leftnoteasy.cnblogs.com, 如需全文转载或有其他问题请联系whee ...

  3. 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一 ...

  4. wifi频率和zigbee干扰_浅谈ZigBee和Wi—Fi的共存和干扰

    龙源期刊网 http://www.qikan.com.cn 浅谈 ZigBee 和 Wi - Fi 的共存和干扰 作者:姜伟 朱凯 刘童 来源:<科技视界> 2013 年第 16 期 [摘 ...

  5. 串行异步通信_每天学一点/ 电工:PLC:串行通信

    每天学一点/ 电工案例:西门子PLC STEP7-SMARTPLC:串行通信 1. 并行通信与串行通信 并行通信以字节或字为单位传输数据,已很少使用.串行通信每次只传送二进制数的一位,最少需要两根线就 ...

  6. 比较802.11ac(Wi‑Fi 5)和802.11ax(Wi‑Fi 6)

    MIMO 802.11ac仅在下行模式下,支持多用户MIMO. 802.11ax不仅下行链路:也在上行链路支持MIMO功能,因此多个用户可以同时上传视频. 调制方法 802.11ax具有更高的调制方案 ...

  7. 学一点django基础

    学一点Django基础 目录 文章目录 目录 一.Django框架的介绍 Django的安装 Django框架开发 创建项目的指令 Django项目的目录结构 URL 介绍 视图函数(view) Dj ...

  8. 【Arcgis每天学一点】从无人机航测的DSM上提取准确的高程点

    最近,想着要分享一些Arcgis软件的使用心得,但却一直无从入手,不知道写点什么.实际上在各大平台上已经有了大量的Arcgis教程,不管对于初学者,还是有点基础想要进阶的,都可以找到很多的学习资源. ...

  9. 学一点SQL注入基础

    文章目录 学一点SQL注入基础 思维导图 注入原理 MySQL三种注释 MySQL三种注入方式 联合查询注入 确定字段数 常规步骤 sqlmap的使用 跨库注入 MySQL注入获取最高权限-文件操作 ...

最新文章

  1. php里面执行python,在php中执行python
  2. android widget 研究 (转载)
  3. 视频播放器的极致体验优化
  4. REST架构下,浏览器怎么发送put与delete请求?
  5. 消息中间件那些事--RabbitMQ
  6. UVA10014 Simple calculations【数列】
  7. GNU/Linux下的开发环境
  8. 谷粒商城:05. 分布式组件SpringCloud Alibaba
  9. C++之explicit构造函数
  10. ffmpeg文档7:快进快退
  11. java多态 -- 猫狗案列
  12. 蓝桥杯 受伤的皇后(dfs)
  13. Excel常用技巧(一)——快捷键
  14. 如何将微商相册上的所有图片和小视频快速下载和保存
  15. html页面发送微信朋友圈,【源码分享】分享一个基于官方share.html简化的分享js代码(微信,朋友圈,QQ)...
  16. 【Linux】SIGCHLD信号
  17. 【某易易盾JS逆向】滑动验证码分析
  18. Unity 3d 最新下载与安装
  19. 怎么将本地做好的网站部署到服务器上?
  20. python 微信bot_我做了一个Python Bot,可以解决任何给定图像中的多项选择问题。 码]...

热门文章

  1. 【python实操】马上毕业了,你还不懂什么是守护线程、线程、进程?(附12306抢票程序-源代码)
  2. 【不踩坑】Windows 10/ Windows 11安装pycococreatortools
  3. 2021年6月2日【Jiawei_Z】PROFINET 你懂多少! // MODBUS CANOPEN CCLINK ETHERCAT ...
  4. Android Says Bonjour
  5. Unity 国际化 多语言设置
  6. css3动画源代码库_清理CSS代码库
  7. JFFS2的remount过程
  8. android 高仿拼多多,Android高仿拼多多分类列表
  9. B/S And C/S
  10. 如何编写合格的 PoC 领取 Goby 红队专版