PEAPv2 est le successeur de PEAPv0. Cette version corrige plusieurs faiblesses (dont la transmission du nom de l' utilisateur en dehors du tunnel TLS). Elle a été développée par Microsoft, Cisco Systems et Extundo. Elle corrige les faiblesses de la version 0
Pour l'instant, il n'existe pas beaucoup d'implémentation de cette version. Elle est peu utilisée à l'heure actuelle.
Cette version de PEAP est définie dans le brouillon Internet de IETF draft-josefsson-pppext-eap-tls-eap-10.txt
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Flags | Ver | Fragment Message Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Fragment Message Length | TLS Message Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TLS Message Length | TLS Data... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Outer TLVs... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Code :
Identifier : le champ Identifier fait un octet et permet de faire correspondre les requêtes et les réponses.
Length : le champ Length fait 2 octets; il donne la longueur du paquet EAP
Type : 25 - PEAP
Flags :
0 1 2 3 4 +-+-+-+-+-+ |L M S T R| +-+-+-+-+-+ L = Length included M = More fragments S = PEAP start T = TLS Length included R = Reserved (must be zero)
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. Le bit T permet d'indiquer la présence du champ TLS Message Length field.
Version :
0 1 2 +-+-+-+ |R|1|0| +-+-+-+ R = Réservé, doit être à zéro
Fragmented Message Length : Ce champ fait 4 octets, il n'est présent que si le bit L est à 1. Il donne la taille du message après le champ Flag.
TLS Message Length : Ce champ fait 4 octets, il est présent seulement si le bit T est à 1. Il définit la taille totale des données TLS.
TLS Data : ce champ contient des paquets TLS encapsulés.
Outer TLVs : Ce champ est optionnel, il permet d'aider à établir le tunnel TLS
Dans cette version, une partie de l'identité est donnée en clair mais cette "demi-identité" n'est pas suffisante pour qu'un pirate utilise l'identité pour provoquer un déni de service (DOS) en verrouillant les utilisateurs dont il a pu récupérer la "demi-identité".
Client | Authentificateur |
---|---|
<--- EAP-Request/Identity | |
EAP-Response/Identity (MyID1) ---> | |
Une partie de l’identité est envoyée en clair. | |
<--- EAP-Request/EAP-Type=PEAP, V=2 (PEAP Start, S bit set) | |
EAP-Response/EAP-Type=PEAP, V=2 (TLS client_hello)---> | |
<--- EAP-Request/EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate,[TLS server_key_exchange,][TLS certificate_request,] TLS server_hello_done) | |
EAP-Response/EAP-Type=PEAP, V=2([TLS certificate,] TLS client_key_exchange,[TLS certificate_verify,] TLS change_cipher_spec, TLS finished) ---> | |
<--- EAP-Request/EAP-Type=PEAP, V=2(TLS change_cipher_spec, TLS finished, EAP-Request/EAP-Type=EAP-TLV [EAP-Payload-TLVEAP-Request/Identity) | |
// Le tunnel TLS est créé. L’identité est protégée par TLS. Les paquets EAP-TLV n’ont pas d’en-tête EAP. | |
EAP-TLV [EAP-Payload-TLV EAP-Response/Identity (MyID2) ---> | |
<--- EAP-TLV [EAP-Payload-TLVEAP-Request/EAP-Type=X | |
EAP-TLV [EAP-Payload-TLVEAP-Response/EAP-Type=X ---> | |
Fin de la protection. | |
<--- EAP-TLV [Result TLV (Success), Crypto-Binding TLV (Version=2, received-version=2, Nonce, B1_MAC),Intermediate-Result TLV (Success)] | |
EAP-TLV [Result TLV (Success),Intermediate-Result TLV (Success), Crypto-Binding TLV (Version=2, received-version=2,Nonce, B2_MAC)] ---> | |
Fin du tunnel TLS (les messages sont à présent envoyés en text clair). | |
<--- EAP-Success |
Dans cette version il n'y pas d'échange d'identité en clair.
Client | Authentificateur |
---|---|
<--- EAP-Request/EAP-Type=PEAP, V=2(PEAP Start, S bit set) | |
EAP-Response/EAP-Type=PEAP, V=2 (TLS client_hello) ---> | |
<--- EAP-Request/EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) | |
EAP-Response/EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) ---> | |
<--- EAP-Request/EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLS finished, EAP-TLV [EAP-Payload-TLV (EAP-Request/Identity)]) | |
Tunnel TLS créé (les messages sont envoyés via le tunnel TLS) | |
EAP-TLV [EAP-Payload-TLV EAP-Response/Identity (MyID) ---> | |
<--- EAP-TLV [EAP-Payload-TLV EAP-Type=EAP-Request/EAP-Type=X EAP-TLV [EAP-Payload-TLV | |
[EAP-Response/EAP-Type=X or NAK] ---> | |
<--- EAP-TLV [EAP-Payload-TLV EAP-Request/EAP-Type=X | |
EAP-TLV [EAP-Payload-TLV EAP-Response/EAP-Type=X ---> | |
<--- EAP-TLV [Crypto-Binding TLV=(Version=2, Received-version=2, Nonce, B1_MAC),Intermediate-Result TLV(Success), Result TLV (Success)] | |
EAP-TLV [Crypto-Binding TLV=(Version=2,Received-version=2, Nonce, B2_MAC), Intermediate-Result TLV (Success), Result TLV (Success)] ---> | |
Fin du tunnel TLS (les messages sont envoyés en clair) | |
<--- EAP-Success |