Upload
thomas-moegli
View
1.437
Download
2
Embed Size (px)
Citation preview
Thomas Moegli Ing. HES Msc. Télécommunications - Réseaux et Sécurité IT
Protocoles SSL/TLS
Protocoles SSL/TLSIntroduction
Thomas Moegli
๏ Définition ๏ SSL : Secure Socket Layer ๏ TLS : Transport Layer Security
๏ SSL/TLS offrent les services suivants : ๏ Confidentialité et intégrité des échanges
๏ Authentification du serveur
๏ Authentification du client (optionnel)
๏ SSL/TLS assurent la protection de plusieurs protocoles applicatifs (HTTP, FTP, SMTP, POP, …)
๏ Les dernières versions assurent également les communications UDP
๏ SSL/TLS est asymétrique ๏ Deux rôles distincts : client et serveur ๏ Côté client : logiciel SSL/TLS, navigateur Web gérant SSL/TLS
๏ Côté serveur : serveur Windows ou boîtier spécialisé
Protocoles SSL/TLS
3
Thomas Moegli
๏ Couche réseau (Couche 3) : Protocole IPSec ๏ Transparent pour les couches supérieures ๏ Filtrage du trafic au niveau du réseau
๏ Couche Transport : SSL/TLS ๏ Couche Applicative : Kerberos, S/MIME, PGP, SET
Protocoles SSL/TLS Modèle OSI et Sécurité
4
IP IPSecTCP
HTTP FTP SMTP
Réseau (3)
IPTCP
HTTP FTP SMTP
SSL/TLS
IPTCP
SMTPKerberos
UDP
S/MIME PGP
HTTP
SET
Transport (4)
Application (7)
Thomas Moegli
๏ Originaire du navigateur Web Netscape ๏ 1994 : Premières tentatives de mettre en place un
canal sécurisé pour l’échange de données confidentielles
๏ Développement du protocole SSLv1 (peu diffusé) puis SSLv2 (1995)
๏ Souffre d’un certain nombre de défauts importants en matière de sécurité
๏ 1995 : SSLv3 ๏ Correction de failles conceptuelles importantes ๏ 2014 : Bannissement du protocole suite à la
publication d’une faille appelée POODLE
๏ Microsoft, de son côté, a développé un protocole relativement proche : PCT (Private Communication Technology) qui sortit fin 1995
Protocoles SSL/TLS Historique
5
Thomas Moegli
๏ 1996 : l’IETF souhaita normaliser un protocole de type SSL (idée de converger les protocoles de Netscape et Microsoft) ๏ Mise en place d’un groupe de travail TLS (Transport Layer Security)
๏ Janvier 1999 : Publication dans la RFC 2246 du protocole TLS v1.0 ๏ TLSv1.0 = SSLv3.1
๏ Avril 2006 : Publication dans la RFC 4346 du protocole TLS v1.1
๏ Août 2008 : TLS v1.2 (RFC 5246) ๏ Les différentes entre TLS et SSL sont suffisantes pour que les protocoles ne soient pas directement interopérables ๏ Les navigateurs Web savent utiliser les deux protocoles (TLS v1.2 et SSLv3)
๏ Ocobre 2015 : Draft de TLS 1.3
Protocole SSL/TLS Historique
6
Thomas Moegli
๏ Boite à outils cryptographiques qui offre ๏ Une bibliothèque de programmation en C pour réaliser des applications
client/serveur sécurisées s’appuyant sur SSL/TLS ๏ libcrypto : Librarie pour les algorithmes cryptographiques ๏ libssl : Librairie implémentant le protocole TLS
๏ Commande (openssl) permettant ๏ Création de clefs RSA, DSA (Signature) ๏ Création de certificats X509 ๏ Calcul d’empreintes (MD5, SHA, RIPEMD160, …) ๏ Chiffrement et déchiffrement (DES, IDEA, RC2, RC4, Blowfish, …) ๏ Réalisation de tests de clients et serveurs SSL/TLS ๏ Signature et chiffrement de courriers (S/MIME)
๏ Présent dans de très nombreuses implémentations (Wikipedia, Google, Dropbox, Yahoo!, Flickr, …)
๏ Importante vulnérabilité majeure (Heartbleed) dévoilée en avril 2014
Protocole SSL/TLS OpenSSL
7
Protocoles SSL/TLSFonctionnement
Thomas Moegli
๏ 4 protocoles différents qui interviennent dans les différentes phases d’une communication sous SSL/TLS ๏ En-tête de message SSL :
Protocole SSL/TLS Fonctionnement
9
๏ Message SSL encapsulé dans du TCP :
Type contenu
Version majeure
Version mineure
Longueur du message
Un ou plusieurs messages de
protocoleMAC
(optionnel) Padding
1 byte 1 byte 1 byte 2 bytes
IPHeader
TCP Header
SSL Header Message(s) du protocole SSL HMAC Padding
20 bytes 20 bytes 5 octets
SSL
Thomas Moegli
Protocole SSL/TLS Architecture
10
SSL Record
Application DataHandshake ChangeCipher
Spec Alert
HTTP
TCP
SSL Record ๏ Fragmentation des messages
๏ Compression
๏ Authentification du message et mesures de protection d’intégrité
๏ Chiffrement
Thomas Moegli
Protocole SSL/TLS SSL Record
11
Donnée d’application
Fragment
Fragment compressé
HMAC
Fragment compressé
Fragment chiffré
Fragment chiffré
SSL Rec
ord
Header
Fragment
Fragment compressé
HMAC
Fragment compressé
Fragment chiffré
Fragment chiffré
SSL Rec
ord
Header
Fragment
Fragment compressé
HMAC
Fragment compressé
Fragment chiffré
Fragment chiffré
SSL Rec
ord
Header
Thomas Moegli
Handshake (valeur 22) Sert à l’établissement de la connexion
Protocole SSL/TLS Protocoles mis en oeuvre
12
ApplicationData
ChangeCipherSpec (valeur 20)
Pour signaler la mise en oeuvre de nouveaux mécanismes de sécurité
Alert (valeur 21)
Pour signifier la fin de la session ou des erreurs dans le déroulement de celle-ci
ApplicationData (valeur 23) Pour signaler les échanges sécurisés de données d’application
Heartbeat (valeur 24) Pour vérifier si une connexion entre deux équipements est encore en vie
Thomas Moegli
Protocole Handshake
๏ Etapes ๏ Négociation des algorithmes et paramètres de
sécurité ๏ Echange de la clé ๏ Authentification du serveur ๏ Authentification du client (Opt.)
๏ Les messages du protocole Handshake ont comme valeur 22
๏ Un message SSL peut contenir plusieurs messages du protocole Handshake
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
13
Message Handshake 2Message
Handshake2
Version Majeure Version Mineure Longueur2 octets
Longueur (suite) Type Handshake1 Longueur Handshake13 octets
MessageHandshake1
Type Handshake2 Longueur Handshake23 octets
Type de contenuValeur = 22
Longueur Handshake1 (suite)
ApplicationData
ApplicationData
Thomas Moegli
Protocole Handshake ๏ Messages
๏ ClientHello (valeur = 1) ๏ ServerHello (valeur = 2) ๏ Certificate (valeur = 11) ๏ ServerKeyExchange (valeur = 12) ๏ CertificateRequest (valeur = 13) ๏ ServerHelloDone (valeur = 14) ๏ CertificateVerify (valeur = 15) ๏ ClientKeyExchange (valeur = 16) ๏ Finished (valeur = 20)
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
14
1 - ClientHello2 - ServerHello
3 - Certificate3bis - ServerKeyExchange
4 - CertificateRequest5 - ServerHelloDone
6 - Certificate6bis - ClientKeyExchange
7 - CertificateVerify
8 - ChangeCipherSpec8bis - Finished
9 - ChangeCipherSpec9bis - Finished
Calcul du secret partagé
CLIENT
SERVEUR
ApplicationData
ApplicationData
Thomas Moegli
Message ClientHello
๏ Permet à un client de demander l’établissement d’une connexion sécurisée avec le serveur
๏ Eléments du message ๏ Version de SSL (3.0 pour SSL v3, 3.1 pour TLS v1.0, 3.2 pour TLS v1.1, 3.3 pour TLS v1.2)
๏ Nomenclature : X.Y (X : Version majeure, Y : Version mineure)
๏ Identifiant de session (est vide pour une session totalement nouvelle ou rempli avec l’identifiant d’une session existante)
๏ Propositions de chiffrement et de calcul d’intégrité, appelé CipherSuite ๏ Définissent également l’algorithme de négociation de clés (RSA, Diffie-Hellman, Fortezza, …)
๏ Méthodes optionnelles de compression
๏ Données aléatoires pour générer les clés afin de limiter les risques d’attaques par rejeu ๏ Nombre aléatoire composé de la combinaison et de l’heure du client (4 octets) + 28 octets délivrés par un générateur de nombres
aléatoires (total = 32 octets)
๏ Extensions éventuelles proposées par le client (par ex. algorithmes de signatures)
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
15
1
ApplicationData
ApplicationData
Thomas Moegli
Message ClientHello : Ciphers Suites
๏ Le client propose un ensemble de suites cryptographiques qu’il est capable de mettre en oeuvre
๏ Chaque suite cryptographique décrit les algorithmes et mécanismes utilisés pour les 4 fonctions suivantes :
๏ Etablissement des éléments secrets de session ๏ Authentification des parties ๏ Chiffrement des données applications ๏ Protection de l’intégrité des données applications
๏ La syntaxe est présentée ci-contre
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
16
SSL_X_WITH_Y_Z
๏ X : Désigne l’algorithme utilisé pour l’échange de clés (RSA ou Diffie-Hellman avec signatures DSS ou RSA)
๏ Y : Désigne l’algorithme de chiffrement et son mode de fonctionnement (ECB, CBC, CTR)
๏ Z : Désigne l’algorithme de hachage
1
ApplicationData
ApplicationData
Thomas Moegli
Message ClientHello : Ciphers Suites
SSL_NULL_WITH_NULL_NULL = { 0, 0 }
SSL_RSA_WITH_NULL_MD5 = { 0, 1 } SSL_RSA_WITH_NULL_SHA = { 0, 2 } SSL_RSA_EXPORT_WITH_RC4_40_MD5 = { 0, 3 } SSL_RSA_WITH_RC4_128_MD5 = { 0, 4 } SSL_RSA_WITH_RC4_128_SHA = { 0, 5 } SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0, 6 } SSL_RSA_WITH_IDEA_CBC_SHA = { 0, 7 } SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0, 8 } SSL_RSA_WITH_DES_CBC_SHA = { 0, 9 } SSL_RSA_WITH_3DES_EDE_CBC_SHA = { 0, 10 }
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
17
Suite Cipher initiale (Aucun algorithme)
Algorithme pour clé publique (Chiffrement Asymétrique)
Algorithme de hachage
Algorithme pour clé secrète (Chiffrement Symétrique)
1
ApplicationData
ApplicationData
Thomas Moegli
Message ClientHello
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
18
Longueur Handshake3 octets
Version Majeure Version Mineure
Données aléatoires (date + nombre aléatoire) = Random32 octets
long SessionID
Compression choisie Compression choisie Compression 2
Longueur des Ciphersuites2 octets
Ciphersuite N° 1
Type de contenuValeur = 1
SessionID0 à 32 octets
Ciphersuite N° 2
Compression 2 … Compression n
Ciphersuite N° X Longueur compressions Compression 1
Type HandshakeValeur = 20
1
ApplicationData
ApplicationData
Thomas Moegli
Message ServerHello
๏ Permet au serveur de répondre au Client Hello en précisant les éléments suivants : ๏ Deux cas de figure
๏ Aucune des propositions du client n’est jugée acceptable ➔ Le serveur met fin à la connexion via un message Alert
๏ Le serveur choisit une suite cryptographique parmi celles proposées par le client et émet le message ServerHello
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
19
2
ApplicationData
ApplicationData
Thomas Moegli
Message ServerHello
๏ Eléments du message ๏ Version de serveur
๏ Données aléatoires pour générer les clés afin de limiter les risques d’attaques par rejeu
๏ Identifiant de session
๏ Peut contenir le même identifiant que celui demandé par le client (en cas de reprise de session) ๏ Peut contenir une nouvelle valeur (en cas de nouvelle session)
๏ Si la valeur est vide, le serveur a refusé la reprise de session demandée par le client
๏ Une seule CipherSuite choisie parmi celles proposées par le client ๏ Les RFC décrivant TLS ne définissent pas précisément comment le serveur doit choisir la suite cryptographique.
๏ En général : le serveur parcourt la liste fournie par le client et choisit la première suite qu’il supporte (Microsoft IIS) ou le serveur parcourt sa liste de préférences et prend la première suite qui se trouve dans la liste du client (Apache)
๏ Possibilité sous Apache de forcer les préférences avec la directive SSLHonorCipherOrder
๏ Une seule méthode de compression (optionnelle) ๏ Extensions éventuelles choisies par celles proposées par le client
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
20
2
ApplicationData
ApplicationData
Thomas Moegli
Données aléatoires (date + nombre aléatoire) = Random32 octets
Type de contenuValeur = 2
Longueur Handshake3 octets
Version Majeure Version Mineure
long SessionID
SessionID0 à 32 octets
Ciphersuite retenue2 octets
Compression choisie
Message ServerHello
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
21
Type HandshakeValeur = 20
2
ApplicationData
ApplicationData
Thomas Moegli
Message Certificate
๏ Permet au serveur d’envoyer un certificat au client ๏ Le certificat contient les données nécessaires à l’établissement des clés
๏ Sinon, le message 3bis permettra de les envoyer
๏ Les certificats envoyés doivent être de type X509v3 ๏ Envoi du certificat du serveur en premier
๏ Envoi du certificat de niveau supérieur ๏ etc… ๏ Le certificat racine n’est pas envoyé car il est généralement déjà présent dans le navigateur ou le logiciel
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
22
3
ApplicationData
ApplicationData
Thomas Moegli
Message Certificate
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
23
Type Handshake(Valeur = 11)
Longueur de la chaîne de certificats Longueur…
Longueur du certificat n
Longueur
Certificat 1
…du 1er certificat
Certificat n° …
Certificat nCertificat n
Longueur Handshake3 octets
Longueur de la chaîne de certificats3 octets
Longueur…
Certificat 1
Certificat 1
Longueur du certificat n3 octets
Type de contenuValeur = 11
… du 1er certificat3 octets
Type HandshakeValeur = 20
3
ApplicationData
ApplicationData
Thomas Moegli
Message Server_Key_Exchange
๏ Envoyé que si les certificats du serveur ne contiennent pas toute les informations nécessaires pour créer un PremasterSecret
๏ Dans le cas de Diffie-Hellman, le message contient la clé publique du serveur
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
24
3bis
ApplicationData
ApplicationData
Thomas Moegli
Message Certificate Request
๏ Envoyé si le serveur souhaite également authentifier le client par un certificat
๏ Eléments du message ๏ Liste des certificats (RSA,DSS,RSA-DH,DSS-DH) que le serveur accepte ๏ (Optionnel) Liste des autorités de certifications qu’il reconnaît
๏ Est généralement utilisé dans le cadre d’un VPN avec une liste finie de clients
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
25
4
ApplicationData
ApplicationData
Thomas Moegli
Autorité 1
Autorité 2
Longueur Handshake3 octets
Longueur des types de certificats Type 1 Type 2 …
Type n Longueur des autorités de certification2 octets
Longueur autorité n° 1
Longueur autorité n° 2
…
Type de contenuValeur = 13
…
…
Message Certificate Request
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
26
Type HandshakeValeur = 20
4
ApplicationData
ApplicationData
Thomas Moegli
Longueur Handshake (valeur = 0)3 octets
Type de contenuValeur = 14
Message Server Hello Done
๏ Sert à indiquer au client que le serveur a, pour sa part, fini d’envoyer les messages de cette phase ๏ Le nombre de messages émis par le serveur dans la phase de prise de contact peut être variable
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
27
5
ApplicationData
ApplicationData
Thomas Moegli
Message Client Certificate
๏ Dans le cas où une requête CertificateRequest a été émise par le serveur, ce message permet au client d’envoyer son certificat
๏ Eléments ๏ Liste de certificats ordonnée comme pour le serveur
๏ Au moins un certificat doit émaner d’une des autorités listés dans le CertificateRequest
๏ Si le client ne dispose pas d’un certificat ๏ Avec TLS, il émet un message avec une longueur de chaîne de certificats égale à zéro
๏ Avec SSLv3, il émet un message AlertProtocol de type « warning/no certificate ».
๏ Si le serveur décide de rompre la session, il émet un AlertProtocol « Fatal Handshake failure »
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
28
6
ApplicationData
ApplicationData
Thomas Moegli
Message Client Key Exchange
๏ Il suit le message ClientCertificate si celui-ci existe, sinon c’est le premier message envoyé par le client
๏ Eléments ๏ Varie beaucoup suivant les algorithmes de clés publiques retenues par le serveur dans le message ServerHello
๏ Différences entre TLS et SSL
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
29
6bis
ApplicationData
ApplicationData
Thomas Moegli
Message Client Key Exchange
๏ Cas du RSA sous SSL :
๏ Cas du DH sous SSL :
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
30
Longueur modulo RSA2 octets
Exposant RSA
Type de contenuValeur = 12
Longueur Handshake3 octets
Modulo RSA …
… Longueur exposant RSA2 octets
…
Longueur valeur Ys
Valeur Ys …
Compression 2
…
Longueur valeur p Diffie-Hellman2 octets
Type de contenuValeur = 12
Longueur Handshake3 octets
Valeur p
… Longueur valeur g …
…
Type HandshakeValeur = 20
Type HandshakeValeur = 20
6bis
ApplicationData
ApplicationData
Thomas Moegli
Message Certificate Verify
๏ N’est envoyé que si un certificat client a été envoyé du client au serveur par un message ClientCertificate et que le certificat possède des capacités de signature
๏ La signature (MD5, SHA) permet de signer tous les messages (de type Handshake) échangés entre le client et le serveur depuis le ClientHello
๏ Etapes ๏ Le client utilise la clé privée de son certificat pour calculer cette signature. ๏ Le serveur contrôle cette signature avec la clé publique du client inclus dans son certificat ๏ Si la signature est valide, le client est bien en possession de la clé privée
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
31
7
ApplicationData
ApplicationData
Thomas Moegli
Signature
Type de contenuValeur = 15
Longueur Handshake3 octets
Message Certificate Verify
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
32
Type HandshakeValeur = 20
7
ApplicationData
ApplicationData
Thomas Moegli
Phase de calcul du secret partagé
๏ Aucun échange à ce moment-là
๏ Chacune des deux parties (client et serveur) calcule de son côté le MasterSecret à partir des éléments préalablement échangés (PremasterSecret, nombres aléatoires)
๏ MasterSecret : longueur fixe de 48 octets
๏ Secret partagé qui sert à la génération des clés de cryptage symétrique et des signatures MAC
๏ Génération dans l’ordre suivant client_write_MAC_secretserver_write_MAC_secretclient_write_keyserver_write_keyclient_write_IVserver_write_IV
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
33
ApplicationData
ApplicationData
Thomas Moegli
Phase de calcul du secret partagé
๏ Formule du MasterSecret : ๏ sm = MD5(sp || SHA(‘A’ || sp || rc || rs)) ||
MD5(sp || SHA(‘BB’ || sp || rc || rs)) ||
MD5(sp || SHA(‘CCC’ || sp | rc || rs))
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
34
๏ sm : MasterSecret
๏ sp : PreMasterSecret ๏ ‘A’ : Caractère A
๏ ‘BB’ : Caractère BB
๏ ‘CCC’ : Caractère CCC
๏ rc : Nonce Client ๏ rs : Nonce Serveur
ApplicationData
ApplicationData
Thomas Moegli
Message Client Change Cipher Specs
๏ Via ce message, le client indique au serveur que tous les échanges seront dorénavant chiffrés et/ou authentifiés selon les paramètres négociés.
๏ Message d’un seul octet
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
35
Version Majeure Version Mineure Longueur2 octets
Longueur (Suite) TypeValeur = 1
Type de contenuValeur = 20
Type HandshakeValeur = 20
8
ApplicationData
ApplicationData
Thomas Moegli
Message Client Finished
๏ Envoi d’un message chiffré Finished contenant un hachage et un code MAC couvrant tous les messages Handshake déjà échangés
๏ Message déchiffré par le serveur. Si la tentative de déchiffrement échoue, le serveur rejettera le handshake et mettra un terme à la connexion.
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
36
Type Handshake(Valeur = 20)
Longueur(valeur = 36)
Hachage MD5
Hachage SHA
Version Majeure Version Mineure Longueur3 octets, Valeur = 36
Hachage MD516 octets
Compression choisie Compression choisie Compression 2
Type HandshakeValeur = 20
Hachage SHA20 octets
8bis
ApplicationData
ApplicationData
Thomas Moegli
Message Server Change Cipher Specs
๏ Via ce message, le serveur indique au client que tous les échanges seront dorénavant chiffrés et/ou authentifiés selon les paramètres négociés.
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
37
9
ApplicationData
ApplicationData
Thomas Moegli
Message Server Finished
๏ Le serveur envoie un message chiffré Finished contenant un hachage et un code MAC qui couvre tous les messages Handshake déjà échangés.
๏ Le client procède au déchiffrement et à l’authentification du message Finished du serveur ๏ Si tout est OK, la phase Handshake est terminée. Les échanges de données peuvent commencer (Application Phase).
Protocole SSL/TLS Protocole Handshake et Change Cipher Spec
38
9bis
ApplicationData
ApplicationData
Thomas Moegli
Version Majeure Version Mineure Longueur2 octets
Données applicatives (chiffrées)
Type de contenuValeur = 23
MAC
Longueur (suite)
๏ Les données d’application sont transportées dans ce type de message ๏ Donnés chiffrées et éventuellement signées
Protocole SSL/TLS Protocole Application
39
ApplicationData
Thomas Moegli
๏ Messages ayant pour but de signaler une erreur fatale (entraînant une fermeture de session) ou une simple alerte (qui laisse à l’autre extrémité de décider ou non de la rupture de la connexion)
๏ Comprend un code d’erreur ๏ Peut également être employé pour signaler la fin normale de la phase Application
Protocole SSL/TLS Protocole Alert
40
Niveau alerteWarning (valeur = 1)Fatal (valeur = 2)
Description de l’alerteDescription de l’alerteNiveau d’alerte
1 octetWarning : Valeur = 1
Fatal : Valeur = 2
ApplicationData
Thomas Moegli
Protocole SSL/TLS Protocole Alert
41
Thomas Moegli
๏ Comme les calculs liés aux clés asymétriques prennent du temps et des ressources, SSL/TLS permet de reprendre une session déjà existante lorsque le client a de nouveau besoin d’échanger des données avec le serveur
๏ Le client reprend dans le ClientHello (1) le numéro de session en cours d’utilisation ๏ Ce numéro permet aux deux parties de conserver le même MasterSecret
๏ Les nombres aléatoires émis dans les messages ClientHello et ServerHello seront différents de la session précédente➔ Génération de clés différentes
๏ Les échanges de messages Hello sont directement suivis des messages Change CipherSpec et Finished avant de passer à la phase Data
๏ Si le serveur ne retrouve pas dans sa table la valeur SessionID du client, il lui proposera un autre identifiant de session ๏ Le client devra procéder à un Handshake complet sans reprise de session
Protocole SSL/TLS Reprise de session existante
42
Thomas Moegli
Protocole SSL/TLS Reprise de session existante
43
CLIENT
SERVEUR
1 - ClientHello
2 - ServerHello
3 - ChangeCipherSpec
4 - Finished
5 - ChangeCipherSpec
6 - Finished
Thomas Moegli
Fonctionnement de DH pour TLS
1. Le serveur doit initialement disposer (via la commande openssh, dhparam par ex.) de :
๏ p : un grand nombre premier
๏ g : un générateur, aussi appelé racine primitive modulo p (pour chaque entier a premier avec p, il existe un entier k tel que gk ≡ a (mod p)
2. Le serveur choisit un nombre aléatoire a et calcule ya = ga mod p.Après l’envoi du message Certificate, il envoie un message Server Key Exchange contenant, en clair mais authentifié par sa clé privée : ๏ La valeur aléatoire issue du message Client Hello
๏ La valeur aléatoire issue du message Server Hello
๏ les nombres p et g
๏ le résultat ya
Protocole SSL/TLS Algorithme de Diffie-Hellman
44
Thomas Moegli
Fonctionnement de DH pour TLS (suite)
3. Le client vérifie la signature et choisit un nombre aléatoire b. Il envoie yb = gb mod p dans un message Client Key
Exchange.En ayant reçu ya du serveur, il calcule (ya)b mod p = k qui constitue le secret partagé
4. Le serveur reçoit yb calcule (yb)a mod p = k qui constitue le secret partagé
Protocole SSL/TLS Algorithme de Diffie-Hellman
45
Thomas Moegli
IPsec VPN
๏ Très déployé, technologie maîtrisée
๏ Permet facilement l’extension du réseau pour des succursales
๏ Client lourd à déployer (avant la connexion) et maintenir ๏ Nécessite l’ouverture de ports supplémentaires sur le
pare-feu ๏ UDP/500 + ESP (50) + UDP/4500 + … ๏ Souvent, ces ports ne sont pas ouverts par défaut
Protocole SSL/TLS Comparaison avec IPsec
46
SSL VPN ๏ Permet d’étendre la sécurité du réseau à des personnes
externes à l’entreprise (clients, partenaires commerciaux) ๏ Simplifie l’accès aux partenaires business
๏ Propose un accès depuis quasi n’importe quel emplacement (Internet café, mobile, etc…)
๏ Souvent, le port est déjà ouvert sur les firewall ๏ Exemple : Port TCP 443
๏ Permet des portails d’accès utilisateur personnalisés ๏ Réduit les coûts d’exploitation
Thomas Moegli
Avantages
๏ Pas ou peu de logiciels à installer & maintenir sur PC
๏ Accès sécurisé aux ressources internes ๏ Intégration de policies pour vérifier l’état des client qui
se connectent ๏ Sécurité point à point (Endpoint security) avec Cisco
Secure Desktop ๏ Plusieurs niveaux d’accès
๏ Clientless – Thin Client – Thick Client
๏ Intégration facile avec les pare-feu ๏ SSL over TCP/443
Protocole SSL/TLS Avantages et Inconvénients
47
Inconvénients ๏ Moins sécurisé pour l’authentification utilisateur que
IPsec ๏ S’assurer que les certificats sont de confiance
๏ Les policies impliquent plus d’administration ๏ Solutions NAC et Endpoint security propriétaires ๏ Solutions Cisco Thin Client et Clientless nécessitent Java
JRE et support ActiveX
๏ Impossible de faire du VPN Site-to-Site
Thomas Moegli
๏ L’IANA a accordé à certaines applications des ports IP particuliers pour leur permettre de communiquer avec SSL sans interférence
Protocole SSL/TLS Protocoles applicatifs et SSL/TLS
48
Protocole non sécurisé Protocole sécurisé Port Application
HTTP HTTPS TCP 443 Transactions requête-réponse
SMTP SSMTP TCP 465 Messagerie électronique
NNTP SNNTP TCP 563 News sur le réseau Internet
LDAP SSL-LDAP TCP 636 Annuaire X.500
POP3 SPOP3 TCP 995 Accès à la boîte aux lettres
FTP FTPS (Données) TCP 989 Transfert de fichiers
FTP FTPS (Contrôle) TCP 990 Contrôle du transfert de fichiers
IMAP IMAPS TCP 991 Accès à la boîte aux lettres
Thomas Moegli
Merci de votre attention [email protected]éférences
Transport Layer Security, Wikipedia.org [https://en.wikipedia.org/w/index.php?title=Transport_Layer_Security&oldid=711145576] Les VPN : Fonctionnement, mise en oeuvre et maintenance des Réseaux Privés Virtuels, ENI Editions (J-P. Archier) Réseaux Privés Virtuels - VPN, Frameip [http://www.frameip.com/vpn/] (X. Lasserre, T. Klein, _SebF) SSL/TLS : Etat des lieux et recommandations, ANSSI : Agence nationale de la sécurité des systèmes d’information [http://www.ssi.gouv.fr/uploads/IMG/pdf/SSL_TLS_etat_des_lieux_et_recommandations.pdf] (O. Levillain)
49