# Extensible Authentication Protocol

Extensible Authentication Protocol (EAP) is een universeel raamwerk voor authenticatie gedefinieerd in Request For Comments (RFC) 3748. Het werkt op de datalinklaag van het OSI-model en is ontworpen voor gebruik bij Point to Point Protocol-verbindingen. Het heeft het Internetprotocol (IP) niet nodig en zorgt zelf voor retransmissie van verloren gegane pakketten of verwijdering van duplicaten. EAP beperkt zich niet tot, maar wordt wel het meest gebruikt bij draadloze netwerken (IEEE 802.X).
Om toegang te krijgen tot het internet zullen sommige gebruikers door middel van een modem inbellen bij hun ISP. Hiervoor wordt gebruikgemaakt van het PPP-protocol. Dit protocol kent 2 authenticatiemethoden, namelijk PAP en CHAP. In het geval van PAP wordt een wachtwoord in clear-text over de verbinding gestuurd. In het geval van CHAP wordt gewerkt met challenge-response mechanisme, maar ook dit wordt niet als zeer veilig beschouwd. Het uitbreiden van het PPP-protocol met andere authenticatiemechanismen was echter onmogelijk daar dit een probleem schiep voor de op dat moment in gebruik zijnde "PPP compliant"-apparatuur.
Een 2e probleem dat zich stelt bij het inbellen is het authenticeren bij een centrale server ingeval de ISP werkt met meerdere POPs. Hier wordt meestal gebruikgemaakt van het RADIUS-protocol. Daarom heeft men naast PAP en CHAP (toegepast in PPP) EAP toegevoegd. EAP staat voor Extensible Authentication Protocol, waarbij extensible verwijst naar de mogelijkheid om in de toekomst andere authenticatiemethoden toe te voegen.
Tevens heeft men de nodige voorzieningen getroffen opdat EAP ook samen met RADIUS kan worden gebruikt.

## Wat

EAP voorziet in een standaardmechanisme dat verschillende authenticatiemethoden ondersteunt, zowel voor bedrade als draadloze netwerken. Een authenticator (ook wel AAA-cliënt (Authenticatie, Autorisatie en Accounting), peer of NAS (Network Acces Server) genoemd) zal de authenticatie-boodschappen tussen de supplicant (of te authenticeren peer) en de authentication-server (of AAA-server) doorgeven (tunneling). De authenticator zal dus enkel bij het starten en stoppen van het EAP-authenticatieproces actief tussenkomen, voor de rest van de tijd worden de boodschappen gewoon doorgeven. Daar EAP van oorsprong niet bedoeld was om over een LAN te gebruiken zullen we de EAP-pakketten moet versturen onder de vorm van data van een ander protocol. Voor de verbinding supplicant/authenticator zal men gebruikmaken van EAP over Lan (EAPOL), voor de verbinding authenticator/autentication server van EAP over RADIUS.

## EAP authenticatie proces

EAP verstrekt enkele gemeenschappelijke functies en een onderhandelingsmethode voor het gewenste authenticatiemechanisme. Dergelijke mechanismen worden methodes genoemd. EAP beschikt over ongeveer 40 verschillende methodes. De Wi-Fi Protected Access (WPA)- en WPA2-standaarden kunnen officieel gebruikmaken van vijf verschillende EAP-methodes voor het authenticatiemechanisme.
Als een supplicant een verbinding met het bedrijfsnetwerk wenst te bekomen via de authenticator, dan zal hij als hij al niet is opgemerkt door de authenticator, bijvoorbeeld door het inpluggen van de netwerkkabel, de aandacht trekken door het sturen van een EAPOL-Startboodschap (zie verder). Hierop zal de authenticator de identiteit van de supplicant opvragen. Afhankelijk van de gebruikte authenticatiemethode zal de supplicant hierop antwoorden met een gebruikersnaam, een MAC-adres, een certificaat ... De authenticator zal deze identiteit doorsturen naar de authenticationserver waarna afhankelijk van de gebruikte authenticatiemethode wachtwoorden, certificaten ... worden opgevraagd en gecontroleerd. Wordt de identiteit door de authentication-server bevestigd dan wordt de authenticatie-procedure beëindigd met een EAP-succes boodschap naar authenticator, die deze op zijn beurt doorstuurt naar de supplicant. De authenticator zal ook zorgen dat de supplicant toegang krijgt tot het netwerk. Wordt de toegang geweigerd, dan wordt een EAP-failure gestuurd.
Windows supplicants (tot en met XP-SP2) zijn beperkt in de mogelijkheden dit proces te controleren. Doordat de supplicant anders authenticeert inden een gebruiker al-dan-niet is ingelogd kan het gebeuren dat een machine die via dot1x-verbinding heeft gekregen tijdens een herauthenticatie verzoek plotseling deze verbinding kwijt raakt en daarna niet meer terug kan krijgen. Een 3rd-party-supplicant is dan aan te raden. XP-SP3- en Vista-clients hebben meer mogelijkheden dit proces te controleren.

## Formaat EAP-pakketten
### Algemeen

* Code: Het type van EAP-boodschap:
** 1: Request
** 2: Response
** 3: Success
** 4: Failure
* Identifier: wordt gebruikt voor het koppelen request/response-pakketten.
* Length: totale lengte van het pakket.
* Data: afhankelijk van het codeveld.

### Formaat Request en Response pakketten

