- •13.1. Управление идентификацией и доступом
- •13.1.1. Особенности управления доступом
- •13.1.2. Функционирование системы управления доступом
- •Средства управления сетевым доступом
- •Организация защищенного удаленного доступа
- •13.2.1. Протоколы аутентификации удаленных пользователей
- •Протокол рар
- •Протокол chap
- •Протокол s/Key
- •13.2.2. Централизованный контроль удаленного доступа
Протокол s/Key
Одним из наиболее распространенных протоколов аутентификации на основе одноразовых паролей является стандартизованный в Интернете протокол S/Key (RFC 1760) [9, 32]. Этот протокол реализован во многих системах, требующих проверки подлинности удаленных пользователей, в частности в системе TACACS+ компании Cisco.
Перехват одноразового пароля, передаваемого по сети в процессе аутентификации, не предоставляет злоумышленнику возможности повторно использовать этот пароль, так как при следующей проверке подлинности необходимо предъявлять уже другой пароль. Поэтому схема аутентификации на основе одноразовых паролей, в частности S/Key, позволяет передавать по сети одноразовый пароль в открытом виде и, таким образом, компенсирует основной недостаток протокола аутентификации РАР.
Однако следует отметить, что протокол S/Key не исключает необходимость задания секретного пароля для каждого пользователя. Этот секретный пароль используется только для генерации одноразовых паролей. Для того чтобы злоумышленник не смог по перехваченному одноразовому паролю вычислить секретный исходный пароль, генерация одноразовых паролей выполняется с помощью односторонней, т. е. необратимой, функции. В качестве такой односторонней функции в спецификации I протокола S/Key определен алгоритм хэширования MD4 (Message Digest Algorithm 4). Некоторые реализации протокола S/Key в качестве односторонней функции используют алгоритм хэширования MD5 (Message Digest Algorithm 5).
Поясним основную идею протокола S/Key на следующем примере.
Пусть удаленному пользователю (проверяемой стороне) для регулярного прохождения аутентификации необходим набор из 100 одноразовых паролей.
Проверяемой стороне заранее назначается генерируемый случайный ключ К в качестве ее секретного постоянного пароля. Затем проверяющая сторона выполняет процедуру инициализации списка одноразовых jV= 100 паролей. В ходе данной процедуры проверяющая сторона с помощью односторонней функции h вычисляет по ключу К проверочное значение wl0l для 1-го одноразового пароля. Для вычисления значения wm ключ К подставляют в качестве аргумента функции И и данная функция рекурсивно выполняется 101 раз:
щ = Л(Ю, Щ = h(h(K)), w3 = h(h(h(K))), ...,
wm = h(h(h(...h(K)...))) = hm(K).
Идентификатор пользователя и соответствующий этому пользователю секретный ключ К, а также несекретные числа ./V и wl0, сохраняются в БД проверяющей стороны. Число ./V является номером одноразового пароля для очередной аутентификации из списка одноразовых паролей. Следует отметить, что после использования каждого такого одноразового пароля номер ./V уменьшается на единицу.
В процессе очередной аутентификации, проводимой после инициализации, проверяемая сторона предоставляет проверяющей стороне свой идентификатор, а та возвращает соответствующее этому идентификатору число N. В нашем примере N= 100. Затем проверяемая сторона вычисляет по своему секретному ключу К одноразовый пароль
w'm = h(h(h(...h(K))...))) = hm(K) и посылает его проверяющей стороне.
Получив значение w'm, проверяющая сторона выполняет над ним 1 раз одностороннюю функцию w'm = h{w'm). Далее проверяющая сторона сравнивает полученное значение w'm со значением wm из БД. Если они совпадают, то это означает, что и w'm - wm и, следовательно, аутентификация является успешной.
В случае успешной аутентификации проверяющая сторона заменяет в БД для проверяемой стороны число wm на полученное от нее число w'm, а число N на N=N- 1. С учетом того, что при успешной аутентификации номер одноразового пароля N для очередной аутентификации уменьшился на 1, в БД проверяющей стороны совместно с идентификатором и секретным ключом К проверяемой стороны будут храниться числа (N- 1) и wm. Здесь под wl00 понимается полученный от проверяемой стороны при успешной аутентификации последний одноразовый пароль. После использования очередного списка одноразовых паролей процедура инициализации должна выполняться снова.
Иногда желательно, чтобы пользователь имел возможность сам назначать секретный постоянный пароль. Для осуществления такой возможности спецификация S/Key предусматривает режим вычисления одноразовых паролей не только на основе секретного пароля, но и на основе генерируемого проверяющей стороной случайного числа. Таким образом, в соответствии с протоколом S/Key за каждым пользователем закрепляется идентификатор и секретный постоянный пароль.
Перед тем как проходить аутентификацию, каждый пользователь должен сначала пройти процедуру инициализации очередного списка одноразовых паролей, т. е. фазу парольной инициализации. Данная фаза выполняется по запросу пользователя на сервере удаленного доступа.
Для ускорения процедуры аутентификации определенное число одноразовых паролей, например, несколько десятков, может быть вычислено заранее и храниться на удаленном компьютере в зашифрованном виде.
Протокол аутентификации на основе одноразовых паролей S/Key применяют, в частности, для улучшения характеристик протоколов централизованного контроля доступа к сети удаленных пользователей TACACS и RADIUS.