Scopri di più sull'attestazione in WebAuthn / passkey e la sua importanza nell'autenticazione degli utenti, insieme alla sua connessione con il servizio di metadati FIDO.
Vincent
Created: June 17, 2025
Updated: March 25, 2026

See the original glossary version in English here.
L'attestazione può riferirsi a tre cose (spesso nel linguaggio parlato sono usate in modo intercambiabile, sebbene significhino qualcosa di diverso se prese alla lettera):
In primo luogo e più in generale, l'attestazione in ambito crittografico è un termine con cui una parte "attesta" crittograficamente una dichiarazione a un'altra parte.
In secondo luogo, durante la fase di registrazione in WebAuthn, un oggetto di attestazione viene creato dall'autenticatore e restituito alla Relying Party. È un oggetto contenitore che contiene le seguenti informazioni:
fmt)attStmt - vedi sotto)authData)Become part of our Passkeys Community for updates & support.
Il seguente diagramma di flusso del processo di Registrazione mostra il ruolo dell'attestazione (oggetto) in WebAuthn:
{ "root": { "id": "QFPlQVypLmmx71e0tmS3IfCFky0", "rawId": "QFPlQVypLmmx71e0tmS3IfCFky0", "response": { "attestationObject": { "fmt": "none", "attStmt": {}, "authData": { "rpIdHash": "t8DGRTBfls-BhOH2QC404lvdhe_t2_NkvM0nQWEEADc", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": false }, "counter": 0, "aaguid": "00000000-0000-0000-0000-000000000000", "credentialID": "QFPlQVypLmmx71eOtmS3IfCFky0", "credentialPublicKey": "pQECAyYgASFYIEa-lpSiQ4P...", "parsedCredentialPublicKey": { "keyType": "EC2 (2)", "algorithm": "ES256 (-7)", "curve": 1, "x": "Rr6WlKJDg8MlbIq9mmHQzk2p2c_s7QoNKr7yMa7I8pM", "y": "tAELYp7h3sYNjZZIZgHPYiaSzF×QVT18cgZ_7wm13Vw" } } }, "clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://passkeys.eu", "crossOrigin": false }, "transports": ["hybrid", "internal"], "publicKeyAlgorithm": -7 }, "authenticatorAttachment": "cross-platform" } }
Nello screenshot qui sopra, non vengono forniti né l'AAGUID né la dichiarazione di attestazione.
Want to experiment with passkey flows? Try our Passkeys Debugger.
Continua a leggere per un'analisi tecnica degli attributi più importanti.
In WebAuthn, l'attestazione garantisce che l'autenticazione dell'utente sia sicura e trasparente. Con la dichiarazione di attestazione, puoi assicurarti che una credenziale sia stata creata su un autenticatore / dispositivo specifico.
Questi tipi di attestazione si riferiscono alla dichiarazione di attestazione (non all'oggetto di attestazione). Sono considerati una preferenza dalla relying party (quindi l'autenticatore può comportarsi diversamente poiché è solo una preferenza).
none): Per i casi in cui la privacy è della massima
importanza o sono in gioco dispositivi sincronizzati, questo tipo non fornisce alcuna
informazione sul dispositivo, garantendo che la privacy dell'utente rimanga intatta. Un
altro motivo per utilizzare questo valore potrebbe essere quello di
risparmiare un roundtrip verso un'autorità
di certificazione (CA). none è anche il valore predefinito.indirect): La relying party
preferisce ottenere un'attestazione ma consente al client di decidere come ottenere le
dichiarazioni di attestazione. Il client può sostituire le dichiarazioni di attestazione
generate dall'autenticatore con dichiarazioni di attestazione anonime per proteggere la
privacy dell'utente.direct): Questa è la forma più trasparente. Qui, la relying
party comunica all'autenticatore che desidera una dichiarazione di attestazione, in modo
che la relying party ottenga informazioni dettagliate sul dispositivo, inclusi marca,
modello e altre specifiche. Sebbene offra la massima trasparenza, può sollevare
preoccupazioni sulla privacy in determinati scenari o potrebbe non essere realmente
utilizzabile per le credenziali sincronizzate.enterprise): La relying party desidera ricevere una
dichiarazione di attestazione che può includere informazioni identificative uniche.
Questo tipo di attestazione è tipicamente utilizzato in aziende o organizzazioni che
vogliono tenere traccia di dispositivi / autenticatori specifici. I browser web (user
agent) non dovrebbero fornire questa attestazione dettagliata a meno che le loro
impostazioni non lo consentano specificamente per la parte richiedente. Se le
impostazioni lo consentono, il browser dovrebbe comunicare al dispositivo quando è
necessario (all'inizio del processo) che questo specifico tipo di attestazione è stato
richiesto. Il browser dovrebbe quindi trasmettere l'ID univoco del dispositivo e la
prova di attestazione esattamente come li riceve alla relying party.Subscribe to our Passkeys Substack for the latest news.
L'oggetto di attestazione contiene molti attributi, ecco una rapida spiegazione di alcuni attributi selezionati:
"attestationObject": { "fmt": "none", "attStmt": {}, "authData": { "rpIdHash": "t8DGRTBfls-BhOH2QC404lvdhe_t2_NkvM0nQWEEADc", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": false }, "counter": 0, "aaguid": "00000000-0000-0000-0000-000000000000", "credentialID": "QFPlQVypLmmx71eOtmS3IfCFky0", "credentialPublicKey": "pQECAyYgASFYIEa-lpSiQ4P...", "parsedCredentialPublicKey": { "keyType": "EC2 (2)", "algorithm": "ES256 (-7)", "curve": 1, "x": "Rr6WlKJDg8MlbIq9mmHQzk2p2c_s7QoNKr7yMa7I8pM", "y": "tAELYp7h3sYNjZZIZgHPYiaSzF×QVT18cgZ_7wm13Vw" } }
L'attestationObject è un oggetto codificato in CBOR, contenente informazioni sulle credenziali appena create, la chiave pubblica e altri dati rilevanti:
Contrariamente all'oggetto di attestazione sopra, dove attStmt è stato lasciato vuoto
per motivi di leggibilità, ecco come apparirebbe una dichiarazione di attestazione
compilata.
{ "alg": -65535, "sig": "MBHX7qov53SWqqPYCrxE5fcoAeDI83a0DzVJ2-N1KI6IAaCGGvINAIFzTEn44F6giANKte-8yEMDZbvbgDG1weaRj7SqsVaTty-TEQ", "ver": "2.0", "x5c": [ "MIIFwDCCA6oIaK6tZ7M", "MIIG6zCCBNpG18-MCJrHyrpMT-ul7RgxE4dFxqcG59ftTXqJ1f-X_Lpo7K-d7OgKoQrUgzxgATz8YXtFAk3rE1cHXvW9W52V637eAihKn9-UKC0ijzVXrBGX4Iq1o1M0ZfR-tFoOn498xasMCTnharKiM562GBLVJtlvV3DMSLEBl5SfuGM-qYjQgTQknXccks9guCmNaN_b2fo1DisbufXfjM3DVaMqx7IJpSc3wAnxooMrAYGpPM" ], "pubArea": "AAEACwAw_c3Ousz865mUPx8O3w", "certInfo": "_1RDR4AXAniCekfsiDI" }
alg: La proprietà alg indica l'identificatore dell'algoritmo crittografico
utilizzato dall'autenticatore per firmare la dichiarazione di attestazione.sig: La proprietà sig contiene la firma digitale generata dall'autenticatore. Questa
firma viene utilizzata per verificare l'autenticità della dichiarazione di attestazione.ver: La proprietà ver specifica la versione del formato della dichiarazione di
attestazione.x5c: L'array x5c contiene uno o più certificati X.509 che formano un percorso di
certificazione, che aiuta a convalidare l'attestazione.pubArea: La proprietà pubArea contiene informazioni dettagliate sulla chiave
pubblica e sulle caratteristiche dell'autenticatore.certInfo: La proprietà certInfo include tipicamente informazioni sulla
certificazione dell'autenticatore da parte di una parte fidata."clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false }
Leggi di più su clientDataJSON nel rispettivo articolo del glossario.
"transports": [ "hybrid", "internal" ]
La proprietà transports indica i meccanismi attraverso i quali un autenticatore può comunicare con un client. Alcune combinazioni di valori di esempio comuni sono:
"transports": ["internal","hybrid"]: Le passkey possono essere utilizzate
dall'autenticatore di piattaforma (ad es. Face ID, Touch ID,
Windows Hello) o tramite
l'autenticazione cross-device (utilizzando
codice QR e Bluetooth)."transports": ["internal"]: Le passkey possono essere utilizzate dall'autenticatore di
piattaforma (ad es. Face ID, Touch ID,
Windows Hello)transports impostata: comportamento predefinito che non fornisce
indicazioni.L'attestazione (la dichiarazione di attestazione) in WebAuthn è importante perché offre una prova dell'autenticità di un autenticatore. Garantisce che il processo di autenticazione sia eseguito da un dispositivo affidabile, proteggendo così da potenziali minacce alla sicurezza.
Ben Gould
Head of Engineering
I’ve built hundreds of integrations in my time, including quite a few with identity providers and I’ve never been so impressed with a developer experience as I have been with Corbado.
3,000+ devs trust Corbado & make the Internet safer with passkeys. Got questions? We’ve written 150+ blog posts on passkeys.
Join Passkeys CommunitySì, poiché le passkey possono essere sincronizzate tra dispositivi (ad es. da iPhone a
MacBook tramite Portachiavi), le relying party non possono più determinare realmente quale
dispositivo attestato sta effettuando l'accesso a un'app o a un sito web. Pertanto, Apple
e Google hanno deciso che per le passkey sincronizzate non forniranno più dichiarazioni di
attestazione. Tuttavia, per migliorare l'UX per le relying party e dare loro l'opportunità
di riconoscere e visualizzare le passkey degli ecosistemi Apple e Google (Portachiavi
iCloud e Google Password Manager), l'AAGUID
sarà comunque fornito (a condizione che l'attestazione sia impostata su direct o
indirect nelle impostazioni del server WebAuthn per
PublicKeyCredentialCreationOptions. Vedi questo
problema di GitHub per i dettagli.
Se vuoi integrare l'autenticazione con passkey nel tuo sito web e nella tua app, e vuoi
offrire ai tuoi utenti un'ottima esperienza con le passkey, dovresti considerare quanto
segue. Supponiamo che tu stia costruendo la tua soluzione principalmente per uno scenario
in cui la maggior parte dei tuoi utenti utilizza un sistema operativo Windows,
iOS, macOS o Android. Inoltre, supponiamo che la
maggior parte delle passkey (a parte Windows) siano passkey sincronizzate. Poiché né iOS,
né macOS, né Android inviano più una dichiarazione di attestazione, la vera convalida di
un autenticatore non viene più utilizzata (per Windows questo funziona ancora,
probabilmente perché Windows non offre ancora passkey sincronizzate tramite
Windows Hello). Tuttavia, per ottenere l'AAGUID, ad esempio per
una migliore gestione delle passkey nelle impostazioni dell'account, consigliamo di
impostare la preferenza di attestazione su indirect, poiché ciò consentirebbe comunque
di ottenere l'AAGUID mentre la dichiarazione di attestazione viene inviata (Windows) o non
inviata (iOS, macOS, Android).
Il servizio di metadati FIDO fornisce un repository di metadati per vari autenticatori. Durante l'attestazione, questo servizio può essere interrogato per recuperare e convalidare i dettagli sull'autenticatore, garantendo l'accuratezza e migliorando l'affidabilità del processo. Il servizio di metadati FIDO controlla la dichiarazione di attestazione (non l'oggetto di attestazione).
Sì, l'attestazione diretta (nella dichiarazione di attestazione), pur offrendo la massima trasparenza fornendo informazioni dettagliate sul dispositivo, può sollevare preoccupazioni sulla privacy in determinati scenari. È fondamentale valutare la necessità di trasparenza rispetto alla privacy quando si sceglie il tipo di attestazione.
WebAuthn offre diversi tipi di preferenze di
attestazione: none, indirect, direct ed enterprise. Per gli scenari in cui la privacy
dell'utente è importante, si può impiegare attestation=none, che non fornisce dettagli
sul dispositivo, garantendo che la privacy dell'utente rimanga protetta.
Table of Contents
Related Articles