MS-CHAP: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 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 хэша и еще не обновленных.{{sfn|RFC 2433|1998}} Оба значения вычислялись по одному механизму, но с использованием разных хэшей: [[LM-хеш|LAN Manager]] и [[NTLM|NT LAN Manager]], - где первый хэш был значительно слабее второго и не обеспечивал достаточный уровень безопасности. MS-CHAPv2 был представлен в 1998 году вместе с выпуском [[Windows 98]] и [[Windows NT]]4.0 SP4. В 1999 году [[Брюс Шнайер]] , [[:en:David A. Wagner|Дэвид Вагнер]] и [[:en:Peiter Zatko|Пейтер Затко]] опубликовали исследование безопасности протокола MS-CHAPv2{{sfn|Cryptanalysis of MS-CHAP|1999}}, в котором указали уязвимости протокола и методы атаки. Microsoft исключила протокол MS-CHAPv1 из использования в [[Windows Vista]] в 2007 году.{{sfn|Deprecated MS-CHAPv1|2007}} C 2012 года компания Microsoft предупреждает, что использование комбинации протоколов [[PPTP]] и MS-CHAPv2 в качестве основного механизма аутентификации для [[VPN]] является небезопасным, и рекомендует использовать механизм аутентификации [[PEAP]]-MS-CHAPv2 либо использовать VPN-туннели [[L2TP]], [[IKE|IKEv2]], [[:en:Secure Socket Tunneling Protocol|SSTP]] в связке с протоколами MS-CHAPv2 или [[EAP]]-MS-CHAPv2.{{sfn|Советы по безопасности Microsoft|2012}}
 
== MS-CHAP v1 ==
Строка 149:
Прежде всего стоит отметить, что величина Z (определенная на стадии (3с)) может быть легко восстановлена. Поскольку существует только <math>2^{16}</math> возможных вариантов Z (так как для каждого из первых двух байт в Z существует <math>2^8</math> вариантов значений), и у нас есть известная пара открытый текст («Challenge Hash») — шифротекст (DESz(«Challenge Hash»)), то мы можем перебрать каждый из вариантов для Z, что раскроет последние два байта NT-хэша пароля.
 
Для перебора по словарю выполняется [[:en:Precomputation|предвычисление]]: хэшируется каждый вероятный пароль. Результаты хэширования сортируются по двум последним байтам , а затем, когда виден обмен MS-CHAP и можно восстановить последние два байта NT-хэша (с использованием описанного выше метода), отбираются все подходящие записи из списка хэшей . Это предоставляет атакующему набор вероятных паролей, которые дают нужное значение для последних двух байтов их NT-хэша. Далее каждый из этих вариантов проверяется методом грубой силы: вычисляется его «Challenge Response» и сверяется с подслушанным значением.
 
Таким образом, предложенная выше оптимизированная атака работает около <math>2^{16}</math> раз быстрее, чем стандартная атака перебора по словарю, где проверяются все пароли. Она применима как к MS-CHAPv1 так и к MS-CHAPv2. Тем не менее, такая уязвимость гораздо важнее для MS-CHAPv2, потому что в случае MSCHAPv1 легче атаковать LanManager-хэш, чем NT-хэш.