Kako TOTP radi
Kad skenirate 2FA QR kod, aplikacija čuva deljenu tajnu, obično 20 nasumičnih bajtova prikazanih kao Base32 string od 32 znaka. Svakih 30 sekundi računa HMAC-SHA1(tajna, ⌊sada / 30⌋), uzima četiri bajta iz rezultata na ofsetu koji daje njegov poslednji nibl, i taj broj svodi po modulu 10⁶ da dobije šest cifara. Server radi isto, obično prihvatajući i prethodni i sledeći prozor zbog odstupanja satova. Na telefonu nema mreže, zbog čega aplikacije za autentifikaciju rade offline.
otpauth URI
QR kod sadrži URI poput otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example&digits=6&period=30&algorithm=SHA1. Kad ga nalepite ovde, popunjava se svaki parametar. Većina servisa koristi podrazumevane vrednosti (SHA-1, 6 cifara, 30 s); nekoliko koristi 8 cifara ili SHA-256, a neke aplikacije ignorišu parametar algoritma, što je čest uzrok tiketa „kod je pogrešan“.
Otklanjanje grešaka u 2FA podešavanju
- Stavite tajnu ovde i u aplikaciju; kodovi moraju da se slažu. Ako ne, tajna je pogrešno ukucana ili aplikacija ignoriše parametre.
- Ako se kodovi slažu, a server ih odbija, sat servera je pogrešan. TOTP zavisi od toga da se obe strane slažu oko vremena u okviru prozora.
- Proverite da server verifikuje sa prozorom ±1 i odbija ponovnu upotrebu istog koda (replay).
Bezbednosne napomene
Tajna je cela bezbednost: svako ko je ima može zauvek da generiše kodove. Čuvajte je šifrovanu, nikada je ne beležite u logove, i gde je moguće radije koristite WebAuthn / passkeys, jer TOTP kodovi mogu da se phishuju u realnom vremenu. Ova stranica je za programere koji testiraju sopstveno podešavanje; svaku tajnu koju nalepite u pregledač tretirajte kao test podatak.
Pitanja
Zašto se moj kod razlikuje od onog u aplikaciji?
Proverite da je tajna identična (Base32 ignoriše velika/mala slova i razmake, ali svako slovo je bitno), da se cifre, period i algoritam poklapaju sa onim što je servis odredio, i da je sat vašeg računara tačan. Kod koji je pomeren za tačno jedan prozor znači razliku u satovima od oko 30 sekundi.
Šta je Base32 alfabet?
A–Z i 2–7; bez 0, 1, 8 ili 9, pa su tajne nedvosmislene kad se čitaju naglas. Padding = je opcion. Alat odbija druge znakove i kaže vam koje.
Koja je razlika između TOTP i HOTP?
HOTP (RFC 4226) koristi brojač koji se uvećava pri svakoj upotrebi; TOTP (RFC 6238) zamenjuje brojač trenutnim vremenom podeljenim periodom. Hardverski tokeni sa dugmetom su HOTP; aplikacije su TOTP. Unesite brojač iznad da izračunate HOTP.
Mogu li da generišem kodove za Google Authenticator ili Authy?
Da, oba implementiraju standardni TOTP. Steam Guard i neke bankarske aplikacije koriste vlasničke varijante koje ovaj alat ne reprodukuje.