Генератор TOTP
Введите секрет — и получайте TOTP-коды двухфакторной аутентификации прямо в браузере; совместимо с Google Authenticator и другими приложениями-аутентификаторами.
Код TOTP — это 6-значный код двухфакторной аутентификации, который меняется каждые 30 секунд: приложение-аутентификатор и сервер вычисляют его независимо друг от друга из общего секрета и текущего времени (RFC 6238). Вставьте секрет Base32 с экрана настройки 2FA — или всю ссылку otpauth:// — и страница покажет текущий код, следующий код и кольцо обратного отсчёта; все вычисления выполняются в вашем браузере: секрет никогда не отправляется, не сохраняется и не записывается в журнал. Руководство как работают коды TOTP объясняет математику и проблему рассинхронизации часов; дополните страницу генератором паролей и токенов и SSH Key Suite.
Последнее обновление:
🔒 Все вычисления выполняются локально в вашем браузере. Ваш секрет никогда не отправляется на сервер и никогда не сохраняется.
Сверяем ваши часы с серверным временем…
Ваши коды
Аккаунтов пока нет. Добавьте секрет выше, и его код появится здесь, обновляясь каждый период. Ничего не сохраняется — перезагрузка страницы очистит этот список.
Честные ограничения
Эта страница — удобство для кодов, которые у вас уже есть: телефон, заряжающийся в другой комнате, или секрет, который вы переносите между приложениями-аутентификаторами. Она не является безопасным долговременным домом для секретов: вставленное живёт в памяти этой вкладки, пока вы её не закроете, на машине, чьё остальное ПО тоже может читать память.
Генератор кодов заслуживает ровно столько доверия, сколько заслуживают устройство и браузер, в которых он работает. Для аккаунтов, которые важны, храните секрет в выделенном приложении-аутентификаторе или в аппаратном ключе на устройстве под вашим контролем, используйте эту страницу только на доверенном устройстве и никогда — на общем или публичном компьютере.
TOTP доказывает, что вы владеете секретом в момент входа; он не защищает секрет, который уже утёк. Если секрет вставляли в чат, в тикет или в серверный генератор, считайте его сожжённым: выключите и снова включите 2FA у сервиса, чтобы выпустить свежий секрет.
Когда генератор TOTP в браузере — правильный инструмент
Классический случай — настройка и перенос. При включении двухфакторной аутентификации сервис показывает QR-код и, за ссылкой «не получается отсканировать?», сырой Base32-секрет. Введите его сюда и сравните код с тем, что выдаёт ваше приложение-аутентификатор, — так вы докажете, что оба устройства держат один и тот же секрет, до выхода из аккаунта и обнаружения расхождения жёстким путём. Та же проверка работает при переносе аккаунтов на новый телефон: перечитайте каждый секрет, добавьте сюда и подтвердите совпадение кодов со старым приложением, окно за окном.
Это и практичный ответ, когда телефона нет под рукой, а секрет как положено хранится в вашем менеджере паролей: достаньте секрет, сгенерируйте код здесь и войдите — не ослабляя аккаунт отключением 2FA. Сервисы от Google и GitHub до AWS и вашего регистратора доменов используют одну и ту же схему RFC 6238, поэтому один генератор покрывает каждый аккаунт, чей секрет у вас есть.
Что на самом деле содержит QR-код
Каждый QR-код аутентификатора — это одна строка текста: URI otpauth://, несущий секрет, эмитента, имя вашего аккаунта и параметры кода (алгоритм, число цифр, период). Поэтому эта страница принимает ссылку целиком — вставьте её, и каждое поле заполнится само. Поэтому же скриншот QR-кода настройки так же чувствителен, как сам пароль: любой, кто его отсканирует, получает постоянную копию вашего второго фактора. Никогда не делитесь скриншотами настройки и удаляйте их из синхронизированных фотобиблиотек.
Примут ли код, решают две детали. Первая — часы: генератор и сервер должны сходиться в текущем 30-секундном окне, а большинство серверов прощают лишь одно окно в каждую сторону, так что часы, ушедшие на минуту, будут отказывать каждый раз. Вторая — параметры: большинство сервисов используют SHA-1, 6 цифр и 30 секунд, но некоторые — 8 цифр или период 60 секунд. Если коды здесь никогда не совпадают с сервисом, сверьте расширенные настройки с тем, что указывал его экран настройки.
Термины TOTP, по полочкам
TOTP. Одноразовый пароль на основе времени (RFC 6238): HMAC счётчика временных шагов, динамически усечённый до короткого десятичного кода.
HOTP. Родительский алгоритм на счётчике (RFC 4226). TOTP — это HOTP, чей счётчик равен числу периодов с эпохи Unix.
Base32. Алфавит, в котором записано большинство секретов 2FA (A–Z и 2–7). Секрет из 32 символов несёт 20 байт — 160 бит — ключевого материала.
otpauth://. Формат URI внутри каждого QR-кода настройки: тип, метка, секрет, эмитент, алгоритм, число цифр и период — всё в одной строке.
Временной шаг. Обычно 30 секунд. Генератор и сервер должны попасть в один и тот же шаг; большинство серверов принимают также шаг до и после.
Динамическое усечение. Шаг, превращающий HMAC длиной более 20 байт в короткий код: четыре байта вырезаются со смещения, заданного последним полубайтом дайджеста.
SHA-1. До сих пор HMAC-хеш по умолчанию для TOTP. Конструкция остаётся здесь состоятельной, потому что безопасность HMAC не опирается на стойкость к коллизиям.
Резервные коды. Одноразовые коды восстановления, которые сервис выдаёт при настройке. Они полностью обходят TOTP — храните их как пароли и никогда вместе с секретом.
Расхождение часов. Разрыв между часами устройства и истинным временем. Расхождение больше одного периода делает каждый сгенерированный код неверным, каким бы правильным ни был секрет.
Частые вопросы
Безопасно ли генерировать коды 2FA в браузере?
На этой странице секрет никогда не покидает ваш браузер: коды вычисляются в памяти страницы с помощью WebCrypto, ничего не загружается, не сохраняется и не записывается, а обновление стирает секрет. Небезопасный паттерн — серверный генератор, где ваш секрет путешествует по сети и оседает в чужих журналах и базах данных. Даже локально используйте только доверенное устройство — секрет ровно настолько безопасен, насколько безопасна машина, на которой его вводят.
Почему мой код отклоняют?
Чаще всего — часы: если устройство, генерирующее код, и сервер расходятся в текущем 30-секундном окне, неверен каждый код. Проверьте карточку часов на этой странице и включите автоматическую дату и время. Следующие подозреваемые — параметры (сервис с 8 цифрами или периодом 60 секунд) и протухший секрет: если вы заново включали 2FA, старый секрет умер в тот же момент.
В чём разница между TOTP и HOTP?
В счётчике. HOTP (RFC 4226) увеличивает счётчик при каждом использовании; TOTP (RFC 6238) выводит счётчик из часов, поэтому коды истекают сами. Приложения-аутентификаторы и эта страница говорят на TOTP. Ссылки HOTP на счётчике существуют, но эта страница открыто отказывает им, а не выдумывает код.
Может ли это заменить моё приложение-аутентификатор?
Пока страница открыта, она производит идентичные коды — математика та же. Как постоянный дом — нет: здесь по замыслу ничего не сохраняется, а вкладка браузера — не место для долгоживущего секрета. Храните секрет в приложении-аутентификаторе или менеджере паролей, а эту страницу используйте для проверок настройки, переносов и аварийных случаев.
Я однажды вставил свой секрет в чат. Что теперь?
Считайте его утёкшим. Чаты записываются, синхронизируются и доступны для поиска, а любой обладатель секрета может генерировать ваши коды вечно. Зайдите в сервис, выключите двухфакторную аутентификацию и включите её снова, чтобы выпустить новый секрет, заново зарегистрируйте аутентификатор и проверьте недавнюю активность аккаунта. Затем проверьте сам пароль в проверке утечек паролей.