Одноразовые пароли (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, придётся выполнять полную процедуру восстановления доступа к учётной записи. |
Проблемы возникают, когда доверенное устройство недоступно (севшая батарея, ошибка сети и т.д.). В этом случае, как правило, требуется резервное устройство, что создаёт дополнительный вектор атаки. |