login · password_recovery · profile_change
アカウント乗っ取り(ATO)対策
既知のアカウントが一度も使ったことのないデバイス、自らを偽るブラウザ、アンチディテクトブラウザ、時間的にありえない移動。それぞれがエビデンスとして返るため、二要素認証は本当に必要なときだけ求められます。
01 · 不正防止のためのデバイスインテリジェンス タグを付けたジャーニー
選んだ画面ごとにタグを1つ
サイトに設置したスクリプト1つが、デスクトップでは約0.1秒でブラウザとデバイスを読み取ります。バックエンドから、任意に命名したタグを付けた署名付き呼び出しを1回行うだけで、即座に回答が返ります。トラストスコア、エビデンスカバレッジ、そしてボット・自動化、ブラウザ偽装、エミュレーターからVPN・プロキシ・Torまでを網羅する13のインジケーター。すべての推奨には理由が付きます。アカウント乗っ取り、不正な新規登録、出金詐欺を、推測ではなく根拠で見抜けます。私たちは推奨し、判断と実行はお客様が行います。
タグを付けたどの画面でも同期レスポンス · 判断に影響させる前にシャドーモード · ルールもリストも判断もお客様のもの
このレスポンスの読み方 · v1.1/login_completed の例
この推奨の理由
ALLOW
ポリシーが重み付けするインジケーターは、いずれも検出されませんでした。契約上の例:FingerTrackIDのマネージドポリシーはどのスコアでもMONITORを推奨します。ALLOW は、お客様の会社が自社のリスクルールで設定したスコア帯から導かれたものです。判定は policy-login-v1 によるものです。
スコアが示すもの、示さないもの
trust_score 100
このポリシーバージョンにおける、このアクセスへの信頼度です。不正の確率ではありません。COMPLETED 以外では null となり、デフォルト値が入ることはありません。
どこまで確認できたか
evidence_coverage 100
想定されたチェックのうち実行できた割合です。欠けているエビデンスがあればここに明示されます。カバレッジは下がりますが、リスクの理由になることはありません。
その先はお客様の領域
customer_action
お客様のバックエンドが判断・実行し、その内容と実際の結果を報告します。私たちがブロックしたり、資金を保留したりすることはありません。
POST /v1/assessments → 201
event-assessment.v1.1 · 契約上の例
{ "schema_version": "event-assessment.v1.1", "tag": "login", "assessment_status": "COMPLETED", "trust_score": 100, "device_match_confidence": 0.98, "evidence_coverage": 100, "signals": [ … 13 objects ], "limitation_codes": [], "reason_codes": ["NO_ADVERSE_INDICATOR_MATCH"], "recommended_action": "ALLOW", "recommendation_basis": "EVALUATION", "policy_version": "policy-login-v1" // … 21 more fields in the full response: ids, snapshot, versions, timestamps}
1{2 "schema_version": "event-assessment.v1.1",3 "assessment_id": "01996f2a-0000-7000-8000-000000000101",4 "assessment_version": 1,5 "supersedes_assessment_id": null,6 "business_event_id": "01996f2a-0000-7000-8000-000000000102",7 "external_event_id": "login_20260904_000001",8 "tag": "login",9 "assessment_status": "COMPLETED",10 "retryable": false,11 "trust_score": 100,12 "device_intelligence_snapshot_id": "01996f2a-0000-7000-8000-000000000103",13 "device_intelligence_snapshot_version": 1,14 "device_id": "dev_0123456789abcdefghij",15 "device_match_confidence": 0.98,16 "evidence_coverage": 100,17 "data_freshness": {18 "evidence_cutoff_at": "2026-09-04T12:00:00Z",19 "oldest_required_observed_at": "2026-09-04T11:59:59Z",20 "maximum_required_age_ms": 300000,21 "all_required_fresh": true22 },23 "signals": [24 { "signal_code": "ANTI_FINGERPRINTING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },25 { "signal_code": "BOT_AUTOMATION", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },26 { "signal_code": "BROWSER_SPOOFING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },27 { "signal_code": "EMULATED_ENVIRONMENT", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },28 { "signal_code": "PRIVATE_BROWSING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },29 { "signal_code": "BROWSER_PRIVACY_BRAVE", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },30 { "signal_code": "BROWSER_PRIVACY_SAFARI", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },31 { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },32 { "signal_code": "NETWORK_PROXY", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },33 { "signal_code": "NETWORK_VPN", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },34 { "signal_code": "NETWORK_HOSTING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },35 { "signal_code": "NETWORK_TOR", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },36 { "signal_code": "DEVICE_MULTI_USER", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … }37 ],38 "limitation_codes": [],39 "reason_codes": ["NO_ADVERSE_INDICATOR_MATCH"],40 "recommended_action": "ALLOW",41 "recommendation_basis": "EVALUATION",42 "policy_version": "policy-login-v1",43 "fallback_policy_version": "production-observation-fallback-v2",44 "ruleset_version": "ruleset-web-v1",45 "signal_catalog_version": "signals-web-v1",46 "feature_schema_version": "features-v1",47 "resolver_version": "resolver-v1",48 "sdk_version": "web-sdk-1.0.0",49 "provider_versions": ["network-provider-2026-09-04"],50 "evidence_cutoff_at": "2026-09-04T12:00:00Z",51 "evaluated_at": "2026-09-04T12:00:01Z",52 "expires_at": "2026-09-04T12:05:00Z",53 "correlation_id": "corr-assessment-login-0001"54}
この結果を形作ったバージョン · policy-login-v1 · production-observation-fallback-v2 · ruleset-web-v1 · signals-web-v1 · features-v1 · resolver-v1 · web-sdk-1.0.0 · network-provider-2026-09-04
レスポンス全体に13シグナル · インジケーター一覧 ↓
数字で見る製品
レスポンス
13
すべてのレスポンスに含まれるWebインジケーター
3
インジケーターごとの状態:検出、未検出、未評価
14
「未評価」には理由を明示。黙ってfalseにはしません
5
推奨の種類
3
独立した指標:信頼度、デバイス一致、エビデンスカバレッジ
1
評価対象イベントごとの署名付き呼び出し
収集
17
1回の収集あたりのブラウザ・デバイスのエビデンス項目数
48
ブラウザが名乗るバージョンと照合するブラウザAPI
125
ミリ秒以下:Chrome、Firefox、Safariでのデスクトップ収集時間の中央値
0
ユーザーに表示される許可ダイアログ
お客様のルールと調査
54
すべての評価内で算出するコンテキストインサイト
67
自社スコアで重み付けできるルール:13のインジケーターと54のインサイト
6
ネットワーク系インジケーターの根拠となる公開リファレンスリスト
6
コンソールの対応言語:英語、ポルトガル語(ブラジル・ポルトガル)、スペイン語、フランス語、ドイツ語
一切行いません。プランによって変わることもありません
— 収集時間(当社テスト環境でキャッシュなしの状態で計測)を除き、すべての数値はバージョン管理された契約・カタログ・リストに基づく件数です。いずれもプランや利用量によって変わることはありません。
03 · ユースケース
デバイスインテリジェンスは、バックエンドが操作を通す前に「この画面の向こう側に実際にあるのは何か」という問いに答えます。どのジャーニーでも同じ呼び出しを使い、送るタグは分類のためだけに使われます。
login · password_recovery · profile_change
既知のアカウントが一度も使ったことのないデバイス、自らを偽るブラウザ、アンチディテクトブラウザ、時間的にありえない移動。それぞれがエビデンスとして返るため、二要素認証は本当に必要なときだけ求められます。
signup · login · checkout
ヘッドレスブラウザ、自動化フレームワーク、シグネチャで識別されるAIエージェント、データセンターからのトラフィック。BOT_AUTOMATION と NETWORK_HOSTING は何が観測されたかを、カバレッジはどこまで観測できたかを示します。
signup · deposit · promotions
デバイスごと・IPごとのアカウント数と人数、そのデバイスプロファイルが自社の利用者内でどれほど珍しいか、同じ収集データが別のデバイスで繰り返されていないか。これらはルールで重み付けできるコンテキストであり、自動的な判定ではありません。1人が正当な複数のアカウントを持つこともあります。
withdrawal · pix_transfer · trade
新しいデバイスで最初の1時間以内の出金、複数アカウント間で共有される受取人、確定した不正としてマークした近接アカウント。資金を保留・審査するのはお客様のバックエンドであり、私たちではありません。
あらゆるジャーニー
Androidエミュレーターや仮想化、申告されたシステムではありえないGPU、ブラウザ自身のAPIと矛盾するバージョン。デバイスフィンガープリントのシグナルは、生のピクセルではなくハッシュとファミリーとして読み取ります。
あらゆるジャーニー
既知のVPNプロバイダー、公開プロキシ、Tor出口ノード、ホスティング帯域、Apple iCloud Private Relay。当社側で更新する公開リストに基づきます。匿名化はコンテキストであり、有罪の証拠ではありません。どれだけ重視するかはお客様のポリシーが決めます。
04 · 指標
信頼度、カバレッジ、デバイス一致を1つの数値にまとめると、アナリストが本当に見たいもの、つまり問題がアクセスにあるのかエビデンスにあるのかが隠れてしまいます。
trust_score
72
このポリシーバージョンのもとで、このアクセスがどれだけ信頼できるかを示します。送信するタグによって変わることはありません。0から100の整数です。assessment_status = COMPLETED のときのみ存在し、それ以外の状態ではすべて null となります。デフォルト値が入ることはありません。
不正の確率でも、その人の評判でも、データ欠落時のデフォルト値でもありません。表示するのは 72/100 であり、「72%信頼できる」とは表示しません。
device_match_confidence
0.94
このアクセスが、既に観測された同じデバイスからのものであるというエビデンスの強さを0から1で示します。確率的クラスターの不透明な公開識別子 device_id とともに返されます。
その人の身元でも、ハードウェアの証明でもありません。PartyとAccountは別のものです。
evidence_coverage
100
想定されたチェックのうち、どれだけ実行できたかを0から100で示します。NOT_EVALUATED のまま残った適用対象のインジケーターはカバレッジを下げ、limitation_codes に表示されます。
スコアの一部ではありません。カバレッジが低くてもスコアは上がりも下がりもせず、評価が結論不能(inconclusive)になります。
合算しない理由
単一の「疑わしさ」スコアは、3つの異なる問いを混ぜてしまいます。このアクセスは信頼に値するか。エビデンスは十分だったか。同じデバイスか。回答が分かれていれば、アナリストは二要素認証を求めるべきか、収集を待つべきか、履歴を確認すべきかがわかります。1つにまとめられていれば、わかるのは「42点だった」ということだけです。
05 · 13のインジケーター
すべてのWeb評価で、必ず13のコードが返ります。変わるのは各コードの状態であり、リストそのものではありません。各インジケーターにはバージョン管理された専用の検出器があり、レスポンスには評価した検出器のバージョンが記載されます。検出器が存在しない、期限切れ、または障害中の場合でも、false になることはありません。
signal_catalog web · 13コード · withdrawal_completed の例
環境の完全性
ブラウザのプライバシー · 中立的なコンテキスト
ネットワーク · 中立的なコンテキスト
デバイス
当社のマネージドポリシーでは、Torだけで BLOCK_RECOMMENDED が正当化されることはありません。お客様の会社が設定するルールは、自社で選んだ重みとカットオフに従います。このv1契約の例では、policy-withdrawal-v1 はブロックではなく出金のレビューを求めており、1つだけのreason codeがまさにそれを示しています。現在本番で稼働しているマネージドポリシーは、どのスコアでも MONITOR を推奨します。
同じインジケーター、3つの状態
検出器が存在しない、期限切れ、または障害中の場合でも、false になることはありません。NOT_APPLICABLE は、チャネル・エンジン・プラットフォーム別のカタログの不変マトリクスからのみ導かれます。タグによって変わることはなく、ポリシーの無効化、タイムアウト、障害がこの近道を使うこともありません。
デフォルトでは中立的なコンテキスト
これらは観測できる範囲を制限することがあります。カバレッジが下がるのは、エビデンスが評価されなかった部分だけです。これらは不正ではありません。環境を説明するものであり、人を告発するものではありません。当社のマネージドポリシーでは、これら単独で BLOCK_RECOMMENDED が正当化されることはありません。お客様の会社が設定するルールは、自社で選んだ重みとカットオフに従います。AppleのiCloud Private Relayの背後のように、ネットワークの種類を区別できない場合、ホスティング・VPN・プロキシはすべて NETWORK_TYPE_AMBIGUOUS 付きで NOT_EVALUATED のままとなります。1つの真偽値から3つの検出を記録することはありません。
ネットワークのエビデンスは、当社のインフラ上で更新している公開リファレンスリストに基づきます。Tor出口アドレス、クラウドプロバイダーの帯域、ホスティングネットワークのリスト、VPNプロバイダーの帯域、公開プロキシのデータベースです。お客様のユーザーのアドレスがリストの公開元に送られることはありません。最大有効期間を過ぎたリストは、そのインジケーターを NOT_DETECTED ではなく NOT_EVALUATED にします。
06 · コンテキストインサイト
すべての評価の中で、レスポンスを返す前に、収集データとお客様の会社自身の履歴から54のコンテキストインサイトを算出します。そのデバイスを他に誰が使っているか、アカウントの動きの速さ、どのネットワークから、どのアカウントの近くにいるか。FingerTrackIDのマネージドポリシーは、これらをスコアに含めません。お客様独自のリスクルールでは、各インサイトをオフ・ゴースト・アクティブに設定し、「異常」「非常に異常」に点数を割り当てられます。発火したアクティブなインサイトはトラストスコアから点数を差し引き、reason_codes に自らの名前を記録します。
context-insight.v1 · 6テーマ54インサイト · コンソールとルールでのグループ分けのとおり
アカウントとデバイス · 10
アカウントにとって新しいデバイス・新しいOS · 30日間にそのデバイスを使った異なるアカウント数と人数 · 同一人物のアカウント数 · 24時間のアカウントあたり・人あたりのデバイス数 · 高頻度利用デバイス · デバイスプロファイルが自社内でどれほど一般的・珍しい・希少か · デバイスCookieの消失
出金と注文 · 7
新しいデバイスで最初の1時間以内の出金 · 30日間のデバイスあたりの受取人数と受取人あたりのアカウント数 · アカウントごとの出金回数と金額 · アカウントごとの注文数と注文間隔の中央値
ネットワークと位置情報 · 12
アカウントにとって新しい国・新しいインターネットプロバイダー(ASN) · アカウントごとの異なる国・プロバイダー・IPの数 · IPごとのアカウント数と人数 · ありえない移動 · IPの国と一致しないブラウザのタイムゾーン · VPNの出口国 · 公開の不正利用リストに載っているプロバイダー · Apple iCloud Private Relay
ブラウザとSDKの完全性 · 16
開発者ツールの起動 · 自動化の痕跡 · アンチディテクトブラウザのマーカー · 申告されたブラウザと一致しないTLSシグネチャと、その30日間の安定性 · ソフトウェアレンダラーとGPUファミリー · 2回の読み取りで変化するcanvasや音声 · アプリ内ブラウザ · ゲストモードの可能性 · シグネチャで識別されたAIエージェント · ボットのカテゴリー · 承認済みパッケージと異なるSDK · 複数デバイスにまたがる1つのSDKセッション · 別デバイスで繰り返された同一の収集データ · 離れすぎた場所で使われたデバイスCookie
ベロシティ · 5
5分・1時間・24時間のデバイスあたり・アカウントあたりのアクセス数、5分・1時間のIPあたりのアクセス数 · 1分・5分・1時間のアカウントあたり・デバイスあたりの同一タグでの評価数
アカウント間のつながり(1ホップ) · 4
同じデバイスを使った他のアカウント · 自動化やブラウザ偽装が検出された近接アカウント · 確定した不正としてマークした近接アカウント · 他のアカウントと共有されている出金の受取人
3つの状態 · ゼロではなく理由を
一部のインサイトは、お客様が送信する内容に依存します。アカウントや人物のref、タグ、outcomeがない場合は、その旨が項目に表示されます(アカウント未送信、タグなしの評価、outcome未送信)。タグ付きリクエストには金額や受取人が含まれないため、出金額と受取人の項目もその旨を示します。初回アクセス、匿名化されたネットワーク、チェックの1時間の範囲外にあるIPも、理由として表示されます。
インサイトではないもの
reason_codes に現れるのは、お客様の会社がアクティブにしたルールを通じてのみです。アナリストが確認する場所
アクセス詳細。「アクセスコンテキスト」カードがインサイトをテーマ別にまとめ、時間枠、考慮した履歴のカットオフ、お客様の基準での異常度、値のない各項目の理由を表示します。評価の時間予算に収まらないインサイトはバックグラウンドで完了し、その旨を表示します。レスポンスを遅らせたり失敗させたりすることはありません。
インジケーターカタログ。 1つのページで、13の各インジケーターが何を調べるのか、何が未評価の原因になるのか、スコアを動かしうるのかを説明し、コンテキストインサイトと、それらが値なしになりうる理由を一覧にしています。
canvas、WebGL、音声、フォントは、すべての企業に共通のマネージド収集ポリシーのもとで、派生値としてのみ読み取られ、GPUファミリー、ソフトウェアレンダラー、2回の読み取りで変化する描画など、一部のインサイトに使われます。ブラウザがチェックを許可しない場合、その項目は理由付きで未評価のままとなります。
07 · 結論不能も1つの結果
エビデンスの欠落が信頼度100を生むことはなく、不正シグナルになることもありません。スコアがない場合、推奨はポリシーバージョン内に固定されハッシュで保護されたフォールバックから導かれ、タグにかかわらず、スコアのないすべての状態で同じ回答になります:MONITOR。ALLOW になることはありません。
契約上の例にあるスコアなしのケース
タグがフォールバックを選ぶことはありません。マネージドポリシーでは、スコアのないすべての状態が、どのタグでも MONITOR を推奨します。つまり「続行し、記録する」です。以下の3つの契約上の例も同様です。
INCONCLUSIVEタグ login · SDKが読み込まれなかった
収集なし:trust_score: null、evidence_coverage: 0、COLLECTOR_NOT_LOADED、basis INSUFFICIENT_EVIDENCE。ALLOW として通されることは決してありません。
INCONCLUSIVEネットワークのエビデンスが利用不可
4つのネットワークインジケーターが NOT_EVALUATED、evidence_coverage: 69、PROVIDER_UNAVAILABLE。どのような操作でも、お客様のシステム内で、お客様の判断のもとにとどまります。私たちが資金を保留することはありません。
FAILEDタグ pix_transfer · ポリシーが利用不可
技術的障害:POLICY_UNAVAILABLE、policy_version: null、basis TECHNICAL_FAILURE。「リスクなし」と解釈されることは決してありません。
スコアがなければALLOWは推奨しません · 例での fallback_policy_version は production-observation-fallback-v2 · フォールバックはポリシーが読み込まれるたびにポリシーとともに検証されます
評価の4つの状態
カタログの14のlimitation code · 何が欠けていたかを示し、なぜ危険かは示さない
limitation codeは収集と品質を説明し、reason codeはポリシーを説明します。NOT_EVALUATED のインジケーターはそれぞれ自分のコードを指し、評価全体ではそれらすべてが limitation_codes に集約されます。収集上の制約がリスクの理由になることはありません。
08 · 判断するのはお客様
recommended_action はポリシーの提案を示し、customer_action はお客様が実際に行ったことを示します。2つの事実だから、2つのフィールドです。
誰が推奨し、誰が判断し、誰が実行するか
FingerTrackIDが推奨
プライバシーだけを理由にすることはありません · Tor、VPN、プロキシ、シークレットモード、共有デバイス
お客様のフローが判断
判断と実行はお客様のバックエンドが行います。私たちは推奨を返すだけです。現在、マネージドポリシーの回答は MONITOR(観察のみ)です。アクセスをどう扱うかは、お客様の側で判断・実行されます。アカウント、上限、履歴、摩擦のコストを知っているのはお客様であり、私たちではありません。
お客様が実行し、報告
customer_action · お客様が返送するフィールド
各推奨が意味しないこと
ポリシーはこのアクセスに摩擦を加える理由を見つけませんでした。本人が正当であることや、アクセスが認証済みであることを意味しません。スコアがあり、必要なエビデンスが評価された場合にのみ発行されます。
続行しつつ、記録してください。これはすべてのタグでスコアがない場合のフォールバックであり、現在はマネージドポリシーがどのスコアでも返す回答でもあります。疑いが確定したことを意味せず、ユーザーに何らかの操作を求めるものでもありません。
二要素認証または確認を求めてください。私たちが誰かにチャレンジを行うことを意味しません。チャレンジを表示するのはお客様です。
人による審査に回してください。私たちが資金を保留することを意味しません。操作はお客様のシステム内で、お客様の判断のもとにとどまります。
ポリシーは拒否を提案しています。ブロックの実行、不正の確定、利用停止を意味しません。お客様がブロックした場合、それはお客様側のイベント customer_action: BLOCKED となり、精度の測定に使われます。
09 · 導入
サイトにスクリプトを1つ、バックエンドにサーバー間エンドポイントを1つ、そして措置と結果を返送する2つの呼び出し。クライアント側での判断はありません。
サイトにSDK
お客様のサブドメインから配信されます。評価したいリクエストを送る前に、画面を問わず、ブラウザと環境のシグナルを収集し、202 PROCESSING を受け取ります。これは受領の確認であり、結果ではありません。ネットワークシグナルはスクリプトではなく、お客様の収集ドメイン上のエッジで付加されます。スコア、シグナル、判断がブラウザに返ることはありません。
import { initializeSdk } from '@ftid/sdk-web'
// publicKey is a public locator, not a secret.
// collectionOrigin is YOUR collection domain (https).
const sdk = initializeSdk({
publicKey: 'pub_app_0123456789abcdef',
collectionOrigin: 'https://collect.yourcompany.com',
})
// ACCEPTED (202 PROCESSING on the wire): confirms receipt, not a result.
const collection = await sdk.collect()
if (collection.status !== 'ACCEPTED') {
// Without collection the journey continues; the backend will get
// INCONCLUSIVE / COLLECTOR_NOT_LOADED: no fake score.
return continueWithoutToken()
}
// Create the event before sending the request to be assessed.
const event = sdk.createEvent(collection.observation)
// Only a COMPLETED collection yields a token. The token goes in the POST
// that YOUR backend makes; the decision never comes back here.
const ctx = await sdk.getEventContext(event)
const token =
ctx.status === 'COMPLETED'
? ctx.eventContextToken
: nullバックエンドから呼び出し
10行の正規化文字列に対するHMAC-SHA-256。マーカー、key_id、メソッド、パス、タイムスタンプ、イベントIDとリクエストID、コンテンツのメタデータ、そして最終行に正確なボディバイト列のSHA-256。ハッシュ化の前にJSONを再シリアライズしないでください。契約には規範となるベクトルが含まれています。key_id が唯一の公開ロケーターです。シークレットが送信されることはありません。v1.1契約の正規ベクトル requests.both_refs_deadline_750:v1と同じルート・同じ署名で、journey、action、journey_context の代わりに tag を使います。
POST /v1/assessments HTTP/1.1
Host: api.fingertrackid.com
Content-Type: application/json
X-FTID-Signature: v1=<key_id>:<mac-hex>
X-FTID-Timestamp: 1791720000
X-FTID-Request-Id: <uuidv7 of the attempt>
X-FTID-External-Event-Id: evt:tag-0003
{
"schema_version": "event-assessment-request.v1.1",
"external_event_id": "evt:tag-0003",
"idempotency_key": "idem-tag-0003",
"occurred_at": "2026-10-11T12:00:00.000Z",
"subject_ref": "subject:synthetic",
"account_ref": "account:synthetic",
"event_context_token": "ctx.synthetic-token_0003",
"tag": "pix_transfer_a1b2c3d4e5f6g7h8i9j0abcdeabcdeabcdeabcdeabcdeabcdez",
"deadline_ms": 750
}tag は最大64文字の小文字のスラッグ(英字・数字・アンダースコア、数字は最大10桁)で、個人データは決して含めません。このベクトルはその上限ちょうどです · subject_ref と account_ref は null でもよく、account_ref には subject_ref が必要です · ref はお客様の不透明なコードであり、国民ID、メールアドレス、連番IDは使いません · deadline_ms は250から5000の整数、または5000を意味する null です。超過した場合は、部分的なスコアではなく、再試行可能な503 Problemが返ります
同期レスポンス
続いて2つのフィードバック呼び出し:実行した内容を customer_action で、そして判明した時点で実際の結果(outcome:正当、不正確定、エビデンス不十分)を truth_status で送ります。契約は両方に評価呼び出しと同じ規律を課しています。永続的なコミットの前に受理済みとみなされることはなく、同一の再試行が2回目の効果を生むこともありません。outcomeは後から訂正できます。訂正は後継として追記され、以前の記録も引き続き参照できます。
POST /v1/assessments/POST /v1/assessments/
Web、最新のあらゆるブラウザで利用可能 · インストール不要のアプリ · SDK、評価、フィードバックを同一のバージョン管理された契約で
npm install @fingertrackid/server が呼び出しに署名し、@fingertrackid/mcp により Claude Code、Cursor など MCP対応のコーディングエージェントが、公開された契約から統合を組み込めます。手順はクイックスタート、Web SDKガイド、APIリファレンスで紹介しています。
10 · ブラウザはゼロトラスト
ブラウザから来るものは何一つ権限として扱いません。評価はサーバー間で署名付きで行われ、各試行は1回だけカウントされます。繰り返しても新たな効果は生じません。
誰が誰と通信するか
ブラウザが受け取るのは、不透明なセッションIDとイベントIDだけです。スコア、シグナル、推奨はサーバー上で生成され、サーバー上にとどまります。ファーストパーティCookieは署名付きで、HttpOnly、Secure、お客様のテナントとアプリケーションにスコープされています。
呼び出しの構造
ftidHmacV1key_id UUIDv7 が唯一のロケーターです。テナント、アプリケーション、環境、ケイパビリティは、定数時間比較で有効なMACが確認されて初めて権限になります。X-Client-Id、旧来のnonce、複数署名は拒否されます。request_id に署名します。無効なMACでは予約は作られません。assessment-unavailable(503、retryable: true)を返します。key_id、または誤った署名は、すべて同じ authentication-failed を返します。key_id が存在するかどうかを明かしません。新しい request_id に署名してください。11 · バージョン管理されたポリシー
1つのインジケーターの感度を変えると、作成者、有効期間、シミュレーション、ロールバックを伴う新しいバージョンが作られます。履歴は変わりません。実在するバージョンがなければ利用はブロックされます。
判定したバージョン · withdrawal_completed の例
policy-withdrawal-v1
correlation_id は、個人の識別子を公開せずにサポートを受けるためのものです。公開されるバージョンは不透明な公開タグであり、データベースの内部IDがAPI、Webhook、コンソールに現れることはありません。
ポリシーバージョンが固定するもの
再現可能、書き換えは一切なし
login_completed の例
assessment_version1
supersedes_assessment_idnull
login_completed_revision_2 の例
assessment_version2
supersedes_assessment_id…0000000101
運用上の改訂では、イベントの received_at 時点で有効だったポリシーとその他すべてのバージョンが保持されます。古いイベントに新しいポリシーを適用するのは別のシミュレーションであり、過去の判断の指針となった推奨を書き換えることはありません。
12 · シャドーモード
シャドーモードとは、現在お使いの仕組みと並行してFingerTrackIDを稼働させ、レスポンスがどの判断にも触れない状態のことです。比較し、実際の結果を返送し、その後で初めて推奨を使い始めます。当社が推奨する始め方です。
サイクル全体
SDKが収集
202 PROCESSING · event_context_token
バックエンドが評価を要求
POST /v1/assessments · 同期
お客様のフローで判断
シャドーモードでは、レスポンスを使わずに
措置を報告
customer_action · POST …/customer-actions
結果を報告
truth_status · POST …/outcomes
recommendation_alignment · 推奨×措置のペアからサーバー側で導出され、クライアントが申告することはありません。一致は因果関係も、精度も、不正も証明しません。
フィールドごとの比較
| recommended_action | customer_action | recommendation_alignment |
|---|---|---|
REVIEW | REVIEWED または HELD | ALIGNED |
STEP_UP | ALLOWED | NOT_ALIGNED |
ALLOW または MONITOR | ALLOWED | ALIGNED |
BLOCK_RECOMMENDED | BLOCKED | ALIGNED |
| 任意 | CANCELLED | NOT_COMPARABLE |
ブロックは不正の証明になりません。不正の確定には独立したエビデンスが必要です。truth_status は PENDING から LEGITIMATE、FRAUD_CONFIRMED、INSUFFICIENT_EVIDENCE のいずれかに移り、成熟度は PROVISIONAL または MATURE となります。品質指標になるのは成熟したラベルだけです。
サイクルが生み出すもの
customer_action と truth_status は別々の事実であり、訂正のたびに後継レコードが作られます。13 · 契約によるプライバシー
平文の個人情報(PII)は製品の要件ではありません。お客様が送るのは人物とアカウントの不透明なrefです。アクセスを評価するために、国民ID、メールアドレス、電話番号を求めることはありません。
packages/contracts/src/sdk-handshake-v1.ts · 収集ポリシー
canvas: z.boolean(),
audio: z.boolean(),
fonts: z.boolean(),
behavioral: z.literal(false),packages/contracts/src/sdk-signals/rendering-v1.ts · 抜粋
const Hash128 = z.string().regex(/^[0-9a-f]{32}$/)
canvas_hash: Hash128.optional(),
webgl_gpu_family: z.enum(SDK_RENDERING_GPU_FAMILY_V1).optional(),
audio_hash: Hash128.optional(),
fonts_count: z.number().int().min(0).max(SDK_RENDERING_FONT_COUNT_V1).optional(),行動データの収集、つまりポインターの動きとキー入力は、オフの値しか受け付けません。オンにするには設定ではなく契約の変更が必要です。canvas、WebGL、オフライン音声、フォントの有無は、すべての企業で有効になるマネージド収集ポリシーのもとで読み取られ、派生値としてのみブラウザ外に送られます。固定長のハッシュ、閉じたGPUファミリー、件数、そして固定フォントリストに対する有無マスクです。契約には、ピクセル、音声サンプル、GPUのベンダー名・レンダラー名、フォント名のためのフィールドがありません。これらの派生値を組み合わせると同じブラウザを再認識できるため、匿名データではなくデバイスデータとして扱います。絶対的なルールとして収集しないもの:パスワード、入力されたテキスト、チャットや文書の内容、クリップボード、スクリーンショット、マイク、カメラ。すべてのエビデンスにはプライバシー区分があり、区分はリスクの重みではありません。
善意に依存しない保証
tenant_id があり、データベースで分離が強制されています。顧客間で共有される評判やラベルはありません。HttpOnly、Secure、お客様のテナントとアプリケーションに限定。値がデータベース、キュー、ログに送られることはありません。欠落または拒否された場合、継続性は制約として低下しますが、評価は止まりません。PartyはAccountではない
紐付けはお客様のバックエンドから · フィンガープリントから推測することはありません
1人の人が、正当な複数のアカウントを持つことがあります。アカウントの持ち主が黙って変わることはありません。セッションは匿名から人物へ、そして同じ人物のアカウントへと進むだけです。矛盾は競合として扱い、新しい紐付けにも、場当たり的な否定的エビデンスにもしません。
データの保管場所
14 · コンソール
コンソールはまず「品質を保って受信・評価・説明できているか」に答え、その後で初めて正当性を論じられるようにします。すべてのパーセンテージに分母を明示します。
概念図であり、スクリーンショットではありません · 枠内はコンソールの配色
アクセス詳細。3つの指標を3つの独立したコンポーネントとして表示。推奨とその recommendation_basis、有効なポリシー、チームが報告した実施内容。エビデンスの鮮度。13のインジケーター(状態、適用可否、ソース、検出器の信頼度、鮮度、未評価の場合はその理由)。limitation codeとreason code。セッション、デバイスとそれらの紐付け。デバイス上の多重度。ネットワークから推定したおおよその位置。アクセスコンテキスト。そしてSDKとエッジが収集したすべてを含む技術データタブ(ブラウザが公開するAPIから読み取った実際のブラウザバージョンを、申告されたバージョンと並べて表示)。
調査用フィルター。アクセス一覧は、インターネットプロバイダー(ASN)、ネットワークの国、デバイスのインストール、インジケーターが未評価となった理由、そして指定した状態にある最大2つのインジケーターの同時条件で絞り込めます。また、お客様独自のアカウントrefや人物refでアクセスを検索できます。IPアドレスでのフィルターはありません。個人データだからです。各アクセス詳細にはコンテキストインサイト ↑も含まれます。
深掘り調査。どのアクセスからでも、リンクグラフで周辺のデバイスとアカウントを1ホップずつ、お客様自身の最大92日分の履歴にわたって展開できます。展開はすべて閲覧として記録され、IPアドレスがノードになることはありません。
ブロックリストと許可リスト。アクセス詳細から、チームはデバイス、アカウントref、または単一のIPを、メモと追加者の名前とともに自社のブロックリスト(ブロックまたはレビュー)や許可リストに登録できます。スコアのある本番アクセスでは、エントリーが推奨を上書きし、reason_codes に自らの名前を記録します。削除されるものはありません。エントリーを外すと、誰がいつ外したかが記録されます。
AIアシスタント。サイドパネルで各画面を説明し、お客様の会社とロールの範囲内で、自社の統合やアクセスに関する質問に答えます。
リスク設定。アプリケーションごとの、お客様の会社独自のリスクルールです。13の各インジケーターをオフ・ゴースト・アクティブに設定し、1〜100点の重みを付け、スコア帯と各帯の措置を決めます。ゴーストルールは計算・記録されますが、レスポンスを変えることはありません。公開前には、影響カードが下書きを直近1日・7日・30日の評価に適用して再現します。54のコンテキストインサイト ↑も、それぞれ独自の点数で加えられます。管理者またはリスクスーパーバイザーが直接公開でき、公開のたびに監査対象の新しいバージョンになります。すべてをゴーストにで全ルールを一度に止められます。FingerTrackIDがお客様に代わってルールを有効にすることはありません。当社サポートができるのは、アプリケーションの全ルールをゴーストにすることだけで、その理由はコンソールに表示されます。アクティブなルールがない間は、FingerTrackIDチームが承認記録付きで公開したマネージドポリシーが回答します。
4グループ16画面 · メイン、検知、運用、管理
レビューキューは出金レビューモジュールです。同じコアの上に構築された運用キューで、REVIEW が推奨されたv1の出金をすべて、エビデンスとともに担当者に届けます。タグ付きの評価が入ることはなく、現在のマネージドポリシーのようにポリシーが MONITOR を推奨している間は空のままです。
英語、ポルトガル語(ブラジル・ポルトガル)、スペイン語、フランス語、ドイツ語に対応。パスキーまたは二要素認証でサインイン。ロールによる権限管理。誰が機密データを閲覧し、誰が何を変更したかの監査証跡。生データは自由には表示されず、すべてのアクセスが記録されます。
15 · 料金体系
料金は完了した収集の件数に応じて、提案書で設定します。シャドーモードも同じ単位を消費し、コンソールでは推定利用量として表示されます。その期間に何を請求するかは提案書で定めます。
課金単位
これが計測単位であり、課金単位の候補です。各 device_intelligence_snapshot_id が生む単位は最大1つで、その収集をいくつの評価、タグ、プロバイダー、再処理が使っても変わりません。
イベント · 単位を生むか?
idempotency_key での再試行いいえcustomer_action と outcomeいいえ4xxいいえ5xx、当社側のタイムアウト、収集の INCONCLUSIVE または FAILEDいいえ利用量に応じたご提案。シャドーモードの利用量も含めてご相談ください。
見積もりを依頼16 · よくある質問
customer_action とoutcomeを返送し、コンソールで推奨とチームが報告した実施内容をアクセスごとに比較し、エビデンスカバレッジを追跡します。数字が納得できるものになったら、推奨を判断に反映させるかどうか、どこで反映させるかをチームが決めます。実行は常にお客様のバックエンドが行います。tag を送ります。login、withdrawal、pix_transfer のような小文字のスラッグで、登録も、固定のリストも、上限もありません。コンソールではタグごとに絞り込み・グループ化・エクスポートができ、テンプレート(新規登録、ログイン、パスワード再設定、二要素認証、プロフィール変更、入金、出金、Pix送金、取引、チェックアウト)は統合のガイドです。タグがポリシー、検出器、フォールバック、期限を選ぶことはありません。タグ付きの評価はすべて同じポリシーと同じ13のインジケーターで実行されます。タグに個人データを含めてはいけません。リクエストに金額、通貨、受取人は含まれません。BLOCK_RECOMMENDED は最も強い推奨ですが、それでも推奨です。お客様がブロックした場合は customer_action: BLOCKED を記録し、それが推奨の妥当性を測るデータになります。BLOCK_RECOMMENDED を生むことはありません。お客様の会社が設定するルールは、自社で選んだ重みとカットオフに従います。プライベートモードやブラウザの保護機能は中立的なコンテキストです。カバレッジが下がることがあり、詳細に表示されますが、不利なreason codeは付きません。Tor、プロキシ、VPN、ホスティングは匿名化のコンテキストです。ポリシーは他に観測された内容と合わせて重み付けでき、タグによって重み付けすることはありません。現在のマネージドポリシーでスコアを動かすのは自動化とブラウザ偽装だけで、推奨は MONITOR です。このページにあるv1の出金の契約例では、Torの検出が REVIEW につながり、reason codeがその旨を示しています。それ自体が不正であることはありません。event_context_token なしでAPIを呼び出し、INCONCLUSIVE、trust_score: null、evidence_coverage: 0、limitation_codes: ["COLLECTOR_NOT_LOADED"] とフォールバックの推奨 MONITOR を受け取ります。作り上げたスコアが返ることはありません。エビデンス不足を理由に ALLOW が返ることもありません。deadline_ms により250から5000の範囲で設定できます(デフォルトの場合、HTTPタイムアウトは約6秒以上にしてください)。超過した場合は、部分的なレスポンスではなく Problem assessment-unavailable(503、retryable: true、Retry-After 付き)が返ります。同じ論理操作を新しい request_id で再実行してください。レイテンシーとSLAは提案書に盛り込み、レスポンスに判断を委ねる前にお客様のシャドーモードで測定します。key_id UUIDv7 が唯一の公開ロケーターです。request_id はリプレイ対策として予約されます。認証に失敗すると、キーが存在するかどうかを明かさない一律の 401 が返ります。シークレットが送信されることはありません。プロトコルの規範となるテストベクトルは契約の一部であり、それを使えば署名をバイト単位で再現できます。@fingertrackid/server が呼び出しに署名し、MCPサーバー @fingertrackid/mcp が Claude Code、Cursor など MCP対応のエージェントに、契約、署名ベクトル、タグごとのすぐに使えるサーバーモジュール、収集ドメインのチェックを提供します。いずれも読み取り専用です。ドキュメントでは llms.txt と、お客様の AGENTS.md 向けのすぐに使えるルールブロックも公開しています。シークレットはお客様の環境にとどまり、エージェントがそれを見る必要はありません。17 · お問い合わせ
シャドーモードから始めましょう。レスポンスはどの判断にも触れずに実際のフローと並行して動き、お客様は比較して結果を返送し、その後で初めて推奨を使い始めます。判断が重要な画面があり、信頼する前に説明付きのレスポンスを確認したい方は、ぜひご相談ください。
デモを予約
導入の流れ
含まれるもの
event-assessment.v1 契約