MS-CHAP (англ. Microsoft Challenge Handshake Authentication Protocol) — протокол проверки подлинности соединений между сервером и клиентом без передачи пароля последнего, использующий механизм «вызов-ответ». MS-CHAP является реализацией протокола CHAP, в которой предусмотрены механизм возврата сообщений об ошибках аутентификации и возможность изменения пароля пользователя.[1][2] Кроме того MS-CHAP обеспечивает создание ключей шифрования для протокола MPPE, совместно с которым применяется в Microsoft PPTP[2][3].
MS-CHAP является версией протокола CHAP, разработанной компанией Microsoft в 1997 году для Windows 3.1 и Windows 95. Затем MS-CHAP был переименован в MS-CHAPv1 и заменён MS-CHAPv2 из-за недостатков безопасности протокола, основным из которых была отправка клиентом ответа, содержащего две величины: «LAN Manager Challenge Responce» и «NT Challenge Responce », - что делалось для поддержания хранимых на сервере учётных записей пользователей, созданных до появления Windows NT хеша и ещё не обновлённых.[1] Оба значения вычислялись по одному механизму, но с использованием разных хешей: LAN Manager и NT LAN Manager, - где первый хеш был значительно слабее второго и не обеспечивал достаточный уровень безопасности. MS-CHAPv2 был представлен в 1998 году вместе с выпуском Windows 98 и Windows NT4.0 SP4. В 1999 году Брюс Шнайер , Дэвид Вагнер и Пейтер Затко опубликовали исследование безопасности протокола MS-CHAPv2[3], в котором указали уязвимости протокола и методы атаки. Microsoft исключила протокол MS-CHAPv1 из использования в Windows Vista в 2007 году.[4] C 2012 года компания Microsoft предупреждает, что использование комбинации протоколов PPTP и MS-CHAPv2 в качестве основного механизма аутентификации для VPN является небезопасным, и рекомендует использовать механизм аутентификации PEAP-MS-CHAPv2 либо использовать VPN-туннели L2TP, IKEv2, SSTP в связке с протоколами MS-CHAPv2 или EAP-MS-CHAPv2.[5]
MS-CHAPv1 представляет собой механизм аутентификации, похожий на CHAP, но имеющий важное отличие: в CHAP сервер должен хранить в обратимо-зашифрованном виде пароль клиента, который расшифровывается при каждой проверке подлинности клиента, а в MS-CHAP v1 серверу для этого требуется только MD4-хеш пароля.[6]
Механизм MS-CHAPv1 состоит из следующих этапов[6][3]:
MS-CHAP v2 устраняет некоторые недостатки MS-CHAP v1, как показано в следующей таблице.[7]
Проблема протокола MS-CHAP версии 1 | Решение протокола MS-CHAP версии 2 |
---|---|
Шифрование ответа LAN Manager, применяемое для обратной совместимости со старыми клиентами удаленного доступа Microsoft, криптографически уязвимо. |
MS-CHAP v2 больше не разрешает использовать шифрованные ответы LAN Manager, поскольку LAN Manager хеш является гораздо более слабой хеш-функцией и может быть взломан, а затем использован для взлома Windows NT хеша. Таким образом, исключив LAN Manager хеш в MS-CHAPv2, Microsoft сделала невозможной атаку методом «разделяй и властвуй» [3]. |
Шифрование изменения пароля LAN Manager криптографически уязвимо. | MS-CHAP v2 больше не разрешает использовать шифрованные изменения пароля LAN Manager. |
Возможна только односторонняя проверка подлинности. Клиент удаленного доступа не может проверить, подключается ли он к серверу удаленного доступа своей организации или к маскирующемуся серверу. |
MS-CHAP v2 обеспечивает двустороннюю проверку подлинности, называемую также взаимной проверкой подлинности. Клиент удаленного доступа получает подтверждение, что сервер удаленного доступа, к которому он пытается подключиться, имеет доступ к паролю пользователя. |
При использовании 40-битного шифрования ключ шифрования основан на пароле пользователя. Всякий раз, когда пользователь подключается с одним и тем же паролем, создается один и тот же ключ шифрования. |
В MS-CHAP v2 ключ шифрования всегда основан на пароле пользователя и произвольной строке запроса. Каждый раз, когда пользователь подключается с одним и тем же паролем, создаются разные ключи шифрования. |
Для данных, пересылаемых по подключению в обоих направлениях, используется единый ключ шифрования. |
При использовании протокола MS-CHAP v2 создаются отдельные ключи шифрования для приёма и передачи данных. |
Механизм работы протокола MS-CHAPv2[2][3]:
MS-CHAPv2 является протоколом аутентификации в протоколе Microsoft PPTP, в котором протоколом шифрования служит MPPE. MPPE требует использования ключей шифрования длиной 40 бит или 128 бит, генерируемых процессе проверки подлинности в MS-CHAPv2.
Получение ключей MPPE из учётных данных MS-CHAPv2 работает следующим образом[3]:
Для 40-битных сеансовых ключей в пункте (2) выполняется следующее:
0x00
, 84-байтовая «магическая» константа и 40 байт 0xF2
. Результат обрезается до 8 байт.0xD1269E
, в результате чего получается 40-битный ключ (с 24-битным префиксом, то есть на самом деле RC4, используемый в MPPE, получает 64-битный ключ)Для 128-битных сеансовых ключей процесс в пункте (2) выглядит следующим образом:
0x00
, 84-байтовая «магическая» константа и 40 байт 0xF2
. Результат обрезается до 16 байт.«Магические» константы различны в зависимости от того, в каком направлении используется ключ - для шифрования трафика от клиента к серверу или от сервера к клиенту.
Challenge-пакет PPP CHAP[2]
Response-пакет [2]
Response-пакет имеет ту же структуру, что и Challenge-пакет.
Success-пакет [2]
Поле Message содержит строку 42-байтового ответа. Формат поля Message: S=<auth_string> M=<message>
A
-F
(если имеются) должны быть в верхнем регистре.Failure-пакет [2]
Failure-пакет имеет ту же структуру, что и Success-пакет. Однако, в поле Message хранится форматированный текст, который, вопреки стандартным правилам CHAP, влияет на работу протокола. Формат поля Message:
E=eeeeeeeeee R=r C=cccccccccccccccccccccccccccccccc V=vvvvvvvvvv M=<msg>
1
, если повторная попытка разрешена, и 0
, если нет.В этом алгоритме есть ряд проблем, совокупность которых может привести к его успешному взлому.
Атака перебором по словарю [3]
Процедура получения «Challenge Response» создает серьезную слабость в протоколах MS-CHAP: она позволяет атакующему ускорить перебор по словарю на коэффициент , что имеет довольно внушительный эффект с учётом относительно низкой энтропии большинства паролей пользователей.
«Authenticator Challenge», «Peer Authenticator Challenge» и «UserName» предоставляются в открытом виде и их можно подслушать, а значит «Challenge Hash» может быть легко получен из общедоступной информации. Велика вероятность восстановить пароль, основываясь на том, что многие пароли образованы из слов словаря или иным образом легко угадываемы. Прежде всего стоит отметить, что величина Z (определённая на стадии (3с)) может быть легко восстановлена. Поскольку существует только возможных вариантов Z (так как для каждого из первых двух байт в Z существует вариантов значений), и у нас есть известная пара открытый текст («Challenge Hash») — шифротекст (DESz(«Challenge Hash»)), то мы можем перебрать каждый из вариантов для Z, что раскроет последние два байта NT-хеша пароля.
Для перебора по словарю выполняется предвычисление: хешируется каждый вероятный пароль. Результаты хеширования сортируются по двум последним байтам , а затем, когда виден обмен MS-CHAP и можно восстановить последние два байта NT-хеша (с использованием описанного выше метода), отбираются все подходящие записи из списка хешей . Это предоставляет атакующему набор вероятных паролей, которые дают нужное значение для последних двух байтов их NT-хеша. Далее каждый из этих вариантов проверяется методом грубой силы: вычисляется его «Challenge Response» и сверяется с подслушанным значением.
Таким образом, предложенная выше оптимизированная атака работает около раз быстрее, чем стандартная атака перебора по словарю, где проверяются все пароли. Она применима как к MS-CHAPv1 так и к MS-CHAPv2. Тем не менее, такая уязвимость гораздо важнее для MS-CHAPv2, потому что в случае MSCHAPv1 легче атаковать LanManager-хеш, чем NT-хеш.
Атака полным перебором DES ключей[9]
Алгоритм генерации «Challenge Response» является слабым звеном, даже когда пароли содержат достаточную энтропию. NT-хеш может быть восстановлен с помощью подбора двух бит третьего DES ключа, что требует вычислений, и двух полных переборов для первого и второго DES ключей. Каждый DES ключ требует испытаний, но чтобы не перебирать вариантов для первых двух ключей, можно использовать факт, что обе DES-операции шифруют один и тот же «Challenge Hash» разными ключами. Поэтому достаточно проделать лишь операции шифрования:
desKeyX = null;
desKeyY = null;
for (long i=0; i<2^56; i++) {
result = DES(key[i], plaintext);
if (result == ciphertext1) {
desKeyX = result;
} else if (result == ciphertext2) {
desKeyY = result;
}
}
После того, как NT-хеш восстанавливается, все шифрованные сеансы могут быть прочитаны и схема аутентификации может быть взломана без каких-либо усилий. Это показывает, что даже при использовании 128-битных ключей RC4 для MPPE, протокол MS-CHAP обеспечивает лишь эквивалент 56-битной безопасности.
Протокол ослабляет 40-битные MPPE ключи, устанавливая в старшие 24 бита 64-битного RC4 ключа значение 0xD1269E
. Известно, что, если кто-либо имеет право выбирать старшие биты ключа RC4, то он может навязать пользователю слабый класс ключей для RC4. Поэтому, если разработчики MS-CHAP хотели встроить лазейку в протоколе, они могли использовать наличие префикса для ослабления RC4.
В статистических испытаниях было обнаружено, что для ключей, которые начинаются с 0xD1269E
, первый и второй байты на выходе RC4 принимают значения 0x09
и 0x00
с вероятностью 0,0054 и 0,0060 соответственно, что заметно больше, чем вероятность 1/256 = 0,0039, которую можно ожидать от хорошего шифра.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .