web-dev-qa-db-fra.com

JSSE a recommandé des suites ciphères recommandées

À la suite du caniche, j'examine la configuration d'un certain nombre de serveurs Tomcat en cours d'exécution sur le connecteur JSSE.

Afin de déterminer ce que Ciphers JSSE a soutenu, j'ai écrit un petit extrait qui émit tous les chiffres disponibles, le résultat était:

SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_DES_CBC_SHA
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_RSA_WITH_DES_CBC_SHA
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
SSL_DH_anon_WITH_DES_CBC_SHA
SSL_DH_anon_WITH_RC4_128_MD5
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_NULL_MD5
SSL_RSA_WITH_NULL_SHA
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DH_anon_WITH_AES_128_CBC_SHA
TLS_DH_anon_WITH_AES_128_CBC_SHA256
TLS_DH_anon_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_NULL_SHA
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_NULL_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_ECDSA_WITH_NULL_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_RSA_WITH_NULL_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_anon_WITH_AES_128_CBC_SHA
TLS_ECDH_anon_WITH_NULL_SHA
TLS_ECDH_anon_WITH_RC4_128_SHA
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA
TLS_KRB5_EXPORT_WITH_RC4_40_MD5
TLS_KRB5_EXPORT_WITH_RC4_40_SHA
TLS_KRB5_WITH_3DES_EDE_CBC_MD5
TLS_KRB5_WITH_3DES_EDE_CBC_SHA
TLS_KRB5_WITH_DES_CBC_MD5
TLS_KRB5_WITH_DES_CBC_SHA
TLS_KRB5_WITH_RC4_128_MD5
TLS_KRB5_WITH_RC4_128_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_NULL_SHA256

J'ai désactivé SSL complètement sur le serveur, alors seul TLSv1.0-2 sont disponibles. Je veux restreindre uniquement des chiffres puissants. Je n'ai aucune inquiétude concernant la compatibilité en arrière.

Rétrécissement de la liste en utilisant principalement la Recommandation Mozilla avec une Réponse sur SO et ce blog post J'ai réduit la liste à:

TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256

Est-ce un ensemble sensible de chiffres? Ai-je enlevé certains que je ne devrais pas avoir? Sont-ils dans cette liste non de niveau de sécurité élevé?

7
Boris the Spider

Il est toujours possible d'être plus paranoïaque, de sorte que vous pouvez réduire encore plus la liste, en fonction de votre inquiétude. Essentiellement:

  • Supprimer les suites DH_ANON CIPHER: Ils ne authentifient pas le serveur, ils sont donc faibles contre attaques MITM .
  • N'utilisez pas RC4 , puisque les biais connus.
  • N'utilisez pas DES car sa taille de bloc court (8 octets) le rend gênant après les premiers gigaoctets de données.
  • N'utilisez pas de chiffrement de bloc qui fonctionne en mode CBC car le mode CBC dans le mode Mac-Encrypt que SSL/TLS utilise est difficile à mettre en œuvre (voir toutes les attaques de la bête et du caniche).
  • Utilisez toujours une suite Ciphe DHE ou ECDHE, pour obtenir Secrecy avant .
  • N'utilisez pas SHA-1 si vous voulez bien paraître avec les foules paniquées qui ne comprennent pas exactement ce qu'est une collision basée sur une analyse de chemin différentielle.

À ce stade, vous vous retrouvez avec l'application de TLS 1.2 (et rejetant les versions précédentes) et la liste suivante:

TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

Bien entendu, cette liste sera encore réduite, en fonction du type de clé contenue dans le certificat du serveur. Si la clé a du type DSS, vous ne pouvez utiliser que la première suite Cipher. S'il a du type ECDSA, seule la seconde s'applique. Si, comme 99,3% du monde, vous utilisez RSA pour votre certificat, vous avez le choix entre les deux derniers suites ciphères; Vous préférerez l'ECDHE si vous voulez libérer votre hipster intérieur.

Dans la pratique, le choix de la suite Cipher SSL est extrêmement peu susceptible d'être le point faible à travers lequel le compromis se produira. Lorsque les attaquants détournent votre serveur, ils ne le feront pas en abordant avec la crypto. Alors ne pas trop penser. Sachez que la plupart de vos efforts de taille de la liste des suites de chiffrement sont vraiment destinés à apaiser des auditeurs finicky et des gestionnaires inquiets. La question opérationnelle importante n'est donc pas "ce qui va assurer une sécurité maximale?" Mais "Qu'est-ce qui va induire le sentiment le plus fort de la sécurité?".

11
Tom Leek