Vous êtes sur la page 1sur 19

SSL/TLS

Plan

• SSL/TLS

• SSL/TLS Structure

• Sous-protocoles de SSL

• Mémorisation des sessions

• Ports utilisés par SSL


Introduction à TLS/SSL

• SSL (Secure Socket Layer) est un protocole de sécurisation des échanges au niveau de la couche transpot développé par
Netscape. Il est implémenté au dessus de la couche TCP. Il a été développé en trois versions :

 v1, v2 (9 fev. 1995), v3.0 (18 nov. 1996)


 TLS (Transport Layer Security) normalisé par l'IETF est équivalent à SSL v3.1

Note : Dans Firefox 2, le support de SSL 2.0 est désactivé par défaut, en faveur de SSL 3.0.

• SSL permet d'assurer les services de sécurité suivants:

 confidentialité : assurée par les algorithmes à chiffrement symétrique de blocs comme DES, 3DES, ou AES

 intégrité : assurée par l'utilisation de MAC (Message Authentication Code) basés sur les fonctions de hachage MD5 (16
octets) ou SHA-1 (20 octets).

 authentification : En général seul le serveur est authentifié par clé publique (l’authentification du client est facultative)
Introduction à TLS/SSL

Le protocole SSL/TLS Agit comme une couche supplémentaire, permettant d'assurer la sécurité des données,

située entre la couche application et la couche transport


Les sous-protocoles de SSL
• TLS/SSL contient deux couches:

 La couche inférieure (record layer) qui applique les mesures de sécurité au données échangées

 La couche supérieure qui traite quatre types de messages


Les sous-protocoles de SSL

• Handshake : permet l'authentification mutuelle du client et serveur, la négociation des algorithmes de chiffrement, de hachage, et

l'échange des clés symétriques.

• SSL Change Cipher Spec : indique au protocole Record Layer la mise en place des algorithmes de chiffrement qui viennent d'être

négociés.

• SSL Record Layer : permet de garantir la confidentialité et l’intégrité en utilisant le cipher_spec. Si le cipher_spec est vide, alors

l’information n’est ni chiffrée ni authentifiée.

• SSL Alert : permet de signaliser à l'application des erreurs ou des avertissements concernant la session en cours.

• SSL Data Protocol : passe les données d'une application de manière transparente au record layer.
Les sous-protocoles de SSL
• Handshake (poignée de main) : permet l'authentification mutuelle du client et serveur, la négociation des algorithmes de chiffrement,
de hachage, et l'échange des clés symétriques qui assurent le chiffrement.

• les étapes du Handshake SSL :

 Client Hello : Le client envoie une requête de connexion au serveur en clair, qui inclut la plus haute version de SSL que puisse utiliser
le client.

  Server Hello : Le serveur répond en clair en envoyant son certificat numérique, qui inclut la clé publique du serveur et la plus haute
version de SSL que puisse utiliser le client.

 Authentification  : Le client vérifie le certificat du serveur et extrait la clé publique.

 Génération de la clé de session : Le client génère une clé de session, chiffre-la avec la clé publique du serveur, et l'envoie au serveur.

 Déchiffrement de la clé de session : Le serveur déchiffre la clé de session avec sa clé privée, et confirme au client qu'il peut utiliser
cette clé de session pour chiffrer les données.

 Client prêt : Le client envoie un message de confirmation au serveur, chiffré avec la clé de session, pour s'assurer que le serveur est
bien en possession de la clé de session.

 Serveur prêt : Le serveur renvoie également un message de confirmation, chiffré avec la clé de session, pour s'assurer que le client
est bien en possession de la clé de session.
Les sous-protocoles de SSL

les étapes du Handshake SSL :


Les sous-protocoles de SSL

Le protocole Change Cipher Spec (CCS):

• Ce protocole comprend un seul message (1 octet) qui

permet d'indiquer au protocole Record la mise en place des

algorithmes de chiffrement qui viennent d'être négociés

dans par le protocole Handshake.

• Il est envoyé par les deux parties.


Les sous-protocoles de SSL
Le protocole Alarm

Ce protocole spécifie les messages d’erreur que peuvent s’envoyer clients et serveurs.

• Les erreurs fatales sont : • Les warnings sont :


 Unexpected_message – indique que le message n’a pas  Close_notify – annonce la fin d’une connexion
été reconnu
 No_certificate – répond une demande de certificat s’il n’y en a
 Bad_record_mac – signale une signature MAC pas
incorrecte
 Bad_certificate – le certificat reçu n’est pas bon (par exemple,
 Decompression_failure – indique que la fonction de sa signature n’est pas valide)
décompression a reçu une mauvaise entrée
 Unsupported_certificate – le certificat reçu n’est pas reconnu
 Handshake_failure – impossible de négocier les bons
 Certificate_revoked – certificat révoqué par l’émetteur
