Vincent
Created: June 17, 2025
Updated: July 8, 2025
See the original glossary version in English here.
Atestación puede referirse a tres cosas (a menudo, en el lenguaje hablado, se usan indistintamente aunque significan algo diferente si se toman con precisión):
En primer lugar y de manera más general, la atestación en el espacio criptográfico es un término donde una parte "atestigua" criptográficamente una declaración a otra parte.
En segundo lugar, durante la fase de registro en WebAuthn, el autenticador crea un objeto de atestación y lo devuelve a la Parte de Confianza (Relying Party). Es un objeto contenedor que contiene la siguiente información:
fmt
)attStmt
- ver más abajo)authData
)El siguiente diagrama de flujo del proceso de Registro muestra el papel de la atestación (objeto) en 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" } }
En la captura de pantalla anterior, no se proporciona ningún AAGUID ni ninguna declaración de atestación.
Continúe leyendo para un desglose técnico de los atributos más importantes.
En WebAuthn, la atestación garantiza que la autenticación del usuario sea segura y transparente. Con la declaración de atestación, puede asegurarse de que una credencial fue creada en un autenticador / dispositivo específico.
Estos tipos de atestación se refieren a la declaración de atestación (no al objeto de atestación). Son considerados como una preferencia por la parte de confianza (relying party) (por lo que el autenticador puede comportarse de manera diferente, ya que es solo una preferencia).
none
): Para casos donde la privacidad es de suma importancia o se
utilizan dispositivos sincronizados, este tipo no proporciona información sobre el
dispositivo, asegurando que la privacidad del usuario permanezca intacta. Otra razón
para usar este valor podría ser para ahorrar un viaje de ida y vuelta a una autoridad de
certificación (CA). none
también es el valor predeterminado.indirect
): La
parte de confianza (relying party) prefiere obtener una
atestación pero permite que el cliente decida cómo obtener las declaraciones de
atestación. El cliente puede reemplazar las declaraciones de atestación generadas por el
autenticador con declaraciones de atestación anónimas para proteger la privacidad del
usuario.direct
): Esta es la forma más transparente. Aquí, la
parte de confianza (relying party) le dice al autenticador
que quiere una declaración de atestación, para que la
parte de confianza (relying party) obtenga información
detallada sobre el dispositivo, incluyendo su marca, modelo y otros detalles
específicos. Aunque ofrece la mayor transparencia, puede plantear preocupaciones de
privacidad en ciertos escenarios o podría no ser realmente utilizable para credenciales
sincronizadas.enterprise
): La
parte de confianza (relying party) desea recibir una
declaración de atestación que pueda incluir información de identificación única. Este
tipo de atestación se utiliza típicamente en empresas u organizaciones que desean hacer
un seguimiento de dispositivos / autenticadores específicos.
Los navegadores web (agentes de usuario) no deben proporcionar esta atestación detallada
a menos que su configuración lo permita específicamente para la parte solicitante. Si la
configuración lo permite, el navegador debe informar al dispositivo al inicio del
proceso que se está solicitando este tipo específico de atestación. Luego, el navegador
debe pasar el ID único del dispositivo y la prueba de atestación exactamente como los
recibe a la parte de confianza.El objeto de atestación contiene muchos atributos, aquí hay una explicación rápida de algunos atributos seleccionados:
"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" } }
El attestationObject es un objeto codificado en CBOR, que contiene información sobre las credenciales recién creadas, la clave pública y otros datos relevantes:
Al contrario que en el objeto de atestación anterior, donde attStmt
se dejó vacío por
razones de legibilidad, así es como se vería una declaración de atestación completa.
{ "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 propiedad alg
indica el identificador del algoritmo criptográfico utilizado
por el autenticador para firmar la declaración de atestación.sig
: La propiedad sig
contiene la firma digital generada por el autenticador. Esta
firma se utiliza para verificar la autenticidad de la declaración de atestación.ver
: La propiedad ver
especifica la versión del formato de la declaración de
atestación.x5c
: El array x5c
contiene uno o más certificados X.509 que forman una ruta de
certificación, lo que ayuda a validar la atestación.pubArea
: La propiedad pubArea
contiene información detallada sobre la clave pública
y las características del autenticador.certInfo
: La propiedad certInfo
típicamente incluye información sobre la
certificación del autenticador por una parte de confianza."clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false }
Lea más sobre clientDataJSON
en el
artículo del glosario respectivo.
"transports": [ "hybrid", "internal" ]
La propiedad transports indica los mecanismos a través de los cuales un autenticador puede comunicarse con un cliente. Algunas combinaciones de valores de ejemplo comunes son:
"transports": ["internal","hybrid"]
: Las passkeys se pueden usar desde el
autenticador de plataforma (por ejemplo, Face ID,
Touch ID, Windows Hello) o mediante autenticación entre
dispositivos (usando código QR y Bluetooth)."transports": ["internal"]
: Las passkeys se pueden usar desde el
autenticador de plataforma (por ejemplo, Face ID,
Touch ID, Windows Hello)transports
establecida: comportamiento predeterminado que no da
indicaciones.La atestación (la declaración de atestación) en WebAuthn es importante ya que ofrece prueba de la autenticidad de un autenticador. Asegura que el proceso de autenticación se lleva a cabo por un dispositivo de confianza, protegiendo así contra posibles amenazas de seguridad.
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.
Más de 3,000 desarrolladores confían en Corbado y hacen que Internet sea más seguro con passkeys. ¿Tienes preguntas? Hemos escrito más de 150 artículos de blog sobre passkeys.
Únete a la Comunidad de PasskeysSí, ya que las passkeys pueden sincronizarse entre dispositivos (por ejemplo, de iPhone a
MacBook a través del Llavero de iCloud), las
partes de confianza ya no pueden determinar realmente qué dispositivo atestiguado está
iniciando sesión en una aplicación o sitio web. Por lo tanto, Apple y Google decidieron
que para las passkeys sincronizadas, ya no proporcionarán declaraciones de atestación. Sin
embargo, para mejorar la experiencia de usuario para las partes de confianza y darles la
oportunidad de reconocer y mostrar passkeys de los ecosistemas de Apple y Google
(Llavero de iCloud y
Administrador de Contraseñas de Google),
el AAGUID seguirá proporcionándose (siempre que la atestación esté
configurada en direct
o indirect
en la configuración del servidor WebAuthn para las
PublicKeyCredentialCreationOptions
. Consulte este
issue de GitHub para más detalles.
Si desea integrar la
autenticación con passkeys en su sitio
web y aplicación, y quiere ofrecer a sus usuarios una gran experiencia de usuario con
passkeys, debe considerar lo siguiente. Suponemos que construye su solución principalmente
para un escenario donde la mayoría de sus usuarios utilizan un sistema operativo Windows,
iOS, macOS o
Android. Además, suponemos que la mayoría de las
passkeys (aparte de las de Windows) son passkeys sincronizadas. Como ni iOS, macOS ni
Android envían ya una declaración de atestación,
la validación real de un autenticador ya no se utiliza (para Windows esto todavía
funciona, probablemente porque Windows aún no ofrece passkeys sincronizadas a través de
Windows Hello). Sin embargo, para obtener el
AAGUID, por ejemplo, para una mejor gestión de passkeys en la
configuración de la cuenta, recomendamos establecer la preferencia de atestación en
indirect
, ya que esto aún permitiría obtener el AAGUID mientras que
la declaración de atestación se envía (Windows) o no se envía (iOS, macOS, Android).
El servicio de metadatos FIDO proporciona un repositorio de metadatos para varios autenticadores. Durante la atestación, este servicio puede ser consultado para obtener y validar detalles sobre el autenticador, asegurando la precisión y mejorando la confiabilidad del proceso. El servicio de metadatos FIDO verifica la declaración de atestación (no el objeto de atestación).
Sí, la atestación directa (en la declaración de atestación), aunque ofrece la mayor transparencia al proporcionar información detallada sobre el dispositivo, puede plantear preocupaciones de privacidad en ciertos escenarios. Es crucial evaluar la necesidad de transparencia frente a la privacidad al elegir el tipo de atestación.
WebAuthn ofrece diferentes tipos de preferencias de
atestación: none, indirect, direct y enterprise. Para escenarios donde la
privacidad del usuario
es importante, se puede emplear attestation=none
, que no proporciona detalles sobre el
dispositivo, asegurando que la privacidad del usuario permanezca protegida.
Table of Contents
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.