Google PayとMastercardは、Consumer Device Cardholder Verification Method (CDCVM) を使用した生体認証決済をインドで展開し始めました。買い物客は指紋や顔スキャンで購入を確定しますが、生体データはスマートフォン内にロックされたまま保持されます。

なぜ今、CDCVMが重要なのか

CDCVMは「本人確認」のプロセスをデバイス上へと移行させます。暗号化署名された使い捨ての決済トークンのみがデバイスから送信されるため、生体データがインターネットを通過することはありません。

内部的なフローの仕組み

  1. 特徴量抽出 – センサー(指紋リーダーまたはカメラ)が未加工のデータをSecure EnclaveまたはTrusted Execution Environment (TEE) に送ります。これらの隔離された領域は、オペレーティングシステムにデータをさらすことなく入力を処理します。
  2. ローカル比較 – デバイスはユーザーの生体情報の暗号化されたテンプレートを保存しています。Secure Enclaveはこのテンプレートとライブキャプチャを比較し、未加工の画像や特徴量ベクトルを外部に送信することはありません。
  3. ハードウェア・アテステーション – マッチングに成功すると、エンクレーブはハードウェアから出ることのない秘密鍵を使用してトランザクションに署名します。アテステーションは、生体データそのものを明かすことなく、検証済みの生体認証が使用されたことを証明します。
  4. トークン生成 – 署名されたアテステーションがトークンサービスと組み合わさり、ワンタイムトークンが生成されます。生体データではなく、トークンが加盟店に送られ、その後決済のために発行銀行へと送られます。

加盟店と銀行は、署名されたトークンのみを確認できます。すべての生体データはデバイスの保護されたメモリ内に留まります。

開発者が避けるべき落とし穴

  • 生体認証ベクトルの送信 – 指紋や顔の未加工データを送信すると、永続的な漏洩リスクが生じます。データベースが侵害された場合、指紋は変更することができません。
  • リプレイ攻撃 – 生体認証の数値表現がネットワーク上を流れると、それらがキャプチャされ、センサーを偽装するために再送される可能性があります。
  • 規制上の問題 – 多くの法域において、生体データは極めて機密性の高い個人情報として扱われ、厳格な保存、同意、および漏洩通知の規則が課されています。

生体認証は、暗号化操作を解除するためのローカルキーとして扱い、決してペイロードとして送信しないでください。

具体的な実装チェックリスト

  • プラットフォーム提供の生体認証APIを使用する。これにより、キャプチャと処理をデバイスのTEE内に保持できます。
  • 生体認証テンプレートを暗号化して保存する。Secure Enclaveによって管理されるキーを使用し、ファイルシステムには決して書き込まないでください。
  • マッチング成功後にハードウェア・アテステーションを要求する。
  • トークナイゼーション・サービスと統合する。アテステーションを消費して使い捨てトークンを発行するサービスです。トークンリクエストには署名済みのアテステーションを含めますが、生体データは含めないでください。
  • サーバー側でトークンを検証する。発行体の公開鍵を使用して検証します。有効なアテステーション署名がないトークンは拒否してください。
  • エッジケースをテストする。センサーの故障、誤拒否、デバイスの変更などをテストしてください。フローは、生体データをさらすことなく、PINやパスワードにフォールバックできる必要があります。

まとめ

生体認証の検証がスマートフォンのセキュアなハードウェア内に留まり、単にワンタイムトークンに署名するだけであれば、ユーザーは指紋や顔データのプライバシーを維持でき、加盟店は機密性の高い個人情報への露出を減らすことができます。開発者にとって、ルールはシンプルです。生体認証には暗号鍵を解除させるだけで、決してデバイスの外へ出さないようにしてください。