Académique Documents
Professionnel Documents
Culture Documents
Plan
• SSL/TLS
• SSL/TLS Structure
• Sous-protocoles de 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 :
Note : Dans Firefox 2, le support de SSL 2.0 est désactivé par défaut, en faveur de SSL 3.0.
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,
La couche inférieure (record layer) qui applique les mesures de sécurité au données échangées
• Handshake : permet l'authentification mutuelle du client et serveur, la négociation des algorithmes de chiffrement, de hachage, et
• 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
• 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.
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.
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
Ce protocole spécifie les messages d’erreur que peuvent s’envoyer clients et serveurs.
• 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)
• 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)
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
Confidentialité
L’intégrité
11
SSL / TLS: Attaques
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
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.