Система одноразовых паролей S/Key
Система одноразовых паролей предназначена для защиты от случаев, когда злоумышленник "прослушивает" сеть, пытаясь перехватить пароль (или соответствующее ему выражение, например, хэш-значение) для дальнейшего его использования (англ, replay attack). В системе S/Key [RFC-1760] парольная фраза пересылается по сети только однажды и после этого больше не используется, что делает описанную атаку бессмысленной. При этом сама парольная фраза никогда не пересылается, т. е. пользователь может использовать свой привычный ему осмысленный пароль многократно. Пароль, собственно вводимый пользователем в интерфейсе программы, назовем секретом, чтобы не путать его далее с самим одноразовым паролем. Данная система основана на клиент/серверном подходе. Клиент генерирует одноразовый пароль по схеме, сервер верифицирует его. Использование одноразового пароля происходит в три фазы:
- Подготовительная. Сбор данных для ввода.
- Генерационная. Многократное применение хэш-функции к данным.
- Вывод. 64-битовый одноразовый пароль выводится в виде, удобном для восприятия пользователем.
Первоначально клиент и сервер должны быть сконфигурированы для использования единого секрета, т. е. он должен присутствовать и у клиента (например, в памяти пользователя), и у сервера. Далее, для создания уникальности одноразового пароля клиент и сервер должны определить случайное число (seed) и число итераций применения хэш-функции. Эти значения сервер в ответ на запрос об аутентификации (пакет инициализации) может выслать клиенту в открытом виде (plaintext), они не являются секретными. При этом необходимо учесть, что одноразовые пароли используются сериями, в каждой серии случайное число — единое для каждого одноразового пароля, а число итераций уменьшается на 1 с каждым случаем использования пароля. Рассмотрим пример такой серии, когда клиент очередной раз пытается получить доступ на сервер.