Одноразовые пароли (One-Time Passwords, OTP)

Одноразовые пароли (OTP) используются для подтверждения аутентификации. Это случайно сгенерированные коды, которые проверяют, является ли пользователь тем, за кого себя выдает. Они часто применяются в двухфакторной аутентификации после проверки учётных данных.

Для использования OTP необходима доверенная система, такая как проверенный адрес электронной почты или номер мобильного телефона. Наиболее распространённый тип — OTP с ограниченным временем действия (TOTP).

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

Алгоритм использования OTP

Традиционный способ реализации OTP:

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

Как работают OTP-агенты (Google Authenticator, Microsoft Authenticator и FreeOTP):

  • При включённой двухфакторной аутентификации (2FA) сервер генерирует случайное начальное значение и отправляет его пользователю в виде уникального QR-кода.
  • Пользователь сканирует QR-код с помощью своего приложения 2FA для подтверждения доверенного устройства.
  • При необходимости ввода OTP пользователь проверяет наличие кода на своём устройстве и вводит его в веб-приложение.
  • Сервер проверяет код и предоставляет доступ.
Преимущества и недостатки
ПреимуществаНедостатки
Дополнительный уровень защиты.Необходимо хранить начальные вектора (seeds), используемые для генерации OTP.
Нет опасности, что украденный пароль может быть использован для работы с несколькими сайтами или сервисами, где также применяются OTP.Если потерян код восстановления OTP, придётся выполнять полную процедуру восстановления доступа к учётной записи.
Проблемы возникают, когда доверенное устройство недоступно (севшая батарея, ошибка сети и т.д.). В этом случае, как правило, требуется резервное устройство, что создаёт дополнительный вектор атаки.