Get your free and exclusive 80-page Banking Passkey Report

¿Qué es la Atestación en WebAuthn?

Vincent Delitz

Vincent

Created: June 17, 2025

Updated: July 8, 2025


See the original glossary version in English here.

¿Qué es la Atestación?#

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):

  1. 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.

  2. 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:

Slack Icon

Become part of our Passkeys Community for updates & support.

Join
  1. En tercer lugar, en WebAuthn, una declaración de atestación es un elemento opcional del objeto de atestación. Esta declaración, cuando se incluye, verifica ciertas características del autenticador (dispositivo) involucrado en el proceso de atestación. Sin embargo, algunos fabricantes de dispositivos (por ejemplo, Apple) no ofrecen una declaración de atestación porque este aspecto de la especificación no fue diseñado para la sincronización de passkeys y no logra verificar eficazmente los atributos de seguridad cuando las credenciales pueden sincronizarse entre diferentes dispositivos (por ejemplo, una passkey se crea en un iPhone pero también se usa en un MacBook ya que se sincroniza a través del mismo Llavero de iCloud). Características que se pueden proporcionar cuando se incluye la declaración de atestación:
    • Ofrecer prueba de que se utilizó un dispositivo genuino y de confianza durante la autenticación.
    • Proporcionar detalles sobre el origen, modelo y otra información pertinente del dispositivo.
    • Mejorar las medidas de seguridad, especialmente en escenarios donde la confiabilidad del dispositivo es crucial (por ejemplo, ciertas industrias reguladas como la sanidad).

El siguiente diagrama de flujo del proceso de Registro muestra el papel de la atestación (objeto) en WebAuthn:

Ejemplo de un objeto de atestación#

{ "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.

Debugger Icon

Want to experiment with passkey flows? Try our Passkeys Debugger.

Try for Free

Continúe leyendo para un desglose técnico de los atributos más importantes.

Puntos Clave#

  • La atestación se refiere al proceso en el que una parte atestigua criptográficamente una declaración a otra parte.
  • El objeto de atestación en WebAuthn es creado por el autenticador y se pasa durante el Registro. Contiene, entre otros, el AAGUID, el ID de credencial y la clave pública.
  • La declaración de atestación en WebAuthn es un campo opcional en el objeto de atestación que asegura que se utilizó un dispositivo genuino para la autenticación.

Comprendiendo la Esencia de la Atestación#

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.

Tipos de Atestación:#

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).

  • Sin Atestación (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.
  • Atestación Indirecta (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.
  • Atestación Directa (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.
  • Atestación Empresarial (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.
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

Atributos del objeto de atestación#

El objeto de atestación contiene muchos atributos, aquí hay una explicación rápida de algunos atributos seleccionados:

attestationObject#

"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:

  • fmt representa el formato de atestación, ya que los autenticadores pueden proporcionar datos de atestación de diferentes maneras. Le dice al servidor cómo debe validar los datos de atestación. Los valores permitidos son "packed", "tpm", "android-key", "android-safetynet", "fido-u2f", "apple" o "none". Vea los detalles aquí
  • attStmt es la declaración de atestación. Para las passkeys, por ejemplo, en dispositivos iOS o Android, se deja vacío ya que las passkeys en iOS o Android pueden sincronizarse, y se rellena para otros dispositivos como en Windows o llaves de seguridad de hardware.
  • authData es un búfer de valores que contiene los siguientes datos: Los datos de credencial atestiguados juegan un papel importante aquí. Contienen:

attStmt (declaración de atestación)#

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#

"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#

"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)
  • Sin propiedad transports establecida: comportamiento predeterminado que no da indicaciones.

Preguntas Frecuentes sobre Atestación#

¿Por qué es crucial la atestación en WebAuthn?#

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 Testimonial

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 Passkeys

¿Ha cambiado la introducción de las passkeys el papel de la atestación?#

Sí, 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.

¿Cuál es la configuración de preferencia de atestación recomendada para las passkeys?#

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).

¿Cuál es la conexión entre la atestación y el servicio de metadatos FIDO?#

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).

¿Existen preocupaciones de privacidad con la atestación directa?#

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.

¿Cómo garantiza WebAuthn la privacidad del usuario durante la 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.

Add passkeys to your app in <1 hour with our UI components, SDKs & guides.

Start for free

Share this article


LinkedInTwitterFacebook

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.

Related Terms