www.SAMURAJ-cz.com 

22.04.2024 Evženie Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

FIDO passkeys část 1 - přístupové klíče pro autentizaci

Upraveno 24.03.2024 16:30 | vytvořeno 21.03.2024 09:54 | Samuraj - Petr Bouška |
Uživatelská FIDO autentizace s přístupovými klíči (passkeys). Přístupové klíče jsou výrazně bezpečnější možnost, jak se přihlásit k nějaké službě, než použití hesla. Využívá se soukromý (vlastní uživatel) a veřejný (uložen u služby) klíč. Passkeys jsou FIDO credentials podle standardu FIDO2. V článku se podíváme jak passkeys fungují, jaké jsou jejich vlastnosti a jak souvisí s FIDO2 security key.

Pozn.: Pro využití passkeys se nejvíce zaměřuji na možnosti použití v rámci Microsoft Entra ID, které aktuálně přichází. Tento článek je ale obecný, věnuje se spíše teorii, a popisuje passkeys dle oficiální dokumentace a standardů. Další díl se bude zaměřovat na praktické použití, třeba v rámci Google.

Úvod do náhrady hesel za passkeys (přístupové klíče)

Oficiální informace nalezneme na webu FIDO aliance v části Passkeys 101 - What is FIDO, primárně Passkeys (Passkey Authentication). Detaily se nachází ve FIDO2 specifikaci, která má dvě části CTAP a Webauthn. FIDO aliance navrhla široké možnosti uživatelské autentizace, ale výrobci (či platformy) mohou podporovat pouze určitou část. Příkladem je Microsoft podpora pro bezpečnostní klíče, která je zde již nějakou dobu.

Obecný popis můžeme nalézt také u Microsoftu v článku What Is FIDO2?. Podrobnější (i pro vývojáře) u Google Passwordless login with passkeys či W3C a FIDO aliance passkeys.dev.

FIDO Alliance passkeys logo

Nebezpečná hesla

To, že hesla nejsou dostatečně bezpečná, asi dnes chápe každý. Heslo je sdílené tajemství, které musí znát obě strany. Hrozí jeho zcizení (od uživatele nebo serveru) čí odhalení (útoky na heslo). Při autentizaci se přenáší přes síť, kdy může být odposlechnuto. Stále více využívají útočníci phishing pro vylákání hesla (nebo ověření uživatele). Měli bychom pro každou službu používat jiné heslo, a to by mělo být silné (složité). To klade velké nároky na uživatele. Řešením nejsou ani dlouho prosazované pravidelné změny hesla.

Jako obrana se začalo používat vícefaktorové ověření (MFA). Běžné MFA metody pracují s ověřovacím kódem (SMS či OATH) nebo schválením přihlášení, kdy musíme vlastnit určité zařízení. Ale útočníkům se daří obejít i toto zabezpečení (v některých případech). Pomocí phishingu vylákají z uživatele ověřovací kód nebo schválení přihlášení na falešné stránce a sami se přihlásí k cílové službě.

Řešením dneška je nahradit hesla za passkeys (přístupové klíče) nebo obecně přihlášení bez hesla odolné proti phishingu. Pro uživatele se tato metoda prezentuje tak, že se přihlásí jednoduše pomocí rozpoznávání obličeje (Facial recognition / Face ID) nebo porovnání otisku prstu (Fingerprint / Touch ID). To je samozřejmě technicky hodně nepřesné, ale uživatelům to tak může připadat.

Mnoho obecných informací o způsobech autentizace jsem uváděl v článku Vícefaktorová autentizace (MFA) v Microsoft Entra ID.

Passkeys vs FIDO2 (security key)

Nedávno jsem se věnoval Přihlašování pomocí FIDO2 bezpečnostního klíče (hlavně z praktického hlediska, v tomto článku probereme více o principech fungování). FIDO2 je otevřený standard pro autentizaci uživatelů z roku 2019. Nejčastěji se o něm dříve mluvilo v souvislosti s bezpečnostním klíčem (security key), tedy FIDO2 security key. Patrně v roce 2022 se objevil nový termín passkeys (přístupové klíče), ale velká pozornost se mu věnuje až v posledních měsících (dle mého dojmu). I stránky FIDO Alliance byly změněny, již nenajdeme odkaz na článek o FIDO2 (stránka stále existuje) a hlavní termín je passkeys.

