EAP状态机分析
RFC4137协议
RFC4137:“State Machine for Extensible Authentication Protocol(EAP)Peer and Authenticator”,它描述了Peer端(即Supplicant端)和Authenticator端通过状态机(State Machine)这种方式来实现EAP处理流程的具体步骤和相关细节。
英文文档地址链接: link
中文文档地址链接: link
状态机设计原理
模块划分
1.最底层Lower Layer(LL)层,作用是接收和发送EAP包。
2.中间层SUPP SM层,实现了Supplican状态机。
3.最上层EAP Method(EM)层,实现具体的EAP方法。
SM状态定义
SM共定义了13种状态
SM状态转换
如图所示为RF437描述的EAP Peer State Machine
查看方法:
1.每个状态用一个框表示,叫做“状态框”。
2.状态框顶部所示为“状态名”。对应SM定义的13种状态。
3.状态框中状态名下边的伪代码表示进入该状态后需要执行的动作“Entry Action(EA)“。
4.箭头中描述的是一些“判断条件”。
5.UCT代表Unconditional Transition,即“无条件状态转换”。
举例:SUPP SM在DISCARD状态中执行完其EA后,将直接转换到IDLE状态
SM使用到的变量及函数定义
变量
1.SM与LL交互使用到的变量列表
LL层暴露给SUPP SM层的变量如下表:
其中“altAccept和altReject”用于通知LL层Success或Failure信息。
当supplicant收到Disassociate帧或者Deauthenticate帧时,表示altReject。
当收到4-Way Handshake第一个Message时,表示altAccept。
SUPP SM层暴露给LL层的变量如下表:
2.SM与EM交互使用到的变量
methodState和decision的值由具体的认证方法(即Method)来确定
3.SM内部使用的变量
函数
wpas代码
变量数据结构
状态类型和处理函数
eap_method最重要的是其处理函数,process函数实际上完成了m.check、m.process和m.buildResp的功能。