> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# デバイスフィンガープリント・IPリスク警告コード一覧

> DiditのデバイスとIP分析で返される全警告コード：VPN/Tor検出、国の不一致、ブロックリスト、重複IP・重複デバイス、復元されたデバイス、想定IPとの不一致。

## 概要

デバイス・IP分析は、疑わしいデバイス、ネットワーク、位置情報の挙動を検知するたびに、`ip_analyses[].warnings[]`に警告タグを出力します。9つのタグには、ワークフローノードごとに設定可能なアクション(却下 / レビュー / アクションなし)があります。2つのブロックリストタグは常に`Declined`を強制し、2つの許可リストタグは常に情報提供のみです。各警告の`log_type`は適用されたアクションを反映し、`error`(却下)、`warning`(レビュー)、`information`(アクションなし)のいずれかになります。各リスクはセッション1件あたり最大1回だけ発生します。

以下のリスクはすべて本番環境の判定パイプラインで検証されています。警告には機能タグ`LOCATION`が付与され、標準の[警告オブジェクト](https://docs.didit.me/ja/reference/data-models.md#警告オブジェクト)の形式に従います。

デバイスフィンガープリントの警告は、意図的に完全一致のシグナルと復元されたシグナルに分けられています。

* `DUPLICATED_DEVICE_FINGERPRINT`は、同一の決定論的なデバイスID(`match_source`が`persistent_id`または`legacy_fp`)が、異なる`vendor_data`値を持つ複数のセッションで再利用されたことを意味します。
* `DEVICE_RECOVERED_HIGH_CONFIDENCE`は、永続IDが変更された**後**(ストレージの消去、シークレットモード、アプリの再インストール)に、v2フィンガープリント復元によってセッションが以前に検出されたデバイスと照合されたことを意味します。この警告は、照合が高信頼度の類似度しきい値とハードゲートを通過した場合にのみ表示されます。

![デバイス、VPN、プロキシ、位置情報の不一致に関するアラートを含むDiditのデバイス・IP分析の警告の例](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/ip-analysis-warning-example.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=370f87af45a6138ebd7454abe9131665)

## 生成される警告

| リスク | 原因 | `log_type` | ステータスへの影響 | 推奨される対処 |
| - | - | - | - | - |
| `PRIVATE_NETWORK_DETECTED` | `is_vpn_or_tor`が`true`でした。セッションはVPN、プロキシ、またはTor出口ノード経由で開始されています。`additional_data`は`null`です。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | 自社のリスク許容度でマスクされたトラフィックを受け入れるかどうかを判断してください。受け入れる場合は、アクションなしのままにしてください。 |
| `COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IP` | 本人確認書類のISO国コードが、IPアドレスから導出された国と異なります。`additional_data`には両方のISO-3コード(`document_country_code`、`ip_country_code`)が含まれます。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | ユーザーが正当に渡航している場合はレビューしてください。VPNや重複デバイスのシグナルと同時に検出された場合は却下してください。 |
| `EXPECTED_IP_ADDRESS_MISMATCH` | セッションが想定IPアドレスを指定して作成されており、実際のIPがそれと異なります。`additional_data`には`expected_ip_address`と`actual_ip_address`が含まれます。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | セッション作成時にIPを事前に固定する場合に使用します。不一致の場合は、セッションを拒否するか追加認証を求めてください。 |
| `IP_ADDRESS_IN_BLOCKLIST` | セッションのIPアドレスが、アプリケーションのIPブロックリストのエントリと一致しています。`additional_data`: `ip_address`。 | 常に`error` | `Declined`に強制します。 | セッションを拒否してください。必要に応じて、誤検知がないかブロックリストの登録元を監査してください。 |
| `DEVICE_FINGERPRINT_IN_BLOCKLIST` | セッションのデバイスフィンガープリントが、デバイスブロックリストのエントリと一致しています。`additional_data`: `device_fingerprint`。 | 常に`error` | `Declined`に強制します。 | セッションを拒否してください。 |
| `IP_ADDRESS_IN_ALLOWLIST` | セッションのIPに重複一致がありましたが、アプリケーションのIP許可リストに登録されているため、重複IPの警告はスキップされました。`additional_data`: `ip_address`。 | 常に`information` | なし。 | 信頼できる企業のNAT、QAネットワーク、既知の共有アクセスポイントに使用します。 |
| `DEVICE_FINGERPRINT_IN_ALLOWLIST` | セッションのデバイスフィンガープリントに決定論的な方法で重複が検出されましたが、デバイス許可リストに登録されているため、重複デバイスの警告はスキップされました。`additional_data`: `device_fingerprint`。 | 常に`information` | なし。 | 信頼できる共有デバイスにのみ使用してください。ブロックリストが引き続き優先されます。 |
| `DUPLICATED_IP_ADDRESS` | 同じIPが、異なる`vendor_data`を持つ別のセッションで使用されました。`additional_data`: `duplicated_session_id`、`duplicated_session_number`、`api_service`。IPが許可リストに登録されている場合はスキップされます。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | 企業NATや共有NATでよく発生します。却下する前に、他のシグナル(重複デバイス、国の不一致)と組み合わせて判断してください。 |
| `DUPLICATED_DEVICE_FINGERPRINT` | 同じ決定論的なデバイスIDが、異なる`vendor_data`を持つ複数のセッションで再利用されました。`additional_data`: `duplicated_session_id`、`duplicated_session_number`、`api_service`、`match_source`(`persistent_id`または`legacy_fp`)。フィンガープリントが許可リストに登録されている場合はスキップされます。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | 複数アカウントによる不正の強力な証拠です。不正に対する許容度に応じて、レビューまたは却下してください。 |
| `DEVICE_RECOVERED_HIGH_CONFIDENCE` | v2デバイス復元モデルが、永続IDが変更された後でも、セッションを過去に確認されたデバイスと高い信頼度で照合しました。`additional_data`: `duplicated_session_id`、`duplicated_session_number`、`api_service`、`match_source`(`recovered_high`)、`recovery_similarity`、`recovery_match_device_uuid`。デバイス許可リストでは抑制されません。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | まずレビューで運用を始め、誤検知率を測定してからアクションを厳格化してください。ストレージのリセットやシークレットモードによる試みを示す強力なシグナルです。 |
| `DEVICE_LINKED_TO_LIVENESS_ATTACK` | 同じデバイス(永続デバイスIDで照合)が、ライブネス撮影が攻撃と判定された別ユーザーの過去のセッションで使用されていました。ライブネスチェックへの攻撃にすでに使われたデバイスであることは、今回の撮影が同じ攻撃者によるものであることを強く示します。`additional_data`: `liveness_attack_session_id`、`liveness_attack_session_number`、`liveness_attack_sessions_count`、`match_source`(`persistent_id`)。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | まずレビューで運用を始め、誤検知率を測定してから却下に引き上げてください。 |
| `DEVICE_MODEL_INCONSISTENT` | 同じデバイス(永続デバイスIDで照合)が、過去のセッションでは異なるデバイスモデルとして報告されていました。1台の物理デバイスのモデルが変わることはないため、報告されたモデルが偽装されているか、デバイス識別子が別のデバイスにコピーされた可能性があります。汎用的なモデル文字列は比較されません。`additional_data`: `device_model`、`earlier_device_model`、`earlier_session_id`、`earlier_session_number`、`match_source`。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: アクションなし)。 | 対応する前に、報告された2つのモデルを比較し、過去のセッションを確認してください。 |
| `IP_LOCATION_NOT_ALLOWED` | IPジオフェンシングが有効で、セッションのIPが許可されていない国または州/地域に位置しています。`additional_data`: `ip_country_code`(ISO-3)、`ip_country`、`ip_state`、`restricted_by`(`country`または`state`)。 | 設定したアクションに従う | 設定可能: 却下 / レビュー / アクションなし(デフォルト: 却下)。 | 管轄区域による制限を適用するために使用します。マスクされたトラフィックでフェンスを回避できないよう、`vpn_detection_action`と組み合わせてください。 |

