Сравнительные особенности хранения паролей в базе данных в шифрованном и хешированием виде.

Виды противодействия КС попыткам подбора паролей.

Еще одним аспектом политики учетных записей пользователей КС должно стать определение противодействия системы попыт­кам подбора паролей.

Могут применяться следующие правила:

• ограничение числа попыток входа в систему;

• скрытие логического имени последнего работавшего пользо­вателя (знание логического имени может помочь нарушителю подобрать или угадать его пароль);

• учет всех попыток (успешных и неудачных) входа в систему в журнале аудита.

Реакцией системы на неудачную попытку входа пользователя могут быть:

• блокировка учетной записи, под которой осуществляется по­пытка входа, при превышении максимально возможного числа попыток (на заданное время или до ручного снятия блокировки администратором);

• нарастающее увеличение временной задержки перед предо­ставлением пользователю следующей попытки входа.

Постоянная блокировка учетной записи при обнаружении по-1 пытки подбора пароля (до снятия блокировки администратором) менее целесообразна, поскольку она позволит нарушителю наме­ренно заблокировать работу в КС легального пользователя (реали­зовать угрозу нарушения доступности информации).

При любой реакции системы на попытку подбора пароля не­обходимо в настройках параметров политики учетных записей обеспечить сброс значения счетчика попыток входа в систему под \ конкретной учетной записью через заданный промежуток време­ни, иначе значения счетчика будут суммироваться для разных се­ансов работы пользователя.

При первоначальном вводе или смене пароля пользователя обычно применяются два классических правила:

• символы вводимого пароля не отображаются на экране (это же правило, применяется и для ввода пользователем пароля при его входе в систему);

• для подтверждения правильности ввода Пароля (с учетом пер­вого правила) этот ввод повторяется дважды.

Очевидно, что в базе данных учетных записей пользователей КС пароли не могут храниться в открытом виде (иначе к ним может получить доступ как минимум администратор системы). Для хранения паролей возможно их предварительное шифрование или хеширование.

Шифрование паролей имеет два недостатка:

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

• существует опасность расшифрования любого пароля и полу­чения его в открытом виде.

Хеширование является необратимым преобразованием и зна­ние хеш-значения пароля не даст нарушителю возможности его получения в открытом виде (он сможет только пытаться подо­брать пароль при известной функции хеширования). Поэтому го­раздо более безопасным является хранение паролей в хеширован­ием виде. Недостатком является то, что не существует даже теоре­тической возможности восстановить забытый пользователем па­роль.

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

Пусть пользователь КС получает список паролей Pi, Р2,..., Р„ ..., Ри. Каждый из паролей действует только на один сеанс входа (Р[ — на первый, Р2 — на второй и т.д.). В этом случае знание уже исполь­зовавшегося пользователем пароля ничего не даст нарушителю, а при каждом входе легального пользователя возможна проверка на использование данного пароля кем-либо еще.

Недостатки схемы одноразовых паролей:

• организация защищенного хранения длинного списка паро­лей (либо его запоминание, что маловероятно);

• неясность с номером следующего пароля, если после ввода предыдущего пароля из списка вход пользователя в систему не был осуществлен из-за сбоя в работе КС.

Эти недостатки могут быть устранены, если список паролей ге­нерировать на основе некоторой необратимой функции, например функции хеширования. Пусть Р — начальный пароль пользователя, a F — необратимая функция. Обозначим: F'(P) = F(F(...F(P)...)) (фун­кция F применяется последовательно i раз). Тогда список одно­разовых паролей создается следующим образом: Р, = F" (Р), Р2 = = F-1(P), .... Рл_! = F(F(P)), Р„ = F(P).

При сбое в процессе входа пользователя в КС всегда осуществ­ляется выбор следующего пароля из списка, а система последова­тельно применяет функцию F к введенному пользователем паро­лю, вплоть до совпадения с последним принятым от него паро­лем (и тогда пользователь допускается к работе в системе) или до превышения длины списка паролей (в этом случае попытка входа ] пользователя в КС отвергается).

Наиболее известным программным генератором одноразовых паролей является система S/KEY компании Bellcore. Идея этой системы состоит в следующем. Пусть имеется односторонняя функция f (то есть функция, вычислить обратную которой за приемлемое время не представляется возможным). Эта функция известна и пользователю, и серверу аутентификации. Пусть, далее, имеется секретный ключ K, известный только пользователю.

На этапе начального администрирования пользователя функция f применяется к ключу K n раз, после чего результат сохраняется на сервере. После этого процедура проверки подлинности пользователя выглядит следующим образом:

· сервер присылает на пользовательскую систему число (n-1);

· пользователь применяет функцию f к секретному ключу K (n-1) раз и отправляет результат по сети на сервер аутентификации;

· сервер применяет функцию f к полученному от пользователя значению и сравнивает результат с ранее сохраненной величиной. В случае совпадения подлинность пользователя считается установленной, сервер запоминает новое значение (присланное пользователем) и уменьшает на единицу счетчик (n).

На самом деле реализация устроена чуть сложнее (кроме счетчика, сервер посылает затравочное значение, используемое функцией f), но для нас сейчас это не важно. Поскольку функция f необратима, перехват пароля, равно как и получение доступа к серверу аутентификации, не позволяют узнать секретный ключ K и предсказать следующий одноразовый пароль.

Система S/KEY имеет статус Internet-стандарта (RFC 1938).

Другой подход к надежной аутентификации состоит в генерации нового пароля через небольшой промежуток времени (например, каждые 60 секунд), для чего могут использоваться программы или специальные интеллектуальные карты (с практической точки зрения такие пароли можно считать одноразовыми). Серверу аутентификации должен быть известен алгоритм генерации паролей и ассоциированные с ним параметры; кроме того, часы клиента и сервера должны быть синхронизированы.