4. セキュリティに関する考慮事項 (Security Considerations)
TCP Fast Open はハンドシェイク中にデータを転送するメカニズムを導入しており、新たなセキュリティ上の課題をもたらします。本章ではこれらの脅威と対応する防護措置を詳しく分析します。
4.1. 攻撃の脅威概要 (Attack Threats Overview)
主要な脅威カテゴリ
- 増幅攻撃 (Amplification Attacks)
- リソース枯渇攻撃 (Resource Exhaustion Attacks)
- リプレイ攻撃 (Replay Attacks)
- プライバシー漏洩 (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)
Cookie をトラッキング識別子として使用することへの対策
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 へのフォールバック機能