# Internet Tunneling Protocol

Internet Tunneling Protocol (ITP) est un protocole (couche 3 du modèle OSI) permettant le transport de données sécurisées sur un réseau IP.

## Description

Évolution du protocole IPsec, il prend contrairement à lui en charge la notion de Nat/Pat, les en-têtes IP n'étant pas utilisé pour le calcul de l'empreinte SHA-1.
Réalisé dans le but de fonctionner avec le protocole IPv6, il fut adapté pour l'actuel protocole IP : IPv4.
Son but est d'assurer l'intégrité et la confidentialité des 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é).
ITP peut être un composant de VPN, dans la continuité d'IPSEC, à l'origine de son aspect sécurité (Canal sécurisé ou tunneling).
Lors de l'établissement d'une connexion ITP, plusieurs processus sont effectuées :
* un canal d'échange de clés, sur une connexion UDP depuis et vers le port 500 (ISAKMP pour Internet Security Association and Key Management Protocol), défini dans la RFC 2408.
Sous Windows, IKE est chargé de négocier la connexion.
La mise en place d'une architecture sécurisée à base d'ITP est détaillée dans la RFC 2401.

## Les services proposés par ITP

* Identification des extrémités : cette identification mutuelle repose sur des certificats et permet à chacun de s'assurer de l'identité de son interlocuteur. Bien qu'ITP soit un protocole de niveau 3, il fournit un service d'identification des utilisateurs au travers de certificats.
* Confidentialité des données échangées : ITP permet si on le désire de chiffrer le contenu de chaque paquet IP pour éviter que quiconque ne le lise.
* Authenticité des données : ITP permet de s'assurer, pour chaque paquet échangé, qu'il a bien été émis par la bonne machine et qu'il est bien à destination de la seconde machine.
* Intégrité des données échangées : ITP permet de s'assurer qu'aucun paquet n'a subi de modification quelconque (attaque dite active) durant son trajet.
* Protection contre les écoutes et analyses de trafic : ITP permet de chiffrer les adresses IP réelles de la source et de la destination, mais pas tout l'en-tête IP correspondant. C'est le mode de tunneling, qui empêche tout attaquant à l'écoute d'inférer des informations sur les identités réelles des extrémités du tunnel, sur les protocoles utilisés au-dessus d'ITP, sur l'application utilisant le tunnel (timing-attacks et autres).
* Protection contre le rejeu : ITP permet de se prémunir contre les attaques consistant à capturer un ou plusieurs paquets dans le but de les envoyer à nouveau (sans pour autant les avoir déchiffrés) pour bénéficier des mêmes avantages que l'envoyeur initial.
* Masquage d'adresse : ITP ne chiffre jamais la totalité de l'en-tête IP, ce protocole reste donc compatible avec les translations d'adresse (NAT) et de port (PAT). Cette évolution longtemps attendue d'IPSec est native dans le protocole ITP.

## Établissement de la connexion

L'établissement de la connexion s'effectue en trois étapes :
* Le poste client ITP envoie une demande de connexion au serveur ITP. Cette demande liste les protocoles de chiffrement asymétrique (pour l'échange de la clé de session), de chiffrement symétrique (pour le chiffrement des données pendant la session) et de hachage (pour la signature des messages) utilisables pour la connexion. La demande contient le certificat du client.
* Le serveur ITP vérifie le certificat du client auprès de l'autorité de certification qui l'a émis. Le serveur vérifie ensuite dans ses ACL si le client ITP est autorisé à établir une connexion sécurisé. Puis il choisit un triptyque de protocoles et répond au client ITP. La réponse inclut le certificat du serveur et la moitié de la clé de session chiffrée avec la clé publique du certificat client.
* Le client ITP vérifie le certificat du serveur. Puis le client envoie au serveur ITP la seconde moitié de la clé de session chiffrée avec la clé publique du serveur.
Le client ITP et le serveur ITP décryptent chacun la moitié de clé de session reçue et ils la complètent avec la moitié de clé de session envoyée. Le tunnel ITP est établi, la communication sécurisée peut commencer.

## Conclusion

ITP est donc un assemblage de plusieurs protocoles et mécanismes, ce qui le rend techniquement très complexe. Pour toute question précise à son sujet, consulter les RFCs correspondantes.
ITP est d'autre part en constante évolution car il est soutenu par une grande population technique et scientifique. De nouvelles RFCs sont publiées régulièrement sur ce protocole.
Il est bon de savoir par exemple qu'ITP permet d'identifier les personnes au travers de certificats. Ce protocole peut donc servir à sécuriser des transactions. De ce point de vue, ITP s'annonce comme un concurrent sérieux de SSL (maintenant TLS).