49
Thomas Moegli Ing. HES Msc. Télécommunications - Réseaux et Sécurité IT Protocoles SSL/TLS

Protocoles SSL/TLS

Embed Size (px)

Citation preview

Page 1: Protocoles SSL/TLS

Thomas Moegli Ing. HES Msc. Télécommunications - Réseaux et Sécurité IT

Protocoles SSL/TLS

Page 2: Protocoles SSL/TLS

Protocoles SSL/TLSIntroduction

Page 3: Protocoles SSL/TLS

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

Page 4: Protocoles SSL/TLS

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)

Page 5: Protocoles SSL/TLS

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

Page 6: Protocoles SSL/TLS

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

Page 7: Protocoles SSL/TLS

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

Page 8: Protocoles SSL/TLS

Protocoles SSL/TLSFonctionnement

Page 9: Protocoles SSL/TLS

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

Page 10: Protocoles SSL/TLS

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

Page 11: Protocoles SSL/TLS

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

Page 12: Protocoles SSL/TLS

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

Page 13: Protocoles SSL/TLS

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

Page 14: Protocoles SSL/TLS

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

Page 15: Protocoles SSL/TLS

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

Page 16: Protocoles SSL/TLS

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

Page 17: Protocoles SSL/TLS

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

Page 18: Protocoles SSL/TLS

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

Page 19: Protocoles SSL/TLS

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

Page 20: Protocoles SSL/TLS

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

Page 21: Protocoles SSL/TLS

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

Page 22: Protocoles SSL/TLS

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

Page 23: Protocoles SSL/TLS

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

Page 24: Protocoles SSL/TLS

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

Page 25: Protocoles SSL/TLS

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

Page 26: Protocoles SSL/TLS

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

Page 27: Protocoles SSL/TLS

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

Page 28: Protocoles SSL/TLS

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

Page 29: Protocoles SSL/TLS

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

Page 30: Protocoles SSL/TLS

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

Page 31: Protocoles SSL/TLS

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

Page 32: Protocoles SSL/TLS

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

Page 33: Protocoles SSL/TLS

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

Page 34: Protocoles SSL/TLS

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

Page 35: Protocoles SSL/TLS

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

Page 36: Protocoles SSL/TLS

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

Page 37: Protocoles SSL/TLS

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

Page 38: Protocoles SSL/TLS

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

Page 39: Protocoles SSL/TLS

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

Page 40: Protocoles SSL/TLS

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

Page 41: Protocoles SSL/TLS

Thomas Moegli

Protocole SSL/TLS Protocole Alert

41

Page 42: Protocoles SSL/TLS

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

Page 43: Protocoles SSL/TLS

Thomas Moegli

Protocole SSL/TLS Reprise de session existante

43

CLIENT

SERVEUR

1 - ClientHello

2 - ServerHello

3 - ChangeCipherSpec

4 - Finished

5 - ChangeCipherSpec

6 - Finished

Page 44: Protocoles SSL/TLS

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

Page 45: Protocoles SSL/TLS

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

Page 46: Protocoles SSL/TLS

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

Page 47: Protocoles SSL/TLS

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

Page 48: Protocoles SSL/TLS

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

Page 49: Protocoles SSL/TLS

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