CHAP
CHAP (англ. Challenge Handshake Authentication Protocol) — широко поширений алгоритм перевірки автентичності, що передбачає передачу не самого пароля користувача, а непрямих відомостей про нього. При використанні CHAP сервер віддаленого доступу відправляє клієнту рядок запиту. На основі цього рядка і пароля користувача клієнт обчислює хеш-код MD5 (англ. Message Digest-5) і передає його серверу. Хеш-функція є алгоритмом одностороннього (незворотного) шифрування (перетворення), оскільки значення хеш-функції для блоку даних обчислити легко, а визначити вихідний блок за хеш-кодом з математичної точки зору неможливо за прийнятний час. Сервер, для якого доступний пароль користувача, виконує ті ж самі обчислення і порівнює результат з хеш-кодом, отриманим від клієнта. У разі збігу облікові дані клієнта віддаленого доступу вважаються справжніми. Найважливішою особливістю алгоритму CHAP-аутентифікації є те, що пароль ніколи не пересилається по каналу.
Протокол CHAP визначений в RFC 1994.
Для впізнання себе деяким сервером, використовуючи 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]
- ↑ Файл для CHAP. Архів оригіналу за 24 квітня 2013. Процитовано 2 травня 2013.