Add first part of IPSec course

This commit is contained in:
Yorick Barbanneau 2022-12-07 00:43:44 +01:00
parent d869be6e0b
commit 5d803fdcb9
3 changed files with 624 additions and 0 deletions

View file

@ -0,0 +1,96 @@
---
title: "Sécurité des réseaux : sécurité des échanges"
date: 2022-10-04
tags: ["TLS", "IPSEC"]
categories: ["Sécurité des réseaux", "Cours"]
---
Dans cette partie nous aborderons *TLS* (*Transport Layer Security*), *IPSec*
(*IP Security*) et les *PKI* (*Public Key Infrastructure*)
## Propriétéà assurer
Pour sécuriser un échange, il faut assurer 4 points:
1. la confidentialité: seul mon interlocuteur peut lire le message;
2. l'authenticité: le message est authentique;
3. l'intégrité: le message vient bien de mon interlocuteur, il n'a pas été
modifié par un tiers;
4. la non-répudiabilité: mon interlocuteur ne peut pas réfuter ses messages;
## IPSec
C'est un protocole ancien (~1994) créé pour répondre aux 4 propriétés vu
précédemment. Il se positionne dans la couche IP, il est donc totalement
transparent pour les couches supérieures.
IPSec est composé de plusieurs parties:
* **ESP (*Encapsulating Security Payload*)**: chiffrement;
* **AH** (*Authentication Header*): authentification de l'origine des paquets,
contrôle des accès, rejet des paquets rejoués;
* **Négociation**: établissement des paramètres de la communication
avec**IKE** (*Internet Key Exchange*).
### Les défi des attaques par rejeu
Ces types d'attaques permettent de mettre à mal des protocoles réputés fiables
comme *WPA2*. Quelle solution est implémentée dans IPSec?
Au niveau du récepteur, un identifiant de paquet et une fenêtre de réception
sont utilisés. Une **fenêtre** est une intervalle de temps bornée pendant
laquelle les identifiants sont acceptés.
Le déroulé:
* Une fenêtre de taille `W` est créée sur le récepteur;
* Le numéro d'ordre le plus élevé, noté `N`, est placé à l'extrémité droite de
la fenêtre;
* Pour tout paquet reçu avec un numéro d'ordre compris entre `N - W +1` et `N`,
la position correspondante est marquée;
* Lors de la réception d'un nouveau paquet;
* Si la position et la *MAC* sont corrects, la position est marquée
* Si la *MAC* est correct et que le numéro d'ordre est à droite de la
fenêtre, alors cette dernière est avancée de sorte que `N` prenne la
valeur du numéro d'ordre de ce paquet;
* Si la *MAC* est invalide ou que le numéro d'ordre est à gauche de la
fenêtre, **il est détruit**;
### Les modes d'utilisation
Il existe deux modes de fonctionnement : le mode tunnel et le mode transport.
#### Le mode tunnel
Deux réseaux se "parlent" via l'établissement d'un tunnel sécurisé.
![Encapsulation de la trame IP en mode tunnel](./images/ipsec_tunnel.svg)
Ce mode assure la protection du paquet IP dans sa totalité.
En mode ESP, le message doit être **chiffré**.
#### Le mode transport
Deux hôtes se "parlent" via un tunnel sécurisé. Dans ce mode, le paquet
d'origine est inclus dans un autre. Le paquet d'origine est alors chiffré et /
ou authentifié.
![Encapsulation de la trame IP en mode transport](./images/ipsec_transport.svg)
Un champ AH est ajouté pour authentifier la trame. Cette authentification est
assurée par une signature qui prend la forme:
```
hash(K || hash(K || M))
```
Ou `hash` est une foncion de hashage, `K` la clé.
En mode transport, **ESP** chiffre l'information utile du paquet, l'entête reste
inchangée. **AH** authentifie l'information utile et certaines parties de
l'entête IP.
Pour passer au travers d'un *NAT*, il est nécessaire d'encapsuler le tout dans
une trame UDP.