
2025/12/26 5:34
Show HN:Aroma:RTT フィンガープリンティングで全ての TCP プロキシを検出できる
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary:
Aromaは、IPアドレスデータに依存せずにネットワークトラフィックの往復時間(RTT)特性を測定することでTCPプロキシを識別する軽量な概念実証ツールです。FastlyのCustom VCLを使用して2つのRTTメトリクス、
tcpi_min_rtt(観測された最小RTT)とtcpi_rtt(現在のRTT)を読み取ります。比率 tcpi_min_rtt / tcpi_rtt を計算することでAromaはプロキシスコアを割り当て、0.1未満の値はおそらくプロキシであることを示し、0.3〜0.7のスコアはプロキシングではなく不安定な接続を示します。https://aroma.global.ssl.fastly.net/ のデモサイトでは、通常トラフィックは「許可」ページが表示され、検出されたプロキシはブロックページになります。AromaはTCPレベルのプロキシ(例:Cloudflare WARP)のVPNを検知できますが、Layer‑3(IPベース)プロキシは捕捉できません。
ユーザーは
aroma.vcl をダウンロードするか、build_vcl.py でテンプレートから構築してVCL設定を取得できます。FastlyのPoints of Presence(PoPs)が世界中に分散しているため、このツールはグローバルにテスト可能です。現在はプロトタイプですが、Aromaは組織がIP禁止ではなくプロキシ検知に基づいてトラフィックをブロックまたは許可できる本番ソリューションへと進化する可能性があります。これにより、プロキシベースの攻撃に対するセキュリティが強化されつつ、正当なサービスアクセスは維持されます。
Summary Skeleton
What the text is mainly trying to say (main message)
AromaはIPインテリジェンスを必要とせず、往復時間(RTT)測定の指紋でTCPプロキシを検知する概念実証ツールです。
Evidence / reasoning (why this is said)
Fastly Custom VCLを介して
client.socket.tcpi_min_rtt と client.socket.tcpi_rtt を測定し、比率 tcpi_min_rtt / tcpi_rtt を計算。0.1未満はプロキシ、0.3〜0.7は不安定接続とみなします。
Related cases / background (context, past events, surrounding info)
デモサイト https://aroma.global.ssl.fastly.net/ で通常トラフィックは「許可」ページが表示され、検出されたプロキシはブロックページ。AromaはTCPレベルのプロキシを使用するVPN(例:Cloudflare WARP)を特定できますが、Layer‑3プロキシは捕捉できません。
What may happen next (future developments / projections written in the text)
ユーザーは
aroma.vcl をアップロードまたは aroma.vcl.tpl から build_vcl.py で構築。FastlyのPoPsによりグローバルテストが可能で、ツールは概念実証を超えて本番利用へ拡張できる。
What impacts this could have (users / companies / industry)
採用すれば企業はIP禁止ではなくプロキシ検知に基づいてトラフィックをブロック/許可でき、プロキシベース攻撃に対するセキュリティが向上しつつサービス利用可能性が維持されます。
本文
Aroma:RTT指紋認証で全てのTCPプロキシを検知
AromaはIPインテリジェンスデータを一切使用せず、TCPタイミングメトリクスのみで動作します。
誤検知を避けるために検出スコアは意図的に低めに設定しており、0.3〜0.1の範囲ではプロキシとしてフラグ付けされません。
現行コードは概念実証(Proof‑of‑Concept)であり、本番環境には適していません。
Aromaが検知するもの
- TCPプロキシ(レイヤー 4)のみ。
- TCPプロキシを利用したVPNも検知可能ですが、純粋にレイヤー 3でルーティングされるVPNは除外されます。
- 技術は汎用的で他のプロキシタイプにも応用できますが、Fastlyでは必要な変数すべてが公開されていません。
デモ
AromaはCloudflare WARP(VPN)をUDP→TCPプロキシとして振る舞うため検知しました。
VPNがフラグ付けされた場合はレイヤー 4でプロキシングしていることを示し、そうでなければレイヤー 3である可能性があります。
- ライブデモ:https://aroma.global.ssl.fastly.net/ – TCPプロキシが使用されていない場合は「許可」ページが表示され、使用されているとブロックページが表示されます。
- スコアエンドポイント:https://aroma.global.ssl.fastly.net/score
TL;DR(簡潔な説明)
-
収集するメトリクス
– 最小RTTclient.socket.tcpi_min_rtt
– 平滑化済みRTTclient.socket.tcpi_rtt
-
スコア計算式
[ \text{score} = \frac{\text{tcpi_min_rtt}}{\text{tcpi_rtt}} ] -
解釈
- 1 – 0.7 : 通常の接続
- 0.7 – 0.3 : 不安定(Wi‑Fi、モバイル、衛星)だがプロキシではない
- 0.3 – 0.1 : 低い値で潜在的なプロキシの可能性あり
- < 0.1 : TCPプロキシとしてフラグ付け
自分のインスタンスをホストする方法
-
Fastly –
を Custom VCL にアップロード。aroma.vcl
を編集し、aroma.vcl.tpl
を実行してファイルを再生成します。build_vcl.py
-
他のプラットフォーム – READMEに代替ホスティング環境への適用手順が記載されています。
フォルダ内の旧Pythonスクリプトは未完成です。完了したらPRで貢献してください。oldcode/
技術的背景
-
特殊相対性
- 4 ms のRTTは最大距離約600 km(光2ミリ秒)に相当します。
- 光ファイバーでは光速が約33 %遅くなるため、実際の距離は400 km未満です。
-
RTT層
- レイヤー 3(IP) → TCP(レイヤー 4) → TLS → HTTP(レイヤー 7)。
- プロキシは上位層でRTTを膨らませます。TCPプロキシの場合、HTTP/TLSのRTTが生のTCP RTTRより大きくなります。
-
例示シナリオ
- オーストラリア在住ユーザー、米国にあるプロキシ。
- 直接 TCP の RTT ≈10 ms;プロキシへ向かうユーザーの RTT ≈160 ms。
- プロキシ側では L3/L4 は10 ms、TLS/HTTP は約170 msとなります。
-
スコアリングアルゴリズム
- 大まかに
を算出。proxy_RTT / non_proxy_RTT - 大手ISPはベースラインRTTを収集し、既知のプロキシ署名と比較して堅牢な検知モデルを構築できます。
- 大まかに
文書終了