MS-CHAP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

MS-CHAP (англ. Microsoft Challenge Handshake Authentication Protocol) — протокол, разработанный корпорацией Microsoft для выполнения процедур проверки подлинности удалённых рабочих станций Windows. Протокол поддерживает функциональные возможности, привычные пользователям локальных сетей, и интегрирует алгоритмы шифрования и хеширования, действующие в сетях Windows. Для проведения проверки подлинности без передачи пароля протокол MS-CHAP, как и CHAP, использует механизм «вызов-ответ».

Протокол MS-CHAP генерирует запрос и ответ с помощью алгоритма хеширования MD4 (англ. Message Digest 4) и алгоритма шифрования DES (англ. Data Encryption Standard); предусмотрены также механизмы возврата сообщений об ошибках подключения и возможности изменения пароля пользователя. Ответный пакет использует специальный формат, предназначенный для использования сетевыми средствами систем Windows 95, Windows 98, Windows Millennium Edition, Windows NT, Windows 2000 и Windows XP.[1][2]

MS-CHAP v1[править | править вики-текст]

MS-CHAP v1(RFC 2433) представляет собой зашифрованный механизм аутентификации, похожий на CHAP. Как и в CHAP, сервер удаленного доступа посылает удаленному клиенту запрос, состоящий из идентификатора сеанса(session ID) и произвольной строки запроса. Удаленный клиент должен вернуть имя пользователя и MD4-хеш строку запроса, идентификатор сеанса и MD4-хеш пароля. Одно из различий между CHAP и MS-CHAP v1 является то, что, в CHAP незашифрованная версия пароля должна быть доступна для проверки на ответный вызов. В MS-CHAP v1 серверу удаленного доступа требуется только MD4-хеш пароль, чтобы подтвердить запрос-ответ. В Windows 2000, пароль пользователя хранится в виде MD4-хеша и в обратимо-зашифрованной форме. При использовании CHAP сервер удаленного доступа расшифровывает обратимо-зашифрованный пароль для подтверждения ответа удаленного клиента доступа. Таким образом, пароль не передается в открытом виде.[3]

Аутентификация в MS-CHAP v1 состоит из трех сообщений[3]:

  • Сервер удаленного доступа посылает сообщение, содержащее идентификатор сессии и произвольную строку запроса.
  • Клиент удаленного доступа отправляет ответ, содержащий имя пользователя в открытом виде, хеш строку запроса, идентификатор сеанса и MD4-хеш пароля клиента, используя MD4 (односторонний алгоритм хеширования).
  • Сервер удаленного доступа дублирует хеш и сравнивает его с ответом. Если хеш такой же, сервер удаленного доступа посылает обратно сообщение об успехе. Если хеши разные, то отправляется сообщение об отказе.

MS-CHAP v1 также учитывает коды ошибок, в том числе такие как "срок действия пароля истек" код и изменение пароля. MS-CHAP v1 защищает от повторяющихся атак, используя произвольную строку запроса (arbitrary challenge string) на каждую попытку аутентификации. MS-CHAP v1 не обеспечивают защиту от имитации удаленного сервера.

Если MS-CHAP v1 выбран в качестве протокола аутентификации и используется шифрование MPPE, то общие секретные ключи шифрования генерируются каждым PPP пиром. MS-CHAP v1 также поддерживает набор сообщений, которые позволяют пользователю изменить свой пароль в процессе аутентификации.[3]


MS-CHAP v2[править | править вики-текст]

Семейство операционных систем Windows Server 2003 включает поддержку протокола Microsoft Challenge Handshake Authentication Protocol версии 2 (MS-CHAP v2) RFC 2759, который лучше обеспечивает безопасность подключений удаленного доступа. MS-CHAP v2 устраняет некоторые недостатки MS-CHAP v1, как показано в следующей таблице.[4]

