---
url: 'https://www.corbado.com/vi/glossary/attestation'
title: 'Chứng thực (Attestation)'
description: 'Tìm hiểu thêm về chứng thực trong WebAuthn / passkey và khám phá sự liên quan của nó trong việc xác thực người dùng, cùng với mối liên hệ với dịch vụ siêu dữ liệu FIDO.'
lang: 'vi'
keywords: 'chứng thực, attestation'
---

# Chứng thực (Attestation)

## 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](https://www.corbado.com/vi/blog/trien-khai-webauthn-server) và trả
   về cho [Bên tin cậy](https://www.corbado.com/vi/glossary/ben-tin-cay). Đây là một đối tượng chứa đựng các
   thông tin sau:
    - [Định dạng tuyên bố chứng thực (`fmt`)](https://www.iana.org/assignments/webauthn/webauthn.xhtml)
    - Tuyên bố chứng thực (`attStmt` - xem bên dưới)
    - Dữ liệu trình [xác thực](https://www.corbado.com/vi/blog/trien-khai-webauthn-server) (`authData`)

3. 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](https://www.corbado.com/vi/blog/trien-khai-webauthn-server) (thiết bị)
   tham gia vào quá trình chứng thực. Tuy
   [nhi](https://www.corbado.com/blog/agentic-non-human-identity-eic-2026)ê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](https://www.corbado.com/vi/blog/cach-bat-passkey-tren-android) 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](https://www.corbado.com/vi/faq/passkey-duoc-tao-ra-nhu-the-nao) 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](https://www.corbado.com/glossary/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](https://www.corbado.com/vi/blog/cach-bat-passkey-tren-android), đặ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ế](https://www.corbado.com/passkeys-for-healthcare)).

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

![Đối tượng chứng thực là một phần trung tâm của quá trình Đăng ký trong WebAuthn](https://www.corbado.com/website-assets/cs_1_1_registration_flow_e44a658ca7.png)

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

```json
{
    "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](https://www.corbado.com/glossary/aaguid) và không có tuyên bố
chứng thực nào được cung cấp.

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](https://www.corbado.com/glossary/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](https://www.corbado.com/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](https://www.corbado.com/vi/glossary/ben-tin-cay)
(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](https://www.corbado.com/vi/glossary/ben-tin-cay) ư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.

### 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](https://www.corbado.com/blog/agentic-non-human-identity-eic-2026)ề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

```json
"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](https://www.corbado.com/glossary/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](https://www.corbado.com/blog/agentic-non-human-identity-eic-2026)ề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](https://www.corbado.com/vi/blog/device-bound-session-credentials-dbsc)",
  "[android](https://www.corbado.com/blog/how-to-enable-passkeys-android)-key",
  "[android](https://www.corbado.com/blog/how-to-enable-passkeys-android)-safetynet", "fido-u2f", "apple" hoặc
  "none". Xem chi tiết [tại đây](https://www.iana.org/assignments/webauthn/webauthn.xhtml)
- **attStmt** là tuyên bố chứng thực. Đối với passkey, ví dụ trên các thiết bị
  [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) hoặc
  [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android), nó được để trống vì passkey trên
  [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-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](https://www.corbado.com/vi/blog/khoa-bao-mat-phan-cung-fido2-tot-nhat-2025).
- **authData** là một bộ đệm các giá trị chứa dữ liệu sau:
  ![authData chứa các dữ liệu như hash của rpId hoặc các cờ quan trọng](https://www.corbado.com/website-assets/cs_2_3_auth_Data_32c5cbba19.png)
  [Dữ liệu thông tin xác thực được chứng thực](https://www.w3.org/TR/webauthn-2/#attested-credential-data)
  đóng một vai trò quan trọng ở đây. Nó chứa:
    - [AAGUID](https://www.corbado.com/glossary/aaguid),
    - Độ dài ID thông tin xác thực,
    - ID thông tin xác thực và
    - Khóa công khai của thông tin xác thực.

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

```json
{
    "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

```json
"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

```json
"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](https://www.corbado.com/faq/is-face-id-passkey), Touch ID,
  [Windows Hello](https://www.corbado.com/glossary/windows-hello)) hoặc qua xác thực chéo thiết bị (sử dụng
  [mã QR](https://www.corbado.com/vi/blog/phuong-phap-dang-nhap-xac-thuc-ma-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](https://www.corbado.com/faq/is-face-id-passkey), Touch ID,
  [Windows Hello](https://www.corbado.com/glossary/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](https://www.corbado.com/vi/blog/cach-bat-passkey-tren-android) tiềm ẩn.

### 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 Keychain và
[Google Password Manager](https://www.corbado.com/blog/how-to-use-google-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](https://github.com/w3c/webauthn/issues/1962) để 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](https://www.corbado.com/blog/how-to-enable-passkeys-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](https://www.corbado.com/glossary/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](https://www.corbado.com/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ệ.
