JA3/JA4とは?DDoS対策やマルウェア検知に利用されるTLS指紋の解説


概要

セキュリティやネットワークの現場で耳にするJA3/JA4
しかし、活用が進む反面、その仕組みについては知られていません。

そこで今回は、

  • DDoS対策ができるらしいがどんな技術なのかイマイチわからない
  • WAF設定に投入している訳わからない乱数の意味が知りたい

といった方に向けて、
セキュリティ技術者の視点からJA3/JA4などのTLSフィンガープリンティング技術がどう活用され、
どのような仕組みで動作し、どんな利点・欠点があるか解説していきたいと思います。


目次


JA3/JA4って何?

JA3やJA4といったTLS指紋の技術を端的に表すと、このようになります。

TLS暗号化された通信を復号せずに、
どのアプリケーションが通信の主体であるか見分ける技術

つまり、TLS指紋を使うと暗号化された通信に含まれるクレジットカード番号といった重要な情報を隠したまま
どのような通信が行われているか概要を知ることができます


分かりやすいように手紙に例えて説明すると、
従来の平文(http)通信は葉書で、暗号通信(https)は封筒に入った手紙です。

葉書(http)は誰でも中身を読むことが可能で、どんな手紙か判別できますが、
封筒(https)は中身を直接読むことができませんし、無理矢理封を破れば誰かが読んだことが分かってしまいます。

しかし、封筒そのものを見てみると、企業ロゴが書かれていたり、「○○のお知らせ」という記載があったり、
中身そのものを知らなくても、ある程度中身が予想できます。

このように手紙の中身の予想をデジタルの世界で行うのが、JA3/JA4などのTLS指紋です。


技術的な所に話を戻すと、TLS指紋を使うことで「ある程度予想できる」のは、
どのアプリケーションが通信を行ったかということです。

結論として、TLS指紋を使うと使っているアプリケーションが分かる
しかも、カード番号のような重要な情報は漏れないということです。


JA3/JA4の活用事例

JA3/JA4などのTLS指紋は、使っているアプリケーションが分かるが重要な情報は漏れないという性質を生かし、
様々なセキュリティやネットワークの現場で活用されています。


セキュリティ

セキュリティの場面では、一般の利用者と攻撃者が使うアプリケーションの違いを見分けることで、
攻撃を防いだり、攻撃の証拠を調査したりといった目的で使われます。


例えば、2022年頃に流行したEmotetというマルウェアは以下のJA3指紋をもつ事が知られており、

4d7a28d6f2263ed61de88ca66eb011e3

このIoCを元に感染端末有無を調査したり、NGFWで通信を遮断したりといった対策が行われました。


具体的なプロダクトを上げると、次のような活用事例があります。

  • Suricata — JA3/JA4を用いたTLS通信の異常検知
  • Zeek — TLSハンドシェイクを記録しJA3で通信を識別
  • Security Onion — JA3ログをSOC監視や脅威ハンティングに利用
  • Splunk — JA3をログ分析し不審クライアントを特定
  • Elastic Security — TLSフィンガープリントを用いた脅威検知
  • IBM QRadar — JA3をIOCとして相関分析
  • MISP — JA3ハッシュを脅威インテリジェンスとして共有
  • VirusTotal — マルウェア通信のTLSフィンガープリント分析

ネットワーク

ネットワークの場面ではBotやスクレイピングの識別や、
QoS優先制御のためのアプリケーション識別等に用いられ、
具体的には、次のような活用事例があります。

  • Cloudflare — TLSフィンガープリントでボットやスクレイピングを識別
  • Akamai Technologies — TLS特徴を用いたボットトラフィック検出
  • DataDome — JA3等を用いた自動アクセス検知
  • PerimeterX — TLSハンドシェイク特徴でボット識別
  • Kasada — TLSフィンガープリントでスクレイパー検知
  • Amazon Web Services — WAF / FirewallでJA3ルールによる通信制御
  • Microsoft Azure — Firewall/IDPSでTLSフィンガープリントを利用
  • Google Cloud — クラウドネットワークでTLS特徴をトラフィック識別に利用

JA3の動作原理

続いて、

  • JA3はどう生成されるのか
  • JA3が何故効果的にはたらくのか
    について解説します。

TLSハンドシェイクの収集

前述した「手紙」の例えで使われた「封筒」に代わり、
JA3ではTLSハンドシェイクを使ってアプリケーションを識別します。

TLSハンドシェイクとは、通信開始時にやりとりされるメッセージのことで、
「どの暗号を使うのか」「宛先のサーバ名は何か」といった合意をとるためにやりとりされます。

ここでやりとりされる情報はTLSパラメタと呼ばれ、
暗号化されていないことに加えて、アプリケーションごとに特徴もあります。


JA3文字列の抽出

JA3では以下のTLSパラメタをJA3文字列に加工して利用しています。

  • TLS Version
  • Accepted Ciphers
  • Extensions
  • Sliptic Curves
  • EC Point Formats

この「JA3文字列」はTLSパラメタを以下のような形式で区切り文字(カンマ)で連結して作成します。
<SSLVersion>,<Cipher>,<SSLExtension>,<EllipticCurve>,<EllipticCurvePointFormat>

パラメタの値が複数ある場合には、順序を保持したまま別の区切り文字(ハイフン)で結合され、
47-53-5-10
といった文字列として出力します。

このルールを元に実際にJA3文字列を作成すると
771,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0
というようになります。


