Запрос TOTP обычно появляется, когда нужно понять, как устроены 2FA-коды и почему они считаются надежными. В этой статье разберём, что такое TOTP, как он генерируется и проверяется сервером, какие есть преимущества и недостатки, а также чем он отличается от SMS OTP и HOTP.

Что такое TOTP и где он используется

TOTP (Time-based One-Time Password) — это стандартный способ двухфакторной аутентификации, когда вместе с паролем пользователь вводит код, который меняется по времени. Такой код появляется в приложении аутентификации (authenticator) и действует очень недолго.

Проще говоря: TOTP добавляет “второй ключ”, который нельзя заранее угадать и который становится неактуальным через считанные секунды.

С практической точки зрения это onetime-коды, которые обычно выглядят как 6 цифр (иногда 6–8), и привязаны к “текущему окну времени”. Код зависит от общего “зерна” (secret) и от текущего времени.

Как работает TOTP по шагам (технически, но понятно)

У TOTP есть несколько ключевых элементов: secret, time, key, алгоритм хеширования и server, который проверяет код.

Секрет (shared secret / secret key).
При настройке входа сервер выдаёт уникальный secret для вашей учетной записи. Его получают обе стороны: ваш app (приложение) и server. Дальше секрет хранится так, чтобы злоумышленнику было сложно его достать.

Время (time step).
TOTP делит время на короткие интервалы (часто это 30 секунд). Для каждого интервала получается свой “срез времени”, и под него формируется новый одноразовый code.

Генерация кода.
Когда вам нужен code, приложение берёт secret и текущий интервал time, делает криптографическую операцию с key и получает числовой результат. Затем результат превращается в короткий onetime-код.

Важно: генерация не требует, чтобы вы были онлайн. Приложение может работать автономно, потому что всё нужное у него уже есть (secret и корректное время).

Проверка на сервере.
Когда you вводите code на сайте, server сам пересчитывает допустимые варианты для текущего интервала. Из-за возможного небольшого расхождения часов часто допускают “окно” (например, текущий интервал и соседний). Если введённый code совпадает — доступ разрешают.

TOTP и HOTP: в чем разница

TOTP и HOTP похожи, но используют разные “переменные” для смены одноразовых паролей:

Метод Что меняется для кода Как формируется код
TOTP time (по интервалам, например каждые 30 секунд) время + shared secret
HOTP счётчик (counter), который увеличивается после каждой валидации counter + shared secret

Из-за этого TOTP обычно удобнее для потребительских приложений: интервал времени понятен, а синхронизация сводится к небольшим допускам по дрейфу часов.

Преимущества TOTP (и почему он так популярен)

TOTP обеспечивает безопасность за счёт динамичности и “владения” фактором

Поскольку code действует короткий промежуток, даже если злоумышленник увидит code прямо в момент ввода, шанс успеть использовать его резко снижается.

TOTP не зависит от доставки через сеть

В отличие от одноразовых SMS, здесь code генерируется на стороне приложения. Это означает, что не нужен телеком-канал и уменьшается зависимость от задержек и доступности отправки.

TOTP работает офлайн

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

TOTP широко поддерживается приложениями

Большинство популярных authenticator-приложений поддерживают стандарт TOTP, поэтому настройка обычно сводится к сканированию QR или вводу secret.

Недостатки TOTP: о чем важно помнить

Даже если authentication становится заметно надежнее, TOTP — не идеальная магия.

Синхронизация времени.
Если часы устройства сильно “уедут”, коды могут не приниматься сервером. Часто помогает синхронизация времени в телефоне.

Зависимость от одного устройства.
Если вы потеряете телефон, сбросите его или переустановите приложение, доступ может пропасть. Обычно нужен резервный путь (например, резервные коды при включении 2FA или возможность заново настроить TOTP).

Фишинг всё ещё возможен.
TOTP защищает от многих атак на пароль, но не спасает, если you введёте пароль и TOTP-code на поддельном сайте. Злоумышленник может успеть использовать ваш ввод в реальном времени.

SMS OTP и TOTP: где разница по безопасности

Ключевая разница — откуда берётся одноразовый code.

Метод Как приходит code Главная проблема Почему TOTP часто лучше
SMS OTP через сотовую сеть SIM swapping, перехват/задержки, риск компрометации канала не требует телеком-канала и генерируется локально
TOTP генерируется в приложении из secret и time нужна синхронизация времени, зависимость от устройства уменьшает поверхность атаки вокруг доставки

Как настроить TOTP при регистрации

Обычно процесс выглядит одинаково в большинстве сервисов:

  • вы заходите в аккаунт и включаете двухфакторную authentication опцию
  • server создаёт и выдаёт уникальный secret для вашей учётной записи
  • сервис показывает QR-код или secret вручную
  • вы добавляете учетку в приложение authenticator (оно сохраняет secret)
  • вы вводите один code, чтобы подтвердить, что приложение и сервер синхронизированы

После этого при каждом входе вы вводите пароль и текущий code.

Можно ли использовать TOTP в автономном режиме и насколько это удобно

Да, TOTP можно использовать в автономном режиме: приложению не обязательно быть онлайн, чтобы формировать коды. Удобство обычно высокое, потому что code обновляется автоматически, и вам не нужно ждать доставки.

Но есть “цена удобства”: код нужно смотреть в приложении и вручную вводить на сайте, а также держать время устройства близким к реальному.

Какие приложения поддерживают TOTP

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

Ключевые стандарты, связанные с TOTP

TOTP описан в стандарте RFC 6238. Также в основе идеи лежит семейство стандартов OTP, включая HOTP (в частности RFC 4226), где используется counter вместо времени.

Почему TOTP считается безопасным (итог простыми словами)

TOTP повышает безопасность учетной записи тем, что:
- code одноразовый (onetime) и меняется по time
- для генерации нужен общий secret
- server проверяет код по текущему времени
- не используется уязвимый канал доставки вроде SMS
- коды имеют короткое окно действия, что усложняет злоупотребление

Какие альтернативы TOTP существуют

Если говорить про двухфакторную защиту, помимо TOTP часто применяют:
- push-уведомления (вы подтверждаете вход нажатием)
- аппаратные ключи/токены (аппаратные методы владения)
- другие варианты OTP (включая HOTP, где используется counter)
- более современные фишинг-устойчивые методы (например, FIDO2/WebAuthn)

Краткое резюме

TOTP — это стандартная форма authentication с одноразовыми code, которые зависят от time и общего secret. Он обычно удобен, работает офлайн, заметно усиливает вход по сравнению с одним паролем и часто лучше, чем SMS OTP по модели безопасности. Но у него есть ограничения: возможны проблемы синхронизации, потеря доступа при утрате устройства и уязвимость к фишингу при вводе на поддельных страницах.