CHAP (англ. Challenge Handshake Authentication Protocol) — широко поширений алгоритм перевірки автентичності, що передбачає передачу не самого пароля користувача, а непрямих відомостей про нього. При використанні CHAP сервер віддаленого доступу відправляє клієнту рядок запиту. На основі цього рядка і пароля користувача клієнт обчислює хеш-код MD5 (англ. Message Digest-5) і передає його серверу. Хеш-функція є алгоритмом одностороннього (незворотного) шифрування (перетворення), оскільки значення хеш-функції для блоку даних обчислити легко, а визначити вихідний блок за хеш-кодом з математичної точки зору неможливо за прийнятний час. Сервер, для якого доступний пароль користувача, виконує ті ж самі обчислення і порівнює результат з хеш-кодом, отриманим від клієнта. У разі збігу облікові дані клієнта віддаленого доступу вважаються справжніми. Найважливішою особливістю алгоритму CHAP-аутентифікації є те, що пароль ніколи не пересилається по каналу.

Документи RFC ред.

Протокол CHAP визначений в RFC 1994.

Файл шифра для CHAP ред.

Для впізнання себе деяким сервером, використовуючи CHAP, pppd шукає у файлі chap-secrets запис з ім'ям клієнта, рівним локальному hostname, і ім'ям сервера, рівного віддаленому hostname, посланому в CHAP Challenge. При вимозі впізнання себе ролі просто помінялися: pppd буде шукати запис з ім'ям клієнта, прирівняним до віддаленого hostname (посланому в CHAP-відповіді клієнту) і ім'я сервера, прирівняне локальному хосту.

Типовий файл chap-secrets для vlager.vbrew.com:

# Client server secret addrs
# --------------------- ------------------ ------------------- -------
vlager.vbrew.com c3po.lucas.com "Use The Source Luke" vlager.vbrew.com
c3po.lucas.comwikitable vlager.vbrew.com "arttoo! arttoo!" c3po.lucas.com
* Vlager.vbrew.com "TuXdrinksVicBitter" pub.vbrew.com

При встановленні PPP-зв'язку з c3po, c3po просить vlager впізнати себе, використовуючи CHAP і посилаючи CHAP challenge. Потім pppd переглядає файл chap-secrets для запису з клієнтською областю, прирівняних до vlager.vbrew.com і областю сервера, прирівняної до c3po.lucas.com, і знаходить перший рядок, показаний вище. Потім проводиться CHAP-відповідь з challenge string і шифру (Use The Source Luke) на машину c3po.

У той же самий час pppd становить CHAP challenge для c3po, що містить унікальний challenge string, і повністю кваліфіковане доменне ім'я vlager.vbrew.com. У відповідь c3po створює CHAP-відповідь способом, який ми щойно обговорили, і повертає його vlager. Тепер pppd витягує клієнтський hostname (c3po.vbrew.com) з відповіді і шукає у файлі chap-secrets рядок, відповідний c3po як клієнтові і vlager як сервера. Другий рядок задає pppd об'єднати CHAP challenge з паролем (arttoo! arttoo!), Зашифрувати результат і порівняти CHAP-відповіддю c3po.

Довільне четверте поле перераховує адреси IP, які допустимі для клієнтів в першому полі. Адреси можуть бути задані в dotted quad notation або як імена машин, які будуть знайдені через сервер імен. Наприклад, якщо c3po запросив під час IPCP-переговорів використання IP-адреси, яка не в цьому списку, запит буде відхилено, і IPCP буде вимкнено. У типовому файлі, показаному вище, c3po буде обмежений використанням власної адреси. Якщо поле адреси пусте, будуть дозволятися будь-які адреси. Задання тире (-) забороняє використання IP-адреси.

Третій рядок у прикладі файлу chap-secrets дозволяє будь-якому хосту встановити зв'язок PPP з vlager тому, що * у полі клієнта або сервера відповідає будь-якому hostname. Єдина вимога: він знає пароль і використовує адресу pub.vbrew.com. Запис з груповим символом для імен машин може з'явиться де завгодно у файлі шифрів, так як pppd буде завжди використовувати найбільш підходящий запис, який застосовується до пари сервер/клієнт.[1]

Примітки ред.

  1. Файл для CHAP. Архів оригіналу за 24 квітня 2013. Процитовано 2 травня 2013.

Див. також ред.

Джерела ред.

  • RFC 1994 PPP Challenge Handshake Authentication Protocol (CHAP)
  • RFC 2865 Remote Authentication Dial In User Service (RADIUS): uses PAP or CHAP
  • RFC 3748 Extensible Authentication Protocol (EAP): discusses CHAP