--- 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.