CHAP (ang.Challenge Handshake Authentication Protocol) – jeden z dwóch obok PAP sposobów uwierzytelniania w PPP. CHAP zapewnia węzłom zgłaszanie swojej tożsamości za pomocą trójfazowego uzgadniania. CHAP jest bezpiecznym protokołem uwierzytelniania, zapewnia ochronę przed atakami wykorzystującymi podsłuch transmisji, wykorzystuje MD5. Jest preferowany jako uwierzytelnianie w PPP.
Po nawiązaniu połączenia modemowego serwer dokonujący uwierzytelniania wysyła komunikat wzywający klienta.
Klient hashuje komunikat wezwania serwera ze swoim hasłem użytkownika i przesyła do serwera.
Serwer sprawdza odpowiedź dokonując tego samego obliczenia co klient. Jeżeli wszystko się powiedzie, wysyłane jest potwierdzenie udanego uwierzytelnienia.
W losowych odstępach czasu serwer wysyła nowe wezwania do klienta i kroki 1 do 3 są powtarzane.
W systemie Linux nazwy użytkowników i hasła są przechowywane w pliku
/etc/ppp/chap-secrets
Może on wyglądać tak:
# nazwa klient nazwa serwera hasło
kpn * kpn
user3579@planet.nl * myfavoritepet
Protokół CHAP wykorzystuje funkcje mieszającą MD5, natomiast protokół MS-CHAP – MD4.