Le protocole SSL

Principes du protocole SSL

Conçu par Netscape, SSL est un protocole se plaçant entre la couche application et la couche transport permettant d'assurer la confidentialité, l'authentification et l'intégrité des données lors des communications.

Il peut être appliqué à des applications comme HTTP, POP, FTP,...

Sous Linux, vous pouvez aller consulter le fichier /etc/services pour connaître les numéros de port correspondants aux nouvelles implémentation de ces services au dessus de SSL.

Figure 23.6. Le protocole SSL

Le protocole SSL

Exemple de fonctionnement du protocole SSL avec un serveur WEB

En ce qui concerne le HTTP, il a été nécessaire de définir une nouvelle méthode d'accès dans les URL baptisée HTTPS pour se connecter au port d'un serveur utilisant le SSL qui porte par défaut le numéro 443.

Le mécanisme est illustré par la figure suivante :

Figure 23.7. HTTP over SSL

HTTP over SSL

1 - le navigateur fait une demande de transaction sécurisée au serveur en envoyant sa requête HTTPS://, il demande donc le certificat garantissant la clé publique du serveur.

2 - le serveur lui envoie son certificat d'authentification délivré par une autorité de certification (normalement organisme officiel). Ce certificat comporte une clé publique.

3 - Le navigateur s'assure tout d'abord que le certificat délivré est valide puis il envoie au serveur une clé secrète codée issue de la clé publique (de 56 ou 128 bits). Seul le serveur sera donc capable de décoder cette clé secrète car il détient la clé privée. Cette clé secrète ainsi créée sera utilisée pour encoder les messages (cryptographie symétrique). L'algorithme à clé secrète utilisé (ex : DES, RC4) est négocié entre le serveur et le client.

4 - Le serveur et le client possède maintenant une clé secrète partagée (la clé de session) et les échanges sont faits par l'intermédiaire de cette clé. Pour assurer l'intégrité des données, on utilise un algorithme de hash (ex : MD5, SHA). S'il y a déconnexion, une nouvelle clé de session sera négociée.

Trois remarques et le supplice est terminé puisque vous allez passer à la mise en oeuvre à travers le TP sur HTTPS :

  • On voit bien que ce mécanisme permet d'assurer la confidentialité (mécanisme de chiffrement), l'intégrité (algorithme de hash) et l'authentification (certificats).

  • Dans le schéma présenté, et à des fins de simplification, il n'a pas été pris en compte l'authentification du client. Cela est possible avec le protocole SSL même si seule l'authentification du serveur est implémentée par défaut.

  • Le chiffrement asymétrique ne sert finalement qu'à l'authentification et à transmettre la clé de session de manière sécurisée ; c'est ensuite, cette clé de session (symétrique) qui sert à chiffrer les échanges. En effet, le chiffrement symétrique est beaucoup plus rapide que le chiffrement asymétrique.