Случайные пароли из букв, цифр и символов через crypto.getRandomValues.
Генератор кодов TOTP/HOTP
Сам инструмент доступен на английском языке; на этой странице приведено его описание на вашем языке.
Используйте Генератор кодов TOTP/HOTP
Для чего это нужно
Вычисляйте одноразовые пароли, основанные на времени (TOTP) или на счетчике (HOTP), для секретного ключа в формате Base32, как это делают приложения-аутентификаторы, и проверяйте, совпадает ли код. Полезно для тестирования собственной настройки двухфакторной аутентификации (2FA).
Приложение работает полностью в браузере: никакие введенные вами данные не передаются на сервер.
Как использовать Генератор кодов TOTP/HOTP
- Введите секрет. Вставьте секрет в Base32 своего тестового аккаунта в поле Secret key (Base32) или нажмите Random, чтобы получить новый секрет из 32 символов.
- Настройте параметры своего приложения. Выберите тип кода (TOTP — на основе времени или HOTP — на основе счетчика), алгоритм и количество цифр. Большинство приложений-аутентификаторов используют TOTP, HMAC-SHA-1 и 6 цифр.
- Показать код. Для TOTP нажмите «Start TOTP»: код отобразится с обратным отсчётом и будет пересчитываться каждую секунду. Для HOTP установите счетчик и нажмите «Show HOTP code»; кнопка «Next» переходит к следующему счетчику.
- Проверить код. Введите код из приложения или с сервера в поле «Проверить код» и нажмите «Проверить». В результате будет указано, совпадает ли код, а также для какого шага времени или счетчика.
- Остановиться и очистить. По завершении нажмите «Стоп»; последний код останется на экране. Очистите поле «Секрет» самостоятельно.
Пример
Тестовый секрет RFC 6238
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ412568Это опубликованный в RFC 6238 тестовый ключ 12345678901234567890 в формате Base32. На странице отображается его текущий шестизначный код и количество секунд до появления следующего — тот же код, который приложение-аутентификатор показывает для этого секрета; при переходе в режим HOTP со счётчиком 0 отображается 755224 — первое тестовое значение по стандарту RFC 4226.
Что проверяется
| Сигнал | Что это означает |
|---|---|
| Код | HMAC, основанный на временном шаге (TOTP) или счетчике (HOTP), сокращенный до 6 или 8 цифр в соответствии с RFC 4226 и RFC 6238. Он совпадает с приложением только в том случае, если тип, алгоритм и количество цифр одинаковы. |
| Обновление в наносекундах · временной шаг N | Остаток времени в текущем 30-секундном интервале и номер шага, взятый с часов вашего устройства. Если часы идут неточно, отображается предыдущий или следующий код. |
| Счетчик N · нажмите «Далее» | В режиме HOTP код привязан к данному счетчику. Каждый код используется один раз; после этого серверы ожидают следующего счетчика. |
| Не Base32: ... | Секрет содержит символы, не входящие в диапазоны A–Z и 2–7, например 0, 1, 8 или 9. Пробелы, дефисы и знак «=» игнорируются, а строчные буквы допускаются. |
| секрет состоит всего из N битов | Длина секретного ключа меньше, чем 128 бит (26 символов в формате Base32), требуемых стандартом RFC 4226. Коды по-прежнему отображаются, но такой секретный ключ легче угадать. |
| Допустимо: соответствует ... | Проверьте, что в поле указан код текущего временного шага или счетчика HOTP. |
| Применимо к предыдущему или следующему шагу | Код относится к одному 30-секундному интервалу до или после текущего момента (обозначенному желтым цветом). Обычно между двумя устройствами наблюдается небольшая разница во времени. |
| Нет совпадений | Ни проверенные временные шаги, ни счетчики не совпадают. Проверьте секрет, часы, алгоритм и количество разрядов. |
Еще примеры
Тестовый ключ RFC 4226, HOTP
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQПри типе кода HOTP, алгоритме HMAC-SHA-1, 6 цифрах и счетчике 0 код равен 755224; при следующем значении счетчика 1 получается 287082 — это тестовые значения, опубликованные в RFC 4226.
Проверить код на один счетчик впереди
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQВ режиме HOTP со счётчиком 0 при вводе числа 287082 в поле «Проверить код» выдаётся сообщение: «Допустимо для счётчика 1», что на 1 больше, чем значение в поле счётчика.
Это не секретный ключ в формате Base32
0189ОШИБКА с сообщением «Не соответствует формату Base32: „0“, „1“, „8“, „9“, поскольку в формате Base32 используются только буквы A–Z и цифры 2–7».
Часто задаваемые вопросы
Что именно он вычисляет?
коды TOTP, генерируемые с интервалом в 30 секунд от текущего времени (RFC 6238), или коды HOTP для заданного вами счетчика (RFC 4226) с использованием HMAC-SHA-1, SHA-256 или SHA-512 и длиной 6 или 8 цифр; большинство приложений-аутентификаторов используют SHA-1 и 6 цифр. При проверке кода пробуется текущий временной интервал и по одному интервалу в обе стороны, либо счетчик HOTP и следующие 9 значений; секрет, содержащий символы, отличные от A–Z и 2–7, отклоняется с выводом соответствующего сообщения.
Защищает ли код TOTP от фишинга?
Не полностью. Фишинг-киты типа adversary-in-the-middle передают код на настоящий сайт, пока вы его вводите, поэтому он перехватывается вместе с паролем; ключи доступа (passkeys) и ключи безопасности FIDO2 устойчивы к этому, потому что привязаны к настоящему домену.
Отправляется или сохраняется ли секрет где-нибудь?
Нет. Коды генерируются в вашем браузере с помощью Web Crypto API, и секретный ключ никогда не загружается и не сохраняется. TOTP зависит от часов вашего устройства, поэтому при неточном времени коды будут отличаться.
Как проверить соответствие кодов требованиям RFC?
Используйте тестовый ключ 12345678901234567890, представленный в формате Base32: GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. В режиме HOTP счетчик 0 возвращает 755224, а счетчик 1 — 287082 (RFC 4226). В RFC 6238 указано значение 94287082 для 8 цифр через 59 секунд после 1 января 1970 года по UTC; в режиме TOTP всегда используется текущее время.
В чём заключается разница между TOTP и HOTP?
HOTP (RFC 4226) учитывает количество использований: каждый код привязан к счетчику, значение которого увеличивается на единицу. TOTP (RFC 6238) — это HOTP, в котором счетчик настроен на текущий 30-секундный временной интервал, поэтому код меняется в такт с ходом часов.
Почему моё приложение показывает другой код?
Сначала проверьте часы, так как разница в 30 секунд приводит к изменению кода. Затем проверьте секретный код на наличие опечаток и уточните, использует ли учетная запись алгоритм SHA-256, SHA-512, 8 цифр или счетчик вместо времени, и установите здесь те же параметры.
Стоит ли вставлять сюда настоящий секрет 2FA?
Лучше не надо. Секрет остаётся в вашем браузере, но любой, кто его увидит или скопирует, сможет генерировать ваши коды, пока вы не сбросите 2FA в этом аккаунте. Чтобы перенести 2FA на новый телефон, используйте функцию переноса или сброса в самом аккаунте.