Un giorno, un informatico compra una macchina da caffè e pensa: 'per favore, che la macchina da caffè usi le passkey'.
Sembra divertente, ma c'è una profonda verità in questa battuta: siamo stanchi delle password. Le violazioni di password sono diventate endemiche. Milioni di credenziali vengono trapelate ogni anno, e gli utenti affrontano l'impossibile compito di gestire dozzine di password uniche su centinaia di account.
Le passkey rappresentano l'evoluzione che stavamo aspettando. Invece di digitare un segreto condiviso (una password), gli utenti si autenticano usando una coppia di chiavi crittografiche: una chiave privata che non esce mai dal loro dispositivo e una chiave pubblica archiviata sui tuoi server.
Una chiave di accesso unica
Quando un utente si registra con una passkey, ecco cosa succede:
- Il browser avvia la WebAuthn API, che comunica con il provider di passkey (iOS Keychain, Windows Hello, gestori di password, ecc.)
- Il provider genera una coppia di chiavi pubbliche-private. La chiave privata rimane sul dispositivo dell'utente: non viaggia mai in rete.
- Il tuo server riceve solo la chiave pubblica, che archivia nel database. Questa chiave pubblica è inutile senza la corrispondente chiave privata.
- Negli accessi futuri, il browser emette una sfida crittografica, l'utente prova di possedere la chiave privata (tramite biometria o PIN), e l'autenticazione riesce: tutto senza mai trasmettere una password.
I quattro pilastri della registrazione delle passkey
La registrazione delle passkey coinvolge quattro livelli essenziali che lavorano in perfetta sincronia:
1. Backend (Server)
- Verifica l'identità e l'idoneità dell'account dell'utente
- Genera una sfida crittografica (una stringa casuale) per prevenire attacchi di replay
- Archivia la chiave pubblica restituita dal browser
- Gestisce l'associazione tra l'account utente e la sua passkey
2. Frontend (Interfaccia utente)
- Avvia il processo di registrazione della passkey
- Comunica con la WebAuthn API del browser
- Invia la sfida del server al browser
- Riceve l'attestazione (prova che è stata creata una passkey genuina) e la invia al backend
3. Web Browser
- Funge da intermediario tra il frontend e il provider di passkey
- Gestisce la WebAuthn API, ora standardizzata su tutti i browser moderni
- Assicura che il provider di passkey sia invocato in modo sicuro
- Convalida l'origine (prevenendo attacchi cross-site di passkey)
4. Provider di passkey
- Genera la coppia di chiavi: una chiave privata (archiviata in modo sicuro sul dispositivo) e una chiave pubblica (inviata al tuo server)
- Protegge la chiave privata con la sicurezza a livello di dispositivo: riconoscimento biometrico, PIN o autenticazione hardware
- Gestisce la sincronizzazione su tutti i dispositivi dell'utente (iCloud Keychain si sincronizza su dispositivi Apple, Windows Hello si sincronizza su dispositivi Windows, i gestori di password si sincronizzano su tutte le piattaforme)
- Non espone mai la chiave privata a nessuna applicazione o sito web
Passaggi chiave nel processo di registrazione
Verifica dell'utente
Prima di emettere una passkey, l'utente deve autenticarsi con un metodo esistente (login + 2FA). Questo garantisce che solo i legittimi titolari dell'account creino passkey.
Comunicazione sicura
Il backend invia una sfida crittografica al browser. Il provider di passkey firma questa sfida con la chiave privata. Il tuo server verifica la firma usando la chiave pubblica: prova che la chiave privata esiste e appartiene al legittimo provider di passkey.
Compatibilità
La WebAuthn API è ora supportata su tutti i browser principali (Chrome, Firefox, Safari, Edge). Ma non tutti gli utenti hanno ancora le passkey abilitate sui loro dispositivi. Il flusso di registrazione deve ricorrere elegantemente ai metodi di autenticazione tradizionali.
Richiesta del provider
Il frontend chiama navigator.credentials.create(), che attiva una finestra di dialogo di sistema. Su iOS, apre l'interfaccia Keychain. Su Windows, apre Windows Hello. Su Android con un gestore di password, apre l'interfaccia del gestore. L'utente conferma la sua identità (biometria o PIN), e la passkey viene creata.
Elimina le password, riduce l'attrito
L'approccio delle passkey elimina l'intero ecosistema delle password. Niente più:
- Violazioni di password che espongono milioni di credenziali contemporaneamente
- Utenti che riutilizzano password su più siti, creando violazioni a cascata
- Attacchi di phishing che inducono gli utenti a rivelare la loro password
- Password deboli, gestori di password che fungono da unici punti di fallimento
Invece, ogni sito ottiene una coppia di chiavi pubbliche-private unica. Anche se il tuo server viene violato, gli aggressori ottengono solo chiavi pubbliche, che sono crittograficamente inutili senza la chiave privata bloccata nel dispositivo dell'utente.
E dal punto di vista dell'utente, l'autenticazione diventa più veloce: nessuna password da ricordare, solo riconoscimento biometrico o un PIN che usano già per sbloccare il telefono.
L'informatico sospira: 'Non più ricordare iscrizioni, password di app e credenziali WiFi...'.
Hai bisogno di rafforzare la sicurezza del tuo sito web? Il nostro team tecnico può aiutarti a progettare la strategia di protezione perfetta per il tuo caso d'uso.
Inizia ora