Jak u FIDO2, tak u passkeys, se mluví o FIDO Authentication, zkráceně FIDO (Fast IDentity Online). Což je globální autentizační standard založený na kryptografii veřejného klíče (Public Key Cryptography). Zjednodušeně bych řekl, že passkeys je označení pro pár kryptografických klíčů, přesnější označení bude FIDO2 přihlašovací údaje (FIDO2 sign-in credentials), protože obsahují i další informace (atributy). Tedy celkově korektně mluvíme o FIDO autentizaci s přístupovými klíči (FIDO Authentication with passkeys).

Na webu FIDO aliance se používá pouze označení FIDO. Passkeys jsou přesněji založeny na sadě specifikací FIDO2, která má dvě složky. W3C (World Wide Web Consortium) standard Web Authentication - WebAuthn a doplňkový FIDO Alliance protokol Client to Authenticator Protocol 2 - CTAP2. WebAuthn je API, které je implementováno ve webových prohlížečích a platformách, takže registrovaná zařízení mohou provádět FIDO2 ověřování. CTAP2 umožňuje externím autentizátorům (jako je Security Key) komunikovat s prohlížeči a platformami pro autentizaci. Aktuálně máme CTAP 2.1, v návrhu je CTAP 2.2, a WebAuthn Level 2, v návrhu je WebAuthn Level 3.

FIDO2 bezpečnostní klíč je externí (roaming) autentizátor, kryptografický HW, který provádí FIDO autentizaci s využitím přístupových klíčů. Microsoft již dříve implementoval možnost přihlášení pomocí FIDO2 security key. Když se dnes mluví o passkeys, tak se uvažuje rozšíření použití dalších autentizátorů. Může jít o mobilní telefon, kde se využijí vlastnosti operačního systému a HW. Nebo přímo počítač, z kterého se přihlašujeme, a jeho HW (například Windows Hello s TPM čipem).

Později jsem se dočetl, že také Windows Hello je FIDO2 certifikované (od Windows 10 1903). Jde tedy o interní (platform) autentizátor. Takže i Windows Hello for Business podporuje FIDO autentizaci s využitím přístupových klíčů. Pokud chceme vytvořit passkey na Windows zařízení, tak se využije (a je vyžadováno) Windows Hello.

Passkey může být svázán s jedním zařízením (třeba FIDO2 security key, ale také mobilní telefon či počítač) nebo synchronizován mezi více zařízeními prostřednictvím cloudové služby.

Entra ID a MFA metody odolné proti phishingu

Microsoft Entra ID podporuje několik Passwordless MFA metod, které jsou Phishing resistant. Všechny využívají asymetrický pár soukromého a veřejného klíče a jsou vázány na určité zařízení. Principiálně jsou tedy podobné.

Jde o Windows Hello for Business (TPM čip počítače), Certificate-based authentication (smartcard nebo úložiště počítače) a FIDO2 security key (HW klíč). V současnosti Microsoft upravuje podporu FIDO2 security key, která se rozšíří na obecnější device-bound passkeys.

Mezi MFA metody bez hesla patří ještě Phone sign-in pomocí aplikace Microsoft Authenticator, ta ale nepatří mezi odolné proti phishingu.

Co jsou to passkeys a jak fungují

V úvodní kapitole jsme si uvedli srovnání passkeys a FIDO2 security key. Ideálně pro ty, kteří bezpečnostní klíče znají. Nachází se tam i určitý popis. Nyní si popíšeme detailněji.

Passkeys - přístupové klíče

Passkeys jsou náhrada hesel za bezpečnější možnost přihlášení bez hesla (Passwordless Authentication) pomocí vícefaktorového ověření (Multi-Factor Authentication - MFA). Můžeme říci, že jde o jednodušší a rychlejší možnost přihlášení, která je navíc odolná proti phishingu (Phishing resistant).

