ERP IMPLEMENTATION ERP IMPLEMENTATION
Kedar Gaonkar Kedar Gaonkar IETF IETF-
- 69 Chicago, July 23rd, 2007
69 Chicago, July 23rd, 2007
ERP IMPLEMENTATION ERP IMPLEMENTATION Kedar Gaonkar Kedar Gaonkar - - PowerPoint PPT Presentation
ERP IMPLEMENTATION ERP IMPLEMENTATION Kedar Gaonkar Kedar Gaonkar IETF IETF- -69 Chicago, July 23rd, 2007 69 Chicago, July 23rd, 2007 Deployment Scenario AP1 STA Home AAA Local AAA AP2 Implementation Implementation Setup
Kedar Gaonkar Kedar Gaonkar IETF IETF-
69 Chicago, July 23rd, 2007
AP1 STA AP2 Home AAA Local AAA
Setup consists of 4 machines: Supplicant (STA), Access Point (AP), and Local AAA Server, and Home AAA Server (AP), and Local AAA Server, and Home AAA Server
– ‘wpa_supplicant ‘wpa_supplicant – – 0.5.7’ at Supplicant 0.5.7’ at Supplicant – ‘HostAP ‘HostAP – – 0.5.7’ at Access Point 0.5.7’ at Access Point – RADIUS implemented at AS by using ‘freeRADIUS RADIUS implemented at AS by using ‘freeRADIUS – – 1.1.6’ 1.1.6’
EAP-
TLS selected as the EAP method
OpenSSL used to generate certificates
STA associates with AP wirelessly through DWL-
G650 network cards (Atheros Chipset) cards (Atheros Chipset)
AP is connected to Local AAA by a CAT5 cross-
cable
Local AAA and Home AAA exist on common LAN.
INITIALIZE INITIALIZE METHOD METHOD RECEIVED RECEIVED DISCARD DISCARD SEND_RESPONSE SEND_RESPONSE IDLE IDLE eapReq eapReq rxReq&&reqId!=lastId&&reqMethod!=IDENTITY rxReq&&reqId!=lastId&&reqMethod!=IDENTITY rxReq&&reqId!=lastId&&(reqMethod== rxReq&&reqId!=lastId&&(reqMethod== selectedMethod)&&(methodState!=DONE) selectedMethod)&&(methodState!=DONE) else else selectedMethod == reqMethod selectedMethod == reqMethod ignore ignore (altAccept&&decision!=FAIL)||(idleWhile==0&& (altAccept&&decision!=FAIL)||(idleWhile==0&& decision==UNCOND_SUCC) decision==UNCOND_SUCC) NOTIFICATION NOTIFICATION RETRANSMIT RETRANSMIT FAILURE FAILURE SUCCESS SUCCESS GET_METHOD GET_METHOD IDENTITY IDENTITY rxSuccess rxSuccess && && decision!=FAIL decision!=FAIL rxSuccess&&decision==FAIL rxSuccess&&decision==FAIL rxReq&&reqId==lastId rxReq&&reqId==lastId rxReq&&reqId!=lastId&&reqMethod==NOTIFICATION rxReq&&reqId!=lastId&&reqMethod==NOTIFICATION rxReq&&reqId!=lastId&&reqMethod==IDENTITY rxReq&&reqId!=lastId&&reqMethod==IDENTITY rxReq&&reqId!=lastId&&reqMethod!=IDENTITY rxReq&&reqId!=lastId&&reqMethod!=IDENTITY &&reqMethod!=NOTIFICATION &&reqMethod!=NOTIFICATION else else altReject||(idleWhile==0&&decision!=UNCOND_SUCC)||(altAccept&&methodState altReject||(idleWhile==0&&decision!=UNCOND_SUCC)||(altAccept&&methodState !=CONT&&decision==FAIL) !=CONT&&decision==FAIL)
RECEIVED RECEIVED IDLE IDLE ER_INITIATE ER_INITIATE eapRespData = buildERauth(reqId) eapRespData = buildERauth(reqId) portValid = FALSE portValid = FALSE eapSuccess = FALSE eapSuccess = FALSE SEND_ER_INITIATE SEND_ER_INITIATE eapResp = TRUE erAuthenticate = FALSE eapResp = TRUE erAuthenticate = FALSE eapRespData eapRespData INITIALIZE INITIALIZE erAuthCount = 0 erAuthCount = 0 erAuthCount > 2 erAuthCount > 2 Connect to new AP Connect to new AP (EMSK valid) (EMSK valid) eapReq eapReq erFinish erFinish
rxReq&&reqId!=lastId rxReq&&reqId!=lastId &&reqMethod!=IDENTITY &&reqMethod!=IDENTITY
(EMSK valid) (EMSK valid) Timer Expires Timer Expires eapResp = TRUE, erAuthenticate = FALSE eapResp = TRUE, erAuthenticate = FALSE erValidReceive = FALSE erValidReceive = FALSE erAuthCount = 0 erAuthCount = 0 erAuthenticate erAuthenticate RETRANSMIT RETRANSMIT !erValidReceive !erValidReceive FAILURE FAILURE SUCCESS SUCCESS rxSuccess&&decision == FAIL rxSuccess&&decision == FAIL rxSuccess rxSuccess && && decision!=FAIL decision!=FAIL
INITIALIZE INITIALIZE REQUEST REQUEST IDLE IDLE
eapolEap&&suppStart eapolEap&&suppStart eapResp eapResp eapSuccess eapSuccess
RECEIVE RECEIVE
erTimeoutWhen = erTimeoutPeriod erTimeoutWhen = erTimeoutPeriod
SUCCESS SUCCESS TIMEOUT TIMEOUT FAIL FAIL RESPONSE RESPONSE
If(!erValidReceive) If(!erValidReceive) { erAuthenticate = TRUE { erAuthenticate = TRUE erAuthCount++ erAuthCount++ } eapResp eapResp eapFail eapFail erTimeoutWhen == 0 erTimeoutWhen == 0 eapSuccess eapSuccess
INITIALIZE INITIALIZE IDLE IDLE REQUEST REQUEST ER_INITIATE ER_INITIATE
eapSuccess = FALSE eapSuccess = FALSE eapolERP = FALSE eapolERP = FALSE eapResp = TRUE eapResp = TRUE eapNoReq = FALSE eapNoReq = FALSE aWhile = serverTimeout aWhile = serverTimeout sendRespToServer() sendRespToServer() eapolERP eapolERP eapolEap eapolEap
eapReq&&authStart eapReq&&authStart eapolEap eapolEap
eapReq eapReq eapFail&&authStart eapFail&&authStart eapolERP eapolERP
RESPONSE RESPONSE IGNORE IGNORE FAIL FAIL TIMEOUT TIMEOUT SUCCESS SUCCESS
eapReq&& eapReq&& !eapolERP !eapolERP
eapSuccess eapSuccess eapFail eapFail eapTimeout eapTimeout aWhile == 0 aWhile == 0 eapNoReq eapNoReq aWhile == 0 aWhile == 0 eapFail eapFail eapSuccess eapSuccess
eapolEap eapolEap
p q p q
Decapsulate EAP Message Decapsulate EAP Message Check SEQ Check SEQ Lookup rIKname Lookup rIKname else else
EAP_INITIATE EAP_INITIATE
pass pass else else Compare Integrity Checksum Compare Integrity Checksum DISCARD DISCARD pass pass pass pass else else Generate rMSK Generate rMSK rMSK = TLS rMSK = TLS-
PRF-
64(rRK, SEQ)
Build EAP Build EAP-
Finish Packet Flags=000 Flags=000 Build EAP Build EAP-
Finish Packet Flags=100 Flags=100 Validation Successful? Validation Successful? Yes Yes No No Encapsulate into Encapsulate into ACCESS ACCEPT ACCESS ACCEPT Encapsulate into Encapsulate into ACCESS REJECT ACCESS REJECT Send RADIUS packet to AP Send RADIUS packet to AP Add RADIUS Attributes Add RADIUS Attributes
Decapsulate EAP Message Decapsulate EAP Message Check SEQ Check SEQ Lookup rIKname Lookup rIKname else else
EAP_FINISH EAP_FINISH
pass pass else else Compare Integrity Checksum Compare Integrity Checksum DISCARD DISCARD pass pass Pass Pass else else Generate rMSK Generate rMSK rMSK = TLS rMSK = TLS-
PRF-
64(rRK, SEQ) erValidReceive = TRUE erValidReceive = TRUE 4-
way key exchange FAIL FAIL Flags ==000 Flags ==000 Flags ==100 Flags ==100
Local AAA server requests key from Home AAA server
Two new RADIUS Attributes: – Key Key-
Request Attribute – Key Key-
Response Attribute
EAP Response/Identity EAP Response/Identity RADIUS Access RADIUS Access-
Req [Username, NAS [Username, NAS-
IP-
Addr, NAS-
Port, Called Called-
StationID, Calling-
StationID, Framed MTU, NAS Framed MTU, NAS-
Port-
Type, Connect-
Info, EAP EAP-
Message, Message-
Authenticator] [Username NAS [Username NAS-IP IP-Addr NAS Addr NAS-Port Port RADIUS Access RADIUS Access-
Req
Peer Peer AP2 AP2 Local AAA Local AAA Home AAA Home AAA
EAP Request/Identity EAP Request/Identity [Username, NAS [Username, NAS-IP IP-Addr, NAS Addr, NAS-Port, Port, Called Called-
StationID, Calling-
StationID, Framed MTU, NAS Framed MTU, NAS-
Port-
Type, Connect-
Info, EAP EAP-
Message, Message-
Authenticator, Key Key-
Request] RADIUS Access RADIUS Access-
Accept [MS [MS-
MPPE-Recv Recv-
Key, MS-
MPPE-Send Send-
Key, EAP-
Finish/Reauth-
Message, Message Message-
Authenticator, Username, Session Session-
Timeout, Key Key-
Response] RADIUS Access RADIUS Access-
Accept [MS [MS-
MPPE-
Recv-
Key, MS-
MPPE-
Send-
Key, EAP EAP-
Finish/Reauth-
Message, Message-
Authenticator, Username, Session-
Timeout] EAP Success EAP Success EAP Method Exhange EAP Method Exhange
[SEQ, rIK name, rIKname as NAI,Crypto [SEQ, rIK name, rIKname as NAI,Crypto Suite, Authentication Tag] Suite, Authentication Tag] EAP Initiate/Reauth EAP Initiate/Reauth RADIUS Access RADIUS Access-
Req [Username, NAS [Username, NAS-
IP-
Addr, NAS-
Port, Called Called-
StationID, Calling-
StationID, Framed MTU, NAS Framed MTU, NAS-
Port-
Type, Connect-
Info, EAP EAP-
Message, Message-
Authenticator]
Peer Peer AP2 AP2 Local AAA Local AAA Home AAA Home AAA
No need to Contact No need to Contact RADIUS Access RADIUS Access-
Accept [MS [MS-
MPPE-
Recv-
Key, MS-
MPPE-
Send-
Key, EAP EAP-
Finish/Reauth-
Message, Message-
Authenticator, Username, Session-
Timeout] EAP Finish/Reauth EAP Finish/Reauth [SEQ, rIK name, rIKname as NAI,Crypto Suite, [SEQ, rIK name, rIKname as NAI,Crypto Suite, Authentication Tag] Authentication Tag] Home AAA Server Home AAA Server