Варианты реализации систем аутентификации по одноразовым паролям:
Метод «запрос-ответ». Принцип работы:
Пользователь отправляет на сервер свой логин.
Сервер генерирует некую случайную строку и посылает ее обратно.
Пользователь с помощью своего ключа зашифровывает эти данные и возвращает их серверу.
Сервер же в это время «находит» в своей памяти секретный ключ данного пользователя и кодирует с его помощью исходную строку.
Сравнение обоих результатов шифрования. При их полном совпадении считается, что аутентификация прошла успешно.
Этот метод реализации технологии одноразовых паролей называется асинхронным, поскольку процесс аутентификации не зависит от истории работы пользователя с сервером и других факторов.
Метод «только ответ». В этом случае алгоритм аутентификации несколько проще:
Программное или аппаратное обеспечение пользователя генерирует исходные данные, которые будут зашифрованы и отправлены на сервер для сравнения. В процессе создания строки используется значение предыдущего запроса.
Сервер тоже обладает этими сведениями; зная имя пользователя, он находит значение предыдущего его запроса и генерирует по тому же алгоритму точно такую же строку.
Зашифровав ее с помощью секретного ключа пользователя (он также хранится на сервере), сервер получает значение, которое должно полностью совпадать с присланными пользователем данными.
Метод «синхронизация по времени».
В нем в качестве исходной строки выступают текущие показания таймера специального устройства или компьютера, на котором работает человек. При этом обычно используется не точное указание времени, а текущий интервал с установленными заранее границами (например, 30 с).
Эти данные зашифровываются с помощью секретного ключа и в открытом виде отправляются на сервер вместе с именем пользователя.
Сервер при получении запроса на аутентификацию выполняет те же действия: получает текущее время от своего таймера и зашифровывает его.
После этого сервер сравнивает два значения: вычисленное и полученное от удаленного компьютера.