Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

EAP

This page is kind of a mess, because the state of EAP in the industry is kind of a mess.

I started trying to understand the EAP methods from this diagram.

Most of these implementations are bespoke (they do not coexist well). The closest thing to a standard would be TEAP, which doesn’t seem common.

Terms

EAP — Extensible Authentication Protocol

EAPOL — Extensible Authentication Protocol over LANs

TEAP — Tunneled Extensible Authentication Protocol

PEAP — Protected Extensible Authentication Protocol

Inner EAP

EAP methods which should not be sent in clear text, but are still used by the industry.

802.1X

Port based network access control, usually implemented via EAP.

Session-id

  • Uniquely identifies an authentication exchange

Why are there so many versions of EAP

There are a few problems:

  1. End-to-End PKI is difficult and expensive

    Reference standard EAP is probably EAP-TLS, but it’s difficult and expensive, because end-to-end full certificate PKI is hard.

    Everything needs a x509 certificate:

    • The user’s machine
    • APs
    • WLC
    • Authenticator (the RADIUS, or TACACS+ server) All these certificates need to be refreshed. They can’t be issued indefinitely, and managing certificates is difficult and expensive.
  2. Active Directory Exists

    What most organizations want to auth against isn’t another database, but the database they already have, Windows Active Directory.

    The customer can be convinced to buy something like Cisco ISE, or implement FreeRADIUS so long as those products work with Active Directory.

    • EAP-MSCHAPv2
  3. Vendor Standards come to market faster

    In the security space, where perception is part of the brand, being first to market matters. Interoperability is a distant second.

    • PEAP
    • LEAP
    • EAP-FAST
  4. “Why don’t we just tunnel it”

    Lots of EAP methods tunnel an existing method, over a more secure method. TEAP tries to solve this, but lots of vendor tunnel implementations exist.

    • EAP-TTLS
    • EAP-FAST
  5. “I gotta use this hardware I have”

    MFA tokens, and SIM cards are frequently involved in the auth pathway.

    • EAP-GTC
    • EAP-SIM
    • EAP-AKA
  6. “I would be nice if the user could just type something in”

    … Becomes local implementations like

    • EAP-pwd

EAP Implementations

MethodTypeSpecWhy it exists
EAP-MD54RFC 3748 §5.4The original placeholder. Simple CHAP-style challenge over EAP. No mutual auth, no key derivation, so it can’t produce keys for WPA. Exists only because EAP needed a trivial reference method in the base spec. Dead for wireless.
EAP-OTP5RFC 3748 §5.5One-Time Password. Carries RFC 2289-style OTP challenges. Exists to bridge EAP to 1990s token systems. Effectively never deployed standalone.
EAP-GTC6RFC 3748 §5.6Generic Token Card. Deliberately dumb: send a prompt, get a cleartext string back. Exists as a transport for anything — RSA SecurID, LDAP passwords, OTP — which is why it survives as a PEAP/FAST/TEAP inner method where the tunnel provides the protection it lacks.
EAP-TLS13RFC 5216 (obs. RFC 2716); TLS 1.3 in RFC 9190The “correct” answer. Mutual certificate authentication, strong key derivation, no passwords anywhere. Exists because 802.11 needed a real, keying-capable method. Its only problem is that it demands a PKI and a cert on every endpoint.
LEAP17None — Cisco proprietaryCisco’s 2000-era stopgap so customers could do 802.1X with just AD passwords, no PKI. Mutual auth via MS-CHAP challenge/response in the clear. Broken by asleap in 2003. Exists in your diagram purely as history.
EAP-SIM18RFC 4186Authenticates using GSM SIM credentials and the A3/A8 algorithms. Exists so carriers could offload subscribers onto Wi-Fi using the SIM they already issued, instead of provisioning a second credential.
EAP-TTLS21RFC 5281Funk/Certicom’s answer to “TLS is right but client certs are painful.” Server-side cert builds the tunnel, then runs legacy non-EAP inner protocols — PAP, CHAP, MS-CHAPv2 — which matters because it lets you check a plaintext password against a backend that can’t do EAP (LDAP, token servers).
EAP-AKA23RFC 4187The 3G successor to EAP-SIM using the USIM AKA algorithm. Exists because GSM’s A3/A8 was weak and lacked network authentication.
PEAP25No RFC — expired IETF drafts; Microsoft [MS-PEAP], Cisco PEAPv1Microsoft/Cisco/RSA’s parallel answer to the same problem TTLS solved, invented at the same time and never standardized. Server cert builds a tunnel, then runs EAP methods inside. Won on deployment because it shipped in Windows. The reason PEAPv0 and PEAPv1 both exist is that Microsoft and Cisco couldn’t agree on the inner protocol.
EAP-MSCHAPv229No RFC as an EAP method — MS-CHAPv2 itself is RFC 2759; EAP wrapper is an expired draftWraps Microsoft’s challenge/response so a domain password can be verified against AD without the AD side changing. Exists because everyone already had AD. Cryptographically broken standalone (DES reduction, 2012) — survives only as a PEAP/TTLS/TEAP inner method.
EAP-FAST43RFC 4851; PAC provisioning in RFC 5422Cisco’s LEAP replacement. Same tunnel idea as PEAP/TTLS, but the tunnel can be built from a pre-shared PAC instead of a server certificate — the whole point was “TLS security without deploying a PKI.” The PAC provisioning problem is what made it a support burden.
EAP-PAX46RFC 4746 (Informational)Password Authenticated eXchange. An academic-flavored attempt to get mutual auth and keying from a weak shared password with no tunnel and no PKI at all. Exists as a research answer to “why do we need TLS just to use a password?” Essentially never deployed.
EAP-PSK47RFC 4764 (Experimental)Pre-shared key method built on AES only — no TLS, no certificates, no hash zoo. Exists as a minimal, auditable, single-primitive method for constrained devices. Also basically never deployed.
EAP-AKA’50RFC 5448, obsoleted by RFC 9048Adds key separation binding the derived keys to the access network name. Fixes a real AKA weakness; mandatory for 5G.
EAP-pwd52RFC 5931Password method using a dragonfly key exchange — resists dictionary attack with no PKI and no tunnel. Related to WPA3’s SAE.
TEAP55RFC 9930; obsoletes RFC 7170The IETF’s attempt to finally standardize the tunnel and end the PEAP/TTLS/FAST fork. Adds EAP chaining — machine and user in one session — which nothing else does. This is why it exists and why it’s the only one still gaining ground.
EAP-TLS 1.313RFC 9190Not a new method — EAP-TLS re-specified for TLS 1.3, which changes key derivation and encrypts the client certificate. RFC 9427 does the same rework for TTLS, PEAP, FAST and TEAP.

