Cryptographie & PKI
SSL - TLS
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 43
SSL : description
SSL(Secure Socket Layer) est un protocole de sécurisation des échanges, développé
par Netscape.
Il existe plusieurs versions:
• version 2.0 développée par Netscape
• version 3.0 qui est actuellement la plus répandue
• version 3.1 baptisée TLS (Transport Layer Security, RFC 2246)
SSL fonctionne de manière indépendante par rapport aux applications qui l'utilisent. Il
est obligatoirement au dessus de la couche TCP
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 44
SSL : description
SSL permet d'assurer les services de sécurité suivants:
• confidentialité :
- algorithmes à chiffrement symétrique de blocs : DES, FORTEZZA, IDEA, 3DES, RC2 ou
AES
- algorithmes à chiffrement symétrique de flots : RC4
• intégrité :
MAC (Message Authentication Code) basés sur les fonctions de hachage :
MD5 (16 octets) ou SHA-1 (20 octets).
• authentification :
- authentification des 2 entités (authentification client facultative) basé sur des
certificats X.509,
- authentification des données grâce aux MACs.
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 45
SSL : sous-protocoles
Le protocole SSL est constitué de quatre sous-protocoles:
1 ) SSL Handshake qui permet :
- l'authentification mutuelle du client et serveur,
- la négociation des algorithmes de chiffrement, de hachage,
- l'échange des clés symétriques de chiffrement
2 ) SSL Change Cipher Spec
comprend un seul et unique message (1 octet) qui porte le même nom que le
protocole, il permet d'indiquer au protocole Record la mise en place des algorithmes de
chiffrement qui viennent d'être négociés.
3 ) SSL Application
intervient après l'émission du message ChangeCipherSpec. Il permet de garantir :
- la confidentialité à l'aide de chiffrement des données
- l'intégrité à l'aide de génération d'un condensât.
4 ) SSL Alert
génère des messages d'alerte suite aux erreurs que peuvent s'envoyer le client et le
serveur
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 46
SSL : sous-protocoles
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 47
SSL : sous-protocole SSL Handshake
• ClientHello : ce message contient:
version : version supportée la plus élevée du protocole SSL,
client_random : nombre aléatoire,
session_id : l'identificateur de session,
cipher suite : la liste des suites de chiffrement supportées,
compression methods : la liste des méthodes de compression supportées.
• ServerHello : ce message contient:
version : version retenue du protocole SSL,
Server_random : nombre aléatoire,
session_id : l'identificateur de session,
cipher suite : suite de chiffrement retenue,
compression methods : méthodes de compression retenue.
• Certificate : ce message contient soit le certificat du serveur soit du client
• ServerKeyExchange : contient le certificat de signature
• CertificateRequest : le serveur réclame un certificat au client
• ServerHelloDone : la fin de l'envoi de messages
• ClientKeyExchange : ce message contient le PreMasterSecret (PMS) crypté à l'aide
de la clé publique du serveur.
• CertificateVerify : vérification explicite du certificat du client
• Finished : fin du protocole Handshake et le début de l'émission des données
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 48
SSL : sous-protocole SSL Handshake
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 49
SSL : sous-protocole SSL Alert
Les erreurs fatales sont:
• bad_record_mac : réception d'un MAC erroné
• decompression_failure : les données appliquées à la fonction de compression sont
invalides
• handshake_failure : impossibilité de négocier les bons paramètres
• illegal_parameter : un paramètre échangé au cours du protocole Handshake ne
correspondait pas avec les autres paramètres
• unexpected_message : message non reconnu.
Les warnings sont :
• bad_certificate : le certificat n'est pas bon
• certificate_expired : certificat périmé
• certificat_revoked : certificat révoqué
• certificat_unknown : certificat invalide pour des raisons précisés au dessus
• close_notify : la fin d'une connexion
• no_certificate : réponse négative à une demande de certificat
• unsupported_certificate : le certificat reçu n'est pas reconnu
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 50
SSL : déroulement d’un échange
Les échanges définis par le protocole SSL se déroulent en 3 phases:
1°) authentification du serveur
2°) authentification du client (optionnelle)
3°) chiffrage symétrique et authentification du contenu échangé
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 51
SSL : négociation
1°) Le client envoie un message "ClientHello" message (SSL Handshake) :
• donne la version de SSL supportée la plus élevée
• un nombre aléatoire
• une liste de méthodes de chiffrement et de hachage
• une liste de méthodes de compression
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 52
SSL : négociation
La suite d'algorithmes cryptographiques pour assurer la sécurité des échanges est
exprimée sous la forme : SSL_X_WITH_Y_Z où :
X désigne l'algorithme utilisé pour l'échange de clés : RSA ou Diffie-Hellman
Y désigne l'algorithme de chiffrement
Z désigne l'algorithme de hachage
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 53
SSL : négociation
2°) Le serveur répond avec un message "ServerHello" qui contient :
• La version de SSL choisie
• Un nombre aléatoire
• La méthode de chiffrement choisie
• La méthode de compression choisie
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 54
SSL : négociation
3°) Le serveur envoie son certificat (au format X.509) via un message « Certificate » :
3 bis°) Le serveur peut demander un certificat au client en utilisant la méthode
« CertificateRequest ». Ainsi les deux parties sont authentifiées.
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 55
SSL : négociation
4°) Le serveur envoie un message ServerHelloDone indiquant la fin de la négociation
« Handshake » :
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 56
SSL : négociation
5°) Le client répond avec un message "ClientKeyExchange" qui peut contenir un
PreMasterSecret (chiffré avec la clé publique du serveur), une clé publique ou rien
(dépend de l'algorithme de chiffrement sélectionné) :
Le client et le serveur utilisent les nombres aléatoires et le PreMasterSecret pour
calculer un secret commun appelé le « master secret ».
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 57
SSL : négociation
6°) Le client envoie alors un message « ChangeCipherSpec » essentiellement pour
annoncer au serveur qu'a partir de cet instant tous les échanges seront cryptés :
7°) Puis le client envoie un message "Encrypted Handshake Finished Message"
contenant un hash et un MAC réalisé sur les messages de type Handshake
précédemment envoyés.
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 58
SSL : négociation
8°) Le serveur tente de déchiffrer le message "Encrypted Handshake Finished
Message" puis de vérifier le code hash et MAC. Si le déchiffrement échoue la
transaction est considérée en échec et elle est arrêtée. Sinon le serveur envoie un
message « ChangeCipherSpec »
9°) Puis le serveur envoie le message « Encrypted Handshake Finished Message ». Le
client réalise alors la même opération de vérification.
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 59
SSL : négociation
10°) L’échange de données commence alors ….
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 60
SSL : négociation
Laurent DURAND (ADOMIA - [Link]) - Cours ITIN 2007 61