Időalapú egyszer használatos jelszó

Az időalapú egyszer használatos jelszó (TOTP) egy számítógépes algoritmus, amely a jelenlegi időt használja fel egyedi egyszer használatos jelszó (OTP) előállításához. A HMAC-alapú egyszer használatos jelszó (HOTP) kiterjesztéseként készült, és az Internet Engineering Task Force (IETF) szabványaként került elfogadásra.[1]
A TOTP az Initiative for Open Authentication (OATH) kezdeményezés egyik alapvető eleme, és számos kétlépcsős hitelesítés[1] (2FA) rendszerben alkalmazzák.
Történet
[szerkesztés | forrásszöveg szerkesztése]Több OATH-tag együttműködésének eredményeként elkészült egy TOTP-tervezet, amelynek célja egy iparági támogatással rendelkező szabvány létrehozása volt. Ez kiegészíti az eseményalapú egyszer használatos jelszót (HOTP), és lehetőséget biztosít a végfelhasználói szervezetek és vállalatok számára, hogy olyan technológiát válasszanak, amely leginkább megfelel az alkalmazásaik követelményeinek és biztonsági irányelveiknek. 2008-ban az OATH benyújtotta a specifikáció egy tervezetét az IETF-hez. Ez a verzió már tartalmazza azokat a visszajelzéseket és észrevételeket is, amelyeket a szerzők az IETF-hez korábban benyújtott változatokkal kapcsolatban kaptak a technikai közösségtől.[2] 2011 májusában a TOTP hivatalosan is RFC 6238-ként került elfogadásra.[1]
Algoritmus
[szerkesztés | forrásszöveg szerkesztése]A TOTP-hitelesítés működéséhez a hitelesítést kérő fél (pl. felhasználó) és a hitelesítő (pl. szerver) előzetesen meg kell hogy egyezzenek a HOTP paramétereiben, valamint az alábbi TOTP-paraméterekben:
T0: az az Unix-idő, amelytől kezdve az időlépéseket számolni kell (alapértelmezés szerint 0),
TX: az az időintervallum, amely alapján a számláló CT értéke kiszámításra kerül (alapértelmezés szerint 30 másodperc).
A hitelesítő és a hitelesítést kérő fél egyaránt kiszámítja a TOTP-értéket, majd a hitelesítő ellenőrzi, hogy a felhasználó által megadott TOTP megegyezik-e a helyben generált értékkel. Egyes hitelesítők elfogadnak olyan TOTP-kódokat is, amelyeket a jelenlegi időpontnál kicsivel korábban vagy később kellett volna generálni — ez a lehetőség az órák közötti eltérések, hálózati késleltetés vagy felhasználói lassúság miatt szükséges.
A TOTP a HOTP algoritmust használja, de a számláló helyére egy nem csökkenő érték kerül, amely az aktuális időn alapul:
TOTP érték(K) = HOTP érték(K, CT),
ahol a számláló értéke az alábbi képlettel számítható:
ahol:
CT az időintervallumok (TX) száma T0 és T között,
T az aktuális idő másodpercben, egy adott epoch óta számolva,
T0 az epoch időpontja másodpercben megadva (pl. ha Unix-időt használunk, akkor T0 = 0),
TX az időlépés hossza (pl. 30 másodperc).
Biztonság
[szerkesztés | forrásszöveg szerkesztése]A jelszavakkal ellentétben a TOTP-kódok csak korlátozott ideig érvényesek. A felhasználóknak azonban ezeket a kódokat egy hitelesítési oldalon kell megadniuk, ami lehetőséget ad a adathalász-támadásokra. Mivel a TOTP-kódok csak rövid ideig érvényesek, a támadóknak valós időben kell továbbítaniuk a hitelesítési adatokat, hogy sikerrel járjanak.[3]
A TOTP-hitelesítési adatok egy közös titkon alapulnak, amelyet mind a kliens, mind a szerver ismer, így több olyan pont is létezik, ahonnan ez a titok kiszivároghat. Ha egy támadó hozzáfér ehhez a megosztott titokhoz, tetszőlegesen tud érvényes TOTP-kódokat generálni. Ez különösen nagy problémát jelenthet, ha a támadó egy nagyméretű hitelesítési adatbázist tör fel.[4]
Alkalmazások és támogatás
[szerkesztés | forrásszöveg szerkesztése]A TOTP szabványt számos szoftver és szolgáltatás támogatja, köztük:
- nyílt forráskódú hitelesítő alkalmazások, például Aegis, FreeOTP, 2FAS vagy KeePassXC,
- kereskedelmi szoftverek, mint a Google Authenticator, Microsoft Authenticator vagy Authy,
- webes szolgáltatások, például GitHub, Google, Facebook, Dropbox, és különböző Wikimedia-projektek (adminisztrátori szinten).
Jegyzetek
[szerkesztés | forrásszöveg szerkesztése]- 1 2 3 m'Raihi, David; Rydell, Johan; Pei, Mingliang; Machani, Salah (2011. május). "RFC 6238 – TOTP: Time-Based One-Time Password Algorithm". 2011-07-11 dátummal az eredetiből archiválva. Hozzáférés: 2011-07-13.
{{cite web}}: Check date values in:|date=(súgó) - ↑ Alexander, Madison. "OATH Submits TOTP: Time-Based One Time Password Specification to IETF". Open Authentication. 2013. április 9. dátummal az eredetiből archiválva. Hozzáférés: 2010. február 22..
- ↑ Umawing, Jovi (2019. január 21.). "Has two-factor authentication been defeated? A spotlight on 2FA's latest challenge". Malwarebytes Labs (amerikai angol nyelven). 2020. szeptember 25. dátummal az eredetiből archiválva. Hozzáférés: 2020. augusztus 9..
- ↑ Zetter, Kim. "RSA Agrees to Replace Security Tokens After Admitting Compromise". WIRED (amerikai angol nyelven). 2020. november 12. dátummal az eredetiből archiválva. Hozzáférés: 2017. február 17..