title: Extensible Authentication Protocol
text: # Extensible Authentication Protocol
  
  Extensible Authentication Protocol ou EAP est un protocole de communication réseau embarquant de multiples méthodes d'authentification, pouvant être utilisé sur les liaisons point à point (RFC 2284), les réseaux filaires et les réseaux sans fil (RFC 3748, RFC 5247) tels que les réseaux Wi-Fi.
  
  Plusieurs méthodes d'authentification sont prédéfinies (MD5, OTP, Generic Token Card, etc.) mais il est possible d'en rajouter sans qu'il soit nécessaire de changer ou de créer un nouveau protocole réseau.
  
  ## Le protocole EAP
  
  Le protocole EAP est :
  
  * Un protocole de communication réseau : il est constitué d'un échange de trames dans un format spécifique à EAP pour réaliser l'authentification d'un partenaire
  * Un protocole extensible : quelques méthodes d'authentification sont prédéfinies (MD5, OTP, Generic Token Card, etc.) mais d'autres peuvent être ajoutées sans qu'il soit nécessaire de changer le protocole réseau ou d'en définir un nouveau
  
  Le protocole EAP a été proposé en mars 1998 dans la RFC 2284 et proposé comme standard Internet auprès de l'IETF. Il est conçu pour fournir un mécanisme d'authentification pour les liaisons PPP (couche 2 du modèle OSI) afin d'autoriser ou interdire l'établissement de la couche réseau (couche 3 du modèle OSI). Ce protocole ne s'appuie donc pas sur le protocole IP (couche 3 du modèle OSI).
  
  La liaison PPP est définie entre un peer et un $authenticator^,.$ L'authenticator peut envoyer une requête au peer pour connaître son identité ou alors de déterminer son identité par l'interface de communication (Liaisons louées, Ligne dédiée, etc.). Cette identification est suivie d'une ou plusieurs requêtes envoyées par l'authenticator (obligatoire) avec un paramètre contenant la méthode d'authentification souhaitée :
  
  * MD5-challenge
  * One-Time Passwords
  * Generic Token Card
  * SIM
  * etc.
  
  Le peer doit répondre à ce challenge et aura en fonction du résultat, un message envoyé par l'authenticator contenant un code :
  
  * Code 3 : Succès (Établissement de la couche réseau)
  * Code 4 : Échec (Impossible d'établir la couche réseau)
  
  Cette authentification peut être réalisée par l'authenticator lui-même ou déléguée à un service tiers (authentication server).
  
  L'authentification peut être demandée par chaque extrémité
  
  En juin 2004, la RFC 3748 vient étendre le fonctionnement du protocole EAP aux réseaux définis dans le standard IEEE 802 rendant obsolète la RFC 2284 :
  
  * Les réseaux filaires : Standard IEEE 802.1X
  * Les réseaux sans fil : Standard IEEE 802.11i
  
  Le protocole EAP sur ces réseaux est aussi connu sous le nom $EAPOL^,.$
  
  Bien que le protocole EAP possède un mécanisme de suppression de requêtes dupliquées et de retransmission de requêtes, il reste tributaire de la couche de liaison de données. Par conséquent, des erreurs sur cette couche peuvent entraîner des erreurs d'authentification EAP.
  
  Le protocole EAP ne supporte pas nativement la fragmentation des paquets réseau mais ce comportement peut être modifié avec certaines méthodes :
  
  * EAP-TLS
  
  Quand le protocole EAP est utilisé en conjonction avec un point d'accès réseau compatible 802.1X (sans-fil ou filaire), certaines méthodes EAP permettent de négocier une clé PMK (Pair-wise Master Key) entre le client et le point d'accès. Cette clé PMK peut ensuite être utilisée pour chiffrer les sessions TKIP ou CCMP.
  
  Les standards WPA et WPA2 ont adopté 5 types d’EAP comme mécanismes officiels d’identification :
  
  * EAP-TLS
  * EAP-TTLS/MSCHAPv2
  * PEAPv0/EAP-MS-CHAPv2
  * PEAPv1/EAP-GTC
  * EAP-SIM
  
  Mais EAP ne se limite pas à ces méthodes d'authentification. On présente ci-dessous des informations sur les EAP les plus connus.
  
  ### Méthodes
  
  **LEAP**
  
  Lightweight Extensible Authentication Protocol (LEAP) est une implémentation propriétaire de EAP conçue par Cisco Systems.
  
  Cisco a fait beaucoup d'efforts pour promouvoir ce protocole. Il a permis à d'autres fabricants de réaliser des produits « LEAP Compatible » au travers du programme CCX (Cisco Certified Extensions). Ce protocole n'est pas présent nativement sous Windows. Il était connu pour être vulnérable aux attaques par dictionnaire comme EAP-MD5. Mais il ne l'est plus depuis la version ASLEAP (2003) de Joshua Wright. Cisco continue de soutenir que LEAP est une solution sécurisée si l'on utilise des mots de passe suffisamment complexes. Mais tout le monde sait bien que dans la réalité, les mots de passe complexes sont rarement utilisés. De nouveaux protocoles comme EAP-TTLS ou PEAP ne rencontrent pas ce type de fragilité car ils créent un tunnel TLS pour sécuriser l'identification. De plus ces nouveaux protocoles étant plus ouverts, ils peuvent être utilisés sur des points d'accès de marque Cisco ou non.
  
  **EAP-TLS**
  
  EAP-TLS est un standard ouvert IETF. On le retrouve utilisé chez de nombreux fabricants de matériel sans fil. C’est le seul protocole EAP qui doit obligatoirement être implanté sur un matériel pour que ce dernier puisse porter le logo WPA ou WPA2.
  
  Il offre une bonne sécurité. En effet il utilise deux certificats pour la création d'un tunnel sécurisé qui permet ensuite l'identification : un côté serveur et un côté client. Cela signifie que même si le mot de passe est découvert, il ne sera d'aucune utilité sans le certificat client. Bien que EAP-TLS fournisse une excellente sécurité, l'obligation de disposer d'un certificat client est peut-être son talon d'Achille. En effet lorsque l'on dispose d'un grand parc de machines, il peut s'avérer difficile et coûteux de gérer un certificat par machine. C'est pour se passer du certificat client que les protocoles PEAP et EAP-TTLS ont été créés.
  
  TLS est considéré comme le successeur du standard SSL. Il utilise une Infrastructure à clés publiques pour sécuriser les communications d'identification entre les clients et le serveur RADIUS.
  
  Il existe des implémentations client ou serveur pour : Microsoft, Cisco, Apple, Linux... EAP-TLS est présent nativement dans MAC OS 10.3 et supérieur, Windows 2000 SP4, Windows XP, Windows Mobile 2003 et supérieur, et Windows CE 4.2.
  
  **EAP-MD5**
  
  EAP-MD5 est un autre standard ouvert IETF, mais il offre un niveau de sécurité faible. La fonction de hachage MD5 utilisée est vulnérable aux attaques par dictionnaire, et elle ne supporte pas les clefs WEP dynamiques.
  
  **EAP-TTLS**
  
  EAP-Tunneled Transport Layer Security, a été codéveloppé par Funk Software et Certicom ; c'est également un standard ouvert IETF. Il est supporté sur de nombreuses plates-formes, et offre un très bon niveau de sécurité. Il utilise des certificats X-509 uniquement sur le serveur d'identification. Le certificat est optionnel du côté client.
  
  Le défaut de EAP-TTLS par rapport à PEAP est de ne pas être présent nativement sur les systèmes Microsoft et Cisco. En revanche, il est légèrement plus sécurisé que PEAP car il ne diffuse pas le nom de l'utilisateur en clair.
  
  **EAP-FAST**
  
  EAP-Flexible Authentication via Secure Tunneling est une proposition de Cisco Systems pour pallier les faiblesses de LEAP. L'utilisation de certificats serveur est optionnelle dans EAP-FAST. Il utilise Protected Access Credential (PAC). EAP-FAST dispose de trois phases.
  
  * Phase 0 : Elle est optionnelle et permet de renseigner dynamiquement PAC. PAC peut être complété manuellement, auquel cas il n'y aura pas de phase 0.
  * Phase 1 : Le client et le serveur AAA (Authentication Authorization Accounting) utilisent PAC pour établir un tunnel TLS.
  * Phase 2 : Le client envoie les informations utilisateur à travers le tunnel.
  
  EAP-FAST est défini dans un brouillon Internet IETF « draft-com-winget-eap-fast-03 ».
  
  Actuellement il est proposé comme RFC 4851.
  
  **EAP-SIM**
  
  EAP-SIM est une méthode EAP pour les clients des réseaux Wi-Fi et des réseaux de téléphonie mobile GSM, UMTS et LTE. Il est utilisé pour l'identification et la distribution de clefs au travers des réseaux ; SIM signifie « Subscriber Identity Module ». EAP-SIM est décrit dans la RFC 4186.
  
  Free Mobile a été le premier opérateur français à mettre en service ce protocole d'authentification en avril 2012 pour ses clients détenteurs du forfait illimité. Cela permet aux abonnés d'accéder au réseau Free Wifi. SFR a activé mi-juin 2012, sur l'ensemble de son réseau, ce service déployé depuis mars 2012, d'abord en phase d’expérimentation limitée, sous le nom « Auto-connect ».
  
  **EAP-AKA**
  
  EAP-AKA (Authentication and Key Agreement) est une méthode EAP pour les clients des réseaux de téléphonie mobile de 3e génération (UMTS et CDMA2000). Elle est décrite dans la RFC 4187.
  
  Contrairement à EAP-SIM, EAP-AKA permet de réaliser une authentification mutuelle de l'équipement utilisateur et du réseau. La longueur de la clé générée par accord mutuel est plus longue (128 bits) qu'avec EAP-SIM (64 bits).
  
  Ce protocole est principalement employé dans les cadres suivants:
  
  * Authentification lors de l'attachement à un réseau de téléphonie mobile de 3e génération.
  * Réutilisation des éléments d'authentification du réseau mobile lors de l'attachement à un réseau sans fil [Wifi] qui appartient à l'opérateur.
  
  ### Encapsulation
  
  **PEAP**
  
  Protected Extensible Authentication Protocol, Protected EAP, ou plus simplement PEAP, est une méthode de transfert sécurisée d'informations d'identification, pour les réseaux filaires et sans fil. Ce protocole a été développé conjointement par Microsoft, RSA Security et Cisco Systems. C’est un standard ouvert de l'IETF (Internet Engineering Task Force). PEAP n'est pas une méthode de chiffrement, c'est une procédure pour identifier un client sur un réseau.
  
  PEAP est très similaire à une autre méthode EAP : EAP-TTLS. Protected EAP a été créé pour contrer EAP-TTLS qui était jusque-là la seule méthode EAP à utiliser une Infrastructure à clés publiques (Public Key Infrastructure, PKI) que du côté serveur, pour la création d'un tunnel TLS protégeant l'identification. Dans ces deux standards, l'utilisation d'une clef publique côté client est optionnelle.
  
  Il existe deux versions de PEAP certifiées WPA (mise à jour) et WPA2 :
  
  * PEAPv0/EAP-MS-CHAPv2
  * PEAPv1/EAP-GTC
  
  PEAP se déroule en deux phases :
  
  * La phase 1 permet l'identification du serveur grâce à une Infrastructure à clés publiques. Une fois le serveur identifié, il y a la création d'un tunnel sécurisé qui permettra à la phase 2 d'être chiffrée.
  * La phase 2 permet l'identification du client au travers du tunnel chiffré.
  