JA4フィンガープリントとは何ですか? TLS構造とJA3との比較

JA4フィンガープリントとは何ですか?

Scrapeless Agent Browser は、動的なページのレンダリングとブラウザーワークフローの制御のためのクラウドブラウザーセッションを提供します。

JA4フィンガープリントは何を測定しますか?

JA4フィンガープリントは、FoxIO によって定義された、選択された TLS ClientHello 特性の構造化サマリーです。判読可能なプレフィックスとハッシュ化されたコンポーネントを組み合わせることで、アナリストはクライアント全体のパターンとその一部のパターンの両方を比較できます。

JA4 は、より広い JA4+ ファミリーの中の1つの手法です。TLS-client の値は、そのファミリー内の HTTP、サーバー、その他のネットワークフィンガープリントと混同すべきではありません。結果を保存または議論する際は、特定の手法名を明示してください。「JA4+」だけでは、どのフィールドが測定されているかを特定するには広すぎます。

The JA4+ project specification は、このファミリーとネットワーク解析における想定用途について説明しています。フィンガープリントはグルーピングのためのシグナルです。人間の活動、アカウントの所有、またはアプリケーション操作を行う許可の証拠を与えるものではありません。

要約

  • JA4 は TLS クライアントのハンドシェイクパターンを測定します。 ページのグラフィックや Cookie の内容は測定しません。
  • JA4 は意味のあるコンポーネントを露出させます。 アナリストは不透明なダイジェストだけでなく、部分的なパターンを検査できます。
  • ソートにより、特定の順序に関する変動が低減されます。 それ以外の変更は依然としてフィンガープリントを変化させる可能性があります。
  • JA4H は別の観測対象です。 HTTP クライアントの特性を TLS JA4 の結果として誤表示してはなりません。

JA4 のセクションはどのように構成されますか?

JA4 は、プロトコルと機能のサマリー、正規化された暗号スイートリストのハッシュ、そして正規化された拡張機能および署名アルゴリズムのハッシュからセクションを構築します。技術的定義では、正規化ルール、除外、およびエンコーディングが規定されています。

判読可能なプレフィックスは、トランスポートカテゴリ、アルゴリズムで表される TLS バージョン、SNI の有無、提示された暗号スイートと拡張機能の数、および ALPN のサマリーを記述します。SNI と ALPN はプロトコルの機能であるため、その表現は、都合のよいラベルから推測するのではなく、アルゴリズムを通じて解釈されるべきです。

暗号コンポーネントは、含まれる暗号識別子をハッシュ化する前にソートします。拡張コンポーネントは、含まれる拡張識別子をソートし、観測された順序の署名アルゴリズムを取り込みます。SNI と ALPN は、構造の他の箇所にすでにそれらに関する情報が含まれているため、拡張ハッシュ内では特別に扱われます。

The JA4 TLS-client technical definition が、その詳細についての権威ある情報源です。コレクターはその仕様に一貫して従うべきです。すべての入力フィールドを無差別にソートすると、たとえ結果が似て見えたとしても、別の手法になってしまいます。

JA4 はハッシュ化されたコンポーネントに切り詰めた SHA-256 出力を使用し、仕様のルールに基づいて GREASE 値を除外します。切り詰めはコンパクトな表現を選択したものです。判読可能なプレフィックスとコンパクトなハッシュの組み合わせであっても、より豊富なハンドシェイクの情報を失った要約であることに変わりはありません。

なぜ正規化が重要なのですか?

正規化が重要なのは、クライアントが提供する機能セットを変えずに、その提示順序を変えることができるためです。そのような順序の違いをすべて保存するフィンガープリントでは、類似したクライアントが多数の別々のグループに分割されてしまう可能性があります。

JA4 は、選択されたリストをソートすることで、その種の変動要因を減らします。これにより、順序が変化した場合でも比較が有用になり、他の違いは保持されます。これは、同じアプリケーションからのあらゆる接続で JA4 が一定に保たれるという意味ではありません。

