Ciphers

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Négociation TLS — choix des algorithmes
Composants Échange de clés · authentification · chiffrement · MAC
Outils openssl ciphers, nmap --script ssl-enum-ciphers
Voir aussi TLS · OpenSSL

Une suite cryptographique (cipher suite) est la combinaison d'algorithmes négociée au début d'une session TLS pour sécuriser l'échange. Une suite décrit classiquement quatre briques :

  • l'échange de clés (ECDHE, DHE, RSA…) ;
  • l'authentification du serveur (RSA, ECDSA…) ;
  • le chiffrement symétrique des données (AES-GCM, ChaCha20-Poly1305…) ;
  • la fonction de hachage / MAC (SHA-256, SHA-384…).

En TLS 1.3, l'échange de clés et l'authentification ont été sortis de la suite : celle-ci ne nomme plus que le chiffrement AEAD et le hachage (ex. TLS_AES_256_GCM_SHA384), et seuls des échanges à confidentialité persistante (ECDHE) sont autorisés.

Lister et tester les suites

# Suites supportées localement par openssl
openssl ciphers -v 'HIGH:!aNULL:!MD5'

# Vérifier la présence d'une famille d'algorithmes
openssl ciphers -v 'ECDHE'

# Tester ce qu'un serveur distant accepte réellement
nmap --script ssl-enum-ciphers -p 443 exemple.example.com

Configuration serveur

Principe : n'autoriser que TLS 1.2 et 1.3, imposer l'ordre du serveur, et ne retenir que des suites ECDHE + AEAD. Bannir SSLv2/SSLv3, RC4, DES/3DES, les suites d'export et MD5.

Apache (mod_ssl)

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder     on
SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256

Nginx

ssl_protocols             TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers               ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;

Pour produire une configuration à jour selon le niveau de compatibilité visé, s'appuyer sur le générateur Mozilla SSL Configuration puis valider le résultat (SSL Labs, testssl.sh).

Voir aussi