CHAP (CHAP)
CHAP (англ. Challenge Handshake Authentication Protocol) — протокол аутентификации с косвенным согласованием. Является алгоритмом проверки подлинности и предусматривает передачу не самого пароля пользователя, а косвенных сведений о нём. Аутентификация узла выполняется путём трехэтапной процедуры согласования[1][2]. Протокол CHAP широко используется различными поставщиками серверов и клиентов сетевого доступа[3]. Определён в RFC 1994.
Принцип работы
[править | править код]Можно выделить цикл, который состоит из трёх основных частей[1]:
- После установления PPP-соединения и одобрения обеих сторон на подключение по CHAP-протоколу аутентификатор отправляет на узел пакет CHAP, имеющий тип Сhallenge (вызов), который содержит в себе открытый ключ.
- Узел на основе полученного открытого ключа и своего секрета, вычисляет хеш с помощью алгоритма хеширования MD5 и отправляет пакет CHAP, имеющий тип Response (отклик), содержащий в себе вычисленный хеш.
- Аутентификатор сравнивает полученное значение хеша со своим расчётом ожидаемого значения хеша. Если значения совпадают, то проверка подлинности считается успешной. При отличающихся значениях происходит разрыв соединения.
Через различные промежутки времени аутентификатор посылает новый запрос узлу, и шаги 1-3 повторяются[4][5].
Структура пакетов CHAP
[править | править код]В информационное поле пакетов PPP с полем протокола 0xc223 инкапсулируется единственный пакет CHAP, который содержит следующие поля[6][7]:
- Code (Код). Поле Code длиной один октет идентифицирует тип пакета CHAP и может принимать одно из следующих значений:
- Сhallenge (вызов, проверка);
- Response (отклик);
- Success (успех);
- Failure (отказ).
- Identifier (Идентификатор). Поле Identifier длиной один октет позволяет провести дополнительную идентификацию в зависимости от типа пакета. Участвует в согласовании запроса, ответа и подтверждения.
- Length (Длина). Поле Length длиной два октета определяет длину пакета CHAP, включая все поля (код, идентификатор, длина и данные).
- Data (Данные). Длина поля Data равна нулю или более октетов. Содержит данные в формате, определяемом полем кода.
Требования к архитектуре
[править | править код]- Длина секрета должна быть не менее 1 октета. Предпочтительно, чтобы секрет был примерно той же длины, что и значение хеша используемой хеш-функции (16 октетов для MD5). Это необходимо, чтобы обеспечить достаточно большой диапазон для секрета, в целях защиты от атак повторного воспроизведения[8].
- Каждое значение запроса должно иметь глобальную и временную уникальность и быть полностью непредсказуемым, чтобы злоумышленник не смог обмануть узел предугаданным будущим запросом и отправить ответ аутентификатору[8].
Преимущества
[править | править код]- CHAP обеспечивает защиту от атак повторного воспроизведения. Достигается подобная защита из-за возрастающего значения идентификатора и переменного значения открытого ключа[9].
- Метод проверки подлинности основан на том, что аутентификатору и узлу известен секрет, который никогда не посылается по каналу. Именно поэтому CHAP обеспечивает лучшую защиту по сравнению с PAP[9][10].
- Несмотря на то, что проверка подлинности производится только в одну сторону, CHAP-переговоры можно вести в обоих направлениях c помощью того же секрета, обеспечивая взаимную аутентификацию[2].
Недостатки
[править | править код]- CHAP требует, чтобы секрет был доступен в открытом (незашифрованном) виде. Необратимо зашифрованные базы паролей не могут использоваться[11].
- Плохо применим для крупных проектов с большим количеством участников, так как каждый секрет должен храниться на обоих концах канала[9].
См. также
[править | править код]Примечания
[править | править код]- ↑ 1 2 Nitish Dalal, Jenny Shah, Khushboo Hisaria, Devesh Jinwala. A Comparative Analysis of Tools for Verification of Security Protocols (англ.). — 2010. — P. 785. Архивировано 23 сентября 2017 года.
- ↑ 1 2 Cisco - PPP CHAP (англ.). Архивировано 24 декабря 2017 года.
- ↑ Microsoft Technet - CHAP (англ.). Архивировано 24 декабря 2017 года.
- ↑ W. Simpson. PPP Challenge Handshake Authentication Protocol (CHAP) (англ.). — 1996. — P. 2. Архивировано 8 марта 2021 года.
- ↑ M. W. Youssef, Hazem El-Gendy. Securing Authentication of TCP/IP Layer Two By Modifying Challenge-Handshake Authentication Protocol (англ.) // Advanced Computing: An International Journal. — 2012. — March. — P. 11. Архивировано 24 декабря 2017 года.
- ↑ W. Simpson. PPP Challenge Handshake Authentication Protocol (CHAP) (англ.). — 1996. — P. 6. Архивировано 8 марта 2021 года.
- ↑ M. W. Youssef, Hazem El-Gendy. Securing Authentication of TCP/IP Layer Two By Modifying Challenge-Handshake Authentication Protocol (англ.) // Advanced Computing: An International Journal. — 2012. — March. — P. 12. Архивировано 24 декабря 2017 года.
- ↑ 1 2 W. Simpson. PPP Challenge Handshake Authentication Protocol (CHAP) (англ.). — 1996. — P. 4. Архивировано 8 марта 2021 года.
- ↑ 1 2 3 W. Simpson. PPP Challenge Handshake Authentication Protocol (CHAP) (англ.). — 1996. — P. 3. Архивировано 8 марта 2021 года.
- ↑ Microsoft Technet - PAP (англ.). Архивировано 24 декабря 2017 года.
- ↑ Guy Leduc. Verification of two versions of the Challenge Handshake Authentication Protocol (CHAP) (англ.). — 1999. — February. — P. 1. Архивировано 24 декабря 2017 года.
Литература
[править | править код]- Nitish Dalal, Jenny Shah, Khushboo Hisaria, Devesh Jinwala. A Comparative Analysis of Tools for Verification of Security Protocols (англ.). http://www.scirp.org/. International Journal of Communications, Network and System Sciences (октябрь 2010).
- W. Simpson. PPP Challenge Handshake Authentication Protocol (CHAP) (англ.). https://www.ietf.org/ (август 1996).
- Guy Leduc. Verification of two versions of the Challenge Handshake Authentication Protocol (CHAP) (англ.). http://orbi.ulg.ac.be/. Annals of Telecommunications (февраль 1999).