TLS GREASE behavior は、拡張性を試験するために予約値を追加します。収集手法は、それらの値を安定した機能から区別する必要があります。JA4 における GREASE の扱いは、プロトコル値の変化が不正行為を示すという別個の主張ではなく、その正規化ルールの一部です。

クライアントのアップデート、機能の変更、設定変更、異なる接続経路などは、すべて測定結果に影響し得ます。アップデート後にフィンガープリントが変化した場合、その変化を新しいオペレーターに帰属する前に、生の観測結果を確認してください。正規化はいくつかの差異を減らしますが、意味のあるあらゆる変動を消し去るわけではありません。

JA4 は JA3 とどう違うのですか?

JA4 は、入力の扱い方と表現において JA3 と異なります。JA3 は、選択された順序付きフィールドから1つの MD5 ダイジェストを生成します。JA4 は、構造化されたプレフィックスと、正規化されたコンポーネントを個別にハッシュ化したものを公開します。これらの値は互換ではありません。

次元JA3JA4 TLS Client
表現区切り文字付きフィールド列のダイジェスト判読可能なプレフィックスと個別のハッシュコンポーネント
選択されたリストの順序正規化されていない入力では保持される仕様の下で選択されたリストをソート
比較多くの場合、完全なダイジェストごとにグループ化される完全な値またはコンポーネントごとに分析できる
アイデンティティの主張デバイスを認証しないデバイスを認証しません

JA4 を新しい手法と呼んでも、既存の JA3 テレメトリが無意味になるわけではありません。過去の調査は、すでに記録された JA3 値に依存している可能性があります。移行では、必要に応じて両方を収集しつつ、アルゴリズムのラベルを保持し、異なる値同士の比較を避けることができます。

JA3 ダイジェストは一般に JA4 に変換できません。ダイジェストには基となる ClientHello データが含まれていないためです。両方の手法が必要な場合は、適切な生データを取得し、それぞれ定義された手順で計算してください。

JA4、JA4H、および JavaScript フィンガープリント

JA4、JA4H、および JavaScript フィンガープリントは、それぞれ異なる観測可能な挙動を表します。JA4 は TLS クライアントのハンドシェイク特性を記述します。JA4H は HTTP クライアントのフィンガープリンティングに属します。JavaScript フィンガープリントは、ページコードから見えるブラウザのプロパティや実行状況を記述します。

セキュリティプラットフォームはそれらすべてを相関させることができますが、診断ツールは実際に収集した測定値を報告するべきです。画面サイズを読み取るブラウザテストを行っても、それだけでは TLS ClientHello を測定したことにはなりません。ハンドシェイクを記録するプロキシログも、レンダリングされたページを検査したことにはなりません。

この区別は、User-Agent を変更しても接続全体のアイデンティティを制御できない理由も説明します。HTTP ヘッダーは TLS 接続のハンドシェイク後に生成されます。クライアントはヘッダーの中であるブラウザファミリーを名乗りつつ、そのネットワーキング実装は異なるパターンを生成する、ということがあり得ます。

首尾一貫したシグナルの集合であっても、ユーザーの意図を確実に立証することはできません。同じブラウザビルドが、ページを読むユーザー、承認されたテスト、望ましくない自動化ワークロードのいずれにも利用され得ます。アプリケーションのポリシーと認可には、依然としてそれ自体の根拠が必要です。

信頼できる JA4 測定値はどこで取得できますか?

信頼できる JA4 測定値は、関連する ClientHello を観測し、指定されたアルゴリズムを適用できるコンポーネントから得られます。そのコンポーネントはエッジサービス、ネットワークセンサー、あるいはあなたが管理する診断エンドポイントであり得ます。

測定されたホップを特定してください。TLS を終端するゲートウェイはオリジン向けに別の接続を作成するため、オリジンは元のブラウザではなくゲートウェイの TLS クライアントを観測する場合があります。パススルートンネルは元のクライアントのハンドシェイクを保持できます。ルーティングと終端は別の問題です。