復元されたデバイスに条件を満たす関連セッションがまだない場合(そのため`matches[]`に何も入らない場合)でも、`DEVICE_RECOVERED_HIGH_CONFIDENCE`はフォールバック形式の`additional_data`で発行されます。その形式は`recovery_match_device_uuid`、`recovery_match_similarity`、`recovery_match_band`、`recovery_gate_reason`です。

`IP_LOCATION_NOT_ALLOWED`は、IPジオフェンシングが有効(`is_ip_geofencing_enabled`)で、セッションのIPが`ip_geofencing_by_country`で許可されていないと設定された国または州/地域に位置している場合に発行されます。`additional_data`には`ip_country_code`(ISO-3)、`ip_country`、`ip_state`、`restricted_by`(`country`または`state`)が含まれます。州/地域のエントリは国の設定より優先され、IPプロバイダーの地域名(例: `"California"`)と大文字・小文字を区別せずに照合されます。設定に記載されていない国は許可されます。

## デバイスとランタイムの完全性

ネイティブSDKとWebクライアントが報告するシグナルで、検証が実行されたデバイスの状態を示します。これらはインジェクション攻撃を検知するためのものです。デバイスをroot化したりアプリのプロセスをフックしたりできる攻撃者は、カメラ映像が生体認証チェックに届く前に差し替えることができます。

