Rozhraní API WebAuthn pro ověřování bez hesla ve Windows
Hesla můžou vaše zákazníky ohrozit úniky dat a útoky na zabezpečení ze strany uživatelů se zlými úmysly.
Microsoft je již dlouhou dobu propagací ověřování bez hesla a v Windows 10 (verze 1903) zavedla rozhraní API platformy Win32 WebAuthn W3C/Fast IDentity Online 2 (FIDO2).
Od Windows 11 verze 22H2 podporují rozhraní API WebAuthn algoritmy ECC.
Co to znamená?
Pomocí rozhraní WebAuthn API můžou vývojáři a komunita vývojářů používat klíče zabezpečení Windows Hello nebo FIDO2 k implementaci vícefaktorového ověřování bez hesla pro své aplikace na zařízeních s Windows.
Uživatelé těchto aplikací nebo webů můžou k ověřování bez hesla použít libovolný prohlížeč, který podporuje rozhraní API WebAuthn. Uživatelé budou mít ve Windows známé a konzistentní prostředí bez ohledu na to, který prohlížeč používají.
Vývojáři by měli používat rozhraní API WebAuthn k konzistentní podpoře ověřovacích klíčů FIDO2 pro uživatele. Kromě toho můžou vývojáři používat všechny přenosy, které jsou k dispozici podle specifikací FIDO2 (USB, NFC a BLE), a zároveň se vyhnout režii interakce a správy.
Poznámka
Když se tato rozhraní API používají, Windows 10 prohlížeče nebo aplikace nemají přímý přístup k přenosům FIDO2 pro zasílání zpráv souvisejících s FIDO.
Celkový přehled
Protokol CTAP2 (Client to Authenticator Protocol 2) a WebAuthn definují abstraktní vrstvu, která vytváří ekosystém pro silně ověřené přihlašovací údaje. V tomto ekosystému každý interoperabilní klient (například nativní aplikace nebo prohlížeč), který běží na daném klientském zařízení, používá standardizovanou metodu pro interakci s jakýmkoli interoperabilním ověřovacím nástrojem. Mezi interoperabilní ověřovací objekty patří ověřovací objekty, které jsou integrované do klientského zařízení (ověřovatelé platformy), a ověřovatelé, které se připojují ke klientskému zařízení pomocí připojení USB, BLE nebo NFC (roamingové ověřovací rutiny).
Proces ověřování se spustí, když uživatel provede určité gesto uživatele, které značí souhlas s operací. Na žádost klienta ověřovací nástroj bezpečně vytvoří silné kryptografické klíče a uloží je místně.
Po vytvoření těchto klíčů specifických pro klienta můžou klienti požádat o ověření registrace a ověřování. Typ podpisu, který privátní klíč používá, odráží gesto uživatele, které bylo provedeno.
Následující diagram znázorňuje interakci CTAP a WebAuthn. Světle modré tečkované šipky představují interakce, které závisí na konkrétní implementaci rozhraní API platformy.
Relace komponent, které se účastní ověřování bez hesla
Kombinovaný tanec WebAuthn/CTAP2 obsahuje následující přetypování znaků:
Klientské zařízení. Klientské zařízení je hardware, který je hostitelem daného silného ověřování. Příkladem klientských zařízení jsou přenosné počítače a telefony.
Předávající strany a klienti. Předávající strany jsou webové nebo nativní aplikace, které využívají silné přihlašovací údaje. Předávající strany běží na klientských zařízeních.
Jako předávající strana může nativní aplikace fungovat také jako klient WebAuthn a provádět přímá volání WebAuthn.
Jako předávající strana nemůže webová aplikace přímo komunikovat s rozhraním API WebAuthn. Předávající strana musí dohodu zprostředkovávat prostřednictvím prohlížeče.
Poznámka
Předchozí diagram nezobrazuje ověřování s jedním Sign-On (SSO). Dávejte pozor, abyste nezaměňovali předávající strany FIDO s federovanými předávajícími stranami.
Rozhraní API WebAuthn. Rozhraní API WebAuthn umožňuje klientům vytvářet požadavky na ověřovatele. Klient může ověřovacího uživatele požádat o vytvoření klíče, zadání kontrolního výrazu o klíči, možnosti sestavy, správu PIN kódu atd.
Platforma/hostitel CTAP2. Platforma (ve specifikaci CTAP2 označovaná také jako hostitel) je část klientského zařízení, která vyjednává s ověřovatelem. Platforma zodpovídá za bezpečné hlášení původu požadavku a volání rozhraní API CBOR (Concise Binary Object Representation) CTAP2. Pokud platforma nepodporuje CTAP2, přebírají větší zátěž samotní klienti. V tomto případě se komponenty a interakce zobrazené v předchozím diagramu můžou lišit.
Ověřovatel platformy. Ověřovací nástroj platformy se obvykle nachází na klientském zařízení. Mezi příklady ověřovatelů na platformě patří technologie rozpoznávání otisků prstů, která používá integrovanou čtečku otisků prstů na přenosném počítači a technologii rozpoznávání obličeje, která používá integrovanou kameru smartphonu. Multiplatformní přenosové protokoly, jako jsou USB, NFC nebo BLE, nemají přístup k ověřovatelům platformy.
Roaming authenticator. Roamingový authenticator se může připojit k více klientským zařízením. Klientská zařízení musí k vyjednávání interakcí používat podporovaný transportní protokol. Mezi příklady ověřování roamingu patří bezpečnostní klíče USB, aplikace pro smartphony s podporou BLE a bezkontaktní karty s podporou NFC. Ověřování roamingu může podporovat protokoly CTAP1, CTAP2 nebo oba protokoly.
Mnoho předávajících stran a klientů může komunikovat s mnoha ověřovacími osobami na jednom klientském zařízení. Uživatel může nainstalovat více prohlížečů, které podporují WebAuthn, a může mít současně přístup k integrované čtečce otisků prstů, připojenému klíči zabezpečení a mobilní aplikaci s podporou BLE.
Interoperability
Před WebAuthn a CTAP2 existovaly U2F a CTAP1. U2F je univerzální specifikace druhého faktoru FIDO Alliance. Existuje mnoho ověřovatelů, kteří mluví protokolEM CTAP1 a spravují přihlašovací údaje U2F. WebAuthn byl navržen tak, aby byl interoperabilní s ověřovacími objekty CTAP1. Předávající strana, která používá WebAuthn, může i nadále používat přihlašovací údaje U2F, pokud předávající strana nevyžaduje funkci pouze FIDO2.
Ověřování FIDO2 už bylo implementováno a předávající strany WebAuthn můžou vyžadovat následující volitelné funkce:
- Klíče pro více účtů (klíče je možné uložit na předávající stranu)
- PIN kód klienta
- Umístění (ověřovací objekt vrátí umístění)
- Kód ověřování zpráv založený na hodnotě hash (HMAC) – tajný kód (umožňuje offline scénáře)
Následující možnosti můžou být užitečné v budoucnu, ale ve volné přírodě ještě nebyly pozorovány:
- Schválení transakcí
- Index ověření uživatele (servery můžou určit, jestli se místně uložená biometrická data změnila)
- Metoda ověření uživatele (ověřovací metoda vrací přesnou metodu)
- Meze biometrického výkonu (předávající strana může určit přijatelnou míru nepravdivého přijetí a míry nepravdivého zamítnutí)
implementace Microsoft
Implementace Microsoft FIDO2 byla řadu let. Software a služby se implementují nezávisle jako entity vyhovující standardům. Od verze Windows 10 verze 1809 (říjen 2018) používají všechny komponenty Microsoft nejnovější verzi WebAuthn Candidate. Jedná se o stabilní verzi, u které se neočekává normativní změna, než bude specifikace konečně ratifikována. Vzhledem k tomu, že Microsoft je mezi prvními na světě, kteří nasadí FIDO2, některé kombinace oblíbených Microsoft komponent zatím nebudou interoperabilní.
Tady je přibližné rozložení umístění Microsoft bitů:
Microsoft implementace rozhraní API WebAuthn a CATP2
Předávající strana WebAuthn: Microsoft účet. Pokud nemáte zkušenosti s účtem Microsoft, jedná se o přihlašovací službu pro Xbox, Outlook a mnoho dalších webů. Přihlašovací prostředí používá JavaScript na straně klienta k aktivaci Microsoft Edge pro komunikaci s rozhraními API WebAuthn. Microsoft účet vyžaduje, aby ověřovací uživatelé měli následující charakteristiky:
- Klíče se ukládají místně na ověřovacím serveru, nikoli na vzdáleném serveru.
- Offline scénáře fungují (povolené pomocí HMAC)
- Uživatelé můžou do stejného ověřovacího objektu vložit klíče pro více uživatelských účtů.
- V případě potřeby můžou ověřovatelé k odemknutí čipu TPM použít pin kód klienta.
Důležité
Vzhledem k tomu, že účet Microsoft vyžaduje funkce a rozšíření, které jsou jedinečné pro ověřování FIDO2 CTAP2, nepřijímá přihlašovací údaje CTAP1 (U2F).
Klient WebAuthn: Microsoft Edge. Microsoft Edge dokáže zpracovat uživatelské rozhraní pro funkce WebAuthn a CTAP2, které popisuje tento článek. Podporuje také rozšíření AppID. Microsoft Edge může pracovat s ověřovacími moduly CTAP1 i CTAP2. Tento obor interakce znamená, že může vytvořit a používat přihlašovací údaje U2F i FIDO2. Microsoft Edge ale nemluví o protokolu U2F. Proto předávající strany musí používat pouze specifikaci WebAuthn. Microsoft Edge v Androidu nepodporuje WebAuthn.
Poznámka
Autoritativní informace o podpoře Microsoft Edge pro WebAuthn a CTAP najdete v dokumentaci pro vývojáře starší verze Microsoft Edge.
Platforma: Windows 10, Windows 11. Windows 10 a Windows 11 hostovat rozhraní API WebAuthn platformy Win32.
Roamingové ověřovací objekty. Můžete si všimnout, že neexistuje žádná Microsoft ověřovacího objektu pro roaming. Důvodem je to, že už existuje silný ekosystém produktů, které se specializují na silné ověřování, a každý zákazník (ať už společnosti nebo jednotlivci) má různé požadavky na zabezpečení, snadné použití, distribuci a obnovení účtu. Další informace o neustále se rozšiřujícím seznamu certifikovaných ověřovatelů FIDO2 najdete v tématu FIDO Certified Products. Seznam obsahuje předdefinované ověřovatele, roamingové ověřovatele a dokonce i výrobce čipů, kteří mají certifikované návrhy.
Reference pro vývojáře
Rozhraní API WebAuthn jsou zdokumentovaná v úložišti GitHubu Microsoft/webauthn. Pokud chcete pochopit, jak ověřování FIDO2 funguje, projděte si následující dvě specifikace:
- Webové ověřování: Rozhraní API pro přístup k přihlašovacím údajům veřejného klíče (k dispozici na webu W3C). Tento dokument se označuje jako specifikace WebAuthn.
- Protokol CTAP (Client to Authenticator Protocol). Tento dokument je k dispozici na webu FIDO Alliance , na kterém týmy hardwaru a platformy spolupracují na řešení problému s ověřováním FIDO.