Get your free and exclusive 80-page Banking Passkey Report

WebAuthnにおけるアテステーションとは?

Vincent Delitz

Vincent

Created: June 17, 2025

Updated: July 8, 2025


See the original glossary version in English here.

アテステーションとは?#

アテステーションは3つのことを指すことがあります(口語ではしばしば同じ意味で使われますが、厳密にはそれぞれ異なる意味を持ちます):

  1. 第一に、より一般的には、暗号学の分野におけるアテステーションとは、ある当事者が別の当事者に対して、あるステートメントを暗号学的に「証明(attest)」する用語です。

  2. 第二に、WebAuthnの登録フェーズ中に、アテステーションオブジェクト認証器によって作成され、リライングパーティに返されます。これは以下の情報を含むコンテナオブジェクトです:

Slack Icon

Become part of our Passkeys Community for updates & support.

Join
  1. 第三に、WebAuthnにおいて、アテステーションステートメントはアテステーションオブジェクトのオプション要素です。このステートメントが含まれる場合、アテステーションプロセスに関与する認証器(デバイス)の特定の特性を検証します。しかし、一部のデバイス製造元(例:Apple)はアテステーションステートメントを提供しません。これは、仕様のこの側面がパスキーの同期を意図しておらず、クレデンシャルが異なるデバイス間で同期される場合(例:パスキーがiPhoneで作成され、同じiCloudキーチェーンを介して同期されたMacBookでも使用される場合)にセキュリティ属性を効果的に検証できないためです。アテステーションステートメントが提供される場合に与えられる可能性のある特性:
    • 認証中に本物で信頼できるデバイスが使用されたことの証明を提供する。
    • デバイスの出自、モデル、その他の関連情報に関する詳細を提供する。
    • 特にデバイスの信頼性が重要となるシナリオ(例:ヘルスケアのような特定の規制産業)において、セキュリティ対策を強化する。

以下の登録プロセスのフローは、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とアテステーションステートメントは提供されていません。

Debugger Icon

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

Try for Free

最も重要な属性の技術的な詳細については、このまま読み進めてください。

要点#

  • アテステーションとは、ある当事者が別の当事者に対してステートメントを暗号学的に証明するプロセスを指します。
  • WebAuthnのアテステーションオブジェクトは、認証器によって作成され、登録時に渡されます。これには、AAGUIDクレデンシャルID、公開鍵などが含まれます。
  • WebAuthnのアテステーションステートメントは、アテステーションオブジェクト内のオプションのフィールドであり、認証に本物のデバイスが使用されたことを保証します。

アテステーションの本質を理解する#

WebAuthnにおいて、アテステーションはユーザー認証が安全で透明であることを保証します。アテステーションステートメントを使用すると、特定の認証器/デバイスでクレデンシャルが作成されたことを確認できます。

アテステーションの種類:#

これらのアテステーションの種類は、アテステーションステートメント(アテステーションオブジェクトではない)を指します。これらはリライングパーティによる優先設定と見なされます(したがって、認証器は単なる優先設定であるため、異なる動作をする可能性があります)。

  • アテステーションなし (none):プライバシーが最優先される場合や、同期されたデバイスが使用される場合に、このタイプはデバイスに関する情報を提供せず、ユーザーのプライバシーを保護します。この値を使用するもう一つの理由は、証明書局(CA)へのラウンドトリップを節約するためかもしれません。noneはデフォルト値でもあります。
  • 間接的アテステーション (indirect)リライングパーティはアテステーションの取得を希望しますが、クライアントがアテステーションステートメントをどのように取得するかを決定することを許可します。クライアントは、ユーザーのプライバシーを保護するために、認証器が生成したアテステーションステートメントを匿名のものに置き換えることがあります。
  • 直接的アテステーション (direct):これは最も透明性の高い形式です。ここでは、リライングパーティは認証器に対してアテステーションステートメントを要求し、それによってリライングパーティはデバイスのブランド、モデル、その他の詳細情報を含む詳細な情報を取得します。最高の透明性を提供しますが、特定のシナリオではプライバシーに関する懸念を引き起こす可能性があり、また同期されたクレデンシャルには実質的に使用できない場合があります。
  • エンタープライズアテステーション (enterprise)リライングパーティは、一意の識別情報を含むことができるアテステーションステートメントの受信を希望します。このタイプのアテステーションは、通常、特定のデバイス/認証器を追跡したい企業や組織で使用されます。Webブラウザ(ユーザーエージェント)は、要求元のパーティに対して設定で特別に許可されていない限り、この詳細なアテステーションを提供すべきではありません。設定で許可されている場合、ブラウザはプロセスの開始時にこの特定のタイプのアテステーションが要求されていることをデバイスに伝え、デバイスの一意のIDとアテステーションの証明をリライングパーティにそのまま渡すべきです。
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

アテステーションオブジェクトの属性#

アテステーションオブジェクトには多くの属性が含まれています。ここでは、いくつかの選択された属性について簡単に説明します:

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

attestationObjectCBORでエンコードされたオブジェクトで、新しく作成されたクレデンシャル、公開鍵、その他の関連データに関する情報を含んでいます:

  • fmtはアテステーションフォーマットを表します。認証器はさまざまな方法でアテステーションデータを提供できるためです。これはサーバーに対して、アテステーションデータをどのように検証すべきかを伝えます。許可される値は「packed」、「tpm」、「android-key」、「android-safetynet」、「fido-u2f」、「apple」、または「none」です。詳細はこちらを参照してください。
  • attStmtはアテステーションステートメントです。iOSAndroidデバイス上のパスキーなどでは、パスキーが同期可能であるため空のままにされ、Windowsやハードウェアセキュリティキーなどの他のデバイスでは入力されます。
  • authDataは、以下のデータを含む値のバッファです: ここで証明済みクレデンシャルデータが重要な役割を果たします。これには以下が含まれます:

attStmt (アテステーションステートメント)#

上記の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#

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

clientDataJSONについての詳細は、関連する用語集の記事をお読みください。

transports#

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

transportsプロパティは、認証器がクライアントと通信するためのメカニズムを示します。一般的な値の組み合わせの例は次のとおりです:


アテステーションに関するFAQ#

WebAuthnにおいてアテステーションが重要な理由は何ですか?#

WebAuthnにおけるアテステーション(アテステーションステートメント)は、認証器の真正性の証明を提供するため重要です。これにより、認証プロセスが信頼できるデバイスによって実行されることが保証され、潜在的なセキュリティ脅威から保護されます。

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.

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メタデータサービスは、さまざまな認証器のメタデータのリポジトリを提供します。アテステーション中にこのサービスに問い合わせることで、認証器に関する詳細を取得・検証し、プロセスの正確性を保証し、信頼性を高めることができます。FIDOメタデータサービスは、アテステーションステートメント(アテステーションオブジェクトではない)をチェックします。

直接的アテステーションにはプライバシーに関する懸念がありますか?#

はい、直接的アテステーション(アテステーションステートメント内)は、デバイスに関する詳細な情報を提供することで最高の透明性を提供しますが、特定のシナリオではプライバシーに関する懸念を引き起こす可能性があります。アテステーションの種類を選択する際には、透明性の必要性とプライバシーの必要性を比較検討することが重要です。

WebAuthnはアテステーション中にどのようにユーザーのプライバシーを確保しますか?#

WebAuthnは、none、indirect、direct、enterpriseという異なる種類のアテステーション優先設定を提供します。ユーザーのプライバシーが重要なシナリオでは、attestation=noneを使用できます。これはデバイスに関する詳細を提供しないため、ユーザーのプライバシーが保護されたままになります。

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