Hashe/Krypto

TOTP Generator/Verifier

Hasła jednorazowe oparte na czasie (TOTP, RFC 6238) — generowanie bieżącego kodu z sekretu oraz weryfikacja wprowadzonego kodu z tolerancją przesunięcia zegara.

------


                    

TOTP (Time-based One-Time Password, RFC 6238) is a two-factor authentication algorithm that generates a one-time code from a secret and the current time. It's exactly what runs under the hood in Google Authenticator, Authy, and similar apps.

How to use it

Common uses

Things to keep in mind

A TOTP code is only valid for a short window (usually 30 seconds) — that time limit is the main protection, not the secret alone.

Code accuracy depends directly on the device's clock being synced; a noticeable clock drift is the most common cause of rejected 2FA codes.

Artykuł o tym narzędziu: TOTP: jak działają jednorazowe kody w aplikacjach uwierzytelniających

Najczęstsze pytania

Dlaczego wygenerowany kod tak szybko wygasa?

Kody TOTP są oparte na czasie — domyślnie zmieniają się co 30 sekund, obliczane na podstawie bieżącego czasu Unix i wspólnego sekretu. To krótkie okno ogranicza, jak długo wyciekły kod pozostaje użyteczny.

Co się stanie, jeśli zegar mojego urządzenia jest niezsynchronizowany?

TOTP polega na tym, że obie strony w miarę zgadzają się co do bieżącego czasu. Większość aplikacji uwierzytelniających i serwerów pozwala na małą tolerancję przesunięcia zegara (zwykle jeden krok czasowy), ale większe przesunięcie spowoduje odrzucenie prawidłowych kodów.

Czy mój tajny klucz jest gdzieś wysyłany podczas generowania kodu tutaj?

Nie. Kod TOTP jest obliczany całkowicie w Twojej przeglądarce — tajny klucz nigdy nie opuszcza Twojego urządzenia.

Czy TOTP chroni przed phishingiem?

Nie w pełni. Jeśli ofiara wpisze hasło i aktualny kod TOTP na fałszywej stronie, atakujący może natychmiast użyć obu wartości na prawdziwej stronie, dopóki kod jest jeszcze ważny. Przed takim atakiem w czasie rzeczywistym chronią jedynie klucze sprzętowe zgodne ze standardem FIDO2/WebAuthn.

Dlaczego serwer akceptuje też poprzedni przedział czasowy, a nie tylko bieżący?

Kompensuje to niewielkie opóźnienie sieciowe między wygenerowaniem kodu na telefonie a momentem, w którym serwer go otrzymuje i weryfikuje. Bez takiego marginesu prawidłowe kody byłyby czasem odrzucane z powodu zwykłego kilkusekundowego opóźnienia.

Artykuły: Hashe/Krypto

Hash Generator: czym różnią się MD5, SHA-1 i SHA-256

Dlaczego MD5 nadal jest używane do sprawdzania integralności plików, ale nie do haseł.

Checksum Verifier: jak sprawdzić, czy plik nie jest uszkodzony

Dlaczego zgodna suma kontrolna potwierdza integralność pliku, ale nie to, kto go stworzył.

HMAC: czym skrót z kluczem różni się od zwykłego skrótu

Dlaczego zwykły SHA-256 nie chroni przed sfałszowaniem wiadomości, a HMAC tak.

Bcrypt: dlaczego hasła haszuje się wolno, a nie szybko

Dlaczego szybki SHA-256 to zły wybór do haseł, a wolny bcrypt to właściwy.

UUID: jak generuje się identyfikatory, które prawie nigdy się nie powtarzają

Dlaczego UUID v4 można generować niezależnie na milionach maszyn bez ryzyka kolizji.

Generator haseł: co naprawdę czyni hasło silnym

Dlaczego długie hasło ze słów słownikowych jest silniejsze niż krótkie z symbolami i cyframi.

AES: jak działa szyfrowanie symetryczne

Dlaczego ten sam klucz szyfruje i deszyfruje dane w AES, i czym różni się to od szyfrowania asymetrycznego.

Argon2: dlaczego ten algorytm wygrał konkurs na haszowanie haseł

Jak Argon2 lepiej broni się przed atakami z użyciem kart graficznych niż starsze algorytmy haszowania haseł.

Scrypt: dlaczego algorytm potrzebuje tak dużo pamięci

Dlaczego scrypt celowo wymaga dużo pamięci, aby utrudnić łamanie na urządzeniach ASIC.

PBKDF2: najstarszy standard rozciągania klucza

Dlaczego zalecana liczba iteracji PBKDF2 rośnie z każdym rokiem.

X.509: co jest wewnątrz certyfikatu SSL

Co dokładnie przegląda przeglądarka w certyfikacie witryny, zanim pokaże zieloną kłódkę.

PGP: jak działa szyfrowanie kluczem publicznym i prywatnym

Dlaczego można swobodnie udostępniać klucz publiczny PGP, ale nigdy klucz prywatny.