Antonio Braccolino, Identity & Access, home

Lab · 10 / 16

Una chiave che non si può rubare.

Una passkey sostituisce la password con una coppia di chiavi. La chiave privata non lascia mai il dispositivo e il browser la usa solo sul sito per cui è stata creata.

Hai completato tutti i lab

Tutti i 16 lab, dalla mappa dello IAM alle architetture di riferimento. L’identità non ha più segreti per te.

Vedi i traguardi

Condividi il tuo badge

Instagram: scarica l’immagine e pubblicala come post o storia. LinkedIn: quando lo apri il testo viene copiato, incollalo e allega l’immagine.

WebAuthn · FIDO2 · Passkey · Intermedio · 5 passi

Cosa impari

  • Cosa salva il server (e cosa no)
  • Perché un sito falso non può usare la tua passkey
  • Cosa significa user verification
Authenticator
telefono, computer o chiavetta
Browser
controlla l’origine del sito
Server
il sito, detto relying party
  1. "Crea una passkey"

    Passo 1 di 5

    L’utente chiede una passkey

    In parole semplici Dici all’edificio che vuoi una chiave al posto della password all’ingresso.

    L’utente ha già fatto l’accesso, per esempio con password e MFA, e sceglie di aggiungere una passkey all’account.

  2. creation options · challenge

    Passo 2 di 5

    Il server invia le regole

    In parole semplici L’edificio ti dà una chiave vergine con il suo nome inciso sopra.

    Il server invia una challenge casuale, la propria identità (rp.id), un id per l’utente e gli algoritmi che accetta. Chiede anche la user verification: impronta, volto o PIN.

    {
      "challenge": "Y2hhbGxlbmdlLTEyMzQ",
      "rp": { "id": "example.com", "name": "Example" },
      "user": { "id": "dXNlci0yNDgy", "name": "ada@example.com" },
      "pubKeyCredParams": [{ "type": "public-key", "alg": -7 }, { "type": "public-key", "alg": -257 }],
      "authenticatorSelection": { "residentKey": "required", "userVerification": "required" }
    }
  3. navigator.credentials.create()

    Passo 3 di 5

    Il browser chiede al dispositivo

    In parole semplici Il browser controlla che tu sia davvero in quell’edificio prima di far tagliare la chiave.

    Il browser verifica che rp.id corrisponda al sito nella barra degli indirizzi e aggiunge l’origine reale in clientDataJSON. Un dominio simile non può chiedere una chiave per example.com.

  4. impronta → nuova coppia di chiavi

    Passo 4 di 5

    Nasce una coppia di chiavi

    In parole semplici Il telefono taglia la chiave e tiene l’originale in una cassaforte che apre solo la tua impronta.

    Dopo il controllo di impronta o volto, l’autenticatore crea una nuova coppia di chiavi solo per questo sito. La chiave privata resta nell’hardware sicuro; escono solo la chiave pubblica e un credential id.

  5. attestationObject + clientDataJSON

    Passo 5 di 5

    Il server salva la chiave pubblica

    In parole semplici L’edificio conserva solo lo stampo della serratura, inutile a un ladro.

    Il server controlla challenge, origine e rpIdHash, poi salva il credential id e la chiave pubblica. Se il suo database viene rubato, non c’è nulla da riutilizzare: nessuna password, nessun segreto.

    clientDataJSON = {
      "type": "webauthn.create",
      "challenge": "Y2hhbGxlbmdlLTEyMzQ",   ✓
      "origin": "https://example.com"      ✓
    }
    
    stored: credentialId = "AdKX…9fQ", publicKey = COSE(ES256), signCount = 0

Domini e valori d’esempio. Nulla esce dal tuo browser.