0% ont trouvé ce document utile (0 vote)
11 vues11 pages

SSL

Transféré par

Walid officiel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues11 pages

SSL

Transféré par

Walid officiel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

### Résumé global sur le **Handshake SSL/TLS** :

Le **Handshake SSL/TLS** est un processus de négociation entre un client (navigateur, application)


et un serveur pour établir une connexion sécurisée. Voici les étapes principales :

1. **Client Hello** :

- Le client envoie un message initial au serveur.

- Il contient :

- Les versions TLS/SSL prises en charge.

- La liste des **chiffrements (cipher suites)** possibles.

- Un **Session ID** (si une session précédente existe).

- Un **Client Random** (valeur aléatoire pour la clé de session).

- Les méthodes de compression possibles.

2. **Server Hello** :

- Le serveur répond au client.

- Il contient :

- La version TLS/SSL choisie.

- Le **chiffrement** et la méthode de compression sélectionnés.

- Un **Session ID** pour la session actuelle.

- Un **Server Random** (autre valeur aléatoire pour la clé).

3. **Client Finished** :

- Une fois que toutes les clés et paramètres sont établis, le client envoie un message crypté pour
confirmer que l'accord est terminé.

- Ce message est protégé par la clé de session.

4. **Server Finished** :

- Le serveur répond de manière similaire avec un message crypté pour confirmer que la connexion
est prête.

---
### Informations importantes sur ce protocole Handshake :

- **Objectif principal** : Établir une clé de session partagée entre le client et le serveur, qui sera
utilisée pour chiffrer les communications.

- **Authentification** : Le serveur présente souvent un **certificat** (ex. X.509) pour prouver son
identité au client.

- **Symétrie après Handshake** : Une fois la clé de session établie, les données échangées utilisent
un chiffrement **symétrique** (rapide).

- **Protection des données** : Le protocole garantit **confidentialité**, **intégrité** et


**authenticité** des communications.
Le protocole **ALARM** (ou généralement appelé dans des contextes comme **SSL/TLS Alert
Protocol**) est utilisé pour signaler les erreurs et les états de connexion au niveau de la couche
transport dans des protocoles comme SSL/TLS. Il permet à l'une des parties (client ou serveur)
d'envoyer une alerte à l'autre partie pour indiquer qu'il y a eu un problème ou une erreur pendant la
communication sécurisée. Cela peut être lié à des erreurs de cryptographie, de configuration ou
d'autres problèmes de session.

### Fonctionnement du protocole ALARM :

1. **Message de type Alert** : Les alertes SSL/TLS sont envoyées en utilisant un message d'alerte
spécifique dans le protocole, qui contient plusieurs informations :

- **Type d'alerte** (erreur fatale ou warning)

- **Code d'alerte** (pour identifier spécifiquement l'erreur)

2. **Format de l'alerte** :

- **Type de l'alerte** :

- **0x01** (Warning) : Indique un avertissement.

- **0x02** (Fatal Error) : Indique une erreur fatale qui interrompt la session.

- **Code d'alerte** :

- Un code d'alerte spécifique, comme "close_notify" (demande de fermer la connexion


