Protected Extensible Authentication Protocol, Protected EAP, ou plus simplement PEAP, est une méthode de transfert sécurisée d'informations d'authentification, créée au départ pour les réseaux sans fil. Ce protocole a été développé conjointement par Microsoft, RSA Security et Cisco Systems. C’est un standard ouvert de l'IETF.
PEAP n'est pas une méthode de chiffrement, c'est une procédure pour authentifier un client sur un réseau.
PEAP est très semblable à 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 à n'utiliser une infrastructure à clés publiques (PKI) que du côté serveur, pour protéger l'authentification par la création d'un tunnel TLS. Dans ces deux standards, l'utilisation d'une clef publique côté client est optionnelle. PEAP impose une identification interne (inner authentication) par une autre méthode EAP, alors que TTLS autorise toute méthode d'identification interne CHAP, PAP, MS-CHAP, MS-CHAPv2 ou méthode EAP.
Il existe 2 versions de PEAP certifiées WPA (mise à jour) et WPA2 :
PEAP se déroule en 2 phases :
PEAPv1/EAP-GTC a été créé par Cisco pour être une alternative à PEAPv0/EAP-MSCHAPv2. Bien que PEAP ait été développé conjointement par Microsoft, Cisco et RSA, Microsoft n’a jamais intégré cette version de PEAP dans ses OS. EAP-GTC n'est donc pas présent nativement sur les systèmes Microsoft. Cisco préfère supporter ses autres protocoles LEAP ou EAP-FAST Plutôt que PEAP. Cette version de PEAP est très peu utilisée.
Cette version de PEAP est définie dans le brouillon draft-josefsson-pppext-eap-tls-eap-05.txt
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Flags |Ver| Data... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Code :
Identifier : Ce champ sur un octet permet de faire correspondre les requêtes et les réponses.
Length : ce champ fait 2 octets, il indique la taille du paquet EAP
Type : 25 - PEAP
Flags :
0 1 2 3 4 5 +-+-+-+-+-+-+ |L M S R R R| +-+-+-+-+-+-+ L = Length included M = More fragments S = PEAP start R = Réservé, doit être à zéro
Le bit L sert à indiquer la présence des champs suivants. Le bit M est à 1. Le bit S est à 1 pour les message PEAP Start.
Version :
0 1 +-+-+ |R 1| +-+-+ R = Réservé, doit être à zéro
Data : Ce champ est déterminé par le format du champ Code Field
Client | Authentificateur |
---|---|
<--- EAP-Request/Identity | |
EAP-Response/Identity (MyID) ---> | |
<--- EAP-Request/EAP-Type=PEAP(PEAP Start, S bit set) | |
EAP-Response/EAP-Type=PEAP(TLS client_hello) ---> | |
<--- EAP-Request/EAP-Type=PEAP(TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) | |
EAP-Response/EAP-Type=PEAP ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) ---> | |
<--- EAP-Request/EAP-Type=PEAP (TLS change_cipher_spec, TLS finished) | |
Le tunnel TLS est établi. A partir de là les messages sont envoyés aux travers du tunnel TLS | |
EAP-Response/EAP-Type=PEAP ---> | |
<--- EAP-Request/Identity | |
EAP-Response/Identity (MyID) ---> | |
<--- EAP-Request/EAP-Type=X | |
EAP-Response/EAP-Type=X or NAK ---> | |
<--- EAP-Request/EAP-Type=X | |
EAP-Response/EAP-Type=X ---> | |
<--- EAP-Success | |
Fin du tunnel TLS. A partir de là les messages sont envoyés en clair. |