CHAP е широко разпространен метод за удостоверяване, използван от
PPP, при който по време на сесията клиента трябва да докаже, че знае парола, известна единствено на комуникиращите страни, без реално да я предава по мрежата.
Това става в няколко стъпки (т.нар. three-way handshake):
- след започване на връзката между отдалечен сървър за достъп и отдалечен клиент, сървъра изпраща заявка за потвръждение (challenge) към клиента
- клиента използва хеш функция, с която изчислява MD5 резултата на полученото съобщение на база потребителската парола и го връща към сървъра
- сървъра сравнява получения резултат със собственоръчно изчисления MD5 hash на първоначалното challenge съобщение (също на база потребителската парола). Ако двете стойности съвпадат, сървъра приема връзката за автентична и позволява комуникация, в противен случай я прекратява
- на определени интервали сървъра може да инициира ново потвърждение, при което горните стъпки се повтарят
Хеш функцията осигурява еднопосочно криптиране, което означава, че изчисляването на hash кода на даден блок данни е лесно, но обратния процес (възстановяване на оригиналния блок данни от хеш кода) е математически невъзможен. И тъй като процеса на автентифициране е свързан с изпращане на кодирани съобщения, дори те да бъдат подслушани от злонамерено лице няма как да бъде осъществена неудостоверена връзка.
При всяка нова сесия, генерираното от сървъра challenge съобщение е уникално и различно от предишните. Така потребителската парола всъщност никога не се предава между двете страни, а се използва при хеш изчислението на уникалния challenge от текущата сесия.