Bezpečná, levná a uživatelsky přívětivá dvoufaktorová autentizace – 2. díl

V minulém příspěvku jsme se zamýšleli nad tím, jak by mohla vypadat bezpečná, levná a uživatelsky přívětivá dvoufaktorová autentizace, dnes se budeme věnovat zabezpečení privátního klíče.

Největší slabinou celého řešení je zcela jistě samotný smartphone, na kterém je privátní klíč uložen. Smartphone skutečně nelze považovat za důvěryhodnou platformu, která by poskytovala stejnou úroveň bezpečnosti jako HW token, který např. splňuje FIPS 140-2 Level 4. V případě smartphonu není nijak zajištěno, že ho privátní klíč nikdy neopustí, nebo že po určitém počtu chybně zadaných PIN dojde k jeho zablokování nebo smazání.

Útočník může poměrně snadno provést reverzní inženýrství aplikace nainstalované na smartphonu a zjistit, jaký šifrovací algoritmus byl použit, a kde je privátní klíč uložen. Následně si pak může zašifrovaný klíč zkopírovat na desktop a tam pak zkoušet všechny možné PINy. To, že zadal správný PIN, pozná podle toho, že výsledkem dešifrování bude soubor, jehož struktura odpovídá struktuře privátního klíče.

Obfuskace kódu ani šifrování privátního klíče pomocí PIN, který se spojí s nějakým dalším řetězcem, obvykle nepomůže, protože útočník svůj PIN zná a tak může debugovaním aplikace zjistit, jak se klíč, kterým je šifrován privátní klíč, v paměti zařízení vytváří. Této znalosti pak útočník může využít k získání klíče i z jiného telefonu. Vzhledem k tomu, že útočník zkouší všechny možné PINy mimo aplikaci, není omezen počtem pokusů.

Je zřejmé, že jestliže je možné privátní klíč z telefonu vykopírovat nebo zkoušet různé PINy, aniž by došlo k jeho zablokování, nemůžeme se na zabezpečení privátního klíče pomocí ochran implementovaných na úrovni samotného OS a aplikace, spolehnout, a musíme klíč k dešifrování privátního klíče uložit jinde, kde budeme schopni počet chybně zadaných PIN kontrolovat.

To je úkol pro vzdálenou autentizační autoritu, vůči které se uživatel autentizuje, neboť ta je schopna detekovat počet chybně zadaných hesel a na tuto skutečnost reagovat. Pokud uživatel opakovaně zadá chybný PIN, dojde k zablokování jeho účtu a jeho odblokování je možné např. až po zodpovězení kontrolní otázky.

Řešením tedy je privátní klíč šifrovat pomocí dlouhého klíče, který je uživateli na jeho smartphone zaslán až v okamžiku, kdy se úspěšně autentizuje. Netřeba snad dodávat, že tento klíč se nikam neukládá, a po dešifrování je zpaměti ihned uvolněn.

Tímto způsobem je možné riziko podstatně snížit. Přesto zde stále existuje možnost, že si útočník soubor obsahující zašifrovaný privátní klíč zkopíruje na desktop a využije nějaké nově objevené zranitelnosti, která snižuje bezpečnost použitého algoritmu. Je zřejmé, že pokud se klíč, pomocí kterého se provádí příslušná kryptografická operace, nachází přímo na smartphonu, je možné ho z něj s větším či menším úsilím získat.

Jedním z možných řešení, které by zabránilo kompromitace klíče v případě fyzického zmocnění smartphone útočníkem, je rozdělení klíče na dvě či více částí, přičemž jednu část je možné umístit na samotné zařízení, a další pak na server společnosti, do jejíž aplikace se chce uživatel autentizovat, případně ještě na server třetí strany.

Výhoda tohoto řešení je, že žádnou část klíče nelze samostatně použít, ani nejde z jedné části odvodit druhou. Celý klíč se nikam neukládá, neboť se sestavuje v paměti zařízení uživatele a ihned po autentizaci je zahozen. Do aplikace, která tento způsob autentizace zavedla, se můžete přihlásit z jakéhokoliv zařízení a na daném zařízení nemusíte ani nic instalovat.

I kdyby se útočníkovi podařilo pomocí nějaké dosud neobjevené zranitelnosti dešifrovat část klíče uložené na smartphonu, musel by získat i druhou část uloženou na serveru. Jenže zde bude, jak již bylo několikrát řečeno, omezen počtem možných pokusů.

Poznámka: Když mluvíme o bezpečném přenosu, tak předpokládáme, že proběhne oboustranná autentizace (mutual authentication, zkr. MTA), a bude sestaveno SSL/TLS spojení a veškerá přenášená data v rámci této relace tak budou šifrována.

Pokud vás tento článek zaujal, můžete odkaz na něj sdílet.

Štítky:


K článku “Bezpečná, levná a uživatelsky přívětivá dvoufaktorová autentizace – 2. díl” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: