デジタル認証情報は、ユーザーの認証、認可、その他の情報提供に使用できる、暗号化によって検証可能なドキュメントです。通常、モバイル運転免許証、デジタル パスポート、搭乗券などがこれにあたります。デジタル認証情報は、デジタル ウォレットと呼ばれる仮想コンテナに保存され、アクセスして取得する方法を指定する W3C 標準の一部です。 この標準は、ウェブ ユースケースでは W3C Credential Management API で、Android では Credential Manager's DigitalCredential API で実装されています。
デジタル認証情報について
現実世界では、身分証明書を財布に入れておき、求められたときに提示します。
この場合、ユーザーは通常 1 つの財布を持ち、リクエスタに提示する認証情報を財布から取り出します。財布はほとんどの場合、同じものを保管できるため、相互に交換可能です。
デジタル認証情報は、現実世界の認証情報と次の点で異なります。
- ユーザーは複数のウォレット(ホルダー とも呼ばれます)を持つことが想定されており、 さまざまな認証情報を保管できます。ウォレットには、保管できる認証情報が定められています。
- アクセス権の付与や身元確認のために認証情報を要求するアプリまたはサービスは、検証者 と呼ばれます。
- 認証情報を作成し、サブジェクトに関するクレーム(大学、政府、テクノロジー企業など)をアサートするエンティティは、発行者 と呼ばれます。
- 認証情報の提示はソフトウェアで行われます。つまり、API サーフェスが認証情報を取得して提示します。Android の場合は Credential Manager です。
そのため、認証情報マネージャー は、これまでユーザーが処理していたいくつかの役割を担います。
- Android では、ウォレットを認証情報マネージャー UI に表示するには、認証情報のメタデータを認証情報マネージャーに登録する必要があります。
- Credential Manager は、リクエストに基づいてウォレット間で認証情報を照合し、ユーザーが選択できるリストを表示します。
- ユーザーがリストから認証情報を選択すると、認証情報マネージャーはウォレットを呼び出します。ウォレットはトランザクションの残りの部分(UI の表示など)を処理し、認証情報をアプリケーションに返します。
このフローを次に示します。
検証可能な認証情報
検証可能な認証情報は、厳格な標準(W3C Verifiable Credentials Data Model など)に則ったデジタル認証情報のサブセットです。これらの認証情報には、暗号化によって保護されたクレームが含まれているため、改ざんが明らかになり、発行者を正確に証明できます。
すべてのデジタル認証情報が検証可能な認証情報であるとは限りませんが、すべての検証可能な認証情報はデジタル認証情報です。
クレームが検証されることの意味
Android Credential Manager API を介して認証情報が届き、その中のクレームが「検証済み」とマークされている場合、発行者はその特定のデータに対してチェックを行ったことをアサートしています。ただし、そのデータが絶対的で普遍的な真実であるという意味ではありません。「検証済み」はプロセスの表明であり、信頼を自動的に保証するものではありません。
このエコシステムの基本的な考え方は、信頼は常に検証者によって解決されるということです。検証者(アプリ)が暗号化されたデータを受け取り、発行者がそのデータを「検証済み」とマークしている場合、検証者は、発行者が自社の基準に従ってクレームを検証したことを信頼できるかどうかを判断する必要があります。
ユーザー エクスペリエンス
Android のフローに示すように、ユーザーは認証情報マネージャー UI を 1 回操作するだけで、適切な認証情報を選択できます。セレクタの例を次に示します。
基準
デジタル認証情報リクエストは、OpenID4VP 標準を使用して作成されます。リクエストの例は、デジタル認証情報デモサイトで確認できます。
デジタル認証情報のレスポンスは通常、標準化された認証情報形式で返されます。これらはさまざまな標準化団体によって管理されており、W3C Verifiable Credentials、sd-jwt、および mdocなどがあります。
カスタム プロトコルも可能ですが、アプリケーションでは標準プロトコルのいずれかを使用することをおすすめします。
試してみる
Android ウォレットとウェブベースの検証者を使用して、プラットフォーム間でデジタル認証情報のフローをテストできます。
- Android スマートフォンに CMWallet 公開サンプル をインストールします。
これを行うには、リポジトリからプルして
Android Studio から直接インストールするか、
https://github.com/digitalcredentialsdev/CMWallet/actions
に移動して最新のビルドを選択し、最新の
app-debug.apkファイルにアクセスします。 - CMWallet を開いて、メタデータを認証情報マネージャーに登録します。デバイスが相互に接続できるように、Bluetooth が有効になっていることを確認してください。
- https://digital-credentials.dev/ に移動し、
Request Credentials (OpenID4VP)を選択します。 - 警告プロンプトを承諾し、スマートフォンで QR コードをスキャンして、[パスキーを使用] を選択し、確認をタップして、利用可能な認証情報を表示します。
- CMWallet から認証情報を選択して、ブラウザに戻ります。ブラウザに返された認証情報が表示されます。
関連ドキュメント
- Credential Manager を使用してアプリでデジタル認証情報をリクエストする方法について詳しくは、Credential Manager - Verifier API ページをご覧ください。
- 認証情報マネージャー を使用してデジタル ウォレットを構築する方法について詳しくは、 Credential Manager - Holder API ページをご覧ください。