Get your free and exclusive 80-page Banking Passkey Report

Chứng thực trong WebAuthn là gì?

Vincent Delitz

Vincent

Created: June 17, 2025

Updated: July 8, 2025


See the original glossary version in English here.

Chứng thực (Attestation) là gì?#

Chứng thực (Attestation) có thể đề cập đến ba điều (trong ngôn ngữ nói, chúng thường được sử dụng thay thế cho nhau mặc dù chúng có ý nghĩa khác nhau nếu xét một cách chính xác):

  1. Đầu tiên và tổng quát hơn, chứng thực trong lĩnh vực mật mã học là một thuật ngữ chỉ việc một bên "chứng thực" một cách mật mã cho một tuyên bố với một bên khác.

  2. Thứ hai, trong giai đoạn đăng ký của WebAuthn, một đối tượng chứng thực (attestation object) được tạo ra bởi trình xác thực và trả về cho Bên tin cậy. Đây là một đối tượng chứa đựng các thông tin sau:

Slack Icon

Become part of our Passkeys Community for updates & support.

Join
  1. Thứ ba, trong WebAuthn, một tuyên bố chứng thực (attestation statement) là một yếu tố tùy chọn của đối tượng chứng thực. Tuyên bố này, khi được bao gồm, sẽ xác minh các đặc điểm nhất định của trình xác thực (thiết bị) tham gia vào quá trình chứng thực. Tuy nhiên, một số nhà sản xuất thiết bị (ví dụ: Apple) không cung cấp tuyên bố chứng thực vì khía cạnh này của đặc tả không dành cho việc đồng bộ hóa passkey và không thể xác minh hiệu quả các thuộc tính bảo mật khi thông tin xác thực có thể được đồng bộ hóa trên các thiết bị khác nhau (ví dụ: một passkey được tạo trên iPhone nhưng cũng được sử dụng trên MacBook vì nó được đồng bộ hóa qua cùng một iCloud Keychain). Các đặc điểm có thể được cung cấp khi có tuyên bố chứng thực:
    • Cung cấp bằng chứng rằng một thiết bị chính hãng và đáng tin cậy đã được sử dụng trong quá trình xác thực.
    • Cung cấp chi tiết về nguồn gốc, kiểu máy và các thông tin liên quan khác của thiết bị.
    • Tăng cường các biện pháp bảo mật, đặc biệt trong các tình huống mà sự tin cậy của thiết bị là rất quan trọng (ví dụ: một số ngành công nghiệp được quản lý chặt chẽ như y tế).

Sơ đồ quy trình Đăng ký sau đây cho thấy vai trò của chứng thực (đối tượng) trong WebAuthn:

Ví dụ về một đối tượng chứng thực#

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

Trong ảnh chụp màn hình ở trên, không có AAGUID và không có tuyên bố chứng thực nào được cung cấp.

Debugger Icon

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

Try for Free

Tiếp tục đọc để xem phân tích kỹ thuật về các thuộc tính quan trọng nhất.

Những điểm chính cần nhớ#

  • Chứng thực đề cập đến quá trình một bên chứng thực một tuyên bố bằng mật mã cho một bên khác.
  • Đối tượng chứng thực trong WebAuthn được tạo bởi trình xác thực và được chuyển đi trong quá trình Đăng ký. Nó chứa đựng, trong số những thứ khác, AAGUID, ID thông tin xác thực và khóa công khai.
  • Tuyên bố chứng thực trong WebAuthn là một trường tùy chọn trong đối tượng chứng thực, đảm bảo rằng một thiết bị chính hãng đã được sử dụng để xác thực.

Hiểu rõ bản chất của Chứng thực#

Trong WebAuthn, chứng thực đảm bảo rằng việc xác thực người dùng là an toàn và minh bạch. Với tuyên bố chứng thực, bạn có thể chắc chắn rằng một thông tin xác thực đã được tạo trên một trình xác thực / thiết bị cụ thể.

Các loại Chứng thực:#

