Časově založený jednorázový algoritmus hesla

TOTP ( Time-based One-Time Password Algorithm , RFC 6238 [1] ) je algoritmus OATH pro generování jednorázových hesel pro bezpečnou autentizaci , který je vylepšením HOTP (Algorithm One-Time Password Algorithm založený na HMAC) . Jedná se o jednosměrný autentizační algoritmus – server ověřuje identitu klienta . Hlavním rozdílem mezi TOTP a HOTP je generování hesla na základě času, tj. čas je parametr [2] . V tomto případě se obvykle nepoužívá přesné označení času, ale aktuální interval s předem nastavenými hranicemi (obvykle 30 sekund).

Historie

Od roku 2004 OATH ( The Initiative for open authentication ) pracuje na projektu One Time Password (OTP). Prvním výsledkem byl HOTP (algoritmus OTP založeného na Hash Message Authentication Code (HMAC)) zveřejněný v prosinci 2005. Byl předložen jako projekt IETF (The Internet Engineering Task Force) [2] [3] .

Další práce OATH byly na zlepšení HOTP a TOTP byl představen v roce 2008 [4] . Tento algoritmus nepoužívá čítač k synchronizaci klienta a serveru, ale generuje heslo na základě času, které je platné po určitý interval. Algoritmus funguje takto: klient vezme aktuální hodnotu časovače a tajného klíče, zahašuje je pomocí nějaké hashovací funkce a odešle je na server, server zase provede stejné výpočty, po kterých potřebuje pouze porovnat tyto hodnoty [5] . Lze ji implementovat nejen na hashovací funkci SHA-1 , na rozdíl od HOTP je tedy hashovací funkce také vstupním parametrem [2] .

Později byl představen nový algoritmus, který rozšiřuje TOTP ještě dále. Byl představen v září 2010 a dostal název OATH Challenge-Response Algorithms (OCRA) . Hlavní rozdíl od předchozích algoritmů je v tom, že server se také účastní autentizace. Klient si tedy může být jistý i jeho pravostí [2] .

Jak to funguje

Ve skutečnosti je TOTP variantou algoritmu HOTP, ve kterém je jako hodnota čítače nahrazena časově závislá hodnota [1] . Označit:

Potom [1] [6]

kde

označte String — výsledek HMAC-SHA-1(K,T); OffsetBits - nízké 4 bity řetězce ; Offset = StringToNumber(OffsetBits) a výsledkem Truncate bude řetězec čtyř znaků - String[Offset] ... String[Offset + 3] [6]

Za zmínku také stojí, že na rozdíl od HOTP, který je založen pouze na SHA-1 , může TOTP používat také HMAC-SHA-256 , HMAC-SHA-512 a další hashovací funkce HMAC:

atd. [1]

Spolehlivost algoritmu

Koncept jednorázových hesel ve spojení s moderními kryptografickými metodami lze použít k implementaci bezpečných systémů vzdálené autentizace [5] . TOTP je poměrně odolný vůči kryptografickým útokům, ale existuje šance na hacknutí, například taková varianta útoku typu man-in-the-middle je možná :

Nasloucháním klientskému provozu může útočník zachytit zaslané přihlašovací jméno a jednorázové heslo (nebo z něj hash). Pak už stačí, aby zablokoval počítač „oběti“ a svým jménem poslal autentizační údaje. Pokud se mu to podaří v určitém časovém období , pak bude moci získat přístup. To je důvod, proč byste to měli udělat malý. Pokud je ale doba expirace hesla příliš krátká, pak v případě mírné desynchronizace klient nebude moci získat přístup [5] .

Existuje také zranitelnost spojená se synchronizací serverových a klientských časovačů, protože existuje riziko desynchronizace časových informací na serveru a v softwaru a/nebo hardwaru uživatele. Protože TOTP používá jako parametr čas, pokud se hodnoty neshodují, všechny pokusy o ověření uživatele selžou. V tomto případě bude také nemožné falešné přiznání někoho jiného. Nutno podotknout, že pravděpodobnost takové situace je extrémně malá [5] .

Viz také

Poznámky

  1. 1 2 3 4 M'Raïhi, Machani, Pei a kol., 2011 .
  2. 1 2 3 4 Nathan Willis, 2010 .
  3. Vaidya, Park, Rodrigue, 2009 .
  4. OATH předkládá TOTP: Time-Based One Time Password Specification IETF .
  5. 1 2 3 4 Davletchanov, 2006 .
  6. 1 2 M'Raïhi, Bellare, Hoornaert a kol., 2005 .

Zdroje

Odkazy