ここでの抽出されている771などの数値はパラメタのIDを10進数で列挙するという仕様になっており、
例えば、<SSLVersion>の箇所にはTLS1.2を表す 0x0303の10進数表現である771という文字列が入り、
<Cipher>の箇所にはCipher Suitesのリストに含まれる、暗号プロトコルのIDをそのまま列挙して、
47-53-5-10-49161-49162-49171-49172-50-56-19-4という形の文字列が入っています。


ハッシュ化

最後にJA3文字列をMD5というアルゴリズムでハッシュ化し、
見覚えのあるJA3フィンガープリントを生成します。


JA3/JA4などTLS指紋のメリット・デメリット

JA3/JA4といったTLS指紋の技術は、DDoS対策・Bot対策・優先制御など、
様々な使い道があり非常に便利ですが、注意すべき点もあります。

本章では、メリット・デメリットを紹介し、
TLS指紋をどのように使ったらよいか、
また将来的なリスクについて綴っていこうと思います。

メリット

TLS指紋のメリットはTLS指紋はペイロードを扱わず、高速である点です。

そのため以下のような大規模・リアルタイムが求められる状況で活用できます。

  • DDoS攻撃対策
  • QoSやロードバランス

TLS通信を復号することなく利用できる点も大きなメリットになります。

復号が不要なため、以下のような、ほかの手法で不可能な状況でもTLS指紋は活用できます。

  • TLSの終端より外側のネットワークでの通信制御
  • WAFやTLSインスペクションが使えない環境でのC2検知

加えて、プライバシーリスクやセキュリティ装置自体の
侵害リスクを減らすことにも役立ちます。


デメリット

TLS指紋における代表的なデメリットは、

  • 判定が完璧でない点
  • 比較ができない点

の2点です。


判定が完璧でない

「判定が完璧でない」というのは、

  • 同じアプリケーションでも違う指紋が出てくる
  • 複数のアプリケーションで指紋が重複する

という事象が発生してしまうという意味です。

TLS指紋がパラメタを抽出してハッシュ化するという作りをしている以上、
防ぎようがなく、明確なデメリットといえます。


加えて、著名なソフトウェアと全く同じ指紋になるようにパラメタを調整する
欺瞞攻撃に対しては全く耐性がないため、APTなどの状況下では突破される恐れがあります。
※実際にTLS指紋への欺瞞を行うマルウェアなどは知る限りでは確認されていません


比較ができない

TLS指紋はハッシュ関数を用いており、

  • 指紋同士が似ているか
  • 元々どんな情報を持っていたか
    といった事を調べることはできません。

全く同じか、そうでないか以外の情報を持たない為、
TLS指紋でマルウェアの亜種を見つけたりといったことはできません。


統計的な性質も失われ、変化量の増大を引き起こすため、
機械学習の入力として使用してはいけないという点にも注意が必要です。

TLS指紋をはじめとしたハッシュ値は離散的でカテゴリ変数としても扱えないため、
機械学習モデルの頑強性を大きく損ないます

まとめ

本記事では、JA3/JA4などのTLS指紋を通して、以下のポイントをご紹介しました。

JA3/JA4とは

TLS指紋は、暗号化された通信を復号せずに、やり取りされるTLSパラメタを抽出することで、どのアプリケーションが通信を行っているかを特定する技術です。

活用の広がり

セキュリティ(マルウェア検知)からネットワーク領域(Bot検知、QoS制御)まで、様々なベンダーが実装し、実運用で活用されています。

動作の仕組み

JA3指紋は、TLSハンドシェイク時に交換されるパラメタ(TLSバージョン、暗号スイート、拡張機能など)を組み合わせて文字列化したのち、MD5でハッシュ化することで生成されます。

メリット

  • 高速処理:ペイロードを扱わないため、大規模なDDoS攻撃対策やリアルタイム処理に適している
  • プライバシーとセキュリティ:TLSを復号しないため、重要な情報を保護しながら通信の特徴を把握できる

デメリット

  • 判定の不完全性:同じアプリケーションでも異なる指紋が出たり、複数のアプリケーションで指紋が重複することがある
  • 欺瞞への無防備:パラメタを調整されると容易に欺かれる可能性がある
  • 比較・分析の限界:ハッシュ値のため、指紋同士の相似性を判定できず、機械学習の入力としても使用できない

最後に

JA3/JA4は強力な技術ですが、完璧ではありません。運用では、複数のシグネチャやヒューリスティクスと組み合わせ、段階的な防御層を構築することが重要です。

参考文献

GitHub - salesforce/ja3: JA3 is a standard for creating SSL client fingerprints in an easy to produce and shareable way. · GitHub (Accessed:Wed Mar 11 2026)

JA4+ Network Fingerprinting • FoxIO Blog (Accessed:Wed Mar 11 2026)

TLS Fingerprinting with JA3 and JA3S - Salesforce Engineering Blog (Accessed:Wed Mar 11 2026)

Transport Layer Security (TLS) Parameters (Accessed:Wed Mar 11 2026)

Transport Layer Security (TLS) Parameters (Accessed:Wed Mar 11 2026)

JA3/JA4とは?DDoS対策やマルウェア検知に利用されるTLS指紋の解説

https://lunatic.red/2026/03/10/JA3-JA4とはDDoS対策やマルウェア検知に利用されるTLS指紋の解説/

Author

fuchse-ohren

Posted on

2026-03-10

Updated on

2026-03-19

Licensed under

コメント