Attestation - 認証器の信頼性証明
概要
Attestation(アテステーション) は、登録時に認証器が「自分が正規の認証器である」ことを証明する 仕組みです。
このドキュメントで学べること:
- Attestation の目的と必要性
- Attestation Conveyance Preference(none, indirect, direct, enterprise)
- Attestation Statement Format(packed, tpm, android-key, fido-u2f, apple, none)
- 各タイプでの attestationObject の構造差異
- RP 側での検証処理の違い
- 証明書チェーン検証の仕組みと TrustStore
- エンタープライズでの使い分けとプライバシーの考慮
Attestation とは
基本概念
┌─────────────────────────────────────────────────────────────────────────────┐
│ Attestation の役割 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 【問題】 │
│ RP は登録時に受け取った公開鍵が「本当に正規の認証器で生成されたか」を │
│ どうやって確認するか? │
│ │
│ 【解決策: Attestation】 │
│ 認証器が製造時に埋め込まれた「Attestation 秘密鍵」で署名することで、 │
│ 認証器の正当性を証明する │
│ │
│ ┌────────────────────────────────────────────── ───────────────────────┐ │
│ │ 認証器(製造時) │ │
│ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Attestation 秘密鍵 │ │ Attestation 証明書 │ │ │
│ │ │ (製造元が埋め込み) │ │ (製造元のCA署名) │ │ │
│ │ └─────────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 登録時の流れ │ │
│ │ │ │
│ │ 1. 認証器が新しい鍵ペアを生成 │ │
│ │ 2. 公開鍵 + authenticatorData を Attestation 秘密鍵で署名 │ │
│ │ 3. 署名 + Attestation 証明書 を RP に送信 │ │
│ │ 4. RP は証明書チェーンを検証 → 正規の認証器と確認 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