「 TLS ハンドシェイクモデル 」は、これらの観測のためのプロトコルコンテキストを提供します。また、終端インフラストラクチャの背後で動作するアプリケーションが、通常のリクエストヘッダーからハンドシェイクを再構成しようとするのではなく、そのインフラからの信頼できるメタデータを必要とする場合がある理由も説明します。

結果には、観測地点、収集バージョン、時刻、および関連するクライアント環境を保存してください。インフラがヘッダー内でフィンガープリントを渡す場合は、信頼できない呼び出し元がそのヘッダーを提供または上書きできないようにしてください。主張されたフィンガープリントと、測定されたフィンガープリントは異なります。

制御された JA4 調査

制御された JA4 調査では、明確に特定された変数を変更しながら、接続の観測結果とアプリケーションの結果を比較します。たとえば、クライアントのアップデートによって提供される機能が変化したかどうか、といった特定の問いを解決するべきです。

  1. 認可された観測エンドポイントを選択してください。 測定したい接続をそのエンドポイントが確実に観測していることを確認してください。
  2. ブラウザと経路を記録してください。 関連するバージョンと、TLS が中間装置によって終端されているかどうかを含めてください。
  3. 説明用データを保持してください。 適切な場合は、コンポーネント変更を調査できるよう正規化済みフィールドの詳細を保持してください。
  4. コンポーネントを意図的に比較してください。 プレフィックスが安定しているのにハッシュだけが変わった場合は、観測全体が完全に変わった場合よりも意味の範囲が狭くなります。
  5. 返されたコンテンツを確認してください。 アプリケーションの結果が許可されたタスクを満たしていることを検証してください。見慣れた JA4 値であっても、抽出の成功を保証するものではありません。

ブラウザベースの収集については、「 Agent Browser ドキュメント 」が管理ブラウザの範囲を説明しています。「 Scrapeless Agent Browser 製品 」はブラウザランタイムを提供し、目的のページとフィールドが届いたかどうかはあなたの検証ロジックが判断します。特定の JA4 値を割り当てるための、文書化されていない制御を前提にすることは避けてください。

関連する「 Node.js ブラウザフィンガープリントワークフロー 」は、ブラウザベース自動化の文脈として有用です。「 Scrapeless 料金 」を、フィンガープリントの一致を最終的な受け入れ基準とするのではなく、測定したワークロードとコンテンツ品質に照らして比較してください。

結論

JA4 は、選択された TLS クライアント特性に対する構造化された見方をアナリストに提供し、特定の順序に関連したばらつきを減らします。その構成要素を使って観測を説明し、測定コンテキストを保持し、HTTP や JavaScript のフィンガープリントと区別してください。このフィンガープリントは調査を支援するものであり、アプリケーションの認可や有用な応答は別個の判断として残ります。

検証可能なワークフローを構築する

許可されたデータソースに適合する Scrapeless サービスを選択し、そのうえで返却されたコンテンツを、あなたのアプリケーションが必要とするフィールドと照らし合わせて確認してください。

今すぐ登録して $5 の無料クレジットを獲得 — クレジットカードは不要.

$5 クレジットを受け取る →

FAQ

質問: JA4 は一意のデバイス ID ですか?

JA4 は一意のデバイス ID ではありません。複数のクライアントが同じハンドシェイクパターンを共有することがあり、1 つのクライアントのパターンも環境によって変化する可能性があります。

質問: JA4 は JA4H と同じものですか?

JA4 TLS クライアント・フィンガープリンティングと JA4H HTTP クライアント・フィンガープリンティングは異なるレイヤーを測定します。記録された各値にはメソッド名を保持してください。

質問: JA3 ハッシュを JA4 に変換できますか?

JA3 ハッシュは基となるハンドシェイクフィールドを保持していないため、一般的に JA4 に変換することはできません。各メソッドは適切な観測データから計算してください。

質問: 一致する JA4 があれば Web アクセスが保証されますか?

一致する JA4 があっても、アクセスが保証されるわけではありません。宛先側で他のリクエスト、セッション、アイデンティティ、アプリケーションポリシーが適用される場合があります。

参考文献