EAP Type Progression

EAP is a framework, not one authentication mechanism. The overlap mostly comes from TLS tunneling: PEAP, EAP-FAST, and TEAP all build a protected tunnel first, then run some inner authentication inside it.

graph TD
    eap["EAP framework"]

    eap --> legacy["legacy / direct password methods"]
    legacy --> md5["EAP-MD5"]
    legacy --> leap["LEAP"]

    eap --> cert["certificate-based TLS"]
    cert --> tls["EAP-TLS"]
    tls --> tls13["EAP-TLS 1.3"]

    eap --> tunneled["tunneled TLS methods"]
    tunneled --> peap["PEAP"]
    peap --> peapMschap["PEAP / EAP-MSCHAPv2"]
    peap --> peapGtc["PEAP / EAP-GTC"]
    peap --> peapTls["PEAP / EAP-TLS"]

    tunneled --> fast["EAP-FAST"]
    fast --> fastMschap["EAP-FAST / EAP-MSCHAPv2"]
    fast --> fastGtc["EAP-FAST / EAP-GTC"]
    fast --> fastTls["EAP-FAST / EAP-TLS"]
    fast --> fastChaining["EAP-FAST chaining"]

    tunneled --> teap["TEAP"]
    teap --> teapTls["TEAP / EAP-TLS"]
    teap --> teapMschap["TEAP / EAP-MSCHAPv2"]
    teap --> teapChaining["TEAP chaining"]

    eap --> simBased["SIM / mobile network methods"]
    simBased --> sim["EAP-SIM"]
    simBased --> aka["EAP-AKA / EAP-AKA'"]

    eap --> pwdBased["password-authenticated key exchange"]
    pwdBased --> pwd["EAP-PWD"]

    style md5                   fill:#ddd,color:#aaa,stroke:#ccc
    style leap                  fill:#ddd,color:#aaa,stroke:#ccc
    style sim                   fill:#ddd,color:#aaa,stroke:#ccc
    style aka                   fill:#ddd,color:#aaa,stroke:#ccc
    style pwd                   fill:#ddd,color:#aaa,stroke:#ccc
    style tls                   fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style tls13                 fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style peap                  fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style peapMschap            fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style peapGtc               fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style peapTls               fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style fast                  fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style fastMschap            fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style fastGtc               fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style fastTls               fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style fastChaining          fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style teap                  fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style teapTls               fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style teapMschap            fill:#1a4a6b,color:#fff,stroke:#1a4a6b
    style teapChaining          fill:#1a4a6b,color:#fff,stroke:#1a4a6b

References

EAP - RFC 3748: Extensible Authentication Protocol | RFC Editor

EAP-FAST - RFC 4851: The Flexible Authentication via Secure Tunneling Extensible Authentication Protocol Method | RFC Editor

EAP-TLS - RFC 5216: The EAP-TLS Authentication Protocol | RFC Editor

TEAP - RFC 9930: Tunnel Extensible Authentication Protocol Version 1 | RFC Editor

RFC 4017: Extensible Authentication Protocol (EAP) Method Requirements for Wireless LANs | RFC Editor

TEAP - HPE Aruba Networking Tech Corner

Authentication protocol - Wikipedia

Extensible Authentication Protocol - Wikipedia

FreeRADIUS Community

Extensible Authentication Protocol (EAP) Registry

Last Modified • Saturday, July 25, 2026. 12:27 am UTC+00:00 • Commit: 38b772d