TLSフィンガープリンティングはどのように機能しますか?
Scrapeless Agent Browserは、ブラウザとネットワーク層の動作を含むWeb自動化のためのクラウドブラウザ環境を提供します。
TLSフィンガープリンティングは、同様の実装や設定を持つ接続をグループ化できるように、TLSハンドシェイクの観察可能な特性を要約します。クライアントは、通常のHTTPSアプリケーションデータが交換される前にプロトコルオプションを提案します。その提案の選択肢と構造は、ソフトウェアスタックに関連するパターンを明らかにすることができます。
TLSフィンガープリントは、人の身元、復号化されたページ、または悪意のある行動の証拠ではありません。多くの無関係なクライアントがフィンガープリントを共有でき、一つのクライアントがアップデートや設定変更の後に異なる観察結果を生成することがあります。フィンガープリントは、接続に関する証拠として扱い、定義された収集方法と既知の制限があります。
ClientHelloに含まれるもの
ClientHelloは、TLSネゴシエーションのクライアント側を開始し、サーバーが接続を確立するために使用できるパラメーターを提供します。これには、サポートされている暗号オプションや拡張機能が含まれます。 TLSプロトコル仕様 は、ハンドシェイクの構造を定義します。フィンガープリンティング手法は、比較のためにその構造の部分を選択し、変換します。
フィンガープリンティング手法は重要です。なぜなら、生メッセージにはコンパクトな署名では保持できない情報が含まれているからです。合法的な理由で変更されるフィールドもあれば、実装の選択を反映するフィールドもあります。手法は、何を含めるか、何を正規化するか、そしてどの順序の違いが出力に影響を与えるべきかを決定しなければなりません。
観察者は、実際に使用されたスキームを記録するべきです。「TLSフィンガープリント」はカテゴリーであり、普遍的に置き換え可能な値ではありません。アルゴリズムを確認せずに異なるツールからの文字列を比較すると、見かけ上の不一致が生じることがあり、それは実際には測定の不一致です。
ハンドシェイクフィールドからフィンガープリントへ
フィンガープリンティングパイプラインは、最初にハンドシェイクを観察し、選択されたフィールドを抽出し、ルールに従ってそれらを正規化し、コンパクトな表現を生成します。その表現には、可読の要素、ハッシュ、またはその両方が含まれる場合があります。ハッシュは選択された入力の要約であり、ハンドシェイクから欠落していた追加の証拠ではありません。
オリジナルの JA3メソッド は、選択されたClientHelloの値を標準化された文字列に結合し、その文字列をハッシュ化します。生成された識別子は、マッチする選択された特性を持つ接続をグループ化するのに役立ちます。それは接続のすべてのプロパティやアプリケーションのすべての機能を説明するものではありません。
抽出されたフィールドは、保持ポリシーが許す範囲内で保持してください。最終的なフィンガープリントのみが保持される場合、2つの接続が異なる理由を説明することが難しくなる可能性があります。フィールドレベルの証拠は、変更された拡張リストを、コレクターの実装の変更から区別することを可能にします。
なぜJA4が比較を変更するのか
JA4は、JA3とは異なる表現を使用するネットワークフィンガープリンティング手法のファミリーの一部です。JA4の 参考実装と仕様 は、フィールドと正規化ルールを説明します。一つの関連する設計選択は、選択されたリストをソートすることです。これにより、特定の順序の変更に対する感度が減少します。
それはJA4を確実なソフトウェア識別子にするわけではありません。正規化されたフィンガープリントは、スキームが無視することを選んだ方法で異なる観察結果を意図的にグループ化します。利点は、いくつかの分析タスクにとってより有用なグループ化ですが、コストは、無視された違いがもはやクライアントを区別しなくなることです。
質問に合ったスキームを使用してください。調査が広範なクライアントファミリーに関するものであれば、正規化グルーピングが役立つかもしれません。ソフトウェア変更後の正確なハンドシェイクの違いに関するものであれば、生のフィールドも確認してください。コンパクトな値とパケットレベルの比較は異なる質問に答えます。
GREASEと合法的な変動
TLS実装は、サーバーが観測されたすべての値が固定の既知リストに属していると仮定せずに進化する余地を必要とします。 GREASE値 は、サポートされている交渉フィールドに予約値を導入することで、プロトコルの拡張性を行使します。フィンガープリンティング実装は、それらの値をそのスキームに従って処理する必要があります。
すべての変動のあるハンドシェイクフィールドを意図的な隠蔽の証拠として解釈しないでください。ソフトウェアのアップデート、設定、プロトコル交渉、接続の再利用はすべて、コレクターが観測する内容を変更する可能性があります。いくつかのスキームは特定の変動を正規化し、他のものはそれを保持します。
制御された比較を行うために、クライアントのビルド、プロトコルパス、およびキャプチャポイントを記録します。比較したい場合は、2つのリクエストが新しいハンドシェイクを作成したことを確認してください。確立された接続を再利用することで、各リクエストのために新しいClientHelloを提供することなく追加のHTTPリクエストを生成することができます。
TLS、HTTP、ブラウザフィンガープリントは異なります
TLSフィンガープリンティングは接続のハンドシェイクに関係します。HTTPフィンガープリンティングはリクエストヘッダーやプロトコルの動作に関係することがあります。ブラウザフィンガープリンティングは、ブラウザAPIとレンダリングによって露出されたプロパティが関与することがあります。これらのレイヤーは一緒に分析できますが、一つの測定が他のものの代わりになることはありません。
HTTPユーザーエージェント値を変更しても、接続を確立したTLSライブラリが直接変更されるわけではありません。ページJavaScriptを実行しても、完了したハンドシェイクを遡って変更することはありません。これにより、ブラウザのように見えるヘッダーだけでは、クライアントがブラウザと同じネットワーク動作を示すことができない理由が説明されます。
リバース制限も重要です。馴染みのあるハンドシェイクを生成するネットワーククライアントは、ブラウザのJavaScriptエンジンやページの状態を欠いている場合があります。ターゲット文書がスクリプト実行後にレンダリングされる場合、ネットワークの特性を一致させても欠落しているコンテンツを生成することはできません。
観察が行われる場所が重要です
TLSフィンガープリントは、キャプチャポイントで見られる接続を説明します。プロキシがTLSを終了し、別の上流TLS接続を開始した場合、ターゲットはプロキシの発信ハンドシェイクを観察します。TLS終了なしでトラフィックがトンネル化されている場合、元のクライアントのハンドシェイクは宛先に表示され続けることがあります。
この区別は、企業ゲートウェイと管理されたコレクションサービスの診断時に重要です。サービスへのアプリケーションのローカル接続で行われた測定は、そのサービス接続のみに関するものです。それは自動的にサービスのターゲットWEBサイトへの別接続を明らかにするものではありません。
有用な図は、すべてのTLS終了ポイントを特定するべきです。各接続を開始するクライアントとフィンガープリントが収集される場所にラベルを付けること。これらの情報がないと、「ブラウザはこのフィンガープリントを持っている」という主張は異なるネットワークパスを指す可能性があり、矛盾する報告を生じる可能性があります。
フィンガープリントがサポートできること
フィンガープリントはトラフィックをグループ化したり、変化を調査したり、より広範な分類に貢献したりするのに役立ちます。同じソフトウェアの動作が複数のアドレスで現れる場合に役立ちます。また、オペレーターがリリースが権限のあるクライアントが提示するネットワークスタックを変更したことを認識するのにも役立ちます。
フィンガープリントだけでは意図を確立することはできません。同じライブラリは、モニタリングサービス、データパイプライン、および悪用プログラムによって使用される可能性があります。全体のグループをブロックすると、合法的なクライアントにも影響を与える可能性があります。観察を要求されたアクション、認可、および関連するトラフィックコンテキストと組み合わせてください。
普遍的なユニーク性の主張を避けるべきです。シグネチャの実用的な独自性は、測定されている集団と保持されているフィールドに依存します。一つのデータセットで珍しい値は、別のデータセットでは一般的である可能性があります。したがって、フィンガープリントデータベースのラベルは、疑問の余地のないアイデンティティ記録ではなく、確認すべき仮説として扱うべきです。
責任ある検証計画
制御でき、検査する権限のあるサーバーまたはキャプチャ環境を使用してTLSの動作を検証してください。制限されたリクエストを送信し、実際のハンドシェイクをキャプチャし、コレクターとフィンガープリントメソッドを記録します。抽出したフィールドをメソッドの文書化された変換と比較します。
ブラウザのJavaScriptプロパティのみを読み取るページは、サーバーが観察したTLSハンドシェイクを直接証明することはできません。信頼できる診断にはサーバー側の観察または適切なネットワークキャプチャが必要であり、その後にこの観察を調査されているブラウザリクエストに関連付ける方法が必要です。
クライアントを比較する際は、一度に1つの変数を変更してください。宛先とプロキシパスを固定し、ソフトウェアのバージョンを記録し、観察された結果をツールのすべてのバージョンに関する一般的な主張から区別します。単一のサンプルがサンプルを確立しますが、全製品ファミリーの永久的な特性ではありません。
ブラウザベースのコレクションにおけるTLSフィンガープリンティング
エージェントブラウザ は許可されたWebワークフローのためのブラウザ環境を提供します。その役割は、タスクの成果物を通じて評価されるべきであり、ネットワーク動作に関する質問がある場合は、関連する宛先での測定を通じて評価されるべきです。製品の機能が、報告している特定のプロパティを確認する必要性を除去するわけではありません。その ブラウザフィンガープリントのカスタマイズに関する議論 はブラウザ環境の別の部分を説明します。受け入れテストを作成する際は、これらのJavaScriptおよびレンダリングの表面をTLSとは別に保ってください。キャンバスの観察はキャンバスの動作に関する有用な証拠であり、ClientHelloについてではありません。
現在の価格設定 をレビューしてください 計画しているインフラストラクチャについて測定し、接続成功とは別に受け入れられたコンテンツを測定します。完了したTLS接続は、チャレンジページや必要なデータが欠けている文書にまだつながる可能性があります。
結論
TLSフィンガープリンティングは、選択されたハンドシェイク特性を比較可能な表現に変換します。その有用性は、アルゴリズム、キャプチャポイント、およびクライアントコンテキストを知っていることに依存します。これらの詳細を保存し、ネットワーク層をブラウザ層から区別し、フィンガープリントを全体のアイデンティティやアクセスの判断として扱うのではなく、説明の一部として使用してください。
ブラウザと結果を一緒に評価する
許可されたWeb自動化にはScrapeless Agent Browserを使用し、コンテンツとネットワーク動作に対して別々のチェックを行います。
今すぐサインアップして $5の無料クレジットを受け取る — クレジットカードは不要です.
$5のクレジットを請求する→FAQ
Q: TLSフィンガープリンティングはHTTPSコンテンツを復号化しますか?
TLSフィンガープリンティングは、HTTPSアプリケーションコンテンツを本質的に復号化することはありません。観察点で見える選択されたハンドシェイク特性を分析します。コンテンツ検査とハンドシェイクフィンガープリンティングは別の機能です。
Q: ユーザーエージェントを変更すると、TLSフィンガープリントは変わりますか?
HTTPユーザーエージェントヘッダーを変更しても、ハンドシェイクを生成するTLS実装が直接置き換わることはありません。関連するネットワーク設定とクライアント実装が提供されるTLS特性を決定します。ヘッダーから推測するのではなく、接続を検証してください。
Q: JA4値はユニークなデバイス識別子ですか?
JA4値は保証されるユニークなデバイス識別子ではありません。複数のクライアントがその方法によって保持される特性を共有する可能性があります。アイデンティティや行動について結論を引き出す前に、追加のコンテキストを使用してください。
Q: JavaScriptだけで実際のTLSフィンガープリントを測定できますか?
ページのJavaScriptだけでは、宛先によって観察された完全なTLS ClientHelloを直接読み取ることはできません。診断にはサーバー側の観察または承認されたキャプチャを取得し、それを関連するリクエストに関連付ける必要があります。
Q: プロキシはどのように観察されたフィンガープリントを変更できますか?
プロキシは、TLSを終了し、宛先への新しい接続を作成すると、観察されたフィンガープリントを変更できます。元のTLS接続を保持するトンネルは、異なる振る舞いをします。測定値を解釈する前に、終了ポイントを特定してください。