TOTP
TOTP (ang. Time-based One-Time Password, hasło jednorazowe oparte na czasie) to algorytm generujący krótkotrwałe, jednorazowe kody — zwykle sześciocyfrowe, ważne przez 30 sekund — wykorzystywane jako drugi składnik w uwierzytelnianiu dwuskładnikowym. To właśnie te kody wyświetlają aplikacje typu Google Authenticator, Authy czy Aegis. Standard opisano w RFC 6238 jako rozszerzenie wcześniejszego algorytmu HOTP o czynnik czasu.
Jak działa TOTP?
Podstawą jest współdzielony sekret — losowy klucz, który serwer i aplikacja uwierzytelniająca poznają jednorazowo podczas konfiguracji, najczęściej przez zeskanowanie kodu QR. Algorytm łączy ten sekret z bieżącym znacznikiem czasu podzielonym na 30-sekundowe okna i za pomocą funkcji skrótu HMAC generuje z tego sześciocyfrowy kod. Ponieważ obie strony dysponują tym samym sekretem i tym samym zegarem, niezależnie obliczają identyczny kod bez żadnej komunikacji między nimi — dlatego TOTP działa nawet w trybie offline. Co pół minuty kod się zmienia, a serwer akceptuje zwykle także wartość z sąsiedniego okna, by zniwelować drobne różnice zegarów. Zużyty kod natychmiast traci ważność, co czyni go odpornym na powtórne użycie.
Zastosowanie w praktyce
TOTP jest dziś domyślnym mechanizmem drugiego składnika w panelach hostingowych, bankowości, systemach firmowych i platformach chmurowych. Chroni konto nawet wtedy, gdy napastnik pozna hasło — bez fizycznego dostępu do urządzenia z aplikacją nie zaloguje się, a atak brute force na sześć cyfr zmieniających się co 30 sekund jest praktycznie niewykonalny. Przy konfiguracji warto zapisać jednorazowe kody zapasowe (recovery codes) na wypadek utraty telefonu. Trzeba jednak pamiętać, że TOTP nie chroni przed dobrze przygotowanym phishingiem, w którym ofiara sama wpisuje kod na fałszywej stronie przekazującej go w czasie rzeczywistym — na ten scenariusz odporne są dopiero klucze sprzętowe FIDO2.
Powiązane pojęcia
Najczęstsze pytania
Co się stanie, gdy zegar telefonu się rozjedzie?
Ponieważ TOTP opiera się na czasie, znaczące rozsynchronizowanie zegara urządzenia i serwera sprawi, że generowane kody będą nieważne. Dlatego aplikacje uwierzytelniające synchronizują czas automatycznie, a serwery akceptują kody z niewielkiego okna tolerancji obejmującego sąsiednie przedziały czasowe.
Czy TOTP jest bezpieczniejszy od kodów SMS?
Tak. Kody SMS można przechwycić przez atak SIM swapping lub podsłuch sieci telekomunikacyjnej. TOTP generowany jest lokalnie na urządzeniu i nigdy nie przechodzi przez sieć, więc nie da się go przechwycić w tranzycie. Pozostaje jednak podatny na przekazanie w czasie rzeczywistym podczas ataku phishingowego.
