и сервера не синхронизированы и передача информации занимает некоторое время, сервер должен допускать несколько возможных значений времени.
Однако если сервер признает допустимым слишком большой разброс значений времени, то пользователь С может перехватить значение, сгенерированное пользователем А, и отправить его на сервер, с успехом выдавая себя за А. Эта атака называется атакой воспроизведения. Пользователь С не знает секретного ключа шифрования пользователя А, но, быстро передавая воспроизведенный шифртекст, может имитировать повторное обращение пользователя А к серверу.
Рис. 2.3.
Аутентификация при помощи неявного запроса
Этот механизм не слишком серьезно совершенствует схему "запрос-ответ", он также с трудом поддерживает аутентификацию пользователя на многих серверах и не обеспечивает взаимной аутентификации, кроме того, он уязвим для атак воспроизведения. Лучшие свойства механизма "запрос-ответ" и неявного запроса на базе времени удалось совместить при использовании для аутентификации односторонней хэш-функции.
Аутентификация с использованием хэш-функции
Для решения проблем аутентификации, связанных с неявными запросами, Лесли Лампорт [85] предложил использовать одноразовые пароли, генерируемые при помощи односторонней хэш-функции (см. лекцию 3). Эта идея нашла воплощение в системе одноразовых паролей S/Key One-Time Password System [136]. Система S/Key, применяя одностороннюю хэш-функцию, генерирует последовательность одноразовых паролей. Начальное значение хэш-кода вычисляется путем хэширования секретного пароля пользователя, который сцеплен с несекретным случайным числом, выработанным генератором случайных чисел.
Секретный пароль должен иметь длину не менее 8 символов. Последовательность одноразовых паролей формируется в результате многократного применения секретной хэш-функции (от 500 до 1000 ). То есть первый одноразовый пароль генерируется путем применения хэш-функции к секретному паролю пользователя определенное количество раз ( N ), следующий одноразовый пароль - путем применения хэш-функции к секретному паролю пользователя только (N - 1) раз и т.д.
Субъект, получивший одноразовый пароль путем прослушивания сети, не в состоянии сгенерировать следующий пароль, так как для этого требуется просчитать хэш-функцию в обратном направлении. Это не может быть сделано без знания секретного пароля, с которого начинались итерации. Поскольку в системе S/Key секретный пароль пользователя никогда не передается по сети и не хранится ни сервером, ни клиентом, риск хищения отсутствует.