Aller au contenu principal

Annexe A. Comparaison avec les TCP Cookies (SYN Cookies)

Cette annexe compare en détail les mécanismes TCP Fast Open (TFO) et TCP SYN Cookies, afin d'aider à comprendre leurs objectifs différents et leurs cas d'utilisation.

A.1. Vue d'ensemble (Overview)

Bien que TFO et les SYN Cookies utilisent tous deux le concept de « cookie », ils servent des objectifs complètement différents :

TFO (TCP Fast Open) :
Objectif : réduire la latence de connexion, améliorer les performances
Mécanisme : cookie pré-alloué, permet les données SYN
État : avec état (cookie mis en cache)

SYN Cookies :
Objectif : défense contre les attaques SYN Flood, protection du serveur
Mécanisme : réponse sans état, informations encodées dans l'ISN
État : sans état (ne sauvegarde pas l'état SYN-RECEIVED)

A.2. Comparaison des objectifs de conception (Design Goals Comparison)

TCP Fast Open (TFO)

Objectifs principaux :

  1. Optimisation des performances : réduire la latence d'établissement de connexion TCP
  2. Compatibilité ascendante : coexister avec les implémentations TCP existantes
  3. Sécurité : ne pas réduire la sécurité de TCP

Cas d'utilisation :

  • Dans des conditions réseau normales
  • Lorsque le client et le serveur supportent tous deux TFO
  • Applications sensibles à la latence (Web, API)

TCP SYN Cookies

Objectifs principaux :

  1. Défense contre les SYN Flood : résister aux attaques DoS
  2. Conception sans état : ne pas consommer de ressources serveur
  3. Mesure d'urgence : activation automatique en cas d'attaque

Cas d'utilisation :

  • Pendant les attaques SYN Flood
  • Lorsque les ressources du serveur sont sous pression
  • Comme mécanisme de protection de dernier recours

A.3. Comparaison des mécanismes techniques (Technical Mechanisms)

Cookie TFO :

# Pré-généré, stocké de manière persistante
TFO_Cookie = Encrypt(ServerSecret, ClientIP || Timestamp)

Caractéristiques :
- Généré activement par le serveur et envoyé au client
- Le client met en cache le cookie pour les connexions suivantes
- Le cookie a une durée d'expiration explicite (heures à jours)
- Utilise des algorithmes de chiffrement robustes (par exemple AES-128)

SYN Cookie :

# Calculé dynamiquement et encodé dans l'ISN, pas besoin de stockage
SYN_Cookie = Hash(ServerIP, ServerPort, ClientIP, ClientPort,
Timestamp, ServerSecret) + MSS_encoding

Caractéristiques :
- Calculé instantanément à la réception du SYN
- Encodé dans le numéro de séquence initial (ISN)
- Durée de validité très courte (ordre de la minute)
- Utilise des fonctions de hachage rapides

Gestion de l'état

Gestion de l'état TFO :

Client :
├─ Met en cache le cookie pour chaque serveur
├─ Suit la durée d'expiration du cookie
└─ Stocké dans un stockage persistant (par exemple disque)

Serveur :
├─ État de connexion TCP normal (TCB)
├─ Vérifie le cookie reçu
└─ Optionnel : suit les statistiques d'utilisation des cookies

Gestion de l'état SYN Cookies :

Client :
└─ Aucun traitement spécial requis (TCP standard)

Serveur :
├─ Ne crée pas d'état SYN-RECEIVED
├─ Vérifie le numéro de séquence retourné dans l'ACK
└─ Crée l'état ESTABLISHED uniquement après vérification réussie

Flux d'établissement de connexion

Établissement de connexion TFO :

Client                                Serveur
| |
| SYN + cookie TFO + données |
|---------------------------------->|
| | (vérification du cookie, acceptation des données)
| | (création TCB, entrée dans SYN-RECEIVED)
| SYN-ACK (+ données optionnelles) |
|<----------------------------------|
| |
| ACK |
|---------------------------------->|
| | (entrée dans ESTABLISHED)

Avantage : économie de 1 RTT, données transmissibles pendant la poignée de main

Établissement de connexion SYN Cookies :

Client                                Serveur
| |
| SYN |
|---------------------------------->|
| | (calcul du SYN Cookie)
| | (pas de création de TCB)
| SYN-ACK (ISN = SYN Cookie) |
|<----------------------------------|
| |
| ACK (ACK = ISN + 1) |
|---------------------------------->|
| | (vérification du SYN Cookie)
| | (création TCB, entrée dans ESTABLISHED)

Avantage : sans état, ne consomme pas de mémoire, résiste aux SYN Flood

A.4. Comparaison des fonctionnalités (Feature Comparison)

FonctionnalitéTFOSYN CookiesRemarque
Objectif principalOptimisation des performancesProtection de sécuritéIntentions de conception différentes
Transmission de données SYN✓ Supporté✗ Non supportéFonctionnalité centrale de TFO
Type d'étatAvec étatSans étatL'absence d'état est la clé des SYN Cookies
Latence de connexionRéduite de 1 RTT3-way standardAvantage de performance TFO
Ressources serveurConsommation normaleTrès faible consommationLes SYN Cookies économisent les ressources
Conservation des options TCPComplèteMSS uniquementLimitation des SYN Cookies
Mise à l'échelle de fenêtre✓ Supporté✗ LimitéLes SYN Cookies perdent des options
Support SACK✓ Supporté✗ LimitéIdem
Option d'horodatage✓ Supporté✗ LimitéIdem
Support ECN✓ Supporté✗ LimitéIdem
Durée de validité du cookieHeures-joursMinutesCookie TFO persistant
Cache côté client✓ Requis✗ Non requisTFO nécessite le support client
Protection contre les attaquesModéréeTrès forteSYN Cookies conçus pour la défense
Complexité de déploiementModéréeFaibleSYN Cookies plus simples

A.5. Comparaison de l'impact sur les performances (Performance Impact)

Dans des conditions normales

TFO :

Première connexion :
Latence : 1,5 RTT (identique au TCP standard)

Connexions suivantes :
Latence : 0,5 RTT (économie de 1 RTT)
Amélioration des performances : 15-40 % (requêtes HTTP)

SYN Cookies :

Toutes les connexions :
Latence : 1,5 RTT (identique au TCP standard)

Effets secondaires :
- Perte des options TCP (mise à l'échelle de fenêtre, SACK, etc.)
- Peut affecter les performances des connexions longues
- Limitation de l'encodage MSS (ne peut représenter qu'un nombre limité de valeurs MSS)

Dans des conditions d'attaque

TFO :

Sous SYN Flood :
Problèmes :
- Doit encore vérifier le cookie (consomme du CPU)
- Peut accepter des données SYN (consomme de la mémoire)
- L'attaquant peut abuser du mécanisme de cookie

Contre-mesures :
- Limiter la taille des données SYN
- Limitation de débit
- Désactiver TFO si nécessaire

SYN Cookies :

Sous SYN Flood :
Avantages :
- Complètement sans état, ne consomme pas de mémoire
- Calcul rapide, faible consommation CPU
- Résistance automatique aux attaques

Compromis :
- Fonctionnalités limitées (perte des options TCP)
- Mais le service reste disponible

A.6. Comparaison de la sécurité (Security Comparison)

Considérations de sécurité TFO

Mécanismes de protection :

✓ Cookie lié à l'adresse IP
✓ Chiffrement et expiration du cookie
✓ Limitation de la taille des données SYN
✓ Limitation de la taille de la réponse SYN-ACK
✓ Limitation de débit

Menaces :
✗ Peut être utilisé pour des attaques par amplification
✗ Nécessite une surcharge de vérification supplémentaire
✗ Le cookie peut être rejoué (exigence d'idempotence)

Cas d'utilisation appropriés :

  • Environnement réseau normal
  • Clients de confiance
  • Besoin d'optimisation des performances

Considérations de sécurité SYN Cookies

Mécanismes de protection :

✓ Complètement sans état
✓ Calcul rapide
✓ Activation automatique (détection d'attaque)
✓ Ne consomme pas de ressources serveur

Limitations :
✗ Fonctionnalités limitées (perte des options TCP)
✗ Encodage MSS limité
✗ Ne supporte pas les extensions TCP

Cas d'utilisation appropriés :

  • Pendant les attaques SYN Flood
  • Ressources serveur sous pression
  • Comme mesure de protection d'urgence

A.7. Compatibilité et déploiement (Compatibility and Deployment)

Déploiement TFO

Exigences :

Client :
├─ Nécessite le support du noyau ou de l'application
├─ Nécessite un mécanisme de cache de cookies
└─ Nécessite la capacité de repli vers le TCP standard

Serveur :
├─ Nécessite le support du noyau ou de l'application
├─ Nécessite la génération et la vérification des cookies
└─ Nécessite configuration et gestion

Réseau :
└─ Les équipements intermédiaires peuvent supprimer les options TCP

État du déploiement :

  • Support Linux 3.6+
  • Support progressif des principaux systèmes d'exploitation
  • Nécessite l'activation par les applications

Déploiement SYN Cookies

Exigences :

Client :
└─ Aucune modification requise (transparent)

Serveur :
├─ Support au niveau du noyau
├─ Configurable (activation/désactivation)
└─ Généralement activé par défaut

Réseau :
└─ Complètement transparent, sans impact

État du déploiement :

  • Support par tous les principaux systèmes d'exploitation
  • Largement déployé, activé par défaut
  • Technologie mature et stable

A.8. Coexistence et coopération (Coexistence and Cooperation)

TFO et SYN Cookies peuvent coexister

Configuration recommandée :

En fonctionnement normal :
├─ TFO : activé (optimisation des performances)
└─ SYN Cookies : activés mais non déclenchés (secours)

Attaque légère :
├─ TFO : continue de fonctionner (avec limitation de débit)
└─ SYN Cookies : commencent à s'activer (connexions partielles)

Attaque sévère :
├─ TFO : désactivé ou strictement limité
└─ SYN Cookies : complètement activés (protection principale)

Fin de l'attaque :
├─ SYN Cookies : désactivation progressive
└─ TFO : réactivation

Optimisation coopérative

Stratégie :

def handle_syn(packet):
if is_under_attack():
# En cas d'attaque, priorité aux SYN Cookies
if use_syn_cookies:
return handle_with_syn_cookies(packet)

if packet.has_tfo_option():
# En fonctionnement normal, essayer TFO
if validate_tfo_cookie(packet):
return handle_tfo_connection(packet)
else:
# Échec TFO, repli vers TCP standard
return handle_standard_tcp(packet)

# Traitement TCP standard
return handle_standard_tcp(packet)

A.9. Recommandations d'utilisation (Usage Recommendations)

Quand utiliser TFO

Scénarios recommandés :

✓ Applications nécessitant une faible latence (Web, API)
✓ Scénarios avec des connexions courtes fréquentes
✓ Modèle requête-réponse
✓ Opérations idempotentes
✓ Environnement réseau de confiance

Exemples :
- Requêtes HTTP GET
- Requêtes DNS
- Appels RPC
- API en lecture seule

Scénarios déconseillés :

✗ Opérations non idempotentes
✗ Exigences de sécurité élevées (opérations sensibles)
✗ Connexions longues (faible bénéfice)
✗ Environnements non fiables

Exemples :
- Transactions financières
- Opérations d'écriture (POST/PUT/DELETE)
- Connexions longues WebSocket
- Connexions de base de données

Quand s'appuyer sur les SYN Cookies

Scénarios recommandés :

✓ Tous les serveurs exposés à Internet
✓ Sites Web à fort trafic
✓ Services susceptibles de subir des attaques DDoS
✓ Serveurs avec ressources limitées

Recommandation : activer par défaut, comme dernier recours

Scénarios déconseillés :

✗ Réseau interne (optionnel)
✗ Environnement entièrement de confiance

Note : même dans ces scénarios, l'activation est sans danger

A.10. Résumé (Summary)

Différences clés

TFO (TCP Fast Open) :
Positionnement : outil d'optimisation des performances
Compromis : sacrifie une certaine sécurité pour les performances
Déploiement : nécessite le support du client et du serveur
Effet : réduction significative de la latence

SYN Cookies :
Positionnement : outil de protection de sécurité
Compromis : sacrifie certaines fonctionnalités pour la sécurité
Déploiement : activation transparente côté serveur
Effet : défense efficace contre les SYN Flood

Relation complémentaire

TFO et les SYN Cookies ne sont pas en concurrence, mais sont complémentaires :

TFO :
"Rendre le rapide encore plus rapide" - optimiser les performances dans des conditions normales

SYN Cookies :
"Maintenir le lent utilisable" - maintenir la disponibilité en cas d'attaque

Déploiement idéal :
Activer les deux simultanément, basculer dynamiquement selon les conditions réseau

Perspectives d'avenir

Évolution du protocole :
├─ TFO peut être standardisé (de expérimental à standard)
├─ SYN Cookies continuent à s'améliorer (encodage de plus d'informations)
├─ Nouveaux protocoles (comme QUIC) supportent nativement le 0-RTT
└─ Mécanismes adaptatifs plus intelligents

Fin du document. Merci d'avoir lu la documentation technique RFC 7413 - TCP Fast Open.

Pour plus d'informations, veuillez consulter :