# Encapsulating Security Payload

Encapsulating Security Payload (ou ESP), est un protocole appartenant à la suite IPsec, permettant de combiner plusieurs services de sécurité : confidentialité, authentification et intégrité.

## Présentation

Le protocole ESP permet de combiner, à volonté, plusieurs services de sécurité comme la confidentialité des données par l'utilisation d'un système de chiffrement; l'authentification du paquet et de son émetteur (l'adresse source du paquet est celle de l'émetteur); l'intégrité des données (aucune altération volontaire ou non du paquet durant le transport) et l'unicité du paquet (pas de rejeu).
Par opposition à l'Authentication Header (AH), qui ajoute seulement un en-tête supplémentaire au paquet IP, ESP chiffre les données puis les encapsule.

## Propriétés

ESP propose de l'authentification de la même manière que AH grâce à l'utilisation de données d'en-tête : Le SPI (Security Parameters Index) permet de caractériser l'association de sécurité utilisée pour la communication (SA). Les données d'authentification contiennent la valeur de vérification d'intégrité (ICV) permettant de vérifier l'authenticité des données du paquet.
Les données chiffrées sont contenues dans la partie « champ libre » (ou PayLoad Data) du paquet. Ce champ contient éventuellement aussi des données de synchronisation. Du bourrage (Padding), peut être ajouté si nécessaire. Sa longueur est spécifiée dans le champ prévu à cet effet. Enfin, le champ En-tête suivant (Next Header) indique la nature des informations contenues dans le Payload Data (champ libre).

### Description d'un paquet ESP

Un paquet ESP se présente comme suit :
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Index du paramètre de sécurité (SPI) ||||||||||||||||||||||||||||||||
| Numéro de séquence ||||||||||||||||||||||||||||||||
| Données attachées * (variable) ||||||||||||||||||||||||||||||||
| | | | | | | | | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) | Remplissage (0-255 octets) |
| | | | | | | | | | | | | | | | | Longueur du remplissage | Longueur du remplissage | Longueur du remplissage | Longueur du remplissage | Longueur du remplissage | Longueur du remplissage | Longueur du remplissage | Longueur du remplissage | En-tête suivant | En-tête suivant | En-tête suivant | En-tête suivant | En-tête suivant | En-tête suivant | En-tête suivant | En-tête suivant |
| Données d'authentification (variable) ||||||||||||||||||||||||||||||||
Significations :

#### Index du paramètre de sécurité (SPI)

    identifie les paramètres de sécurité en fonction de l'adresse IP

#### Numéro de séquence

    un compteur qui évite les attaques par répétition

#### Données attachées

    les données à transférer

#### Remplissage

    permet d'obtenir une taille de bloc compatible avec le chiffrement

#### Longueur du remplissage

    exprimée en octets

#### En-tête suivant

    identifie le protocole utilisé pour le transfert

#### Données d'authentification

    contient les informations nécessaires pour authentifier le paquet