Vincent
Created: June 17, 2025
Updated: July 8, 2025
See the original glossary version in English here.
アテステーションは3つのことを指すことがあります(口語ではしばしば同じ意味で使われますが、厳密にはそれぞれ異なる意味を持ちます):
第一に、より一般的には、暗号学の分野におけるアテステーションとは、ある当事者が別の当事者に対して、あるステートメントを暗号学的に「証明(attest)」する用語です。
第二に、WebAuthnの登録フェーズ中に、アテステーションオブジェクトが認証器によって作成され、リライングパーティに返されます。これは以下の情報を含むコンテナオブジェクトです:
fmt
)attStmt
- 下記参照)authData
)以下の登録プロセスのフローは、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" } }
上記のスクリーンショットでは、AAGUIDとアテステーションステートメントは提供されていません。
最も重要な属性の技術的な詳細については、このまま読み進めてください。
WebAuthnにおいて、アテステーションはユーザー認証が安全で透明であることを保証します。アテステーションステートメントを使用すると、特定の認証器/デバイスでクレデンシャルが作成されたことを確認できます。
これらのアテステーションの種類は、アテステーションステートメント(アテステーションオブジェクトではない)を指します。これらはリライングパーティによる優先設定と見なされます(したがって、認証器は単なる優先設定であるため、異なる動作をする可能性があります)。
none
):プライバシーが最優先される場合や、同期されたデバイスが使用される場合に、このタイプはデバイスに関する情報を提供せず、ユーザーのプライバシーを保護します。この値を使用するもう一つの理由は、証明書局(CA)へのラウンドトリップを節約するためかもしれません。none
はデフォルト値でもあります。indirect
):リライングパーティはアテステーションの取得を希望しますが、クライアントがアテステーションステートメントをどのように取得するかを決定することを許可します。クライアントは、ユーザーのプライバシーを保護するために、認証器が生成したアテステーションステートメントを匿名のものに置き換えることがあります。direct
):これは最も透明性の高い形式です。ここでは、リライングパーティは認証器に対してアテステーションステートメントを要求し、それによってリライングパーティはデバイスのブランド、モデル、その他の詳細情報を含む詳細な情報を取得します。最高の透明性を提供しますが、特定のシナリオではプライバシーに関する懸念を引き起こす可能性があり、また同期されたクレデンシャルには実質的に使用できない場合があります。enterprise
):リライングパーティは、一意の識別情報を含むことができるアテステーションステートメントの受信を希望します。このタイプのアテステーションは、通常、特定のデバイス/認証器を追跡したい企業や組織で使用されます。Webブラウザ(ユーザーエージェント)は、要求元のパーティに対して設定で特別に許可されていない限り、この詳細なアテステーションを提供すべきではありません。設定で許可されている場合、ブラウザはプロセスの開始時にこの特定のタイプのアテステーションが要求されていることをデバイスに伝え、デバイスの一意のIDとアテステーションの証明をリライングパーティにそのまま渡すべきです。アテステーションオブジェクトには多くの属性が含まれています。ここでは、いくつかの選択された属性について簡単に説明します:
"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はCBORでエンコードされたオブジェクトで、新しく作成されたクレデンシャル、公開鍵、その他の関連データに関する情報を含んでいます:
上記のattStmt
が読みやすさのために空にされていたアテステーションオブジェクトとは対照的に、入力されたアテステーションステートメントは次のようになります。
{ "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
:
alg
プロパティは、アテステーションステートメントの署名に認証器が使用した暗号アルゴリズム識別子を示します。sig
:
sig
プロパティには、認証器によって生成されたデジタル署名が含まれます。この署名は、アテステーションステートメントの真正性を検証するために使用されます。ver
:
ver
プロパティは、アテステーションステートメントのフォーマットのバージョンを指定します。x5c
:
x5c
配列には、アテステーションの検証を支援する証明書パスを形成する1つ以上のX.509証明書が含まれます。pubArea
:
pubArea
プロパティには、公開鍵と認証器の特性に関する詳細情報が含まれます。certInfo
:
certInfo
プロパティには、通常、信頼できる第三者による認証器の証明に関する情報が含まれます。"clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false }
clientDataJSON
についての詳細は、関連する用語集の記事をお読みください。
"transports": [ "hybrid", "internal" ]
transportsプロパティは、認証器がクライアントと通信するためのメカニズムを示します。一般的な値の組み合わせの例は次のとおりです:
"transports": ["internal","hybrid"]
: パスキーはプラットフォーム認証器(例:Face
ID、Touch
ID、Windows Hello)から、またはクロスデバイス認証(QRコードとBluetoothを使用)を介して使用できます。"transports": ["internal"]
: パスキーはプラットフォーム認証器(例:Face
ID、Touch ID、Windows Hello)から使用できます。transports
プロパティが設定されていない:何も示さないデフォルトの動作。WebAuthnにおけるアテステーション(アテステーションステートメント)は、認証器の真正性の証明を提供するため重要です。これにより、認証プロセスが信頼できるデバイスによって実行されることが保証され、潜在的なセキュリティ脅威から保護されます。
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.
3,000人以上の開発者がCorbadoを信頼し、パスキーでインターネットをより安全にしています。質問がありますか?私たちはパスキーに関する150以上のブログ記事を執筆しています。
Passkeys Communityに参加はい。パスキーはデバイス間で同期できるため(例:iPhoneからMacBookへキーチェーン経由)、リライングパーティはどの証明済みデバイスが実際にアプリやウェブサイトにログインしているかを正確に判断できなくなりました。そのため、AppleとGoogleは同期パスキーに対してアテステーションステートメントを提供しないことを決定しました。しかし、リライングパーティのUXを向上させ、AppleとGoogleのエコシステム(iCloudキーチェーンおよびGoogleパスワードマネージャー)からのパスキーを認識・表示する機会を提供するために、AAGUIDは引き続き提供されます(PublicKeyCredentialCreationOptions
のWebAuthnサーバー設定でアテステーションがdirect
またはindirect
に設定されている限り)。詳細はこのGitHub issueを参照してください。
ウェブサイトやアプリにパスキー認証を統合し、ユーザーに優れたパスキーUXを提供したい場合は、以下を考慮する必要があります。ここでは、ユーザーのほとんどがWindows、iOS、macOS、またはAndroidオペレーティングシステムを使用するシナリオを主に想定してソリューションを構築すると仮定します。さらに、ほとんどのパスキー(Windowsを除く)が同期パスキーであると仮定します。iOS、macOS、Androidのいずれもアテステーションステートメントを送信しなくなったため、認証器の実際の検証はもはや使用されません(Windowsではまだ機能します。これはおそらく、WindowsがまだWindows Helloを介した同期パスキーを提供していないためです)。しかし、アカウント設定でのパスキー管理を改善するためなどにAAGUIDを取得するには、アテステーションの優先設定をindirect
に設定することをお勧めします。これにより、アテステーションステートメントが送信される(Windows)か送信されない(iOS、macOS、Android)かにかかわらず、AAGUIDを取得できます。
FIDOメタデータサービスは、さまざまな認証器のメタデータのリポジトリを提供します。アテステーション中にこのサービスに問い合わせることで、認証器に関する詳細を取得・検証し、プロセスの正確性を保証し、信頼性を高めることができます。FIDOメタデータサービスは、アテステーションステートメント(アテステーションオブジェクトではない)をチェックします。
はい、直接的アテステーション(アテステーションステートメント内)は、デバイスに関する詳細な情報を提供することで最高の透明性を提供しますが、特定のシナリオではプライバシーに関する懸念を引き起こす可能性があります。アテステーションの種類を選択する際には、透明性の必要性とプライバシーの必要性を比較検討することが重要です。
WebAuthnは、none、indirect、direct、enterpriseという異なる種類のアテステーション優先設定を提供します。ユーザーのプライバシーが重要なシナリオでは、attestation=none
を使用できます。これはデバイスに関する詳細を提供しないため、ユーザーのプライバシーが保護されたままになります。
Table of Contents
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.