Протокол CHAP: аутентификация, уязвимости и применение.
Challenge-Handshake Authentication Protocol
CHAP: протокол аутентификации для PPP, RADIUS и Diameter. Используется для проверки пользователей, но уязвим к перехвату данных из-за отсутствия шифрования.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В вычислительной технике протокол аутентификации Challenge Handshake Authentication Protocol (CHAP) — это протокол аутентификации, изначально разработанный для использования протоколом Point to Point Protocol (PPP) для проверки подлинности пользователей. CHAP также применяется в других протоколах аутентификации, таких как RADIUS и Diameter. Практически все сетевые операционные системы поддерживают PPP с CHAP, равно как и большинство серверов сетевого доступа. CHAP также используется в PPPoE для аутентификации пользователей DSL. Поскольку PPP передает данные в незашифрованном виде, "открытым текстом", CHAP уязвим для злоумышленников, способных перехватить сеанс PPP. Злоумышленник может увидеть имя пользователя, запрос CHAP, ответ CHAP и любую другую информацию, связанную с сеансом PPP. Затем злоумышленник может провести оффлайн-атаку по словарю для получения исходного пароля. При использовании в PPP, CHAP также обеспечивает защиту от атак повторного воспроизведения (replay attacks) благодаря использованию запроса, генерируемого аутентификатором, которым обычно является сервер сетевого доступа. При использовании CHAP в других протоколах, он может передаваться в открытом виде или защищаться уровнем безопасности, таким как Transport Layer Security (TLS). Например, при передаче CHAP через RADIUS с использованием протокола пользовательских данных (UDP), любой злоумышленник, имеющий доступ к пакетам RADIUS, может провести оффлайн-атаку по словарю, аналогично PPP. CHAP требует, чтобы и клиент, и сервер знали исходный текст пароля, хотя сам пароль никогда не передается по сети. Таким образом, при использовании в PPP, CHAP обеспечивает более высокий уровень безопасности по сравнению с протоколом аутентификации паролем (PAP), который уязвим по обеим этим причинам.
In computing, the Challenge Handshake Authentication Protocol (CHAP) is an authentication protocol originally used by Point to Point Protocol (PPP) to validate users. CHAP is also carried in other authentication protocols such as RADIUS and Diameter. Almost all network operating systems support PPP with CHAP, as do most network access servers. CHAP is also used in PPPoE, for authenticating DSL users. As the PPP sends data unencrypted and "in the clear", CHAP is vulnerable to any attacker who can observe the PPP session. An attacker can see the user's name, CHAP challenge, CHAP response, and any other information associated with the PPP session. The attacker can then mount an offline dictionary attack in order to obtain the original password. When used in PPP, CHAP also provides protection against replay attacks by the peer through the use of a challenge which is generated by the authenticator, which is typically a network access server. Where CHAP is used in other protocols, it may be sent in the clear, or it may be protected by a security layer such as Transport Layer Security (TLS). For example, when CHAP is sent over RADIUS using User Datagram Protocol (UDP), any attacker who can see the RADIUS packets can mount an offline dictionary attack, as with PPP. CHAP requires that both the client and server know the clear text version of the password, although the password itself is never sent over the network. Thus when used in PPP, CHAP provides better security as compared to Password Authentication Protocol (PAP) which is vulnerable for both these reasons.
Преимущества CHAP
Когда абонент отправляет CHAP-запрос, сервер аутентификации получает его, извлекает из базы данных "известный" пароль и выполняет вычисления CHAP. Если полученные хеши совпадают, пользователь считается аутентифицированным. Если хеши не совпадают, попытка аутентификации пользователя отклоняется. Поскольку сервер аутентификации должен хранить пароль в открытом виде, невозможно использовать различные форматы для сохраненного пароля. В случае кражи злоумышленником всей базы данных паролей, все пароли будут видны в ней в незашифрованном виде. Таким образом, хотя CHAP может быть более безопасным, чем PAP при использовании по PPP-каналу, он не обеспечивает более безопасное хранение данных "в состоянии покоя", чем другие методы, такие как PAP.
When the peer sends CHAP, the authentication server will receive it, and obtain the "known good" password from a database, and perform the CHAP calculations. If the resulting hashes match, then the user is deemed to be authenticated. If the hashes do not match, then the user's authentication attempt is rejected. Since the authentication server has to store the password in clear text, it is impossible to use different formats for the stored password. If an attacker were to steal the entire database of passwords, all of those passwords would be visible "in the clear" in the database. As a result, while CHAP can be more secure than PAP when used over a PPP link, it prevents more secure storage "at rest" than with other methods such as PAP.
Варианты
MS CHAP аналогичен CHAP, но использует другой алгоритм хеширования и позволяет каждой из сторон аутентифицировать другую.
MS CHAP is similar to CHAP but uses a different hash algorithm, and allows for each party to authenticate the other.
Рабочий цикл
CHAP – это схема аутентификации, изначально использовавшаяся серверами протокола Point-to-Point (PPP) для проверки подлинности удаленных клиентов. CHAP периодически подтверждает подлинность клиента, используя трехэтапное согласование. Это происходит при установлении начального соединения (LCP) и может повторяться в любое время после этого. Подтверждение основано на общем секрете (например, пароле клиента). После завершения этапа установления соединения аутентификатор отправляет "запрос" (challenge) одноранговому узлу. Узел отвечает значением, вычисленным с использованием односторонней хеш-функции на основе запроса и секрета. Аутентификатор проверяет полученный ответ, сравнивая его со своим собственным вычисленным ожидаемым хеш-значением. Если значения совпадают, аутентификатор подтверждает аутентификацию, в противном случае соединение должно быть разорвано. В PPP аутентификатор может отправлять новые запросы одноранговому узлу через случайные интервалы времени, повторяя шаги 1–3. Однако, когда CHAP используется в большинстве случаев (например, в RADIUS), этот шаг не выполняется.
CHAP is an authentication scheme originally used by Point to Point Protocol (PPP) servers to validate the identity of remote clients. CHAP periodically verifies the identity of the client by using a three way handshake. This happens at the time of establishing the initial link (LCP), and may happen again at any time afterwards. The verification is based on a shared secret (such as the client's password). After the completion of the link establishment phase, the authenticator sends a "challenge" message to the peer. The peer responds with a value calculated using a one way hash function on the challenge and the secret combined. The authenticator checks the response against its own calculation of the expected hash value. If the values match, the authenticator acknowledges the authentication; otherwise it should terminate the connection. In PPP, the authenticator may send a new challenge at random intervals to the peer and repeats steps 1 through 3. However, when CHAP is used in most situations (e. g. RADIUS), this step is not performed.