3D セキュア 2 (3DS2) を使ってカード支払いの認証を行う際に、Stripe は Stripe.js、iOS SDK、Android SDK を通じて顧客のデバイスに関する情報を収集します。この情報は、3DS2 プロトコルの要求事項に従い、同じデバイスから繰り返し行われた支払いを認識したり、取引の全体的なリスクを評価したりする目的で、カードネットワークおよびカード発行会社と共有されます。
3DS2 プロトコルでは 150 以上のデータ要素がリクエストされますが、Stripe はユーザーのプライバシーを保護するために、一部の要素 (カード発行会社がリスク分析を行うのに十分と思われる主要な ID と環境情報) のみを収集しています。
ウェブ上では、Stripe.js によってブラウザーから以下の情報が収集されます。
IP アドレス
ユーザーエージェント
ブラウザーの言語
システムのタイムゾーン
画面の寸法と色深度
3DS2 で導入されたフィンガープリンティング手順の一環として、Stripe.js は非表示の iframe をカード発行会社に開示して、発行会社が独自のフィンガープリンティングスクリプトを起動できるようにすることがあります (ダブルキー暗号化方式のデータ保存がブラウザーに導入されることによってこの特徴識別のアプローチが無効になることを Stripe は認識しています。そのため、W3C およびカードネットワークと連携して、プライバシー保護に対応した代替策の開発に取り組んでいます)。
アプリ内支払いでは、iOS と Android の SDK によって以下の情報が収集されます。
アプリ固有のデバイス ID: iOS では identifierForVendor であり、Android では ANDROID_ID です(注意: 8.0 より前のバージョンの Android にインストールされたアプリでは、アプリ固有の値ではなくグローバルな ANDROID_ID が使用されます)。
デバイスのモデル
OS バージョン
システムの言語、国、タイムゾーン
画面の寸法
さらに、3DS2 の仕様では、iOS や Android の SDK が収集しないデータ要素も数多く参照されています。
お客様のアプリが App Store や Play Store のポリシーを確実に遵守できるようにするため、iOS と Android の SDK は広告 ID を収集しません。
iOS と Android の SDK は位置データを収集しません。
iOS と Android の SDK は、上記を除き、ハードウェアの識別情報 (IMEI や MAC アドレス) やユーザーの設定に関する情報 (バイブレーションモードの設定や、インストールされたアプリの一覧) を収集しません。この種の情報へのアクセスは、プラットフォームのプロバイダーによって段階的に廃止されています。Stripe も、この種のデータによってリスク判定が大きく改善するとは考えていません。
iOS と Android の SDK はカードネットワークが保有するキーを使ってデバイス情報を暗号化します。Stripe のサーバーはこれらのデータにアクセスできません。
注意: PCI 3DS の要件に従い、iOS と Android の SDK はルート化されたデバイスを検知する基本的なチェックを行い、チェックの成功または失敗を示すブール値のみをサーバーに送信します。また、PCI 3DS の別の要件に従い、3DS2 に関連する Android SDK のコンポーネントは ProGuard によって難読化されています。
3D セキュア用のデバイス情報は、PaymentIntent または SetupIntent が確認された (つまり、confirmCardPayment またはそれに相当するものがコールされた) 後に収集されます。通常これは顧客が支払いページで「支払う」ボタンをクリックしたときに起こります。
デバイス情報の収集は 3DS2 プロトコルの必須部分であり、支払いの処理時にのみ実行されます。advancedFraudSignals パラメーターには影響されません。
Stripe.js、iOS SDK、Android SDK によるデバイス情報の収集についてご意見がある場合は、Stripe サポートにご連絡ください。
継続支払いでの 3DS の扱いに関する情報をお探しの場合は、Stripe Billing のガイド (Stripe ドキュメント) をご参照ください。
1 回限りの支払いでの 3DS の扱いに関するガイダンスについては、Stripe のカード認証と 3D セキュアのガイドをご覧ください。