AAGUID - 認証器のモデル識別子
概要
AAGUID(Authenticator Attestation Globally Unique Identifier) は、WebAuthn/FIDO2 における認証器(Authenticator)のモデルを識別するための128ビットUUIDです。
このドキュメントで学べること:
- AAGUID の役割と用途
- AAGUID の取得タイミングと場所
- FIDO Metadata Service(MDS)との連携
- 主要な認証器の AAGUID 一覧
- エンタープライズでの活用パターン
AAGUID とは
基本概念
┌─────────────────────────────────────────────────────────────────────────────┐
│ AAGUID の位置づけ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 認証器のモデル(製品ライン) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ YubiKey 5 NFC │ │
│ │ AAGUID: ee882879-721c-4913-9775-3dfcce97072a │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 個体 A │ │ 個体 B │ │ 個体 C │ │ 個体 D │ ... │ │
│ │ │ (同じ │ │ (同じ │ │ (同じ │ │ (同じ │ │ │
│ │ │ AAGUID) │ │ AAGUID) │ │ AAGUID) │ │ AAGUID) │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 【特徴】 │
│ - 同じモデル・ファームウェアの認証器は同じ AAGUID を共有 │
│ - 個々の認証器を識別するものではない(それは credentialId) │
│ - 製造元が FIDO Alliance に登録して取得 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
AAGUID の特性
| 特性 | 説明 |
|---|---|
| 形式 | 128ビット UUID(RFC 4122) |
| 発行者 | 認証器の製造元 |
| 一意性 | 製造元 + モデル + ファームウェアバージョン で一意 |
| 用途 | 認証器の種類を識別、メタデータ参照のキー |
| プライバシー | 個体識別ではないためプライバシー影響は限定的 |
AAGUID の取得タイミング
authenticatorData の構造
AAGUID は登録(Registration)時の authenticatorData に含まれます。
authenticatorData の構造(attestedCredentialData あり):
┌─────────────────────────────────────────────────────────────────────────────┐
│ authenticatorData │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┬───────┬───────────┬────────────────────────────────────┐ │
│ │ rpIdHash │ flags │ signCount │ attestedCredentialData │ │
│ │ (32 bytes) │ (1) │ (4 bytes) │ (variable) │ │
│ └──────────────┴───────┴───────────┴────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ attestedCredentialData │ │
│ ├───────────────────────────────────────────────────────────────────────┤ │
│ │ ┌──────────┬─────────────────────┬────────── ─────┬─────────────────┐ │ │
│ │ │ AAGUID │ credentialIdLength │ credentialId │ publicKey │ │ │
│ │ │(16 bytes)│ (2 bytes) │ (variable) │ (COSE) │ │ │
│ │ └──────────┴─────────────────────┴───────────────┴─────────────────┘ │ │
│ │ ▲ │ │
│ │ │ │ │
│ │ └─── ここに AAGUID が含まれる │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────── ─────────────────────────────────┘
flags の詳細
flags (1 byte) のビット構成:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ bit7│ bit6│ bit5│ bit4│ bit3│ bit2│ bit1│ bit0│
│ ED │ AT │ 0 │ BS │ BE │ 0 │ UV │ UP │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
│ │ │ │ │ │
│ │ │ │ │ └─ User Present (常に 1)
│ │ │ │ └─── User Verified (PIN/生体認証)
│ │ │ └─── Backup Eligible (Level 3)
│ │ └─── Backup State (Level 3)
│ └─── Attested credential data included
│ (1 の場合、AAGUID 等が含まれる)
└─── Extension data included
【重要】
AT フラグが 1 の場合のみ attestedCredentialData(AAGUID を含む)が存在