Passkeys jsou vždy silné (heslo si můžeme nastavit slabé) a při přihlášení se nepoužívá sdílené tajemství (heslo nebo klíč, které znají obě strany). Využívá se asymetrický pár soukromého a veřejného kryptografického klíče. Jde o přechod od přihlašovacích údajů založených na znalosti, k těm založeným na vlastnictví.

Vytváří se unikátně pro každou online službu (používá se termín Relying Party [RP]) nebo aplikaci, ke které se chceme přihlašovat. Je přímo svázán s doménou služby (RP ID) a s jinou nelze použít.

Slovo passkey, přístupový klíč, je běžné označení, které by se mělo používat podobně jako slovo heslo (password). Má se psát s malým písmenem. Passkeys jsou FIDO credentials (pověření / přihlašovací údaje) odpovídající standardnu FIDO2 (WebAuthn a CTAP2).

Passkeys jsou vyvíjeny v rámci FIDO Alliance, která sdružuje mnoho velkých firem. Jsou založeny na FIDO standardech. Podporu passkeys oznámili největší hráči Google, Microsoft a Apple v roce 2022. Takže je vestavěna přímo v hlavních mobilních a desktopových operačních systémech (Windows, macOS, iOS, Android) a webových prohlížečích.

Microsoft je podporuje od Windows 10 1903 (ve Windows 11 22H2 s KB5030310 byla přidána podpora pro správu). Apple od macOS Ventura (13) a iOS 16. Google od Android 9. Všechny běžné webové prohlížeče podporují FIDO přihlášení (protokol WebAuthn) již delší dobu.

Princip fungování passkeys

Jde o dvě různé operace

  • registrace přístupového klíče u online služby
  • použití přístupového klíče pro přihlášení

Když se uživatel registruje u online služby (podporující FIDO2), tak nejprve vybere podporovanou metodu FIDO ověřování. Následně musí aktivovat (odemknout) FIDO autentizátor, třeba pomocí PINu nebo otisku prstu. Klientské zařízení (autentizátor) vygeneruje pár klíčů, který funguje pouze pro daný web nebo aplikaci. Soukromý klíč se bezpečně uloží do zařízení koncového uživatele, což může být počítač, telefon nebo bezpečnostní klíč. Přístup je chráněn pomocí biometrie nebo PINu. Veřejný klíč, spolu s vygenerovaným Credential ID, se zašifruje a sdílí se službou. Ta jej uloží na svém ověřovacím serveru.

Schéma FIDO2 autentizace z webu fidoalliance.org

Při přihlášení služba vygeneruje unikátní kryptografickou výzvu (challenge), kterou odešle klientovi. Uživatel musí odemknout přístup k privátnímu klíči. Klientské zařízení podepíše výzvu pomocí privátního klíče a odešle zpět službě. Ta ověří podpis a data pomocí registrovaného veřejného klíče a tím ověří (přihlásí) uživatele.

Schéma FIDO2 autentizace s přístupovými klíči (passkeys)

FIDO autentizátory - FIDO authenticators

Autentizátor je softwarová komponenta nebo kus hardwaru vlastněný uživatelem, který je schopen provádět FIDO autentizaci. Autentizátory se používají k ověření vlastnictví a potvrzení identity uživatele. Jsou zodpovědné za generování párů klíčů během registrace a ochranu soukromého klíče.

  • Roaming authenticator (external) - přenosné HW zařízení oddělené od klientského zařízení, příklad je mobilní telefon nebo bezpečnostní klíč, připojí se ke klientskému zařízení pomocí USB, BLE nebo NFC, umožňuje uživatelům nosit své přihlašovací údaje u sebe a používat je k autentizaci na více zařízeních, také se nazývá cross-platform authenticator
  • Platform authenticator (internal) - je zabudován do klientského zařízení, jako počítač či telefon, zahrnuje biometrické funkce a hardwarové čipy (třeba TPM), například Windows Hello, Android Fingerprint či Apple Touch ID

Autentizátor ukládá privátní klíč a tím jsou passkey svázány s určitým zařízením. Může to být počítač, kdy se můžeme přihlásit pouze na něm. Nebo bezpečnostní klíč či telefon, které můžeme použít pro přihlášení na různých počítačích.

Přihlášení pomocí zařízení v okolí - Cross-Device Authentication

