IPSec (Internet Protocol Security) est un ensemble de protocoles (couche 3 modèle OSI) utilisant des algorithmes permettant le transport de données sécurisées sur un réseau IP.
Réalisé dans le but de fonctionner avec le protocole IPv6, il fut adapté pour l'actuel protocole IP : IPv4.
Son but est d'authentifier et de chiffrer les données : le flux ne pourra être compréhensible que par le destinataire final (chiffrement) et la modification des données par des intermédiaires ne pourra être possible (intégrité).
IPsec est souvent un composant de VPN, il est à l'origine de son aspect sécurité (canal sécurisé ou tunneling).
Lors de l'établissement d'une connexion IPsec, plusieurs opérations sont effectuées :
Le protocole IKE est en charge de négocier la connexion. Ce protocole permet deux types d'authentifications, PSK (Pre-Shared Key ou secret partagé) pour la génération de clefs de sessions ou à l'aide de certificats/signatures RSA
La mise en place d'une architecture sécurisée à base d'IPsec est détaillée dans la RFC 2401.
Indépendamment des deux protocoles possibles AH/ESP, deux modes sont possibles, tunnel ou transport. Dans le cadre du mode transport, on peut choisir le protocole AH, ESP ou les deux. Dans le cadre du mode tunnel, on doit choisir entre le protocole AH ou ESP. Ce mode crée un nouveau paquet IP encapsulant celui qui doit être transporté.
Un paquet AH se présente comme suit :
0 | 1 | 2 | 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 |
Entête suivant | Taille | Réservé | |
Index du paramètre de sécurité (SPI) | |||
Numéro de séquence | |||
Données d'authentification (variable) |
Significations :
Un paquet ESP se présente comme suit :
0 | 1 | 2 | 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) | |||||||||||||||||||||||||||||||
Longueur du remplissage | Entête suivant | ||||||||||||||||||||||||||||||
Données d'authentification (variable) |
Significations :