いずれもワークフローごとに設定でき、デフォルトは**アクションなし**です。そのため、この機能を有効にしても、明示的に設定するまで判定は一切変わりません。

| リスク | 原因 | 設定キー | デフォルト |
| - | - | - | - |
| `DEVICE_APP_TAMPERED` | プラットフォームのアテステーションで、リクエストが正規のデバイス上で改変されていない正規アプリケーションのビルドから送信されたことを検証できませんでした。 | `device_app_tampered_action` | `NO_ACTION` |
| `DEVICE_RUNTIME_HOOKING_DETECTED` | アプリケーションのプロセス内で、ランタイムインストルメンテーションまたはフッキングのフレームワーク(Frida、Xposed、LSPosed、Substrate)が検出されました。 | `device_hooking_action` | `NO_ACTION` |
| `DEVICE_ROOTED_OR_JAILBROKEN` | デバイスにroot化または脱獄の兆候があります。これらはカメラの傍受を防ぐOSの保護機能を無効にします。 | `device_rooted_action` | `NO_ACTION` |
| `DEVICE_EMULATOR_DETECTED` | セッションが物理デバイスではなく、エミュレーターまたはシミュレーターから開始されました。 | `device_emulator_action` | `NO_ACTION` |
| `DEVICE_DEBUGGER_ATTACHED` | 検証中に、デバッガーまたはプロセストレーサーがアプリケーションにアタッチされていました。 | `device_debugger_action` | `NO_ACTION` |
| `AUTOMATION_FRAMEWORK_DETECTED` | セッションが人ではなく、ブラウザ自動化フレームワークまたはヘッドレスブラウザによって操作されていました。 | `automation_detected_action` | `NO_ACTION` |
| `DEVICE_INTEGRITY_SIGNALS_MISSING` | クライアントは完全性レポートに対応したSDKバージョンを報告しましたが、完全性シグナルが届きませんでした。これは、シグナルが通信経路上で除去された可能性を示します。 | `device_integrity_missing_action` | `NO_ACTION` |

> [!NOTE]
>
> 各プローブはベストエフォートで動作します。チェックを実行できない場合は、問題なしの結果ではなく**判定不能**を報告します。そのため、プローブが失敗しても正規のユーザーに対して誤検知が発生することはありません。シグナルはネイティブSDK **4.4.0**以降、報告されます。それより前のSDKを使用するセッションでは完全性シグナルは送信されず、`DEVICE_INTEGRITY_SIGNALS_MISSING`が発生することはありません。

