Aplikacja uwierzytelniająca może wygenerować kod bez odbierania wiadomości. Kod weryfikacyjny wysłany SMS-em trafia do użytkownika kanałem dostarczania, więc konfiguracja i obsługa błędów wyglądają inaczej.
Co oznacza każdy termin?
OTP opisuje kod akceptowany jednokrotnie. HOTP i TOTP opisują algorytmy generowania tego kodu.
| Termin | Co dostarcza kod | Czego potrzebuje użytkownik |
|---|---|---|
| OTP | Kategoria ogólna, niezależna od metody generowania | Zależy od wybranej metody |
| HOTP | Współdzielony sekret i rosnący licznik | Zarejestrowany token lub aplikacja |
| TOTP | Współdzielony sekret i bieżący interwał czasowy | Zarejestrowana aplikacja uwierzytelniająca z działającym zegarem |
RFC 4226 definiuje współdzielony sekret i licznik HOTP. RFC 6238 używa czasu zamiast tego licznika w TOTP.
Aplikacja uwierzytelniająca i weryfikator potrzebują tego samego sekretu, aby obliczać zgodne kody. Chroń ten sekret podczas rejestracji i przechowywania, ponieważ jego posiadanie umożliwia generowanie kodów.
Jak HOTP zmienia swój kod?
Token zwiększa licznik przy każdym generowaniu kodu. Weryfikator przesuwa swój odpowiadający stan po zaakceptowaniu oczekiwanego kodu.
Kod HOTP nie wygasa wyłącznie z upływem czasu. Generowanie kodów bez ich przesyłania może przesunąć token do przodu względem weryfikatora.
Zapewnij ponowną synchronizację licznika wymaganą przez specyfikację HOTP. Ogranicz przeszukiwanie kolejnych wartości licznika, ponieważ akceptowanie większej liczby kandydatów zwiększa szansę na odgadnięcie kodu.
Ogranicz liczbę nieudanych prób uwierzytelnienia w trakcie tego procesu. Ponowna synchronizacja nie może stać się drogą do nieograniczonej liczby prób.
Jak TOTP zmienia swój kod?
TOTP generuje kod na podstawie współdzielonego sekretu i bieżącego interwału czasowego, nawet gdy nikt nie żąda nowego kodu.
RFC 6238 zaleca 30-sekundowy krok czasowy. Wyświetlany kod zmienia się, gdy zegar przekracza granicę kolejnego interwału.
Kod wpisany pod koniec interwału może dotrzeć do weryfikatora w następnym interwale. Zezwól na ograniczone opóźnienie, aby typowy czas wpisywania nie powodował niepotrzebnych odrzuceń.
RFC zaleca co najwyżej jeden krok na opóźnienie sieciowe. To zalecenie dotyczy opóźnienia transmisji, a nie jest uniwersalnym limitem na całą synchronizację zegarów.
Utrzymuj synchronizację zegarów urządzenia i serwera. Szerokie okno akceptacji toleruje większy dryf. Jednocześnie akceptuje więcej kodów-kandydatów.
Odrzuć już zaakceptowany kod nawet wewnątrz jego interwału czasowego. Sama zmiana zegara nie zapewnia jednorazowości kodu.
Czy kod weryfikacyjny wysłany przez Bird to TOTP?
Nie. Bird Verify generuje losowy kod weryfikacyjny i dostarcza go wybranym kanałem.
Odbiorca nie rejestruje współdzielonego sekretu uwierzytelniającego, aby otrzymać ten kod. Jego ważność wynika z wygaśnięcia i polityki prób weryfikacji, a nie z licznika czy interwału czasowego aplikacji uwierzytelniającej.
Wybierz długość kodu, czas wygaśnięcia i limit prób dla przepływu weryfikacji. Mierz interwały dostarczania i realizacji, gdy odbiorcy zgłaszają opóźnienia.
HOTP i TOTP generują kody lokalnie po rejestracji, więc przy logowaniu nie czekają na wiadomość. Za to odzyskiwanie dostępu musi uwzględniać utratę aplikacji uwierzytelniającej lub współdzielonego sekretu.
Którą metodę wybrać?
- Użyj dostarczanego kodu weryfikacyjnego, gdy przepływ wymaga zweryfikowania dostępu do osiągalnego numeru lub adresu.
- Użyj TOTP, gdy użytkownicy mogą zarejestrować i zachować aplikację uwierzytelniającą z niezawodnym zegarem.
- Użyj HOTP, gdy token nie może polegać na czasie, a ty możesz utrzymywać synchronizację licznika.
- Niezależnie od metody ogranicz liczbę prób, wymuszaj jednorazowość i zdefiniuj odzyskiwanie konta przed uruchomieniem.
W skrócie
OTP to kategoria.
HOTP i TOTP to sposoby generowania jednorazowych kodów. Serwer może też wygenerować i dostarczyć losowy kod weryfikacyjny.
HOTP opiera się na liczniku.
Generowanie nieużywanych kodów może przesunąć urządzenie do przodu względem weryfikatora. Zapewnij ograniczony sposób ponownej synchronizacji.
TOTP opiera się na zegarze.
Zalecany krok czasowy wynosi 30 sekund. Uwzględnij opóźnienie przy wpisywaniu, nie rozszerzając nadmiernie okna akceptacji.
Wybierz model rejestracji i odzyskiwania.
Kody z aplikacji uwierzytelniającej wymagają wcześniej udostępnionego sekretu. Kody dostarczane wymagają działającego kanału dostarczania.