Ověření mezi zařízeními umožňuje použít passkey z jednoho zařízení k přihlášení na jiném zařízení. Využívá se CTAP protokol pro komunikaci mezi autentizátorem a klientskou platformou (klient se službou využívá WebAuthn).

Webové prohlížeče dnes standardně podporují použití Sign-in with nearby Device. Tehdy se passkey nachází na blízkém zařízení (Roaming authenticator), typicky mobilním telefonu nebo bezpečnostním klíči. Mobilní telefon musí být propojen s počítačem, nejčastěji se využije Bluetooth Low Energy (BLE) pro ověření fyzické blízkosti. Bezpečnostní klíč se připojí do USB portu.

Synced passkeys vs. Device-bound passkeys

Passkeys mohou být synchronizované mezi zařízeními uživatele pomocí cloudové služby. Pak se označují jako Multi-device passkeys nebo Synced passkeys (synchronizované přístupové klíče). Nebo mohou být svázané se zařízením z kterého je nelze kopírovat. Ty označujeme jako Single-device passkeys nebo Device-bound passkeys (přístupové klíče vázané na zařízení).

Myslím si, že technický rozdíl je v tom, že Device-bound passkeys mají privátní klíč uložen tak, aby nešel kopírovat (získat). Ideálně v nějakém kryptografickém HW (kryptoprocesor), jako je TPM, Smart card nebo Security Key. Pouze se volají kryptografické operace, které HW provede za pomoci privátního klíče.

FIDO Alliance se snaží přesvědčit uživatele, aby nahradili hesla bezpečnější metodou. Velká výhoda hesel je, že je můžeme použít kdekoliv (z jakéhokoliv zařízení). Proto aliance navrhla možnost synchronizovat passkeys mezi zařízeními, aby odbourali nechuť uživatelů v tomto ohledu.

Aliance se snaží argumentovat, že je to stále dostatečně bezpečné (poskytovatelé synchronizace musí mít silnou ochranu zabezpečení účtu, komunikace je šifrovaná, atd). Synchronizované přístupové klíče ukládáme (typicky) dle platformy u svého účtu Apple (iCloud Keychain), Google (Google Password Manager) či Microsoft (Microsoft account). Přesto se Microsoft pro Entra ID rozhodl podporovat pouze Device-bound passkeys.

Osobně si myslím, že použití specializovaného kryptografického HW (jako je čipová karta nebo bezpečnostní klíč) pro uložení privátního klíče, poskytuje vyšší bezpečnost. Než když je uložen v operačním systému (na mobilním telefonu nebo počítači). Tam by se patrně měl využít Trusted Platform Module (TPM), Trusted Execution Environment (TEE) nebo Secure Element (SE). Při možnosti synchronizace, kdy se privátní klíč dostává mimo naše zařízení, se bezpečnost ještě snižuje. Je to ale lepší než použití hesla. Je potřeba hledat kompromis pro určité situace mezi bezpečností a jednoduchostí a dostupností.

Zjistitelné přihlašovací údaje - Discoverable credentials

Passkeys mohou během přihlášení nahradit nejen heslo, ale také uživatelské jméno. Uživatel při přihlášení nemusí nic zadat. Stačí zvolit odpovídající přihlašovací metodu (FIDO passkey / security key) a vybrat účet ze seznamu passkeys. FIDO Credentials v sobě obsahují různé atributy jako kryptografický algoritmus, uživatelské jméno a doménu služby.

Může být požadované dvoukrokové ověření, když musí uživatel znát svoje ID (zadat uživatelské jméno) a podle něj se hledají klíče. Credentials, které je možno nalézt bez znalosti ID, se nazývají Discoverable credentials (dříve se označovali jako resident key). Přihlašovací údaje musí být vytvořeny již při registraci jako Discoverable credentials.

Jaká je síla (kategorie) passkeys autentizace

Vícefaktorová autentizace - Multi-Factor Authentication

Ověření pomocí passkeys splňuje základní princip vícefaktorového zabezpečení (MFA). Klíče jsou uloženy v zařízení (něco, co uživatel má) a pro použití se musí použít biometrie (něco, čím uživatel je) nebo PIN (něco, co uživatel zná). Důležité je, aby útočník nemohl získat privátní klíč z platformy uživatele (třeba pomocí ukradeného hesla, pak by mu stačil jeden faktor k přihlášení).

