section

Vícefaktorové ověření - teorie

06.09.2021 | Tag Bezpečnost

MFA a 2FA jsou dnes hodně populární pojmy. Metod pro vícefaktorové ověření je spousta, proto mě napadlo napsat o nich a vícefaktoru obecně nějaké povídání.

Úplný základ pro ověření uživatele je pomocí hesla. Existuje spousta textů o tom, jak má být heslo dlouhé, jak komplexní a jak často (a jestli vůbec) ho měnit. Protože názory se různí a v mnohých aspektech jdou přímo proti sobě, je na každém správci aplikace, jak se k zabezpečení postaví. Nicméně, protože hesla prostě unikají, přišlo vícefaktorové ověření a později passwordless ověření, tedy metoda ověření úplně bez hesla.

Pro začátek, MFA a 2FA jsou pojmy velice blízké. Vlastně jde jen o hraní se slovy, a ne o rozdílnou technologii. 2FA by mělo znamenat ověření pomocí přesně dvou faktorů. Běžně jde o heslo a nějakou další metodu. MFA je ověření s použitím více něž jednoho faktoru. Většinou se používá třífázové ověření, ale jde vazbit i více. Passwordless se pak často skloňuje společně, protože k přihlášení místo hesla používá kryptografii, tak jako většina metod druhého faktoru. Passwordless pak také umí být vícefaktorové.

MFA nebo 2FA, v obou případech je cílem ke standardnímu ověření přidat nějaký další faktor, kterým uživatel prokáže svou identitu. Velmi pěkný příklad je bankomat. Uživatel se prokazuje vlastnictvím karty a znalostí PINu k té kartě, to je dvoufaktor.

Faktory, které se k potvrzení identity dají použít, se klasicky shrnují do tří kategorií:

Druhý faktor se typicky zajišťuje pomocí jiné ověřovací metody, než je heslo. Může to tedy být ověření pomocí certifikátu na kartě nebo tokenu, pomocí mobilní aplikace, přes SMS nebo biometrikou. Ověřovací metody se do praxe uvádějí pomocí ověřovacích standardů pod záštitou organizací, které tyto standardy definují a dále rozvíjí. Ty nejznámější ověřovací standardy jsou například TOTP a HOTP, U2F, FIDO2 a PIV.

MFA1

U2F na počátku vyvinuly firmy Yubico a Google ve vzájemné spolupráci. Výsledek předali FIDO Alliance, která od té chvíle U2F zaštiťuje a dále spravuje. Standard podporuje většina moderních prohlížečů a velkých společností. Původně sloužil pro zabezpečení webových aplikací, ale dále se rozšiřuje. Nedávno jej například implementovalo i OpenSSH, takže se dá použít také pro zabezpečení SSH relací. U2F je myšlený jako druhý faktor založený na PKI využívající hardwarové tokeny. Hardwarový token je většinou USB klíček (třeba Yubikey), ale může to být například i mobil. U2F token v sobě má unikátní privátní klíč, ke kterému nikdo nemá přístup. Pro každou službu, kam se v rámci zapnutí dvoufaktoru/passwordless token registruje, vygeneruje pár klíčů (za použití svého privátního klíče), které se posléze pro komunikaci se službou používají. Klíč je svázaný se zdrojem, ke kterému se registroval, takže na jiné stránky (například podvržený portál) nebude reagovat. Při dalším přihlášení po registraci tokenu uživatel zadá jméno a heslo, které služba ověří. Pokud je správné, služba zašle výzvu, kterou prohlížeč předá tokenu. Většinou je v této fázi vyžadován dotek na zařízení jako další forma ochrany, a poté token pošle službě odpověď. Služba odpověď prověří na základě vyměněných údajů při registraci a tím je proces dokončen. Více do podrobna je U2F rozebráno na stránkách FIDO Alliance.

Prakticky, U2F je hodně rozšířený standard s podporou na spoustě platformách. Jeho nasazení je velmi snadné a uživatelsky přívětivé. Nicméně, důrazně se doporučuje při používání U2F registrovat tokeny aspoň dva, nebo nastavit nějakou formu záložního ověření, pokud by se token ztratil nebo rozbil.

MFA2

FIDO Alliance se od vydání U2F snažila umožnit uživatelům bezpečné přihlášení ke službám z běžných zařízení. Z této iniciativy vzniklo FIDO2, což v sobě kombinuje WebAuthn standard od W3C a CTAP od FIDO Alliance. WebAuthn je webové API umožňující využití PKI pro ověření do webových aplikací a nahrazení přihlášení pomocí hesla. Standard vznikl spoluprací mezi FIDO Alliance a W3C konsorciem. CTAP zjednodušeně umožňuje FIDO zařízením fungovat s prohlížeči. Pokud je U2F myšlený jen jako druhý faktor, FIDO2 je jeho nástupce umožňující použít kryptografii pro vícefaktor i bezheslové přihlašování. Dobře je FIDO2 vysvětlené opět na stránkách FIDO Alliance.

U FIDO2 i U2F je potřeba interakce mezi klientem a službou, kam se klient přihlašuje. Podmínkou pro to je přístup k síti, což je asi logické. Nicméně druhý faktor může být nasazený i na offline aplikace bez přístupu k nějaké síti. Hodně se pro tento účel využívá OTP, tedy one time password.

OTP se podle způsobu generování dělí na HOTP a TOTP. Obojí jsou otevřené standardy od OATH (initiative of open authentication). TOTP je velmi rozšířená forma druhého faktoru, jde o generování jednorázového hesla na základě času. Každé OTP je platné po určitý časový úsek, většinou 30 – 60 vteřin. Po vyprchání této doby je vygenerované OTP neplatné. Použití TOTP je tedy závislé na správném čase. Proto například Yubikey nepodporuje TOTP napřímo, klíček nemá vnitřní zdroj času. HOTP je generování jednorázového hesla na základě události (H ve zkratce značí HMAC). Není závislé na čase, místo toho používá počítadlo událostí, které se synchronizuje na serveru a klientovi. Při každém vygenerování OTP se počítadlo zvedne o 1. Uživatelsky je to přívětivá metoda, ale je náchylná na rozhození synchronizace mezi klientem a serverem, pokud je uživatel příliš horlivý klikač, nebo pokud někdo zkusí brute force.

MFA3

Poslední část bude o ověření pomocí certifikátů na kartě. U této metody uživatel vlastní kartu s certifikátem a zná PIN k certifikátu. Standard, který se pro tuto metodu používá, je například PIV.

MFA4

PIV nebo také FIPS 201 je standardem US vlády, původně vyvíjený pro jejich interní účely. Standard má nativní podporu ve Windows a dá se použít i s jinými systémy. Pro ověření se zde používají X.509 certifikáty nahrané na smart kartě (případně je možné použít Yubikey, které PIV podporuje) a standardně chráněné PINem, který uživatel musí znát. Protože PIV funguje na certifikátech, pro nasazení je potřeba fungující PKI infrastruktura. PIV standard spravuje a definuje NIST. Zajímavé může být, že jejich specifikace klíčů explicitně definuje délku RSA klíče 2048, proto například ani Yubikey nepodporuje klíč o velikosti 4096. PIV pro uložení certifikátů definuje sloty se svým specifickým účelem. Tyto sloty určují, zda se vyžaduje PIN k certifikátu a jak často je potřeba zadat. Těchto slotů je více jak dvacet, běžně využívané jsou však jen některé.

Hodnota klíče Typ klíče Vyžadování PINu
9a PIV Authentication ano
9c Digital Signature ano, při každé operaci
9d Key Management ano
9e Card Authentication ne