Objaśnione Kody QR TOTP 2FA

Techniczne głębokie nurkowanie w format URI otpauth://, tajemnice base32 i matematykę TOTP RFC 6238.

Co to jest TOTP

TOTP (hasło jednorazowe oparte na czasie, RFC 6238) to algorytm stojący za Google Authenticator, Authy, 1Password, Bitwarden i każdą inną aplikacją uwierzytelniającą. Generuje kod 6-cyfrowy, który zmienia się co 30 sekund na podstawie wspólnego tajemnica i bieżącego czasu Uniksa.

URI otpauth

otpauth://totp/Issuer:account@example.com?secret=BASE32SECRET&issuer=Issuer&algorithm=SHA1&digits=6&period=30

Schemat URI to otpauth://, typ to totp (drugą opcją jest hotp, oparta na liczniku), następnie etykieta, następnie parametry zapytania. Aplikacje uwierzytelniające analizują ten URI i dodają go do skarbca użytkownika za jednym skanem.

Etykieta

Format opcjonalny: Issuer:account@example.com. Prefiks Issuer jest nadmiarowy wobec parametru zapytania issuer, ale większość aplikacji respektuje oba.

Tajemnica

Łańcuch bajtów zakodowany base32 (A-Z i 2-7, bez dopełnienia). Rekomendowane minimum 128 bitów, większość serwerów używa 160 bitów (32 znaki base32). Nigdy nie koduj URL tajemnicy; pozostaw ją jako surowy base32.

Algorytm, cyfry, okres

algorithm: SHA1 (domyślnie, powszechnie obsługiwany), SHA256 lub SHA512. digits: 6 (domyślnie) lub 8. period: 30 sekund (domyślnie) lub 60. Trzymaj się ustawień domyślnych, chyba że masz powód, niektóre aplikacje uwierzytelniające nie implementują opcji innych niż domyślne.

Jak obliczany jest kod

W każdym 30-sekundowym przedziale uwierzytelniacz: HMAC-SHA1(secret, floor(unix_time / 30)), bierze ostatnie 4 bity HMAC jako dynamiczne przesunięcie, czyta 4 bajty zaczynające się od tego przesunięcia, maskuje do 31 bitów i zmniejsza modulo 106 aby uzyskać kod 6-cyfrowy.

Użyj Abundera QR aby wygenerować

Otwórz generator TOTP, wypełnij wystawcę (nazwę twojej marki), konto (email użytkownika lub nazwę użytkownika) i tajemnicę base32. Ustawienia domyślne dla algorytmu/cyfr/okresu są prawidłowe dla prawie każdego serwera. Pobierz PNG i wyślij do użytkownika e-mailem lub SMS, lub osadź go w przepływie rejestracji.

Uwaga o prywatności

Twoja tajemnica TOTP to wspólne poświadczenie między serwerem a użytkownikiem. Abundera QR nigdy nie widzi ani jednego, ani drugiego. Wszystko kodowanie odbywa się w przeglądarce. Przeczytaj pełną politykę prywatności.