web-dev-qa-db-fra.com

Score parfait des laboratoires SSL avec nginx et TLS 1.3?

J'ai créé une configuration nginx qui a obtenu un score parfait sur Qualsys SSL Labs en utilisant uniquement TLS v1.2, et j'aimerais essayer d'obtenir un score parfait en utilisant à la fois TLS v1.2 et v1.3.

Considérez cet extrait de la version du nginx.conf qui fait partie du score A + et 100%:

ssl_protocols TLSv1.2;
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;

Il se plaint de quelques suites de chiffrement, mais il donne toujours un score par ailleurs parfait:

enter image description hereenter image description here

Maintenant, si j'ajoute TLS v1.3 au mix comme changement de configuration seulement, le score change.

ssl_protocols TLSv1.2 TLSv1.3;

La force de chiffrement est notée à 90%: enter image description here

Je suppose qu'il est fou de ces faibles chiffres de la CBC:

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)   ECDH secp384r1 (eq. 7680 bits RSA)   FS   WEAK 256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)   ECDH secp384r1 (eq. 7680 bits RSA)   FS   WEAK    256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x6b)   DH 4096 bits   FS   WEAK   256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39)   DH 4096 bits   FS   WEAK

Il n'y a pas vraiment un bon moyen de supprimer parfaitement les chiffres du mode CBC, mais peut-être que l'exclusion de SHA1, SHA256 et SHA384 fonctionnera. La ligne de configuration devient:

ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL:!SHA1:!SHA256:!SHA384;

Regardons le nouveau score: enter image description here

La force de la suite de chiffrement est toujours de 90%.

Il n'est plus fou de la force des suites de chiffrement: enter image description here

Mais apparemment, il est mécontent des poignées de main défaillantes qui ont fonctionné auparavant: enter image description here

Ce qui nous amène à ... les mêmes suites de chiffrement qui sont requises pour une négociation réussie pour les appareils/applications plus anciens sont répertoriées comme "faibles" et passent lorsque seul TLS 1.2 est activé. En quelque sorte, l'activation de TLS 1.3 fait échouer ces mêmes chiffrements faibles qui passent avant de commencer.

Il semble que le choix soit: activer TLS 1.2 seulement pour obtenir un score parfait, ou activer TLS 1.3 aussi mais se faire tatouer pour les suites de chiffrement nécessaires? C'est un Kobayashi Mar en quelque sorte.

Est-il possible d'obtenir un score parfait de 100% avec nginx et TLS 1.2 et 1.3 activés?

3
GojiraDeMonstah

En ce qui concerne votre question réelle, qui concerne l'outil de test Qualys SSL Labs lui-même, nous devrons étudier le fonctionnement de leur système de notation.
Heureusement, Qualys a publié son SSL Server Rating Guide , qui décrit sa méthodologie pour évaluer les configurations SSL/TLS.

Comme votre question est de savoir pourquoi vous avez obtenu un score légèrement inférieur dans la catégorie Cipher Strength avec l'une de vos configurations proposées par rapport à l'autre, concentrons-nous sur cette catégorie en particulier:

Force de chiffrement

Pour interrompre une session de communication, un attaquant peut tenter de casser le chiffrement symétrique utilisé pour la majeure partie de la communication. Un chiffrement plus fort permet un chiffrement plus fort et augmente ainsi l'effort nécessaire pour le casser. Parce qu'un serveur peut prendre en charge des chiffrements de différentes forces, nous sommes arrivés à un système de notation qui pénalise l'utilisation de chiffrements faibles. Pour calculer le score de cette catégorie, nous suivons cet algorithme:

  1. Commencez par le score du chiffre le plus fort.
  2. Ajoutez le score du chiffre le plus faible.
  3. Divisez le total par 2.

Tableau 5. Guide d'évaluation de la force du chiffrement

Cipher strength               Score
0 bits (no encryption)        0%
< 128 bits (e.g., 40,56)      20%
< 256 bits (e.g., 128, 168)   80%
>= 256 bits (e.g., 256)       100%

En regardant les résultats plus détaillés inclus dans la question, nous pouvons voir que dans la configuration TLS1.2 uniquement, vous n'utilisiez que des chiffrements 256 bits (même si certaines des suites de chiffrement étaient désapprouvées), tandis que dans le TLS1. Configuration 2 + TLS1.3 vous utilisiez un mélange de chiffrements 128 bits et 256 bits.
Sur la base de leur système de notation, cela explique pourquoi vous avez obtenu un score réduit dans "Force de chiffrement".

Maintenant, cela souligne à peu près que bien que cet outil soit une ressource très utile (en particulier pour signaler les mauvaises configurations réelles), ce n'est pas une bonne idée de trop se concentrer sur le score exact, plutôt que de regarder l'ensemble du rapport.


Quant à ce qui est en fait une configuration TLS raisonnable, à moins que vous n'ayez une idée précise de ce dont vous avez besoin, je suggère de consulter les instructions Server Side TLS maintenues par Mozilla's Operations Security and Enterprise Équipes de sécurité de l'information.
.

5
Håkan Lindqvist

Il est possible au détriment de la conformité TLS1.3 en configurant OpenSSL d'exclure certains chiffres pour l'utilisation de TLS 1.3.

J'ai écrit un bref howto ici:

TLS ALL The Things! détaillant comment y parvenir et permettant une utilisation minimale de l'équivalent 112 bits pour le reste du système d'exploitation.

Ici vous pouvez voir le résultat de l'exemple en cours d'exécution ici

https://i.imgur.com/0g9B8cP.png

Notez l'utilisation de chiffrements CBC, normalement vous souhaitez également les supprimer et exécuter uniquement GCM. Cependant, en raison du nombre de visiteurs, vous pouvez prendre ce risque au lieu de forcer tout le monde à courir à tout moment. (Passez au vert!)

Quoi qu'il en soit, la partie qui vous intéresse vraiment est:

Ciphersuites = TLS_AES_256_GCM_SHA384: TLS_CHACHA20_POLY1305_SHA256
Options = ServerPreference, PrioritizeChaCha

En ajoutant ceux-ci à votre configuration OpenSSL, vous supprimerez efficacement les paramètres 128 bits ... Nginx fera toujours la configuration TLS 1.2 etc. pour vous car ce binaire contrôle ces paramètres au lieu d'OpenSSL. Le reste de votre système d'exploitation reposant sur les paramètres d'OpenSSL les utilisera ensuite également! (chaudement recommandé)

2