Các loại chứng thực này đề cập đến tuyên bố chứng thực (không phải đối tượng chứng thực). Chúng được coi là một tùy chọn ưu tiên bởi bên tin cậy (vì vậy trình xác thực có thể hoạt động khác đi vì đây chỉ là một tùy chọn ưu tiên).

  • Không Chứng thực (none): Đối với các trường hợp mà quyền riêng tư là mối quan tâm hàng đầu hoặc có sự tham gia của các thiết bị được đồng bộ hóa, loại này không cung cấp thông tin về thiết bị, đảm bảo quyền riêng tư của người dùng được giữ nguyên. Một lý do khác để sử dụng giá trị này có thể là để tiết kiệm một chuyến đi khứ hồi đến một cơ quan cấp chứng chỉ (CA). none cũng là giá trị mặc định.
  • Chứng thực gián tiếp (indirect): Bên tin cậy ưu tiên nhận được chứng thực nhưng cho phép máy khách quyết định cách lấy các tuyên bố chứng thực. Máy khách có thể thay thế các tuyên bố chứng thực do trình xác thực tạo ra bằng các tuyên bố chứng thực ẩn danh để bảo vệ quyền riêng tư của người dùng.
  • Chứng thực trực tiếp (direct): Đây là hình thức minh bạch nhất. Ở đây, bên tin cậy yêu cầu trình xác thực cung cấp một tuyên bố chứng thực, để bên tin cậy nhận được thông tin chi tiết về thiết bị, bao gồm thương hiệu, kiểu máy và các chi tiết cụ thể khác. Mặc dù nó cung cấp sự minh bạch cao nhất, nó có thể gây ra lo ngại về quyền riêng tư trong một số tình huống hoặc có thể không thực sự hữu ích cho các thông tin xác thực được đồng bộ hóa.
  • Chứng thực doanh nghiệp (enterprise): Bên tin cậy muốn nhận một tuyên bố chứng thực có thể bao gồm thông tin nhận dạng duy nhất. Loại chứng thực này thường được sử dụng trong các doanh nghiệp hoặc tổ chức muốn theo dõi các thiết bị / trình xác thực cụ thể. Trình duyệt web (user agent) không nên cung cấp chứng thực chi tiết này trừ khi cài đặt của chúng cho phép cụ thể cho bên yêu cầu. Nếu cài đặt cho phép, trình duyệt nên thông báo cho thiết bị khi cần thiết (khi bắt đầu quá trình) rằng loại chứng thực cụ thể này đang được yêu cầu. Sau đó, trình duyệt sẽ chuyển ID duy nhất của thiết bị và bằng chứng chứng thực chính xác như nó nhận được cho bên tin cậy.
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

Các thuộc tính của đối tượng chứng thực#

Đối tượng chứng thực chứa nhiều thuộc tính, dưới đây là giải thích nhanh về một số thuộc tính được chọn:

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

attestationObject là một đối tượng được mã hóa bằng CBOR, chứa thông tin về các thông tin xác thực mới được tạo, khóa công khai và các dữ liệu liên quan khác:

  • fmt đại diện cho định dạng chứng thực, vì các trình xác thực có thể cung cấp dữ liệu chứng thực theo nhiều cách khác nhau. Nó cho máy chủ biết cách máy chủ nên xác thực dữ liệu chứng thực. Các giá trị được phép là "packed", "tpm", "android-key", "android-safetynet", "fido-u2f", "apple" hoặc "none". Xem chi tiết tại đây
  • attStmt là tuyên bố chứng thực. Đối với passkey, ví dụ trên các thiết bị iOS hoặc Android, nó được để trống vì passkey trên iOS hoặc Android có thể được đồng bộ hóa, và được điền vào cho các thiết bị khác như trên Windows hoặc khóa bảo mật phần cứng.
  • authData là một bộ đệm các giá trị chứa dữ liệu sau: Dữ liệu thông tin xác thực được chứng thực đóng một vai trò quan trọng ở đây. Nó chứa:

attStmt (tuyên bố chứng thực)#

Ngược lại với đối tượng chứng thực ở trên nơi attStmt được để trống để dễ đọc, đây là cách một tuyên bố chứng thực được điền đầy đủ sẽ trông như thế nào.

