SOCKS チェーンを長くしても次のホップが自動的に隠れるわけではない
クライアントが自前で構築する SOCKS チェーンでは、別のホップが宛先メタデータを隠すと決めつける前に、暗号化されていない設定メッセージを特定しましょう。
チェーンは、各接続を誰が開くかを変える。リストに SOCKS アドレスをもう一つ加えるだけでは、暗号化は増えない。
このチェーンを自分で組み立てるクライアントを考えてみよう:
application → SOCKS A → SOCKS B → website
まず A に B への接続を依頼する。そのストリームを通じて、次に B とウェブサイトへの接続を交渉できる。クライアントから A への転送が両方の交渉を暗号化なしで運ぶなら、そのリンク上の十分な能力を持つ観察者は、クライアントが送った設定バイトを読める。外側の TCP 宛先だけが観察者の唯一の証拠ではない。
チェーンと保護されたアプリケーションのやり取りを切り分ける
HTTPS は TLS セッションが始まった後にウェブサイトのアプリケーション内容を保護できる。しかし、それ以前の SOCKS 設定メッセージを遡って暗号化するわけではない。SOCKS5 のユーザー名/パスワード認証も暗号化された転送ではない。
クライアントと最初のホップの間を暗号化しても、そのリンク上の可視性が変わるだけだ。運用者と、復号されたストリームを保持する別の端点は依然として存在する。チェーンは追跡不能だと主張するのではなく、その信頼境界を説明しよう。
サーバー側で設定された親ルートは別のトポロジーだ。A が内部で B を選ぶ場合、クライアントが最初の接続で中間業者の完全なリストを送ったとは限らない。どのチェーンもすべてのホップを同じように露出するとは主張しないこと。
有用なプライバシー評価のためには、観察者、リンク、プロキシ交渉、TLS の境界を名指ししよう。B の出口を観察するウェブサイトと、クライアントの最初の接続を見るアクセス網の観察者は、別の問いに答える。ホップを数えるだけでは、どちらにも答えられない。