API WebAuthn per l'autenticazione senza password in Windows

Le password possono lasciare i clienti vulnerabili a violazioni dei dati e attacchi di sicurezza da parte di utenti malintenzionati.

Microsoft è da tempo un sostenitore dell'autenticazione senza password e ha introdotto le API della piattaforma WebAuthn W3C/Fast IDentity Online 2 (FIDO2) Win32 in Windows 10 (versione 1903).

A partire da Windows 11 versione 22H2, le API WebAuthn supportano gli algoritmi ECC.

Implicazioni

Usando le API WebAuthn, i partner di sviluppo e la community degli sviluppatori possono usare Windows Hello o le chiavi di sicurezza FIDO2 per implementare l'autenticazione a più fattori senza password per le applicazioni nei dispositivi Windows.

Gli utenti di queste app o siti possono usare qualsiasi browser che supporti le API WebAuthn per l'autenticazione senza password. Gli utenti avranno un'esperienza familiare e coerente in Windows, indipendentemente dal browser usato.

Gli sviluppatori devono usare le API WebAuthn per supportare le chiavi di autenticazione FIDO2 in modo coerente per gli utenti. Inoltre, gli sviluppatori possono usare tutti i trasporti disponibili in base alle specifiche FIDO2 (USB, NFC e BLE) evitando il sovraccarico di interazione e gestione.

Nota

Quando queste API sono in uso, Windows 10 browser o applicazioni non hanno accesso diretto ai trasporti FIDO2 per la messaggistica correlata a FIDO.

Il quadro generale