> [!WARNING]
>
> root化やエミュレーターのシグナルは、改造されているものの不正ではないデバイスを使う正規のユーザーにもよく見られます。これらは却下ではなくレビューから始め、厳しくする前に自社の却下率を確認してください。

## 設定可能な項目

ノードごとのワークフロー設定です(アプリケーションの検証設定でグローバルに設定することもできます。特記がない限り、すべてのアクションのデフォルトは**アクションなし**です):

| 設定 | 対象 | デフォルト |
| - | - | - |
| `vpn_detection_action` | `PRIVATE_NETWORK_DETECTED` | アクションなし |
| `ip_mismatch_action` | `COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IP` | アクションなし |
| `expected_ip_mismatch_action` | `EXPECTED_IP_ADDRESS_MISMATCH` | アクションなし |
| `duplicated_ip_action` | `DUPLICATED_IP_ADDRESS` | アクションなし |
| `duplicated_device_action` | `DUPLICATED_DEVICE_FINGERPRINT` | アクションなし |
| `recovered_device_action` | `DEVICE_RECOVERED_HIGH_CONFIDENCE` | アクションなし |
| `device_liveness_attack_history_action` | `DEVICE_LINKED_TO_LIVENESS_ATTACK` | アクションなし |
| `device_model_inconsistency_action` | `DEVICE_MODEL_INCONSISTENT` | アクションなし |
| `ip_geofencing_action` | `IP_LOCATION_NOT_ALLOWED` | 却下 |

IPとデバイスの許可リストが抑制するのは、許可リストに登録された値に対する完全一致の重複IP警告、または決定論的な重複デバイス警告のみです。VPN/プロキシ、国の不一致、想定IPの不一致、復元デバイス、ブロックリストの警告は抑制されません。

復元デバイスの警告は、同じハードウェア上でアカウントやセッションを切り替える不正グループの検知に役立ちます。ただしDiditは設計上、慎重な方針をとっています。証拠が十分でない場合、システムは無関係なデバイスを統合するよりも、一部の重複ユーザーを見逃すことを優先します。**推奨される導入手順**:まずレビューから始め、2週間にわたり件数を監視し、誤検知率が低ければアクションをより厳しく設定してください。

## 重複デバイスと復元デバイスの違い

この2つの警告は、発生の根拠となる証拠が異なるため、別々に扱ってください:

| 警告 | トリガー | 一般的な意味 | 推奨される初期アクション |
| - | - | - | - |
| `DUPLICATED_DEVICE_FINGERPRINT` | 永続的なデバイスID(`persistent_id`)またはレガシーのフィンガープリントハッシュ(`legacy_fp`)が完全に一致した場合。 | 同じデバイスが異なるユーザーにまたがって現れていることを示す強い証拠です。 | 不正への許容度に応じて、レビューまたは却下。 |
| `DEVICE_RECOVERED_HIGH_CONFIDENCE` | ストレージ、セッション、アプリのIDが変更された後に、高い信頼度でv2の復元(`recovered_high`)が行われた場合。 | シークレットモード、ストレージのリセット、アプリの再インストールによる試みを示す強いシグナルです。個別にモニタリングできるよう、意図的に分けられています。 | まずレビューを行い、誤検知率を測定してから対応を厳格化します。 |

## セッション間の一致

同じIPアドレス、完全に一致するデバイスID、または復元されたデバイスが**異なるユーザー**に属するセッション間で検出された場合、Diditはそれらを`ip_analyses[]`の`matches[]`として記録します。セッションは`vendor_data`でグループ化されます。同じ`vendor_data`を持つセッションは同一ユーザーとして扱われ、一致の対象から除外されます。`vendor_data`がない場合、すべてのセッションが別々のユーザーとして扱われ、重複の可能性があるものがすべて表示されます。ノイズを減らすため、`vendor_data`を常に指定することを強くおすすめします。

各一致には次の情報が含まれます。

