TOTP

Простыми словами

TOTP создаёт короткий одноразовый код из общего секрета и текущего временного интервала. Сервер и приложение-аутентификатор независимо вычисляют значение; поэтому им нужны один секрет и достаточно синхронизированное время.

Как применяется

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

Пример применения

После пароля пользователь вводит шестизначный код. Сервер принимает только текущий и соседний временной интервал, помечает успешный код использованным и после нескольких ошибок требует новый вход, а не расширяет окно.

Не путать с

  • HOTPHOTP увеличивает счётчик после события.
  • Push-аутентификацияPush-аутентификация отправляет запрос на устройство
  • WebAuthnWebAuthn использует криптографический ключ и устойчивее к поддельному домену.

Как это работает

  1. Зарегистрировать секретСервер создаёт случайный ключ и безопасно передаёт его приложению пользователя.
  2. Вычислить кодОбе стороны применяют HMAC к номеру текущего временного интервала и формируют короткое значение.
  3. Проверить окноСервер сравнивает код в небольшом допустимом диапазоне времени и ограничивает попытки.
  4. Завершить факторУспех связывается с текущей сессией, повтор кода и подозрительное восстановление блокируются.

Продолжить изучение

Частые вопросы

Почему код меняется каждые 30 секунд?

Это распространённый шаг времени; конкретный параметр задаётся профилем и должен совпадать у обеих сторон.

Защищает ли TOTP от фишинга?

Не полностью: пользователь может ввести действующий код на поддельном сайте, который сразу передаст его настоящему сервису.

Можно ли хранить TOTP-секрет как парольный хеш?

Нет. Серверу нужно вычислять будущие коды, поэтому секрет хранится обратимо в защищённом хранилище.

TOTP — алгоритм одноразового пароля, генерируемого на основе общего секрета и текущего времени.