CHAP
În informatică, Protocolul de autentificare Challenge-Handshake (CHAP) autentifică un utilizator sau calculator cu o entitate de autentificare. Acea entitate poate fi, de exemplu, un ISP. CHAP este descris în RFC 1994.
CHAP oferă protecție împotriva atacurilor cu retransmisia pachetelor printr-un identificator incremental și o valoare a cererii variabilă. CHAP cere ca atât clientul cât și serverul să cunoască secretul, deși acesta nu este trimis peste rețea. De aceea, CHAP oferă o protecție mai bună decât PAP, care este vulnerabil la ambele tipuri de atacuri. Varianta MS-CHAP nu cere ca ambele capete ale comunicației să cunoască secretul, dar această variantă a fost "spartă".[1]
Mod de funcționare
modificareCHAP este schema de autentificare folosită de serverele PPP pentru a valida identitatea clienților. CHAP verifică periodic identitatea clientului folosind o autentificare în 3 pași. Acest lucru se întâmplă în timpul stabilirii legăturii inițiale (LCP), și poate fi repetat la orice moment ulterior. Verificare se bazează pe un secret comun (ca de exemplu parola clientului).[2]
- După stabilirea legăturii, autentificatorul trimite o cerere către celălalt capăt.
- Acesta răspunde cu o valoare calculată folosind o funcție hash aplicată aspura combinației dintre cerere și parolă.
- Autentificatorul verifică răspunsul cu propriile calcule și dacă valorile se potrives, acesta permite autentificare. Altfel, conexiunea este închisă.
- La intervale aleatorii, autentificatorul trimite o nouă cerere și se repetă pașii 1-3.
Pachetele CHAP
modificareDescriere | 1 octet | 1 octet | 2 octeți | 1 octeți | variabil | variabil |
---|---|---|---|---|---|---|
Cerere | Cod = 1 | ID | Lungime | Lungimea cererii | Valoarea cererii | Nume |
Răspuns | Cod = 2 | ID | Lungime | Lungimea răspunsului | Valoarea răspunsului | Nume |
Succes | Cod = 3 | ID | Lungime | Mesaj | ||
Eșec | Cod = 4 | ID | Lungime | Mesaj |
ID-ul ales pentru numărul random din cerere este de asemenea folosit pentru răspunsul corespunzător, precum și pentru pachetele de succes sau eșec. O nouă cerere cu un nou ID trebuie să fie diferită de ultima cerere cu un ID diferit. Dacă mesajul de succes/eșec este pierdut, același răspuns poate fi trimis din nou și declanșează aceeași indicație de succes. Pentru funcția hash MD5, valoarea răspunsului este MD5(ID||secret||challenge)
, hash-ul MD5 pentru concatenarea dintre ID, secret și challenge.[3]