TOTP создаёт короткий одноразовый код из общего секрета и текущего временного интервала. Сервер и приложение-аутентификатор независимо вычисляют значение; поэтому им нужны один секрет и достаточно синхронизированное время.
TOTP применяют как дополнительный фактор, защищают секрет при регистрации и хранении, ограничивают число попыток и не принимают повторное использование кода. Процесс восстановления и смены устройства должен подтверждать пользователя не слабее обычного входа.
После пароля пользователь вводит шестизначный код. Сервер принимает только текущий и соседний временной интервал, помечает успешный код использованным и после нескольких ошибок требует новый вход, а не расширяет окно.
Это распространённый шаг времени; конкретный параметр задаётся профилем и должен совпадать у обеих сторон.
Защищает ли TOTP от фишинга?Не полностью: пользователь может ввести действующий код на поддельном сайте, который сразу передаст его настоящему сервису.
Можно ли хранить TOTP-секрет как парольный хеш?Нет. Серверу нужно вычислять будущие коды, поэтому секрет хранится обратимо в защищённом хранилище.