* 一致したセッションの`session_id`、`session_number`、`vendor_data`、`verification_date`、およびそのライフサイクルの`status`と`api_service`(ワークフローのセッションでは`null`)。`source`は常に`session`です
* `match_type`: `ip_address`または`device_fingerprint`
* `match_source`: `ip_address`、`persistent_id`、`legacy_fp`、または`recovered_high`
* `matched_value`: 共有されているIP、デバイス識別子、または(復元による一致の場合)復元されたデバイスのUUID
* `confidence`(0〜1、`1 - P(false positive)`)と`match_mode`(`deterministic` / `probabilistic` / `co_occurrence`)
* `device_info`: `device_brand`、`device_model`、`browser_family`、`os_family`、`platform`、`device_fingerprint`
* `location_info`: `ip_address`、`ip_country`、`ip_country_code`、`ip_state`、`ip_city`、`is_vpn_or_tor`、`is_data_center`
* `match_source`が`recovered_high`の場合に追加される復元デバイス用の項目: `recovery_similarity`、`tls_ja4_corroborated`、`recovery_gate_reason`

IPによる一致とデバイスによる一致はそれぞれ最大5件(合計で最大10件)です。一致のスキーマ全体と信頼度モデルについては、[レポートページ](https://docs.didit.me/ja/core-technology/ip-analysis/report-ip-analysis.md#一致の意味)を参照してください。

## 例

### VPNと国の不一致(レビューに設定)

```json theme={null}
{
  "warnings": [
    {
      "feature": "LOCATION",
      "risk": "PRIVATE_NETWORK_DETECTED",
      "additional_data": null,
      "log_type": "warning",
      "short_description": "Private network (VPN/Tor) detected",
      "long_description": "The system detected that the user tried to use a private network (VPN/TOR) to complete the verification process.",
      "node_id": "ip-1"
    },
    {
      "feature": "LOCATION",
      "risk": "COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IP",
      "additional_data": { "document_country_code": "ESP", "ip_country_code": "NLD" },
      "log_type": "warning",
      "short_description": "Document country does not match IP country",
      "long_description": "The country from the document does not match the country from the IP address, suggesting a potential mismatch between the document and the user's location.",
      "node_id": "ip-1"
    }
  ]
}
```

### ブロックリストに該当(却下になります)

```json theme={null}
{
  "warnings": [
    {
      "feature": "LOCATION",
      "risk": "IP_ADDRESS_IN_BLOCKLIST",
      "additional_data": { "ip_address": "45.61.20.5" },
      "log_type": "error",
      "short_description": "IP address in blocklist",
      "long_description": "The IP address used for this session was found in the application's IP blocklist, indicating a known suspicious or forbidden origin.",
      "node_id": "ip-1"
    }
  ]
}
```

### 復元デバイスの高信頼度(レビューに設定)

```json theme={null}
{
  "warnings": [
    {
      "feature": "LOCATION",
      "risk": "DEVICE_RECOVERED_HIGH_CONFIDENCE",
      "additional_data": {
        "duplicated_session_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
        "duplicated_session_number": 5101,
        "api_service": null,
        "match_source": "recovered_high",
        "recovery_similarity": 0.9874,
        "recovery_match_device_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
      },
      "log_type": "warning",
      "short_description": "Device matches a previously seen device with high confidence",
      "long_description": "A previously seen device matched this session with high confidence through v2 fuzzy fingerprint recovery after passing strict hard gates, indicating the same physical device under a fresh persistent_id.",
      "node_id": "ip-1"
    }
  ]
}
```

## 関連情報

* [デバイス・IP分析レポート](https://docs.didit.me/ja/core-technology/ip-analysis/report-ip-analysis.md): レスポンスの全体構造とステータスの意味
* [デバイス・IP分析の概要](https://docs.didit.me/ja/core-technology/ip-analysis/overview.md): 各ブロックが測定する内容
* [データモデル: IP分析](https://docs.didit.me/ja/reference/data-models.md#ip分析): 正規のスキーマ
* [Webhook](https://docs.didit.me/ja/integration/webhooks.md): `status.updated`にはIP分析の警告が含まれます

### 警告の種類


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.