§§IBT7§§¶@definition¶TOTP — алгоритм одноразового пароля, генерируемого на основе общего секрета и текущего времени.¶@plain¶TOTP создаёт короткий одноразовый код из общего секрета и текущего временного интервала. Сервер и приложение-аутентификатор независимо вычисляют значение; поэтому им нужны один секрет и достаточно синхронизированное время.¶@use¶TOTP применяют как дополнительный фактор, защищают секрет при регистрации и хранении, ограничивают число попыток и не принимают повторное использование кода. Процесс восстановления и смены устройства должен подтверждать пользователя не слабее обычного входа.¶@example¶После пароля пользователь вводит шестизначный код. Сервер принимает только текущий и соседний временной интервал, помечает успешный код использованным и после нескольких ошибок требует новый вход, а не расширяет окно.¶@compare¶HOTP¦¦HOTP увеличивает счётчик после события.¤Push-аутентификация¦¦Push-аутентификация отправляет запрос на устройство¶@steps¶Зарегистрировать секрет¦Сервер создаёт случайный ключ и безопасно передаёт его приложению пользователя.¤Вычислить код¦Обе стороны применяют HMAC к номеру текущего временного интервала и формируют короткое значение.¤Проверить окно¦Сервер сравнивает код в небольшом допустимом диапазоне времени и ограничивает попытки.¤Завершить фактор¦Успех связывается с текущей сессией, повтор кода и подозрительное восстановление блокируются.¶@resources¶Класс MFA в каталоге СЗИ¦https://ibcourses.ru/katalog-ib-resheniy?class=MFA¦Решения¶@related¶¶@faq¶Почему код меняется каждые 30 секунд?¦Это распространённый шаг времени; конкретный параметр задаётся профилем и должен совпадать у обеих сторон.¤Защищает ли TOTP от фишинга?¦Не полностью: пользователь может ввести действующий код на поддельном сайте, который сразу передаст его настоящему сервису.¤Можно ли хранить TOTP-секрет как парольный хеш?¦Нет. Серверу нужно вычислять будущие коды, поэтому секрет хранится обратимо в защищённом хранилище.