Хеші/крипто
TOTP Generator/Verifier
Одноразові коди за часом (TOTP, RFC 6238) — генерація поточного коду з секрету та перевірка введеного коду з урахуванням дрейфу часу.
------
TOTP (Time-based One-Time Password, RFC 6238) — алгоритм двофакторної автентифікації, який генерує одноразовий код на основі секрету й поточного часу. Саме він працює під капотом у Google Authenticator, Authy та подібних застосунках.
Як користуватися
- Генерація: вставте секретний ключ (зазвичай у Base32, як у QR-коді для налаштування 2FA) — інструмент покаже поточний 6-значний код і час до його зміни.
- Перевірка: введіть секрет і код, отриманий з застосунку-автентифікатора, щоб перевірити, чи вони збігаються.
- Перевірка враховує невеликий дрейф часу — приймає код не лише поточного, а й сусідніх часових інтервалів.
Типові сценарії
- Налагодження власної реалізації 2FA на бекенді — перевірка, чи правильно сервер генерує й приймає коди.
- Ручна генерація коду для акаунта, коли немає доступу до телефону з застосунком-автентифікатором.
- Розуміння, чому код із застосунку не приймається сервером (частіше причина — розсинхронізований годинник).
Що варто памʼятати
TOTP-код дійсний лише короткий проміжок часу (зазвичай 30 секунд) — це і є основний захист, а не сам секрет.
Точність коду напряму залежить від синхронізації годинника пристрою; помітний розсинхрон часу — найчастіша причина відхилених кодів 2FA.
Стаття про цей інструмент: TOTP: як працюють одноразові коди в застосунках-автентифікаторах
Часті запитання
Чому згенерований код так швидко закінчується?
Коди TOTP прив'язані до часу — за замовчуванням вони оновлюються кожні 30 секунд, обчислюючись з поточного Unix-часу та спільного секрету. Це коротке вікно обмежує, як довго витік коду залишається корисним.
Що станеться, якщо годинник мого пристрою розсинхронізований?
TOTP покладається на те, що обидві сторони приблизно узгоджені щодо поточного часу. Більшість застосунків-автентифікаторів і серверів допускають невелике відхилення (зазвичай один часовий крок), але більший зсув призведе до відхилення дійсних кодів.
Чи надсилається мій секретний ключ кудись під час генерації коду тут?
Ні. Код TOTP обчислюється повністю у вашому браузері — секретний ключ ніколи не залишає ваш пристрій.
Чи захищає TOTP від фішингу?
Не повністю. Якщо жертва вводить пароль і поточний TOTP-код на підробленому сайті, зловмисник може миттєво використати обидва значення на справжньому сайті, поки код ще дійсний. Від такої атаки в реальному часі захищають лише апаратні ключі за стандартом FIDO2/WebAuthn.
Чому сервер приймає й попередній часовий інтервал, а не лише поточний?
Це компенсує невелику мережеву затримку між генерацією коду на телефоні й моментом, коли сервер його отримує та перевіряє. Без такого допуску легітимні коди інколи відхилялися б через звичайну затримку в кілька секунд.