LM-хеш

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

LM-хеш, или LAN Manager хеш — один из форматов, используемых Microsoft LAN Manager и версиями Microsoft Windows до Windows Vista для хранения пользовательских паролей длиной менее 15 символов. Это единственный вид шифрования, используемый в Microsoft LAN Manager, откуда и произошло название, и в версиях Windows до Windows Me. Он также поддерживается и более поздними версиями Windows для обратной совместимости, хотя в Windows Vista его приходится включать вручную.

Алгоритм[править | править вики-текст]

LM-хеш вычисляется следующим образом[1]:

  1. Пароль пользователя как OEM-строка приводится к верхнему регистру.
  2. Пароль дополняется нулями или обрезается до 14 байтов.
  3. Получившийся пароль разделяется на две части по 7 байтов.
  4. Эти значения используются для создания двух ключей DES, по одному для каждой 7-байтовой половинки, при этом 7 байтов рассматриваются как битовый поток и после каждых 7 битов вставляется ноль. Так создаются 64 бита, необходимые для ключа DES.
  5. Каждый из этих ключей используется для DES-шифрования ASCII-строки «KGS!@#$%», в результате получаются два 8-байтовых шифрованных значения.
  6. Данные шифрованные значения соединяются в 16-байтовое значение, являющееся LM-хешем.

Уязвимости защиты[править | править вики-текст]

Несмотря на то, что LM-хеш основан на качественном блочном шифре DES, он может быть легко атакован для подбора пароля из-за двух уязвимостей в его реализации. Во-первых, пароли длиннее 7 символов разделяются на две части и каждая часть хешируется отдельно. Во-вторых, все символы нижнего регистра приводятся к верхнему до хеширования пароля. Первая уязвимость позволяет атаковать каждую часть пароля по отдельности. Хотя и существует 95^{14} \approx 2^{92} различных паролей составленных из видимых ASCII-символов, но можно составить только 95^{7} \approx 2^{46} различных 7-байтовых частей пароля, используя одну кодовую таблицу. Ограничение набора символов из-за преобразования к верхнему регистру также сокращает количество вариантов до 69^{7} \approx 2^{43}. Применив brute force атаку отдельно к каждой половине, современные персональные компьютеры могут подобрать буквенно-цифровой LM-хеш за несколько часов.

Так как LM-хеш не использует случайных последовательностей, на него также возможны словарные криптоаналитические атаки, такие как радужные таблицы. В 2003 году была опубликована Ophcrack — атака, реализованная на основе rainbow tables. Она использует все уязвимости LM-шифрования и включает базу данных, достаточную для взлома практически всех число-символьных LM-хешей за несколько секунд. Многие утилиты для взлома, такие как RainbowCrack, L0phtCrack и Cain, сейчас также включают подобные атаки, что делает взлом LM-хешей тривиальным.

Реагируя на данные уязвимости, заложенные в LM-шифровании, Microsoft представила в Windows NT 3.1 алгоритм NTLM. Хотя LAN Manager и считается устаревшим и современные версии ОС Windows используют более надежный NTLM алгоритм хеширования, все ОС Windows до сих пор по умолчанию рассчитывают и хранят LM-хеш для совместимости с LAN Manager и Windows Me или более старыми клиентами. Считается, что отключение этой возможности, когда она не нужна, повышает безопасность[2].

Microsoft заявляла, что поддержка LM-хеширования будет полностью устранена в ОС Windows Vista[3]. Несмотря на это, в текущем релизе Vista содержится поддержка LM-хеша, хотя и отключенная по умолчанию. Её можно включить в «Локальных политиках безопасности» из утилит «Администрирования».

Пароли особенно уязвимые при LM-хешировании[править | править вики-текст]

Из-за разбиения паролей, пароли состоящие из 7 и менее символов особенно уязвимы, так же как и состоящие из слова длиной в 7 символов, за которым следует другое распространённое слово или единственный символ. Между тем, так как LM-хеширование не применяется к паролям длиной 15 символов и более, они относительно устойчивы. Если не используются версии Windows семейства 9x, поддержка и использование LM-хеша может быть отключена[4].

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

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