{ "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: Thuộc tính alg chỉ ra mã định danh thuật toán mật mã được trình xác thực sử dụng để ký tuyên bố chứng thực.
  • sig: Thuộc tính sig chứa chữ ký số được tạo bởi trình xác thực. Chữ ký này được sử dụng để xác minh tính xác thực của tuyên bố chứng thực.
  • ver: Thuộc tính ver chỉ định phiên bản của định dạng tuyên bố chứng thực.
  • x5c: Mảng x5c chứa một hoặc nhiều chứng chỉ X.509 tạo thành một đường dẫn chứng nhận, giúp xác thực chứng thực.
  • pubArea: Thuộc tính pubArea chứa thông tin chi tiết về khóa công khai và các đặc điểm của trình xác thực.
  • certInfo: Thuộc tính certInfo thường bao gồm thông tin về việc chứng nhận của trình xác thực bởi một bên đáng tin cậy.

clientDataJSON#

"clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false }

Đọc thêm về clientDataJSON trong bài viết thuật ngữ tương ứng.

transports#

"transports": [ "hybrid", "internal" ]

Thuộc tính transports chỉ ra các cơ chế mà qua đó một trình xác thực có thể giao tiếp với một máy khách. Một số kết hợp giá trị mẫu phổ biến là:

  • "transports": ["internal","hybrid"]: Passkey có thể được sử dụng từ trình xác thực nền tảng (ví dụ: Face ID, Touch ID, Windows Hello) hoặc qua xác thực chéo thiết bị (sử dụng mã QR & Bluetooth).
  • "transports": ["internal"]: Passkey có thể được sử dụng từ trình xác thực nền tảng (ví dụ: Face ID, Touch ID, Windows Hello)
  • Không có thuộc tính transports được đặt: hành vi mặc định không đưa ra chỉ dẫn nào.

Câu hỏi thường gặp về Chứng thực#

Tại sao chứng thực lại quan trọng trong WebAuthn?#

Chứng thực (tuyên bố chứng thực) trong WebAuthn rất quan trọng vì nó cung cấp bằng chứng về tính chính hãng của một trình xác thực. Nó đảm bảo rằng quá trình xác thực được thực hiện bởi một thiết bị đáng tin cậy, từ đó bảo vệ chống lại các mối đe dọa bảo mật tiềm ẩn.

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.

Hơn 3.000 nhà phát triển tin tưởng Corbado & làm cho Internet an toàn hơn với passkey. Có câu hỏi? Chúng tôi đã viết hơn 150 bài blog về passkey.

Tham gia Cộng đồng Passkeys

Sự ra đời của passkey có làm thay đổi vai trò của chứng thực không?#

Có, vì passkey có thể được đồng bộ hóa trên các thiết bị (ví dụ: từ iPhone sang MacBook qua Keychain), các bên tin cậy không còn thực sự xác định được thiết bị được chứng thực nào đang thực sự đăng nhập vào một ứng dụng hoặc trang web. Do đó, Apple và Google đã quyết định rằng đối với các passkey được đồng bộ hóa, họ sẽ không cung cấp tuyên bố chứng thực nữa. Tuy nhiên, để cải thiện trải nghiệm người dùng cho các bên tin cậy và cho họ cơ hội nhận dạng và hiển thị passkey từ hệ sinh thái của Apple và Google (iCloud KeychainGoogle Password Manager), AAGUID vẫn sẽ được cung cấp (miễn là chứng thực được đặt thành direct hoặc indirect trong cài đặt máy chủ WebAuthn cho PublicKeyCredentialCreationOptions. Xem vấn đề GitHub này để biết chi tiết.

Cài đặt ưu tiên chứng thực được khuyến nghị cho passkey là gì?#

Nếu bạn muốn tích hợp xác thực bằng passkey vào trang web và ứng dụng của mình, và muốn cung cấp cho người dùng trải nghiệm passkey tuyệt vời, bạn nên xem xét những điều sau. Chúng tôi giả định bạn xây dựng giải pháp của mình chủ yếu cho một kịch bản mà hầu hết người dùng của bạn sử dụng hệ điều hành Windows, iOS, macOS hoặc Android. Hơn nữa, chúng tôi giả định rằng hầu hết các passkey (ngoài Windows) là các passkey được đồng bộ hóa. Vì cả iOS, macOS và Android đều không còn gửi tuyên bố chứng thực nữa, việc xác thực thực sự của một trình xác thực không còn được sử dụng (đối với Windows điều này vẫn hoạt động, có lẽ vì Windows chưa cung cấp passkey được đồng bộ hóa qua Windows Hello). Tuy nhiên, để có được AAGUID, ví dụ để quản lý passkey tốt hơn trong cài đặt tài khoản, chúng tôi khuyên bạn nên đặt ưu tiên chứng thực thành indirect, vì điều này vẫn cho phép lấy AAGUID trong khi tuyên bố chứng thực có thể được gửi (Windows) hoặc không được gửi (iOS, macOS, Android).

Mối liên hệ giữa chứng thực và dịch vụ siêu dữ liệu FIDO là gì?#

Dịch vụ siêu dữ liệu FIDO cung cấp một kho lưu trữ siêu dữ liệu cho các trình xác thực khác nhau. Trong quá trình chứng thực, dịch vụ này có thể được truy vấn để lấy và xác thực chi tiết về trình xác thực, đảm bảo tính chính xác và tăng cường độ tin cậy của quy trình. Dịch vụ siêu dữ liệu FIDO kiểm tra tuyên bố chứng thực (không phải đối tượng chứng thực).

Có những lo ngại về quyền riêng tư với chứng thực trực tiếp không?#

Có, chứng thực trực tiếp (trong tuyên bố chứng thực), mặc dù cung cấp sự minh bạch cao nhất bằng cách cung cấp thông tin chi tiết về thiết bị, có thể gây ra lo ngại về quyền riêng tư trong một số tình huống. Điều quan trọng là phải đánh giá nhu cầu về sự minh bạch so với quyền riêng tư khi chọn loại chứng thực.

WebAuthn đảm bảo quyền riêng tư của người dùng trong quá trình chứng thực như thế nào?#

WebAuthn cung cấp các loại ưu tiên chứng thực khác nhau – không, gián tiếp, trực tiếp và doanh nghiệp. Đối với các tình huống mà quyền riêng tư của người dùng là quan trọng, attestation=none có thể được sử dụng, loại này không cung cấp chi tiết về thiết bị, đảm bảo quyền riêng tư của người dùng được bảo vệ.

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