paramètres
 Certificate_expired – certificat expiré
 Illegal_parameter – indique un champ mal formaté ou
ne correspondant à rien.  Certificate_unknown – pour tout problème concernant les
certificats et non listé ci-dessus.
Les sous-protocoles de SSL
Le protocole Record

Il assure plusieurs rôles

• Encapsulation – Permet aux données SSL et TLS d’être transmises et reconnues sous une forme homogène.

• Confidentialité – Les données sont chiffrées en utilisant les clés produites lors de la négociation.

• Intégrité et Identité – Permet de vérifier la validité des données transmises, grâce aux signatures MAC : cette signature est elle aussi générée à
l’aide des clés produites lors de la négociation.

• Segmentation – Les données sont découpées en blocs de taille inférieure 16 384 octets

• Compression – Les données sont compressées en utilisant l’algorithme choisi lors de la négociation. A partir de SSL 3.0, il n’y a plus de
compression.

• Signature MAC (0, 16 ou 20 octets) – Une signature des données est générée l’aide de la clé MAC. Comme elle exploite une fonction de
condensation, on parlera en réalité de HMAC (Hashed MAC).

• Chiffrement – Le paquet obtenu est chiffré à l’aide de la fonction définie lors de la négociation
Les sous-protocoles de SSL
Le protocole Record
Les sous-protocoles de SSL
• Exemple de trace géneré par ssldump (SSLv3/TLS network protocol analyzer)

New TCP connection #3: localhost(3638) <-> localhost(4433)


3 1 0.0738 (0.0738) C>S Handshake ClientHello
3 2 0.0743 (0.0004) S>C Handshake ServerHello
3 3 0.0743 (0.0000) S>C Handshake Certificate
3 4 0.0743 (0.0000) S>C Handshake ServerHelloDone
3 5 0.0866 (0.0123) C>S Handshake ClientKeyExchange
3 6 0.0866 (0.0000) C>S ChangeCipherSpec
3 7 0.0866 (0.0000) C>S Handshake Finished
3 8 0.0909 (0.0043) S>C ChangeCipherSpec
3 9 0.0909 (0.0000) S>C Handshake Finished
3 10 1.8652 (1.7742) C>S application_data
3 11 2.7539 (0.8887) C>S application_data
3 12 5.1861 (2.4321) C>S Alert warning close_notify
3 5.1868 (0.0007) C>S TCP FIN 3 5.1893 (0.0024) S>C TCP
Les variables d'état d'une session SSL

Une session SSL est définie par les variables suivantes:

• Session ID (identifiant de session): séquence arbitraire de 32 octets choisie par le serveur pour identifier une session.

• Peer certificate (certificat du pair): certificat X 509 du correspondant (soit pour un serveur ou un client).

• Compression method l'algorithme de compression utilisé, NULL pour l'instant (ce champ reste vide)

• Cipher spec: suite de chiffrement définit les algorithmes de chiffrement et de hachage

• MasterSecret : clé de 48 octets partagée entre le client et le serveur.


Les paramètres qui définissent une connexion
SSL
• Server_random et Client_random: deux nombres aléatoires de 32 octets, générés par le client et le serveur lors

de chaque connexion.

• Server_MAC_write_secret: clé secrète utilisée par le serveur pour calculer les MACs

• Client_MAC_write_secret: clé secrète utilisée par le client pour calculer les MACs

• Server_write_key: clé symétrique utilisée par le serveur pour le chiffrement des données.

• Client_write_key: clé symétrique utilisée par le client pour le chiffrement des données.

• Sequence number: chaque message est numéroté, l'un pour le serveur, l'autre par le client
Les ports utilisées par SSL

• SSL/TLS assurent la protection de plusieurs protocoles applicatifs (HTTP, FTP, SMTP, POP, …)
Exemple d’application
Avantages

• Assure la sécurité des communications :

 Confidentialité

 L’intégrité

 L’authentification du serveur et du client (optionnelle)

• SSL est transparent pour l'utilisateur.

• La quasi intégralité des navigateurs supporte le protocole SSL.

11
SSL / TLS: Attaques

•Attaque de type "man in th

 intercepter trafic entre deux parties avant qu'elles ne débutent une session SSL. L'intercepteur négocie alors une

session avec chaque partie et fait suivre le trafic en le déchiffrant et rechiffrant à la volée.

 E.g., dans le cas de l'utilisation du protocole HTTPS par un client web pour authentifier un serveur, l'intercepteur crée un

certificat ressemblant au certificat légitime du serveur et détourne le trafic.

 Si, malgré l'avertissement du navigateur sur le certificat, le client poursuit sa session, l'intercepteur obtiendra toutes les

infos que le client envoie au serveur sans que ce dernier ne s'en rende compte.

 ++ outils qui reproduisent cette attaque sont disponibles sur l'Internet.

Vous aimerez peut-être aussi