* Code:
** 1 for Request
** 2 for Response
* Type: Types 1-4 moet altijd geïmplementeerd worden.
** 1: Identity
** 2: Notification
** 3: Nak (Response only)
** 4: MD5-Challenge
** 5: One Time Password (OTP)
** 6: Generic Token Card (GTC)
** 13: TLS
** 254: Expanded Types
** 255: Experimental use
* Type-Data: data afhankelijk van het type

### Formaat Succes en Failure pakketten

* Code:
** 3 for Success
** 4 for Failure

## EAP-infrastructuur

EAP bestaat uit een reeks interne onderdelen die architectonische ondersteuning voor de EAP-typen bieden in de vorm van een module. Voor een succesvolle verificatie moet bij de RAS-cliënt en de verificator dezelfde EAP-verificatiemodule zijn geïnstalleerd. Hieronder enkele voorbeelden van EAP-typen.

## EAP-MD5

EAP-MD5, gedefinieerd in RFC 3748, is ook een open IETF-standaard, maar biedt minimale beveiliging. De MD5-hashfunctie is kwetsbaar voor woordenlijstaanvallen en biedt geen ondersteuning voor wederkerige authenticatie of sleutel-generatie waardoor het ongeschikt is voor gebruik in een Wired Equivalent Privacy (WEP)- of WPA/WPA2-omgeving.
De werking van de authenticatie is analoog met PPP Challenge Handshake Authentication Protocol (CHAP) (RFC 1994) en verloopt als volgt:
* De authenticatie-server stuurt een zogenaamde challenge-message via de authenticator naar de supplicant (clientcomputer).
* De supplicant berekent een waarde door middel van de hash in combinatie met en geheim (wachtwoord) en stuurt dit als antwoord.
* De authenticatie-server vergelijkt zijn eigen berekende waarde met de via de authenticator ontvangen waarde. Komen beiden overeen dan wordt de authenticatie bevestigd en wordt de supplicant tot het netwerk toegelaten, zo niet, dan wordt de verbinding verbroken.
* Op willekeurige tijdstippen wordt een nieuwe challenge gestuurd en herhaalt zich het proces.
De opbouw van een EAP-MD5 pakket is als volgt:
* De eerste drie velden zijn identiek aan die van EAP-TLS
* Type is 4
* Het EAP-TLS-veld "data" is hier "Type-Data"
** Value-Size, 1 octet, geeft de lengte van de inhoud
** Value. De challenge.
** Name. Identificatie van de verzendende computer.

## EAP-TLS

EAP-TLS is een open standaard, gedefinieerd in RFC 2716 van de Internet Engineering Task Force (IETF), en wordt door fabrikanten van draadloze apparatuur ondersteund. Het gebruikt de Transport Layer Security (TLS), de opvolger van Secure Sockets Layer (SSL), en wordt in het algemeen als veilig beschouwd. Het maakt gebruik van een Public Key Infrastructure om verbindingen met een RADIUS authenticatie-server te beveiligen.
EAP-TLS is het oorspronkelijke standaard Wireless LAN-EAP-authenticatieprotocol en maakt gebruik van volgende concepten van PKI:
* De supplicant moet in het bezit zijn van een geldig certificaat om zijn identiteit te bewijzen.
* Een authenticatie-server moet beschikken over een geldig certificaat om zijn identiteit te bewijzen. Deze eis vervalt meestal in het geval van bedrade netwerken omdat hier de identiteit van het netwerk vastgelegd wordt door de bekabeling.
* De benodigde certificate authority-certificaten moeten ter beschikking zijn.
Het opzetten van deze infrastructuur kan een lastige klus zijn en is daarom weinig toegepast hoewel het een hoge standaard van beveiliging biedt. Een kwaadwillende heeft niet alleen een wachtwoord nodig maar ook een certificaat dat bijvoorbeeld op een smartcard is opgeslagen. Verlies van een smartcard zal in het algemeen sneller worden opgemerkt dan 'diefstal' van een wachtwoord. Tot 2005 was dit de enige EAP-soort die een fabrikant moest aanbieden om het WPA- of WPA2-logo te mogen gebruiken.
Na de handshake wordt per sessie een willekeurig sleutel gegenereerd die gebruikt wordt voor de versleuteling van de data overdracht. Dit proces wordt op willekeurige tijdstippen herhaald. Een EAP-TLS pakket is als volgt opgebouwd:
* Code. 1 octet. Waarde 1 (request) / 2 (response).
* Identifier. 1 octet. Helpt bij het koppelen van request en responses.
* Length. 2 octets. De lengte van het pakket.
* Type. 1 octet. Waarde 13 //EAP-TLS.
* Data. De rest van het pakket.
Er zijn cliënt- en serverimplementaties voor Microsoft, Cisco, Apple, Linux en in openbroncode. Het wordt standaard ondersteund door Mac OS 10.3 en later, Windows 2000 SP4, Windows XP, Windows Vista, Windows Server 2003, Windows Mobile 2003 en hoger, en Windows CE 4.2

## EAP-RADIUS

EAP-RADIUS zal het mogelijk maken om een radius-server te gebruiken voor authenticatie.
RADIUS werd oorspronkelijk gebruikt om dialin gebruikers te authenticeren. De NAS communiceert hiertoe door middel van het radiusprotocol met de radius-server die een database van toe te laten gebruikers bevat. Het radiusprotocol voorziet onder andere in encryptie voor eventueel over te zenden wachtwoorden. Hiervoor maakt het gebruik van een gedeelde sleutel. EAP berichten kunnen worden doorgegeven door middel van RADIUS zodat EAP ook gebruik kan maken van Radiusserver.