Esta página se tradujo automáticamente. Lee la versión original en inglés aquí.
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)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:
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.
Experimenta con flujos de passkeys en Passkeys Debugger.
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.Suscríbete a nuestro Substack de passkeys para recibir las últimas noticias.
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.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.
Read the case studySí, 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.
Corbado es la Passkey Intelligence Platform para equipos de CIAM que gestionan autenticación de consumidores a gran escala. Te ayudamos a ver lo que los logs de tu IDP y las herramientas de analytics genéricas no muestran: qué dispositivos, versiones de SO, navegadores y gestores de credenciales soportan passkeys, por qué los registros no se convierten en inicios de sesión, dónde falla el flujo de WebAuthn y cuándo una actualización de SO o navegador rompe el login en silencio — todo sin reemplazar Okta, Auth0, Ping, Cognito o tu IDP propio. Dos productos: Corbado Observe aporta observabilidad para passkeys y cualquier otro método de login. Corbado Connect añade passkeys gestionados con analytics integrado (junto a tu IDP). VicRoads ejecuta passkeys para más de 5M de usuarios con Corbado (+80 % de activación de passkey). Habla con un experto en Passkeys →
Mira cómo Corbado encaja con tu despliegue de passkeys y tu stack de autenticación actual.
Explorar la Console
Tabla de contenidos
Artículos relacionados