Co robi to narzędzie
Aplikacje do uwierzytelniania dwuskładnikowego, takie jak Google Authenticator, Microsoft Authenticator i 1Password, pokazują sześciocyfrowe kody zmieniające się co 30 sekund. Każdy kod to hasło jednorazowe obliczone ze wspólnego sekretu: TOTP (RFC 6238) korzysta z czasu, a HOTP (RFC 4226) z licznika. Narzędzie oblicza te same kody z sekretu, więc możesz przetestować konfigurację 2FA, debugować implementację serwera albo sprawdzić, jaki powinien być kod.
Pokazuje bieżący kod z odliczaniem na żywo oraz poprzedni i następny kod, które serwery często akceptują, aby pokryć niewielkie różnice zegarów.
Jak używać
- Wklej sekret Base32 (litery A–Z i cyfry 2–7; spacje i wielkość liter nie mają znaczenia) albo cały URI
otpauth://z kodu QR. Kliknij Przykład, aby wypróbować. - Wybierz TOTP lub HOTP i ustaw algorytm, cyfry i krok czasu zgodnie z kontem. Ustawienia z URI otpauth mają pierwszeństwo.
- W HOTP wpisz licznik i przechodź między kodami przyciskiem Licznik +1.
- Skopiuj bieżący kod. Odliczanie pokazuje, jak długo pozostaje ważny.
Przykład
Demonstracyjny sekret JBSWY3DPEHPK3PXP to bajty „Hello!” i 0xDEADBEEF zapisane w Base32. Poniższy URI, w postaci zakodowanej w kodzie QR, opisuje konto, które używa go z ustawieniami domyślnymi:
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA1&digits=6&period=30
W czasie Unix 1700000000 ten sekret daje kod 324 550, a do końca okna zostało 10 sekund.
Jak obliczany jest kod
Sekret jest dekodowany z Base32 do bajtów. W TOTP licznik to czas Unix w sekundach podzielony przez krok czasu i zaokrąglony w dół. Licznik jest zapisywany jako 8 bajtów i podpisywany HMAC z użyciem sekretu. Dynamiczne obcięcie wybiera 4 bajty z wyniku HMAC na podstawie jego ostatniego półbajtu, a liczba jest redukowana do żądanej liczby cyfr z zachowaniem zer wiodących.
FAQ
› Dlaczego mój kod nie zgadza się z kodem w aplikacji uwierzytelniającej?
Kody TOTP zależą od zegara, więc najpierw sprawdź, czy czas na urządzeniu ustawia się automatycznie. Następnie sprawdź, czy algorytm, liczba cyfr i krok czasu pasują do konta. Większość usług używa SHA-1, 6 cyfr i 30 sekund, a aplikacje uwierzytelniające ignorują inne ustawienia, chyba że kod QR je podaje.
› Czym różni się TOTP od HOTP?
TOTP (RFC 6238) używa jako licznika bieżącego czasu podzielonego przez krok czasu, więc kod zmienia się co 30 sekund. HOTP (RFC 4226) używa licznika, który rośnie o jeden przy każdym użytym kodzie. Oba przepuszczają sekret i licznik przez HMAC i zostawiają ostatnie 6–8 cyfr.
› Czy mój sekret jest gdzieś zapisywany lub wysyłany?
Nie. Kody są obliczane w przeglądarce za pomocą Web Crypto API. Sekret nie jest zapisywany, nie trafia do paska adresu ani do linków udostępniania; udostępniony link zawiera tylko ustawienia. Sekret 2FA daje jednak pełny dostęp do drugiego składnika, więc wklejaj tylko własne sekrety.
› Czy mogę użyć tego narzędzia przy wdrażaniu 2FA we własnej aplikacji?
Tak. Kliknij Losowy sekret, aby utworzyć 160-bitowy sekret Base32, przekaż go użytkownikom w URI otpauth:// lub kodzie QR i porównuj kody z serwera z kodami pokazanymi tutaj. Serwery zwykle akceptują też poprzedni i następny kod, aby tolerować różnice zegarów.