メインコンテンツまでスキップ

4. セキュリティに関する考慮事項 (Security Considerations)

TCP Fast Open はハンドシェイク中にデータを転送するメカニズムを導入しており、新たなセキュリティ上の課題をもたらします。本章ではこれらの脅威と対応する防護措置を詳しく分析します。

4.1. 攻撃の脅威概要 (Attack Threats Overview)

主要な脅威カテゴリ

  1. 増幅攻撃 (Amplification Attacks)
  2. リソース枯渇攻撃 (Resource Exhaustion Attacks)
  3. リプレイ攻撃 (Replay Attacks)
  4. プライバシー漏洩 (Privacy Leakage)

4.2. 増幅攻撃 (Amplification Attacks)

攻撃の原理

攻撃者はサーバーの応答を利用して攻撃トラフィックを増幅します。

攻撃シナリオ:
1. 攻撃者が被害者の IP アドレスを偽造
2. 小さな SYN パケット(+ TFO Cookie + リクエスト)を送信
3. サーバーが被害者に大きな応答を送信
4. 増幅倍率 = 応答サイズ / リクエストサイズ

防護措置

1. SYN データサイズの制限

サーバーは MUST

  • 受け入れる SYN データ長を制限する(推奨 ≤ MSS、約 1460 バイト)
  • 過大な SYN データパケットを拒否する

2. SYN-ACK 応答サイズの制限

サーバーは SHOULD

  • 接続が完全に確立される(ACK を受信する)前に、応答データサイズを制限する
  • 推奨制限:≤ 4 × SYN データ長

3. Cookie 検証

厳格な Cookie 検証により IP スプーフィングを防止します。

  • Cookie は MUST クライアント IP アドレスにバインドされなければならない
  • 無効な Cookie のリクエストはデータ応答をトリガーしない

4.3. リソース枯渇攻撃 (Resource Exhaustion)

防護措置

1. SYN-RECEIVED 状態の制限

サーバーは MUST

  • SYN-RECEIVED 状態の接続数を制限する
  • TFO 接続にはより厳格な制限を設ける

2. アプリケーション層の分離

サーバーは SHOULD

  • ACK を受信するまで SYN データのアプリケーション層への配信を遅延させる
  • または SYN-RECEIVED 状態では軽量な処理のみを行う

3. SYN Cookies との統合

サーバーは MAY TCP SYN Cookies と組み合わせて使用できます。

  • SYN Cookies:ステートレスな SYN Flood 防護
  • TFO Cookies:ステートフルなパフォーマンス最適化

4.4. リプレイ攻撃 (Replay Attacks)

防護措置

1. 冪等性の要件

アプリケーション層は MUST

  • TFO SYN では冪等な操作のみを送信する
  • 例:
    • ✓ 許可:GET リクエスト、読み取り専用操作
    • ✗ 禁止:POST、PUT、DELETE などの副作用のある操作

2. Cookie の時効性

  • Cookie が期限切れになると、古いリプレイ攻撃は無効になる
  • Cookie の有効期間を短くすることでリプレイウィンドウを縮小

4.5. プライバシーの考慮事項 (Privacy Considerations)

1. Cookie と IP のバインド

Cookie は MUST IP アドレスにバインドされなければなりません。

  • IP が変更されると Cookie は無効になる
  • 新しい Cookie を再リクエストする必要がある

2. 限定的な Cookie ライフサイクル

  • 推奨有効期間:数時間から 1 日
  • Cookie を定期的にローテーション
  • ユーザーがブラウジングデータをクリアする際に Cookie をクリア

3. Cookie にユーザー情報を含めない

Cookie は MUST NOT

  • ユーザー ID やセッション ID を含める
  • ユーザーを識別できる情報を含める
  • 異なるサービス間で共有される

4.6. セキュリティのベストプラクティス (Security Best Practices)

サーバー側

MUST 実装

  • ✓ Cookie をクライアント IP にバインド
  • ✓ SYN データサイズを制限
  • ✓ ACK 前の SYN-ACK 応答サイズを制限
  • ✓ Cookie の有効期限メカニズム
  • ✓ レート制限

SHOULD 実装

  • ✓ サーバーキーを定期的にローテーション
  • ✓ TFO 使用パターンを監視
  • ✓ SYN Cookies との統合
  • ✓ アプリケーション層のリクエスト重複排除

クライアント側

MUST 実装

  • ✓ 冪等な操作にのみ TFO を使用
  • ✓ Cookie の安全な保存
  • ✓ 標準 TCP へのフォールバック機能