proprement) ou "handshake_failure" (échec de l'échange de clés).

### Erreurs fatales (Fatal Errors) :

Les erreurs fatales interrompent la communication entre le client et le serveur. Elles signalent que la
session SSL/TLS ne peut pas continuer. Quelques exemples d'erreurs fatales :

- **close_notify (0x00)** : Alerte de fermeture propre de la connexion.

- **unexpected_message (0x0A)** : Message inattendu reçu.

- **bad_record_mac (0x14)** : L'authentification du message échoue (erreur liée au code


d'authentification du message).

- **handshake_failure (0x40)** : Échec de l'échange des clés ou d'un autre processus du handshake.

- **decryption_failed (0x15)** : Échec de décryptage des données envoyées.

### Avertissements (Warnings) :

Les avertissements ne provoquent pas l'interruption immédiate de la connexion, mais signalent qu'un
problème mineur ou un comportement inattendu a été détecté. Voici quelques exemples :
- **close_notify (0x00)** : Un avertissement de fermeture de la connexion (le client ou le serveur
demande à fermer la session en toute sécurité).

- **no_certificate (0x27)** : Le certificat d'un côté n'a pas été fourni ou est manquant, mais la
session peut continuer.

### Exemple d'échange d'alertes :

1. **Client envoie un message d'alerte** :

- Le client peut envoyer une alerte de type `close_notify` pour signifier qu'il veut fermer la
connexion de manière sécurisée.

2. **Serveur répond avec un message d'alerte** :

- Le serveur répond souvent avec le même type d'alerte pour indiquer qu'il accepte de fermer la
session.

### En résumé :

- **Erreurs fatales** : Interrompent immédiatement la session, signalent des problèmes critiques qui
empêchent la communication.

- **Avertissements** : Signalent des problèmes non critiques, mais permettent à la session de


continuer.
Le **protocole Record** fait partie du protocole SSL/TLS et joue un rôle fondamental dans la gestion
des échanges de données sécurisées entre le client et le serveur. Il s'assure que les données
échangées au niveau de la couche transport sont sécurisées, authentifiées, et éventuellement
compressées. Le processus d'encapsulation et de réception des paquets via le protocole Record se
compose de plusieurs étapes clés.

### Fonctionnement du protocole Record :

Le protocole **Record** encapsule les données applicatives (comme HTTP, FTP, etc.) dans des
paquets SSL/TLS afin de garantir la sécurité des échanges.

1. **Encapsulation (Processus d'envoi)** :

- Lorsque le client ou le serveur veut envoyer des données, le protocole **Record** commence par
encapsuler ces données dans un format sécurisé.

- **Compression (Optionnel)** : Avant l'encapsulation, les données peuvent être compressées pour
réduire leur taille.

- **Ajout d'un code d'authentification MAC** : Un Code d'Authentification de Message (MAC) est
ajouté pour assurer l'intégrité des données et garantir qu'elles n'ont pas été modifiées pendant le
transfert.

- **Chiffrement** : Les données (après compression et ajout du MAC) sont ensuite chiffrées à l'aide
d'un algorithme de chiffrement symétrique, qui peut être négocié lors du **handshake**.

- **Encapsulation dans un en-tête Record** : Enfin, les données chiffrées sont encapsulées dans un
en-tête de **Record** qui inclut :

- Le **type de message** (par exemple, Application Data, Handshake, Alert).

- La **longueur des données**.

- Le **checksum**.

2. **Envoi du paquet encapsulé** : Le paquet SSL/TLS contenant les données chiffrées et protégées
par MAC est ensuite envoyé au destinataire.

### Processus de réception des paquets (Décryptage et déballage) :

Lors de la réception d'un paquet SSL/TLS, le processus inverse est appliqué.

1. **Réception du paquet Record** :

- Le destinataire reçoit le paquet contenant les données sécurisées. Ce paquet comprend l'en-tête
**Record**, qui contient des informations sur le type de message, la longueur des données, et le
checksum.
2. **Vérification du checksum** :

- Avant de déchiffrer les données, le destinataire vérifie l'intégrité du paquet en contrôlant le


checksum et le **MAC** (Message Authentication Code). Si l'intégrité est violée, une erreur est
générée, et la connexion peut être fermée (selon le type d'alerte).

3. **Décryptage des données** :

- Si l'intégrité est vérifiée, les données chiffrées sont décryptées à l'aide de la clé symétrique
convenue pendant le **handshake**. Cette étape restitue les données dans leur forme originale
(avant chiffrement).

4. **Décompression (si nécessaire)** :

- Si les données ont été comprimées avant l'envoi, elles sont maintenant décompressées pour
retrouver leur taille d'origine et leur contenu.

5. **Extraction des données applicatives** :

- Une fois que le paquet SSL/TLS est décrypté et décompressé (si nécessaire), les données
applicatives (comme HTTP, FTP, etc.) sont extraites et transmises à la couche applicative pour être
traitées.

### En résumé :

- **Encapsulation** : Le protocole **Record** encapsule les données dans un paquet sécurisé, en


ajoutant une couche de chiffrement, de compression et d'authentification pour garantir leur sécurité.

- **Réception et traitement** : Le destinataire reçoit le paquet, vérifie son intégrité, le déchiffre, le


décompresse et transmet les données à la couche applicative.

- **Rôle du protocole Record** : Il garantit que les données envoyées entre le client et le serveur
sont confidentielles, authentifiées et intégralement reçues sans altération.

Ce processus est essentiel pour la sécurité des protocoles comme **SSL/TLS**, qui sont utilisés dans
des applications de sécurité courantes, telles que la navigation web sécurisée (HTTPS).
Le fonctionnement complet du protocole SSL/TLS peut être divisé en deux phases principales :
**Phase 1 (Handshake)** et **Phase 2 (Transmission de données sécurisées)**. Ces phases sont
cruciales pour établir une communication sécurisée entre le client et le serveur.

### **Phase 1 : Le Handshake SSL/TLS**

Le **Handshake** est la phase initiale où le client et le serveur échangent des informations pour
négocier les paramètres de sécurité, établir des clés de chiffrement et authentifier leur identité. Le
processus se déroule en plusieurs étapes.

#### **Étapes du Handshake SSL/TLS** :

1. **Client Hello** :

- Le client envoie un message **Client Hello** au serveur pour initier la connexion sécurisée.

- Ce message contient des informations telles que :

- La version de SSL/TLS que le client supporte.

- Les **ciphersuites** (algorithmes de chiffrement) supportées par le client.

- Une **valeur aléatoire** générée pour la session.

- Le **nom de domaine** pour lequel la connexion est effectuée.

2. **Server Hello** :

- Le serveur répond par un message **Server Hello**, qui contient :

- La version SSL/TLS sélectionnée.

- La ciphersuite choisie (parmi celles proposées par le client).

- Une **valeur aléatoire** générée par le serveur.

- Un identifiant de session (si la session est réutilisée).

3. **Authentification et échange de clés** :

- **Certificat du serveur** : Le serveur envoie son **certificat numérique**, qui contient sa clé
publique et permet au client de vérifier l'identité du serveur via une autorité de certification (CA).

- **Demande de certificat (optionnelle)** : Si le serveur exige une authentification par certificat


côté client, il envoie une demande de certificat au client.

- **Clé pré-master** : Le client génère une **clé pré-master** (clé temporaire), la chiffre avec la
clé publique du serveur et l'envoie au serveur.
4. **Clé de session (key exchange)** :

- À partir de la clé pré-master, le client et le serveur utilisent un algorithme de **génération de


clé** (par exemple, RSA ou Diffie-Hellman) pour générer une clé de session secrète partagée.

- Cette clé de session sera utilisée pour le chiffrement des données pendant la phase 2.

5. **Messages Finished** :

- Une fois que les clés sont établies, le client et le serveur envoient un message **Finished** pour
vérifier que l'échange de clés a été effectué avec succès et que la session est prête à démarrer.

#### **Objectifs de la Phase 1** :

- Négocier les paramètres de sécurité (version SSL/TLS, ciphersuites).

- Authentifier le serveur (et éventuellement le client).

- Établir une clé de session partagée pour sécuriser la communication future.

---

### **Phase 2 : Transmission de données sécurisées**

Une fois le **Handshake** terminé et la session SSL/TLS établie, la **phase 2** est responsable de la
communication sécurisée entre le client et le serveur. Cela inclut le chiffrement des données, leur
déchiffrement, et la gestion de l'intégrité des messages.

#### **Étapes de la Phase 2 : Transmission des données sécurisées** :

1. **Encapsulation des données** :

- Les données applicatives (par exemple, HTTP pour le web) sont d'abord chiffrées à l'aide de la
**clé de session** partagée.

- Les données peuvent être compressées avant d'être chiffrées pour améliorer les performances.

- Un **Message Authentication Code (MAC)** est ajouté pour garantir l'intégrité des données, afin
de détecter toute modification pendant le transfert.

2. **Transmission sécurisée** :

- Les données chiffrées (contenant le MAC et le chiffrement) sont envoyées sous forme de paquets
**Record** via le protocole SSL/TLS.

- Ces paquets sont envoyés via TCP (en général) ou d'autres protocoles réseau.
3. **Réception et décryptage** :

- Lorsque le serveur ou le client reçoit les paquets chiffrés, il les déchiffre à l'aide de la **clé de
session** partagée, vérifie l'intégrité des données (grâce au MAC), puis les transmet à la couche
applicative.

- Si l'intégrité des données est compromise (par exemple, si le MAC ne correspond pas), une alerte
est générée et la connexion peut être fermée.

4. **Fermeture de la session** :

- Lorsque la session SSL/TLS est terminée, une commande de **fermeture** de connexion est
envoyée pour assurer une terminaison propre de la session et garantir que toutes les données ont été
échangées correctement.

#### **Objectifs de la Phase 2** :

- Sécuriser la transmission des données via chiffrement et intégrité.

- Utiliser la clé de session pour le chiffrement symétrique, assurant des performances élevées.

- Assurer une gestion correcte de la session, avec des alertes et une fermeture propre.

---

### **Résumé du fonctionnement de SSL/TLS :**

1. **Phase 1 - Handshake** :

- Négociation des paramètres de sécurité, authentification du serveur (et éventuellement du client),


et génération d'une clé de session partagée pour sécuriser la communication.

2. **Phase 2 - Transmission de données** :

- Sécurisation de la communication avec un chiffrement symétrique, l'intégrité des données est


vérifiée via un MAC, et une gestion propre de la session est assurée.

Le protocole **SSL/TLS** est conçu pour garantir la **confidentialité**, **l'intégrité** et


**l'authentification** des échanges de données sur des réseaux non sécurisés comme Internet. Il est
largement utilisé dans des applications comme **HTTPS**, **FTPS**, et d'autres services sécurisés.
Voici une explication des étapes impliquées dans le processus de certification et d'identification dans
le cadre d'une connexion sécurisée SSL/TLS, en utilisant une **Certification Authority (CA)**, ainsi
que l'échange de clés pour démarrer les transactions.

### 1. **Rôle de la Certification Authority (CA)**

- **Certification Authority (CA)** est une entité de confiance qui délivre des certificats numériques.
Ces certificats sont utilisés pour authentifier l'identité d'un serveur (et parfois d'un client).

- La CA vérifie l'identité de l'entité avant de lui délivrer un certificat, qui contient généralement la
**clé publique** du serveur et son **identifiant** (nom de domaine, par exemple).

- Lorsqu'un client se connecte à un serveur, il doit vérifier que le serveur est légitime en validant son
certificat avec une CA de confiance (un certificat signé par une autorité reconnue).

### 2. **Le client demande au serveur un certificat d'identification**

- Lors du **Handshake** SSL/TLS, le client (par exemple, un navigateur web) envoie un message au
serveur pour initier la connexion sécurisée.

- Le serveur répond avec son certificat numérique. Ce certificat contient la **clé publique** du
serveur ainsi que l'identificateur du serveur (comme son nom de domaine).

### 3. **Le certificat du serveur et la validation de la clé publique**

- Le **certificat numérique** du serveur est signé par une **Certification Authority (CA)**. Le
client vérifie si la signature du certificat est valide, en utilisant les **certificats racine** de la CA
stockés dans son système. Cela garantit que le certificat appartient bien au serveur auquel le client
veut se connecter.

- Le client vérifie également que le certificat correspond bien au nom du serveur auquel il tente de
se connecter (pour éviter les attaques de type **Man-in-the-Middle**).

### 4. **Vérification de l'identité du serveur par le client**

- Après avoir validé le certificat du serveur, le client s'assure que le serveur est authentique et que la
communication sera sécurisée.

- Le client utilise la **clé publique** du serveur (présente dans le certificat) pour chiffrer une **clé
pré-master** (clé temporaire), qui sera ensuite utilisée pour établir la clé de session.

### 5. **Le serveur déchiffre et reçoit la clé de session**

- Le serveur reçoit la **clé pré-master** chiffrée, la déchiffre à l'aide de sa **clé privée** (stockée
sur le serveur), puis utilise cette clé pré-master pour générer une **clé de session** partagée avec le
client.
- Cette clé de session sera utilisée pour **chiffrer les communications** entre le client et le serveur
pendant toute la durée de la session.

### 6. **Les transactions peuvent démarrer**

- Une fois que la clé de session est établie, les communications entre le client et le serveur sont
sécurisées à l'aide de cette clé, utilisant un chiffrement symétrique (plus rapide et plus efficace que le
chiffrement asymétrique).

- À partir de ce moment, toutes les données échangées (par exemple, des informations
personnelles, des numéros de carte de crédit, etc.) seront chiffrées, garantissant ainsi la
confidentialité et l'intégrité de la communication.

### **Résumé du processus** :

1. **Le client** demande une connexion sécurisée au **serveur**.

2. Le **serveur** envoie son certificat signé par une **Certification Authority (CA)**.

3. Le **client** valide le certificat du serveur et vérifie son identité à l'aide de la **clé publique** du
serveur.

4. Le **client** génère une clé pré-master, la chiffre avec la clé publique du serveur, et l'envoie au
**serveur**.

5. Le **serveur** utilise sa **clé privée** pour déchiffrer la clé pré-master et génère une **clé de
session** partagée.

6. La **clé de session** est utilisée pour chiffrer et déchiffrer les communications entre le client et le
serveur.

Ce processus garantit que la communication est sécurisée, authentifiée et confidentielle, et qu'elle


peut débuter avec la certitude que les deux parties sont authentiques et que les données échangées
sont protégées.

Vous aimerez peut-être aussi