bitlvl
RU

Генератор кодов TOTP / 2FA

Вставьте секрет из настройки 2FA (строку Base32 или целиком ссылку otpauth://) и увидите код, который должно показывать ваше приложение-аутентификатор, с оставшимися секундами. Всё остаётся в странице.

------

Отсканируйте в Google Authenticator, Aegis, 1Password или любом TOTP-приложении, чтобы добавить этот секрет. QR рисуется в вашем браузере; секрет никуда не отправляется.

Результаты и сообщения этого инструмента выводятся на английском языке.

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

Когда вы сканируете QR-код 2FA, приложение сохраняет общий секрет — обычно 20 случайных байт, показанных как строка Base32 из 32 символов. Каждые 30 секунд оно вычисляет HMAC-SHA1(секрет, ⌊сейчас / 30⌋), берёт четыре байта результата по смещению, заданному его последним полубайтом, и приводит это число по модулю 10⁶, получая шесть цифр. Сервер делает то же самое, обычно принимая также предыдущее и следующее окно для компенсации расхождения часов. На телефоне сеть не задействована, поэтому приложения-аутентификаторы работают офлайн.

URI otpauth

QR-код содержит URI вида otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example&digits=6&period=30&algorithm=SHA1. Вставка его сюда заполняет все параметры. Большинство сервисов используют значения по умолчанию (SHA-1, 6 цифр, 30 с); некоторые используют 8 цифр или SHA-256, а некоторые приложения игнорируют параметр алгоритма — частая причина тикетов «код неверный».

Отладка настройки 2FA

  1. Введите секрет здесь и в приложении; коды должны совпадать. Если нет — секрет введён с ошибкой или приложение игнорирует параметры.
  2. Если коды совпадают, но сервер их отклоняет, часы сервера сбиты. TOTP зависит от того, что обе стороны согласны о времени в пределах окна.
  3. Убедитесь, что сервер проверяет с окном ±1 и отклоняет повторное использование того же кода (replay).

Замечания по безопасности

Секрет — это вся безопасность: любой, у кого он есть, может генерировать коды бесконечно. Храните его в зашифрованном виде, никогда не записывайте в логи и по возможности предпочитайте WebAuthn / passkeys, поскольку коды TOTP можно выманить фишингом в реальном времени. Эта страница предназначена для разработчиков, тестирующих собственную настройку; любой секрет, вставленный в браузер, считайте тестовыми данными.

Вопросы

Почему мой код отличается от кода в приложении?

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

Что такое алфавит Base32?

A–Z и 2–7; нет 0, 1, 8 и 9, поэтому секреты однозначны при чтении вслух. Padding = необязателен. Инструмент отклоняет прочие символы и сообщает, какие именно.

В чём разница между TOTP и HOTP?

HOTP (RFC 4226) использует счётчик, увеличивающийся при каждом использовании; TOTP (RFC 6238) заменяет счётчик текущим временем, делённым на период. Аппаратные токены с кнопкой — это HOTP; приложения — TOTP. Введите счётчик выше, чтобы вычислить HOTP.

Можно ли генерировать коды для Google Authenticator или Authy?

Да, оба реализуют стандартный TOTP. Steam Guard и некоторые банковские приложения используют проприетарные варианты, которые этот инструмент не воспроизводит.