Les Cipher Suites (suites cryptographiques en français), sont des ensembles d’algorithmes cryptographiques utilisés pour sécuriser les connexions réseau, principalement via les protocoles SSL et TLS, qui sont la base de la sécurité pour HTTPS, ainsi que d’autres protocoles sécurisés.
Ces ensembles d’algorithmes sont tous composés de plusieurs algorithmes cryptographiques qui fonctionnent ensemble pour sécuriser les communications réseau.
Configuration des Cipher Suites
Sur Windows, la configuration des Cipher Suites se fait habituellemnt via le registre ou des outils comme IIS Crypto.
Sur Linux, on configure généralement ses algorithmes dans les fichiers de configuration des applications (exemple : ssl.conf dans Apache), ou en utilisant des variables d’environnement.
Processus de négociation des Cipher Suites
Lorsqu’une connexion TLS s’établit, un processus de négociation des Cipher Suites se déroule comme ceci :
1/ Initiation de la connexion par le client (exemple : navigateur web, client de messagerie…)
Envoi d’un message ClientHello au serveur. Ce message comporte :
- La version SSL/TLS la plus élevée supportée par le client
- Un nombre aléatoire généré par le client (utilisé plus tard pour la génération des clés de session)
- Une liste ordonnée des suites cryptographiques supportées par le client
- Les méthodes de compression supportées
- Eventuelles extensions TLS
2/ Réponse du serveur
Le serveur répond avec un message ServerHello qui inclut :
- La version SSL/TLS choisie
- Un nombre aléatoire généré par le serveur
- La suite cryptographique sélectionnée parmi celles proposées par le client
- La méthode de compression choisie
- Les extensions TLS supportées
3/ Authentification et échange de clés
- Envoi du serveur de son certificat dans un message Certificate
- Il peut envoyer un message ServerKeyExchange contenant des paramètres supplémentaires pour l’échange de clés
4/ Fin de la phase serveur
Le serveur envoie un message ServerHelloDone, indiquant qu’il a terminé sa partie de négociation initiale
5/ Réponse du client
- Vérification du certificat du serveur
- Envoi d’un message ClientKeyExchange contenant les informations nécessaires pour générer la clé de session
6/ Changement de spécification de chiffrement
Le client ainsi que le serveur envoient un message ChangeCipherSpec pour indiquer qu’ils vont commencer à utiliser les nouveaux paramètres cryptographiques négociés
7/ Finalisation
Les deux parties envoient chacun un message Finished chiffré avec les nouveaux paramètres, contenant un hash de tous les messages précédents pour vérifier l’intégrité de la négociation.
Importance des Cipher Suites
- Sécurité : Ses algorithmes assurent la confidentialité, l’intégrité et l’authentification des communications.
- Flexibilité : Larges choix d’algorithmes pour s’adapter à différents besoins de sécurité et performances.
- Comptabilité : Différents systèmes peuvent communiquer ensemble de manière sécurisée (exemple : serveurs cloud, applications mobiles, systèmes de paiement, serveurs de messagerie…)
Protocoles pouvant utiliser les Cipher Suites
- SSL (Secure Sockets Layer)
- TLS (Transport Layer Security)
- DTLS (Datagram Transport Layer Security)
- IPsec (Internet Protocol Security)
- SSH (Secure Shell)
- QUIC (Quic UDP Internet Protocol)
- MLS (Messaging Layer Security)
- SRTP (Secure Real-time Transport Protocol)
- WPA3 (Wi-Fi Protected Aceess 3)
Nommage des algorithmes cryptographiques
Les noms de ses algorithmes varient en fonction du système d’exploitation du serveur.
Sur Windows
Sur Windows, les Cipher Suites sont généralement nommées en utilisant la bibliothèque Schannel. Le format de nommage suit une convention standardisée qui inclut différents composants :
- Protocole (exemple : TLS, MLS)
- Échange de clés (exemple : RSA, ECDHE, SRP…)
- Authentification : Combinée avec l’algorithme d’échange de clés
- Chiffrement : Algorithme de chiffrement symétrique (exemple : AES, CAMELLIA, 3DES, RC4…), suivi de la taille de la clé (exemple : 128, 256…)
- Mode de chiffrement : Spécifie le mode (exemple : GCM, CBC…)
- Hachage : Indique l’algorithme de hachage utilisé pour le MAC (exemple : SHA256, MD5…)
Attention, la nomenclature des algorithmes peut changer en fonction de la version du protocole utilisé.
Liste des différents Cipher Suites pouvant être utilisés (recommandé par l’ANSSI) :
- TLS 1.2 :
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS 1.3 :
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_AES_128_CCM_SHA256
- TLS_AES_128_CCM_8_SHA256
Sur Linux
Sur Linux, ces algorithmes sont souvent gérés par OpenSSL et suivent une convention similaire, mais avec de légères différences :
- Protocole : Uniquement pour TLS 1.3 (exemple : TLS, MLS)
- Échange de clés et authentification : Généralement combinés en un seul segment (exemple : ECDHE-RSA)
- Chiffrement : Algorithme de chiffrement symétrique (exemple : AES, CAMELLIA, 3DES, RC4), suivi de la taille de la clé (exemple : 128, 256…)
- Mode de chiffrement : Spécifie le mode (exemple : GCM, CBC…)
- Hachage : Indique l’algorithme de hachage utilisé pour le MAC (exemple : SHA256, RIPEMD-160, MD5…)
Exemple de Cipher Suites pour TLS 1.2 et TLS 1.3 sur Linux :
- TLS 1.2 :
- ECDHE-RSA-AES256-GCM-SHA384
- ECDHE-ECDSA-AES256-GCM-SHA384
- DHE-RSA-AES256-GCM-SHA384
- ECDHE-RSA-CHACHA20-POLY1305
- ECDHE-ECDSA-CHACHA20-POLY1305
- TLS 1.3 :
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
Comment créer/appliquer des Cipher Suites pour le protocole TLS (Windows) ?
Pour l’exemple, nous allons appliquer les Cipher Suites au protocole TLS pour protéger les connexions réseau.
Étape 1: Activer les nouveaux protocoles TLS 1.2
si ce n’est pas déjà fait...
1. Windows + R -> Ouvrir l’éditeur de registre avec la commande : regedit
2. HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> SecurityProviders -> SCHANNEL -> Protocols
3. Créer une clé et la nommer : TLS 1.2 ou TLS 1.3 en fonction de la version de ce protocole
4. Créer 2 sous-clés dans TLS 1.2 ou TLS 1.3 : Client et Server
5. Créer dans chaque sous-clé un “DWORD (32-bits) Values”, nommer la “Enabled” et mettre sa valeur à 1.
Étape 2 : Spécifier les Cipher Suites
1. Windows + R -> Ouvrir l’éditeur de registre avec la commande : regedit
2. Se rendre : HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Cryptography -> Configuration-> Local -> SSL -> 00010002
3. Modifier la valeur de la clé “Function” par la liste des nouveaux Cipher Suites.
Étape 3: Configuration des suites de chiffrement
1. Windows -> Local Group Policy Editor
2. Se rendre : Computer Configuration -> Administrative Templates -> Network -> SSL Configuration Settings -> SSL Cipher Suite Order
3. Cliquer sur “Enable”, puis rentrer la suite de Cipher dans l’input “SSL Cipher Suites”, dans l’ordre de préférence.
Étape 4 : Application et vérification des Cipher Suites
- Redémarrer la machine virtuelle
2. Vérifier que les bons Cipher Suites sont en place avec la commande suivante (Powershell admin) : Get-TlsCipherSuite | Format-Table Name
Et voilà, vous savez désormais comment fonctionnent les Cipher Suites !
Nos développeurs Next Decision ont les compétences techniques et les environnements de travail parfaits pour répondre à vos besoins ! Contactez-nous pour nous parler de votre projet !