Přihlášení bez hesla - Passwordless Authentication

Přihlášení pomocí passkeys se označuje jako přihlášení bez hesla, protože pro přihlášení do aplikace nebo webu nepoužíváme heslo. Takže se ani žádná forma hesla nepřenáší po síti. Místo toho se použije privátní klíč a pomocí něj se podepíší data, která se odešlou službě. Ani klíč se tedy nepřenáší po síti.

Přístup ke klíči na zařízení je chráněn pomocí stejné biometrie, PINu nebo hesla, které uživatel používá k jeho odemknutí (přihlášení). Uživatel schválí přihlášení do aplikace nebo webu použitím dané metody. Biometrické informace nebo PIN/heslo se použijí pouze lokálně na zařízení a neposílají se na cílový server.

V řadě případů můžeme používat PIN pro přístup ke klíči. Uživateli to může připadat, že se přihlašuje PINem, což je vlastně heslo. Význam přihlášení bez hesla je v tom, že tento PIN (heslo) se nepoužívá pro ověření u cílové služby. Kdyby útočník PIN získal, tak se pomocí něj nemůže přihlásit, musel by také získat zařízení.

Přihlášení odolné proti phishingu - Phishing resistant

Pro přihlášení se používá privátní klíč, ale uživatel s ním přímo nepracuje a ve většině případů k němu ani nemá přístup. Takže není možné, aby jej útočník od uživatele vylákal, jak se může stát v případě hesla (zobrazením falešného dialogu, kam jej uživatel zadá).

Druhá věc je, že přihlášení pomocí passkeys můžeme provést pouze na zařízení, kde jsou klíče uložené. Případně na jiném zařízení ve fyzické blízkosti (Roaming authenticator). Také musíme odemknout přístup k autentizátoru. Pokud pro MFA používáme schválení přihlášení na mobilním telefonu (Phone sign-in), tak můžeme schválit přihlášení útočníka někde v internetu (který jej na nás podvodně vylákal).

Ochrana proti MITM (Man-in-the-middle attack)

Všechny dokumenty o passkeys zdůrazňují, že jsou odolné proti phishingu. Na některých místech se uvádí také související, že jsou odolné vůči útokům man-in-the-middle (MITM). Tato informace je přímo ve WebAuthn specifikaci. Těžší je nalézt detaily, jak je toho dosaženo.

Passkey je svázán s doménou služby a může být použit pouze pro ni. Pokud útočník vytvoří podvrženou stránku, tak nesouhlasí URL a passkey se nepoužije. Je to obsaženo v technologii, takže ani uživatel nemůže tuto vlastnost obejít a pokusit se přihlásit. Doména služby (RP ID) se také posílá během ověřovací komunikace.

V procesu autentizace se využívá výzva (challenge), kterou vytváří služba v prvním kroku credential request. Musí být unikátní, kryptograficky bezpečná (neodhadnutelná), s omezenou platností. Chrání uživatele před útoky opakovaného přehrávání (replay attacks). Využívá se také protokol Transport Layer Security (TLS), tedy certifikáty a kontrola domény.

zobrazeno: 746krát | Komentáře [0]

Autor:

Související články:

Azure AD / Entra ID identity a autentizace

Články související s identitou uživatelů a zařízení (nejen) v Microsoft Entra ID. Různé možnosti přihlašování a ověřování. Oblasti jako moderní autentizace, vícefaktorová autentizaci, přihlašování bez hesla, apod.

FIDO autentizace - FIDO Authentication

FIDO autentizace je založena na standardu FIDO2 (WebAuthn a CTAP2). Přináší bezpečnější možnost přihlášení k online službám. Patří mezi Passwordless MFA (vícefaktorové ověření bez hesla). Zároveň zvyšuje pohodlí uživatelů (podporuje použití biometrie). Jde například o Windows Hello for Business, FIDO2 security key a obecně passkeys (přístupové klíče).

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

Zatím tento záznam nikdo nekomentoval.

Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách