Строгая аутентификация на основе многоразового пароля в протоколе СНАР

Протокол аутентификации по квитированию вызова (Challenge Handshake Authentication Protocol, CHAP) входит в семейство протоколов PPR В этом протоколе предусмотрено 4 типа сообщений: Success (успех), Challenge (вызов), Response (ответ), Failure (ошибка).

Этот протокол используется, например, при аутентификации удаленных пользователей, подключенных к Интернету по коммутируемому каналу Здесь аутентификатором является сервер провайдера, а аутентифицируемым — клиентский компьютер (рис. 1). При заключении договора клиент получает от провайдера пароль (пусть, например, это будет сйово parol). Этот пароль хранится в базе данных провайдера в виде дайджеста Z = d(parol), полученного путем применения к паролю односторонней хэш-функции MD5.

Рис. 1. Аутентификация по протоколу СНАР

Аутентификация выполняется в следующей последовательности.

1. Пользователь-клиент активизирует программу (например, программу дозвона) удаленного доступа к серверу провайдера, вводя имя и назначенный ему пароль. Имя (на рисунке это "Moscow") передается по сети провайдеру в составе запроса на соединение, но пароль не передается в сеть ни в каком виде. То есть здесь мы имеем дело со строгой аутентификацией.

2. Сервер провайдера, получив запрос от клиента, генерирует псевдослучайное слово-вызов (пусть это будет слово «challenge») и передает его клиенту вместе со значением, идентифицирующем сообщение в рамках данного сеанса (ID), и собственным именем (здесь "Paris"). Это сообщение типа Challenge. (Для защиты от перехвата ответа аутен-тификатор должен использовать разные значения слова-вызова при каждой процедуре аутентификации.)

3. Программа клиента, получив этот пакет, извлекает из него слово-вызов, добавляет к нему идентификатор и вычисленный локально дайджест Z = d(parol), а затем вычисляет с помощью все той же функции MD5 дайджест Y = d{(ID, challenge, J(parol)} от всех этих трех значений. Результат клиент посылает серверу провайдера в пакете Response.

4. Сервер провайдера сравнивает полученный по сети дайджест Ус тем значением, которое он получил, локально применив ту же хэш-функцию к набору аналогичных компонентов, хранящихся в его памяти.

5. Если результаты совпадают, то аутентификация считается успешной и аутентификатор посылает партнеру пакет Success.

Аналогичный алгоритм аутентификации применяется в семействе ОС Windows. Там многоразовые пароли пользователей также хранятся в базе данных сервера в виде дайджестов, а по сети в открытом виде передается только слово-вызов. Кажется, что такой способ хранения паролей надежно защищает их от злоумышленника, даже если он сможет получить к ним доступ. Действительно, ведь даже теоретически нельзя восстановить исходное значение по дайджесту. Однако создатель первого червя Роберт Моррис решил эту проблему. Он разработал довольно простую программу, которая генерировала возможные варианты паролей, как используя слова из словаря, так и путем последовательного перебора символов. Для каждого сгенерированного слова вычислялся дайджест и сравнивался с дайджестами из файла паролей. Удивительно, но такая стратегия оказалась весьма эффективной, и хакеру удалось завладеть несколькими паролями.