Проблема протокола MS-CHAP версии 1 Решение протокола MS-CHAP версии 2
Шифрование ответа LAN Manager, применяемое для обратной совместимости со старыми клиентами удаленного доступа Microsoft, криптографически уязвимо.

MS-CHAP v2 больше не разрешает использовать шифрованные ответы LAN Manager.

Шифрование изменения пароля LAN Manager криптографически уязвимо. MS-CHAP v2 больше не разрешает использовать шифрованные изменения пароля LAN Manager.
Возможна только односторонняя проверка подлинности. Клиент удаленного доступа не может проверить, подключается ли он к серверу удаленного доступа своей организации или к маскирующемуся серверу.

MS-CHAP v2 обеспечивает двустороннюю проверку подлинности, называемую также взаимной проверкой подлинности. Клиент удаленного доступа получает подтверждение, что сервер удаленного доступа, к которому он пытается подключиться, имеет доступ к паролю пользователя.

При использовании 40-битного шифрования ключ шифрования основан на пароле пользователя. Всякий раз, когда пользователь подключается с одним и тем же паролем, создается один и тот же ключ шифрования.

В MS-CHAP v2 ключ шифрования всегда основан на пароле пользователя и произвольной строке запроса. Каждый раз, когда пользователь подключается с одним и тем же паролем, создаются разные ключи шифрования.

Для данных, пересылаемых по подключению в обоих направлениях, используется единый ключ шифрования.

При использовании протокола MS-CHAP v2 создаются отдельные ключи шифрования для приема и передачи данных.

MS-CHAP v2 работает следующим образом:[4]

  • Система проверки подлинности (сервер удаленного доступа или сервер IAS) отправляет клиенту удаленного доступа запрос, содержащий идентификатор сеанса и произвольную строку запроса.
  • Клиент удаленного доступа отправляет ответ, состоящий из трёх частей:
  1. Имя пользователя
  2. Произвольная строка запроса
  3. Необратимо зашифрованная полученная строка запроса, строка запроса, идентификатор сеанса и пароль пользователя.
  • Система проверки подлинности проверяет ответ от клиента и отправляет ответ со следующей информацией:
  1. Уведомление о принятии или отклонении попытки подключения.
  2. Запрос на проверку подлинности, основанный на отправленной строке запроса, строке запроса, зашифрованном ответе клиента и пароле пользователя.
  • Клиент удаленного доступа проверяет ответ на проверку подлинности и, если он верен, использует подключение. Если же ответ на проверку подлинности не верен, клиент удаленного доступа разрывает подключение.

то есть:[5]

  • C = SHA1 (CS, CC, UNAME)
  • P = MD4 (password)
  • K1|K2|K3 = P|5  byte of 0
  • R = DES(K1,C)|DES(K2,C)|DES(K3,C)

Криптоанализ и атаки[править | править вики-текст]

В этом алгоритме есть ряд проблем, совокупность которых могут привести к его успешному взлому: Во-первых, все элементы вызова и ответа, помимо MD4-хеш пароля, передаются в незашифрованном виде по проводам или легко рассчитываются на основе позиций, которые отправляются по сети. Это означает, что для злоумышленника типа человек посередине получения хеша пароля будет достаточно, чтобы повторно авторизоваться. Во-вторых, создание ключей является потенциально слабым. Дополнение 5 байт нулями означает, что последний ключ DES имеет ключевое пространство 2^16. Наконец, один и тот же исходный текст шифруется с помощью K1 и K2, что означает, что сложности 2^56 достаточно, чтобы взломать как K1, так и K2. После того, как злоумышленник имеет K1, K2 и K3, он получает MD4-хеш пароля, которого достаточно для повторной аутентификации.[6]

На аппаратном комплексе производства Pico Computing, состоящем из 48 ПЛИС с 40 ядрами DES на 450 МГц в каждом, подбор ключа занимает менее суток.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

Источники[править | править вики-текст]

  • MS-CHAP v1 (англ.).