Les réseaux privés virtuels (VPN : Virtual Private Network) permettent à l’utilisateur de créer un chemin virtuel sécurisé entre une source et une destination. Grâce à un principe de tunnel (tunnelling) dont chaque extrémité est identifiée, les données transitent après avoir été éventuellement chiffrées.
Le principe du VPN est basé sur la technique du tunnelling. Cela consiste à construire un chemin virtuel après avoir identifié l’émetteur et le destinataire. La source peut ensuite éventuellement chiffrer les données (on parle alors de VPN chiffrés) et les achemine en empruntant ce chemin virtuel.
Les données à transmettre peuvent appartenir à un protocole différent d’IP. Dans ce cas le protocole de tunnelling encapsule les données en rajoutant une entête. Permettant le routage des trames dans le tunnel. Le tunneling est l’ensemble des processus d’encapsulation, de transmission et de désencapsulation.
Figure 22 : Mode de fonctionnement d’un tunnel IP
Il existe quatre protocoles principaux permettant l’établissement d’un VPN :
- le protocole PPTP (Point to Point Tunneling Protocol) mis au point par la société Microsoft ;
- le protocole L2F (Layer Two Forwarding) mis au point par la société CISCO ;
- le protocole L2TP (Layer Two Tunneling Protocol) propose par l’IETF;
- le protocole IPSEC.
Le protocole PPP n’est pas un protocole permettant l’établissement d’un VPN mais il est très souvent utilisé pour transférer les informations au travers d’un VPN. PPP fut développé pour transférer des données sur des liens synchrones ou asynchrones entre deux points en utilisant HDLC comme base d’encapsulation et un Frame Check Sequence (FCS) HDLC pour la détection des erreurs. Cette liaison permet le full duplex et garantit l’ordre d’arrivée des paquets.
Une fonctionnalité intéressante de ce protocole est le multiplexage simultané de plusieurs protocoles de niveau 3 du modèle OSI.
Ce protocole encapsule des paquets IP, IPX et NetBEUI, … dans des trames PPP, puis transmet ces paquets PPP encapsulés à travers la liaison point à point. PPP est donc utilisé entre un client distant et un serveur d’accès distant.
Les protocoles de contrôle réseau (NCPs) sont des protocoles séparés qui fournissent les informations de configuration et de contrôle destinées aux protocoles de la couche réseau. PPP est conçu pour transmettre des données pour une multitude de protocoles réseau. NCP autorise la personnalisation de PPP de manière à exécuter uniquement cette tache. Chaque protocole de réseau (DECnet, IP, OSI, etc. ...) possède son propre protocole NCP.
7.1.1.B.1.b.1° - Le protocole PAP :
Le protocole d'authentification par mot de passe (PAP) est une méthode simple pour établir l'identité du site distant. Elle est semblable à la procédure login d'une session sur un serveur. Cette procédure est effectuée seulement après que la liaison ait été établie.
Dans le cadre d’une authentification utilisant le protocole PAP, le client s'authentifie auprès du serveur en lui envoyant un paquet « Authentication-Request » contenant l'identité du client et le mot de passe associé.
Le serveur compare ces données à celle contenu dans son fichier d'authentification.
L'inconvénient de cette technique est que le mot de passe transite « en clair » sur la liaison.
7.1.1.B.1.b.2° - Le protocole CHAP :
Dans le cadre de l’utilisation du protocole CHAP, le serveur envoie au client un paquet contenant un challenge (mot de 16 bits) défini aléatoirement et son nom. Le client récupère dans sa table définie localement, à l'aide du nom du serveur, le secret correspondant. Le client combine le secret approprié avec le challenge, chiffre ce résultat et le résultat du chiffrement est retourné au serveur avec le nom du client. Le serveur effectue alors les mêmes opérations et si les deux résultats sont identiques la connexion du client est acceptée.
Le protocole PPTP un protocole de niveau 2 qui encapsule des trames PPP dans des datagrammes IP afin de les transférer sur un réseau IP. PPTP permet le chiffrement des données PPP encapsulées mais aussi leur compression.
Le schéma suivant montre comment un paquet PPTP est assemblé avant d’être transmis par un client distant vers un réseau cible.
Figure 23 : La transmission d’informations via PPTP
Le protocole d'authentification dans Microsoft PPTP est le protocole d'épreuve/réponse de Microsoft (MS-CHAP) et le protocole de chiffrement est le chiffrement Point to Point de Microsoft (MPPE).
A l’issue de la cryptanalyse de Microsoft PPTP et la révélation publique de ses faiblesses importantes, Microsoft a mis à jour ses protocoles. La nouvelle version s'appelle MS-CHAP version 2 (MS-CHAPv2) ; l'ancienne version a été renommée MS-CHAP version 1.
Les changements les plus importants de MS-CHAPv1 vers MS-CHAPv2 sont:
- le hachage faible LAN Manager n'est plus transmis en même temps que le hachage Windows NT plus fort. Cet envoi en deux temps permet d'éviter que des casseurs automatiques de mots de passe, comme Lophtcrack ne cassent le premier hachage et d'utiliser l'information obtenue pour casser le hachage plus fort Windows NT. En effet, dans MS-CHAPv1, deux valeurs parallèles de hachage étaient transmises par le client au serveur : le hachage LAN Manager et le hachage Windows NT : il s'agissait de deux hachages différents d'un même mot de passe ;
- un système d'authentification pour le serveur a été introduit, afin d'empêcher des serveurs malicieux de se faire passer pour des utilisateurs légitimes ;
- les paquets d'échange de mots de passe de MS-CHAPv1 ont été remplacés par un unique paquet d'échange dans MS-CHAPv2. Ceci afin d'empêcher l'attaque active de détournement (cf. spoofing) des paquets d'échec de MS-CHAP ;
- le protocole MPPE utilise des clefs uniques dans chaque direction, afin d'empêcher l'attaque cryptanalytique triviale du XOR de chaque flux dans chaque direction qui supprime les effets du chiffrement.
Ces changements corrigent les faiblesses majeures de sécurité du protocole originel : l'inclusion d'une fonction de hachage LAN Manager et l'utilisation de la même clef de chiffrement à plusieurs reprises. Toutefois, beaucoup de problèmes de sécurité restent sans correction, comme par exemple la protection du client lui-même ou le fait que la clef de chiffrement dispose de la même entropie que le mot de passe de l'utilisateur ou encore le fait qu'assez de données soient transmises sur la ligne et permettent à des attaquants de réaliser des attaques de chiffrement et comparaison.
Ceci dit, Microsoft n'a visiblement pas seulement profité de cette opportunité que pour corriger quelques faiblesses cryptographiques dans leur implémentation de PPTP, mais aussi pour améliorer la qualité de son code. La nouvelle version est beaucoup plus robuste contre les attaques de déni de service et ne laisse plus filtrer d'informations au sujet du nombre de sessions VPN actives.
Le protocole L2F est un protocole développé par Cisco, Northern Telecom et Shiva. Il est décrit dans la RFC 2341.
Le protocole L2F est un protocole de niveau 2 qui permet à un serveur d’accès distant de véhiculer le trafic sur PPP et transférer ces données jusqu’à un serveur L2F (routeur). Ce serveur L2F désencapsule les paquets et les envoie sur le réseau.
Il faut noter que contrairement à PPTP et L2TP, L2F n’a pas besoin de client.
Le fonctionnement d’une communication basée sur le protocole L2F s’appuie :
- sur la création d’un tunnel L2F entre les deux routeurs distants ;
- sur une connexion PPP entre le client distant et le routeur distant que celui-ci fait suivre au serveur d’accès distant via le tunnel L2F.
Ce mode de fonctionnement peut être résumé par le schéma ci-dessous :
Figure 24 : Mode de fonctionnement du protocole L2F
Ce protocole est progressivement remplacé par le protocole L2TP.
Le protocole L2TP (Layer 2 Tunneling Protocol), développé à partir du protocole point à point PPP, est sans conteste l'une des pierres angulaires des réseaux privés virtuels d'accès. Il rassemble en effet les avantages de deux autres protocoles L2F et PPTP. L2TP est une norme préliminaire de l'IETF (Engineering Task Force) actuellement développée et évaluée conjointement par Cisco Systems, Microsoft, Ascend, 3Com et d'autres acteurs clés du marché des réseaux.
Le protocole L2TP est un protocole réseau qui encapsule des trames PPP pour les envoyer sur des réseaux IP, X25, relais de trames ou ATM. Lorsqu’il est configuré pour transporter les données sur IP, le protocole L2TP peut être utilisé pour faire du tunnelling sur Internet. Dans ce cas, le protocole L2TP transporte des trames PPP dans des paquets IP. La maintenance du tunnel est assurée à l’aide de messages de commandes au format L2TP tandis que le protocole UDP est utilisé pour envoyer les trames PPP au sein de trames L2TP.
Le mode de fonctionnement est le suivant :
Figure 25 : Mode de fonctionnement du protocole L2TP
7.1.1.B.4.a.1° - Les concentrateurs d’accès L2TP :
Les concentrateurs d’accès L2TP (ou LAC, L2TP Access Concentrateur) peuvent être intégrés à la structure d'un réseau commuté comme le réseau téléphonique commuté (RTC) ou encore associés à un système d'extrémité PPP prenant en charge le protocole L2TP.
Le rôle du concentrateur d'accès LAC se limite à fournir un support physique qui sera utilisé par L2TP pour transférer le trafic vers un ou plusieurs serveurs réseau L2TP (LNS). Il assure le fractionnement en canaux pour tout protocole basé sur PPP. Le concentrateur d’accès LAC joue le rôle de serveur d’accès : il est à l’origine du tunnel et est responsable de l’identification du VPN.
7.1.1.B.4.a.2° - Les serveurs réseaux L2TP :
Les serveurs réseau L2TP ou LNS, peuvent fonctionner sur toute plate-forme prenant en charge la terminaison PPP. Les serveurs réseaux L2TP gèrent le protocole L2TP côté serveur.
Les serveurs LNS sont les émetteurs des appels sortants et les destinataires des appels entrants. Ils sont responsables de l’authentification du tunnel.
Le mode de fonctionnement peut être résumé par le schéma ci-dessous :
Figure 26 : Mode de fonctionnement implémentation protocole L2TP