Időalapú egyszer használatos jelszó

A 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]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]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]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]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]- ↑ a b c RFC 6238 – TOTP: Time-Based One-Time Password Algorithm, 2011. május 1. [2011. július 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. július 13.)
- ↑ Alexander, Madison: OATH Submits TOTP: Time-Based One Time Password Specification to IETF. Open Authentication. [2013. április 9-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. február 22.)
- ↑ Umawing, Jovi: Has two-factor authentication been defeated? A spotlight on 2FA's latest challenge (amerikai angol nyelven). Malwarebytes Labs , 2019. január 21. [2020. szeptember 25-i 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 . [2020. november 12-i dátummal az eredetiből archiválva] (Hozzáférés: 2017. február 17.) (amerikai angol nyelvű)