Il protocollo CTAP2 (Client to Authenticator Protocol 2) e WebAuthn definiscono un livello di astrazione che crea un ecosistema per credenziali fortemente autenticate. In questo ecosistema, qualsiasi client interoperabile (ad esempio un'app nativa o un browser) eseguito in un determinato dispositivo client usa un metodo standardizzato per interagire con qualsiasi autenticatore interoperabile. Gli autenticatori interoperabili includono autenticatori integrati nel dispositivo client (autenticatori della piattaforma) e autenticatori che si connettono al dispositivo client tramite connessioni USB, BLE o NFC (autenticatori mobili).

Il processo di autenticazione viene avviato quando l'utente esegue un movimento utente specifico che indica il consenso per l'operazione. Su richiesta del client, l'autenticatore crea in modo sicuro chiavi crittografiche complesse e le archivia in locale.

Dopo aver creato queste chiavi specifiche del client, i client possono richiedere attestazioni per la registrazione e l'autenticazione. Il tipo di firma usato dalla chiave privata riflette il movimento dell'utente eseguito.

Il diagramma seguente illustra l'interazione tra CTAP e WebAuthn. Le frecce tratteggiate blu chiaro rappresentano interazioni che dipendono dall'implementazione specifica delle API della piattaforma.

Il diagramma mostra come l'API WebAuthn interagisce con le relying party e l'API CTAPI2.

Relazioni dei componenti che partecipano all'autenticazione senza password

Una danza combinata WebAuthn/CTAP2 include il seguente cast di personaggi:

  • Dispositivo client. Il dispositivo client è l'hardware che ospita un'autenticazione avanzata specificata. Portatili e telefoni sono esempi di dispositivi client.

  • Relying party e client. Le relying party sono applicazioni Web o native che utilizzano credenziali complesse. Le relying party vengono eseguite nei dispositivi client.

    • Come relying party, un'applicazione nativa può anche fungere da client WebAuthn per effettuare chiamate WebAuthn dirette.

    • Come relying party, un'applicazione Web non può interagire direttamente con l'API WebAuthn. La relying party deve negoziare l'affare tramite il browser.

    Nota

    Il diagramma precedente non illustra l'autenticazione single Sign-On (SSO). Prestare attenzione a non confondere le relying party FIDO con le relying party federate.

  • API WebAuthn. L'API WebAuthn consente ai client di effettuare richieste agli autenticatori. Il client può richiedere all'autenticatore di creare una chiave, fornire un'asserzione su una chiave, funzionalità del report, gestire un PIN e così via.

  • Piattaforma/host CTAP2. La piattaforma (chiamata anche host nella specifica CTAP2) è la parte del dispositivo client che negozia con gli autenticatori. La piattaforma è responsabile della segnalazione sicura dell'origine della richiesta e della chiamata alle API CBOR (Concise Binary Object Representation) CTAP2. Se la piattaforma non è compatibile con CTAP2, i client stessi si assumono un carico maggiore. In questo caso, i componenti e le interazioni mostrate nel diagramma precedente possono essere diversi.

  • Autenticatore della piattaforma. Un autenticatore della piattaforma si trova in genere in un dispositivo client. Esempi di autenticatori della piattaforma includono la tecnologia di riconoscimento delle impronte digitali che usa un lettore di impronte digitali portatile incorporato e la tecnologia di riconoscimento facciale che usa una fotocamera integrata per smartphone. I protocolli di trasporto multipiattaforma, ad esempio USB, NFC o BLE, non possono accedere agli autenticatori della piattaforma.

  • Autenticatore mobile. Un autenticatore mobile può connettersi a più dispositivi client. I dispositivi client devono usare un protocollo di trasporto supportato per negoziare le interazioni. Esempi di autenticatori mobili includono chiavi di sicurezza USB, applicazioni per smartphone abilitate per BLE e schede di prossimità abilitate per NFC. Gli autenticatori mobili possono supportare CTAP1, CTAP2 o entrambi i protocolli.

Molte relying party e client possono interagire con molti autenticatori in un singolo dispositivo client. Un utente può installare più browser che supportano WebAuthn e contemporaneamente può avere accesso a un lettore di impronte digitali predefinito, a una chiave di sicurezza collegata e a un'applicazione per dispositivi mobili abilitata per BLE.

Interoperabilità

Prima di WebAuthn e CTAP2, c'erano U2F e CTAP1. U2F è la specifica universale di secondo fattore di FIDO Alliance. Esistono molti autenticatori che parlano CTAP1 e gestiscono le credenziali U2F. WebAuthn è stato progettato per essere interoperabile con gli autenticatori CTAP1. Una relying party che usa WebAuthn può comunque usare le credenziali U2F se la relying party non richiede funzionalità solo FIDO2.

Gli autenticatori FIDO2 sono già stati implementati e le relying party WebAuthn potrebbero richiedere le funzionalità facoltative seguenti:

Le opzioni seguenti potrebbero essere utili in futuro, ma non sono ancora state osservate in natura:

  • Approvazione transazionale
  • Indice di verifica utente (i server possono determinare se i dati biometrici archiviati in locale sono stati modificati nel tempo)
  • Metodo di verifica utente (l'autenticatore restituisce il metodo esatto)
  • Limiti di prestazioni biometrici (la relying party può specificare tassi accettabili di accettazione falsa e di rifiuto falso)

Implementazione microsoft

L'implementazione di Microsoft FIDO2 è stata anni fa. Software e servizi vengono implementati in modo indipendente come entità conformi agli standard. A partire dalla versione Windows 10, versione 1809 (ottobre 2018), tutti i componenti Microsoft usano la versione più recente di WebAuthn Candidate. Si tratta di una versione stabile che non dovrebbe cambiare in modo normativo prima che la specifica venga infine ratificata. Poiché Microsoft è tra i primi al mondo a distribuire FIDO2, alcune combinazioni di componenti non Microsoft più diffusi non saranno ancora interoperabili.

Ecco un layout approssimativo della posizione dei bit Microsoft:

Il diagramma mostra come l'API WebAuthn interagisce con le relying party Microsoft e l'API CTAPI2.

Implementazione microsoft delle API WebAuthn e CATP2

  • Relying party WebAuthn: account Microsoft. Se non si ha familiarità con l'account Microsoft, si tratta del servizio di accesso per Xbox, Outlook e molti altri siti. L'esperienza di accesso usa JavaScript sul lato client per attivare Microsoft Edge per comunicare con le API WebAuthn. L'account Microsoft richiede che gli autenticatori abbiano le caratteristiche seguenti:

    • Le chiavi vengono archiviate localmente nell'autenticatore e non in un server remoto
    • Gli scenari offline funzionano (abilitati con HMAC)
    • Gli utenti possono inserire chiavi per più account utente nello stesso autenticatore
    • Se necessario, gli autenticatori possono usare un PIN client per sbloccare un TPM

    Importante

    Poiché l'account Microsoft richiede funzionalità ed estensioni univoche per gli autenticatori FIDO2 CTAP2, non accetta credenziali CTAP1 (U2F).

  • Client WebAuthn: Microsoft Edge. Microsoft Edge può gestire l'interfaccia utente per le funzionalità WebAuthn e CTAP2 descritte in questo articolo. Supporta anche l'estensione AppID. Microsoft Edge può interagire con gli autenticatori CTAP1 e CTAP2. Questo ambito per l'interazione significa che può creare e usare le credenziali U2F e FIDO2. Tuttavia, Microsoft Edge non parla il protocollo U2F. Pertanto, le relying party devono usare solo la specifica WebAuthn. Microsoft Edge in Android non supporta WebAuthn.

    Nota

    Per informazioni autorevoli sul supporto di Microsoft Edge per WebAuthn e CTAP, vedere documentazione per sviluppatori Microsoft Edge legacy.

  • Piattaforma: Windows 10, Windows 11. Windows 10 e Windows 11 ospitare le API WebAuthn della piattaforma Win32.

  • Autenticatori mobili. Si potrebbe notare che non esiste alcun autenticatore di roaming Microsoft . Il motivo è che esiste già un ecosistema solido di prodotti specializzati in autenticazione avanzata e ogni cliente (sia aziendale che individuale) ha requisiti diversi per la sicurezza, la facilità d'uso, la distribuzione e il ripristino dell'account. Per altre informazioni sull'elenco in continua crescita degli autenticatori certificati FIDO2, vedere Prodotti certificati FIDO. L'elenco include autenticatori predefiniti, autenticatori mobili e persino produttori di chip con progettazioni certificate.

Riferimenti per sviluppatori

Le API WebAuthn sono documentate nel repository GitHub Microsoft/webauthn . Per comprendere il funzionamento degli autenticatori FIDO2, vedere le due specifiche seguenti: