JA3 と JA4 のフィンガープリント
Scrapeless Agent Browser は、ブラウザ実行とネットワーク通信を伴う Web 自動化のためのマネージドなブラウザセッションを提供します。
要約
- JA3 と JA4 は、選択された TLS クライアントの挙動を要約する。 どちらのフィンガープリントも個人を識別したり、そのトラフィックが自動化されていることを証明したりはしない。
- JA3 は、選択された入力リストにおける順序を保持する。 ハンドシェイクの順序が変わると、結果として得られるフィンガープリントも変わる可能性がある。
- JA4 は、異なる構造化された正規化表現を用いる。 JA3 と JA4 を互換実装どうしで比較し、相互に代用可能なハッシュとして扱わない。
- TLS の観測ポイントによって、どのクライアントが計測されるかが決まる。 終端する中間装置は、宛先に対して独自のハンドシェイクを提示しうる。
TLS フィンガープリントが何を測っているかを理解する
TLS クライアントフィンガープリントは、ある接続のハンドシェイクの特定のプロパティを要約したものである。JA3 と JA4 は、そのプロパティに対する異なる表現方法を記述している。その結果として得られる値は観測されたトラフィックどうしを比較するのには有用だが、ユーザーのアイデンティティでもなければ、ブラウザを完全に記述したものでもない。
この TLS ハンドシェイク仕様 は、ClientHello のやり取りと、クライアントが提供する機能を定義している。フィンガープリンティングアルゴリズムは、そのやり取りから情報を選択し、独自の正規化とエンコーディングを適用する。プロトコルの定義とフィンガープリント形式は分けて考えること。TLS は、すべての実装に JA3 や JA4 の値を生成することを要求してはいない。
セキュリティチームは、フィンガープリントのパターンをリクエスト挙動やその他のコンテキストと並んで用いる証拠の 1 つとして利用できる。アプリケーション運用者は、それを用いて環境を比較したり、ネットワークパスを調査したりできる。いずれの場合も、解釈には観測ポイント、アルゴリズム、および基盤となる接続コンテキストが必要となる。インシデントメモにハッシュ値だけを貼り付けても、そうした情報のほとんどは失われてしまう。
JA3 と JA4 の表現を比較する
JA3 vs JA4 は、表現上の選択を比較するものであり、新しいラベルのほうがあらゆる接続をより正確に分類することを保証するものではない。
| 次元 | JA3 | JA4 |
|---|---|---|
| コアとなる対象 | 選択された TLS ClientHello フィールド | 構造化された TLS クライアントフィンガープリント |
| 表現 | 順序付きフィールド文字列と MD5 ダイジェスト | 正規化およびハッシュ化された要素からなるコンポーネント |
| 順序への感度 | 選択されたリストの順序が入力に影響する | 正規化によって、一部の順序効果が軽減される |
| 解釈 | 互換性のある JA3 計算どうしを比較する | 互換性のある JA4 計算およびコンポーネントを比較する |
| アイデンティティの主張 | ユーザーのアイデンティティを確立しない | ユーザーのアイデンティティを確立しない |
JA3 の値は、フィールド名を付け替えるだけでは JA4 の値に変換できない。元のハンドシェイク情報と該当アルゴリズムが必要である。後段のシステムが無関係なフィンガープリントの名前空間を統合してしまわないよう、その値とともにアルゴリズム名を保存しておくこと。
JA3 は選択されたハンドシェイク順序を保持する
この original JA3 algorithm は、ClientHello のバージョン、暗号スイート、拡張、supported groups、point formats から文字列を構築し、その表現を MD5 でハッシュする。文書化されたアルゴリズムは GREASE 値を除外する。保持されたリストの順序は、この表現において意味を持つ。
その順序づけは解釈上の制約を生む。クライアントが提供する拡張の順序が変わると、アプリケーションの目的が変わっていなくても JA3 が変化しうる。異なるライブラリ構成によって、提供されるフィールドが変化することもある。新しい JA3 値が得られたからといって、それを新しいデバイスや新しいユーザーの証拠とみなさないこと。
ダイジェストは、選択された入力に対するコンパクトなラベルである。そこには、すべてのハンドシェイクフィールド、リクエストヘッダー、ブラウザストレージの値、レンダリング挙動が含まれているわけではない。同じ選択入力からは、多くのクライアントで同じラベルが生成されうる。そのため、そのラベルだけに基づくセキュリティ判断では、無関係なセッションが 1 つにまとめられてしまう可能性がある。
この文脈における MD5 は、TLS の暗号保護を置き換えるものではなく、フィンガープリントのエンコーディング手法の選択である。伝送路のセキュリティ評価とフィンガープリントのマッチングは分けて考えること。なじみのあるフィンガープリントを持つリクエストであっても、通常どおり証明書や認可のチェックが必要である。
JA4 は構造と正規化を追加する
The JA4 ネットワークフィンガープリント仕様と実装 正規化されたコンポーネントを用いた構造化されたクライアント表現を使用します。この設計により、フィンガープリントの一部が比較に有用になり、いくつかの順序変更に対する感度が低減されます。それでも、クライアント全体ではなく選択された特性のみを要約するものです。
JA4 を、より広い JA4+ ファミリーと区別してください。関連するフィンガープリント種別は、異なるレイヤーや方向を観測します。JA4H は HTTP クライアントフィンガープリントに関係しており、単に TLS JA4 値の別表記として説明すべきではありません。ログでは、種別、実装、観測レイヤーを明示的に保持してください。
正規化によって、どの違いが可視のまま残るかが変わります。安定した JA4 は、2 つのセッションが同じユーザーから来たことの証明にはならず、変更された JA4 も悪意ある挙動の証明にはなりません。値は、接続の環境とアプリケーションが想定するトラフィックと合わせて解釈してください。
パーサーやコレクターを導入する場合は、選択した仕様に対する挙動を確認してください。実装の詳細や利用可能なフィールドは異なることがあります。ダッシュボード上のラベルだけでは、2 つの製品がまったく同じバリアントを計算しているか、未完了のハンドシェイクを同一に扱っているかは判断できません。
GREASE とランダム化は異なる概念です
GREASE 値と拡張の順序は分けて診断する必要があります。 TLS 拡張性のための GREASE メカニズム は、プロトコル拡張性を試験するために使用される値を予約します。JA3 の説明ではそれらの値を除外しています。すべての JA3 の変化を GREASE に起因させるのは、そのように文書化された正規化と矛盾します。
保持された拡張の順序は、依然として JA3 に影響を与え得ます。比較レコードでは、生の選択入力が変化したのか、順序だけが変化したのか、コレクターが同じ正規化を適用したのかを示す必要があります。そうした詳細がなければ、変化したダイジェストはほとんど説明を提供しません。
許可された診断キャプチャでは、利用可能な場合は提供されたハンドシェイクフィールドの非秘密な概要を保存してください。その概要を比較してから、ダイジェストから原因を推測してください。単純化されたブログの例を、すべての TLS クライアントの挙動の証拠として扱うのは避けてください。
TLS 終端ポイントを特定する
計測されたフィンガープリントは、TLS 観測ポイントで見えているクライアントに属します。あなたのアプリケーションプロセスと宛先側の TLS クライアントは、必ずしも同じコンポーネントとは限りません。
接続を終端して新しい TLS 接続を開く中間機器は、宛先に対して独自のハンドシェイクを提示することがあります。内側の TLS 接続を終端せずにトンネルを転送する中間機器は、観測されるクライアントとの関係が異なります。宛先側のフィンガープリントをローカルライブラリに帰属させる前に、実際の経路を特定してください。
観測者の位置、接続方向、宛先、および関連するルーティング構成を記録してください。内部ゲートウェイで取得した計測値は、パブリックサービスのエッジで計測されたものとは異なる接続を記述している可能性があります。境界を明記せずにそれらの値を比較すると、誤った不一致が生じることがあります。
ブラウザ自動化はさらなる境界を追加します。リモートブラウザへの制御接続は、ブラウザからターゲットページへの接続とは別物です。制御サービスで観測されたフィンガープリントは、ターゲット向きのナビゲーションを自動的に記述するものではありません。証拠を生んだ接続を診断してください。
シグナルを ID に変換せずに相関させる
フィンガープリントは、調査範囲を絞り込むときに最も有用です。複数のリクエストがクライアント特性を共有していることや、あるデプロイメントがネットワーク挙動を変化させたことを示唆できますが、それ単体でリクエストの意図を確定することはできません。
あなたが運用するサービスでは、フィンガープリントをエンドポイントの利用状況、リクエストレート、セッション継続性、認証コンテキスト、観測された結果と比較してください。ルールに関連付けるアクションを定義し、広く適用する前に誤検知を検証してください。見慣れたブラウザ風のハンドシェイクは、それだけで十分な認可シグナルにはなりません。
データ収集では、ページナビゲーションが成功しても、最終 URL、コンテンツの同一性、必要なフィールドを依然として確認する必要があります。診断用フィンガープリント値は、収集したページが要求されたデータを含んでいる証拠にはなりません。ネットワーク観測と結果の受け入れは、別個の記録として保持してください。
保持する識別情報は最小限に抑えてください。調査では、完全なユーザープロファイルではなく、フィンガープリントカテゴリと接続イベントだけが必要になる場合があります。利用可能なあらゆるシグナルを無期限に保持するのではなく、運用ログのアクセスと保存期間の境界を設定してください。
マネージドブラウザインフラは、その実際のレイヤーで利用する
Scrapeless Agent Browser はマネージドブラウザ実行環境を提供します。 Agent Browser の紹介 では、そのインフラとしての役割を説明しており、JA3 や JA4 が許可、不可視性、収集成功を保証するものだとはしていません。
ローカル実行とリモート実行を比較する際は、ターゲットタスクとブラウザ構成を可能な限り一定に保ってください。どの環境がターゲット接続を開いたのか、どの観測者がフィンガープリントを提供したのかを記録してください。描画された結果は、ネットワークラベルとは別に比較してください。
この ブラウザのネットワークフィンガープリントレイヤー は関連するコンテキストを提供しますが、アルゴリズムの詳細は一次情報である JA3 および JA4 の定義から取得するべきです。タスクが必要とするブラウザセッション数に基づいて Scrapeless の料金 を確認し、普遍的なフィンガープリント成功率という主張に基づいて判断しないでください。
結論:同種の観測を比較する
JA3 と JA4 を、定義された観測ポイントからの、実装を意識した名前付きシグナルとして使用してください。変化を説明できるだけの入力コンテキストを保持し、TLS フィンガープリントを他のネットワークレイヤーと区別し、それらを行動上の証拠と組み合わせてください。慎重な比較は、ユーザーのアイデンティティや意図を作り上げることなく、観測された接続を記述します。
ブラウザワークフローを明瞭に観測する
許可されたタスクにマネージドブラウザ実行を使用し、接続の観測とコンテンツ受け入れを分離して保管してください。
今すぐ登録して $5 の無料クレジット — クレジットカード不要.
$5 クレジットを受け取る →FAQ
Q: JA4 は JA3 ハッシュの直接の代替になりますか?
JA4 は JA3 ハッシュの直接的な付け替えではありません。これらのアルゴリズムは、ハンドシェイク情報の選択と表現方法が異なります。それぞれの値のために別々のフィールドを保持し、適切な接続証拠から、互換性のある実装を用いて個別に計算してください。
Q: JA3 は GREASE 値を含みますか?
公開されている JA3 アルゴリズムは GREASE 値を除外します。保持されるフィールドやその順序が変わると、JA3 は依然として変化し得ます。値の変化を特定のメカニズムに帰属する前に、選択されたハンドシェイク入力とコレクターの動作を確認してください。
Q: フィンガープリントで個々のブラウザーユーザーを特定できますか?
TLS フィンガープリントだけでは、個々のユーザーを確実に特定することはできません。複数のクライアントが選択されたハンドシェイク特性を共有し得ますし、クライアントの特性も変化し得ます。フィンガープリントは、適切なプライバシーおよび保持制御の下で利用される相関証拠として使用してください。
Q: プロキシは常に TLS フィンガープリントを変化させますか?
プロキシがターゲット側から見た TLS フィンガープリントを常に変化させるとは限りません。結果は、それが TLS を終端させるのか、クライアントの内部接続を転送するのかに依存します。特定の値をあるコンポーネントに帰属させる前に、実際の終端点と観測点を把握してください。
Q: ブラウザーフィンガープリントが一致すればアクセスは保証されますか?
選択されたブラウザー類似のハンドシェイク特性が一致しても、アクセスが保証されるわけではありません。サービス側では、認証、振る舞い、ポリシー、その他のシグナルを評価し得ます。ワークフローは依然として認可を尊重し、対象ページおよび取得データを検証しなければなりません。