J'ai entendu qu'il y avait une "nouvelle" vulnérabilité TLS nommée Logjam , que fait-elle et comment puis-je la prévenir?
TL; DR
Le client et le serveur SSL/TLS acceptent d'utiliser une cryptographie faible. Eh bien, il s'avère que le crypto faible est faible.
En détail
Lorsqu'un protocole SSL/TLS est exécuté, le client envoie une liste des suites de chiffrement prises en charge et le serveur en choisit une. À la fin de la poignée de main initiale, certains messages Finished
sont échangés et cryptés/protégés avec les algorithmes de cryptographie nouvellement négociés, et le contenu de ces messages est un hachage de tous les messages précédents.
L'idée est qu'un attaquant actif (une attaque MitM ) pourrait essayer de manipuler la liste des suites de chiffrement envoyées par le client pour supprimer toutes les suites de chiffrement "fortes", en ne gardant que les plus faibles que le client et le serveur soutien. Cependant, cela casserait les messages Finished
. Ainsi, ces messages sont destinés (entre autres rôles) à détecter de telles attaques downgrade.
En théorie, c'est bien; à moins que le client et le serveur ne prennent tous les deux en charge une suite de chiffrement si faible que l'attaquant MitM puisse la casser tout de suite, démêler toute la couche cryptographique et corriger un message Finished
dans temps réel. C'est ce qui se passe ici.
Encore plus de détails
Lors de l'utilisation des suites de chiffrement "DHE" (comme dans "Diffie-Hellman Ephemeral"), le serveur envoie les "paramètres DH" (module et générateur) avec lesquels le client et le serveur effectueront un échange de clés Diffie-Hellman . De plus, le serveur signe ce message avec sa clé privée (généralement une clé RSA, car tout le monde utilise RSA en pratique). Le client vérifie cette signature (la clé publique est celle du certificat de serveur), puis utilise le paramètre DH pour terminer l'échange de clés.
Il se trouve qu'au siècle précédent, il y avait des réglementations d'exportation américaines assez strictes sur la cryptographie, ce qui a provoqué des "suites de chiffrement à l'exportation", c'est-à-dire une cryptographie faible qui était compatible avec ces réglementations. De nombreux serveurs SSL prennent toujours en charge ces "suites de chiffrement d'exportation". En particulier, certaines suites de chiffrement qui utilisent DHE et exigent un module DH ne dépassant pas 512 bits. De plus, la plupart des SSL des serveurs utilisent le module idem, car il est plus facile d'utiliser celui fourni avec la bibliothèque SSL que d'en générer le vôtre. Réutiliser le même module que tout le monde n'est pas un gros problème; DH tolère cela très bien. Cependant, cela signifie que si un attaquant investit beaucoup de calculs pour casser une instance DH qui utilise un module donné p, le même attaquant peut réutiliser presque tout le travail pour casser d'autres instances qui utilisent le même module p.
Donc, l'attaque se déroule comme ceci:
Finished
.Les auteurs article de Logjam appellent cela une "faille de protocole" car le message ServerKeyExchange
qui contient les paramètres DH d'exportation n'est pas étiqueté comme "pour l'exportation", et est donc indiscernable (sauf pour le longueur du module) à partir d'un message ServerKeyExchange
contenant des paramètres DH non exportables. Cependant, je dirais que le vrai défaut n'est pas là; le vrai problème est que le client et le serveur acceptent d'utiliser un module DH de 512 bits même s'ils savent tous les deux qu'il est faible.
Que devez-vous faire?
Eh bien, la même chose que toujours: installez les correctifs de vos éditeurs de logiciels. En fait, cela devrait aller de soi.
Côté client, Microsoft a déjà patché Internet Explorer pour refuser d'utiliser un module trop petit. Un correctif pour Firefox sous la forme d'un plugin par Mozilla est disponible ici maintenant. Il est prévu que d'autres éditeurs de navigateurs (Opera, Chrome ...) suivront bientôt.
Côté serveur, vous pouvez explicitement désactiver la prise en charge des suites de chiffrement "d'exportation" et générer vos propres paramètres DH. Voir cette page pour plus de détails. Notez que IIS
est un peu à l'abri de tout cela car apparemment, il n'a jamais pris en charge les suites de chiffrement DHE avec autre chose qu'un certificat de serveur DSS, et personne n'utilise DSS.
Notez que [~ # ~] ecdhe [~ # ~] les suites de chiffrement, dans lesquelles "EC" signifiant "courbe elliptique", ne sont pas menacées ici, car:
Et qu'en est-il du NSA?
Les chercheurs de Logjam ont discuté de la façon dont certains "attaquants dotés de ressources d'État-nation" pourraient percer la DH 1024 bits. C'est tout à fait un tronçon. D'après mon expérience, les États-nations ont en effet beaucoup de ressources et dépensent bien, mais ce n'est pas la même chose que de réussir à briser la crypto dure.
Néanmoins, si vous craignez que le DH de 1024 bits soit "trop faible", optez pour le 2048 bits (c'est celui qui est recommandé de toute façon), ou ECDHE.
Ou acceptez simplement que les gens avec des ressources écrasantes ont vraiment des ressources écrasantes et ne seront pas vaincus par une simple taille de module. Ceux qui peuvent dépenser des milliards de dollars pour des machines de craquage peuvent également soudoyer vos enfants avec quelques centaines de dollars pour parcourir vos fichiers informatiques et votre portefeuille.
Logjam ne devrait pas vraiment être appelé une "nouvelle" vulnérabilité - c'est une refonte de FREAK qui cible DH de qualité exportation plutôt que RSA de qualité exportation.
L'exploitation pratique repose sur les défauts suivants:
L'attaque permet essentiellement à un attaquant de précalculer un ensemble de données pour un nombre cible cible connu pour être utilisé par un service TLS dans son implémentation DH. Pour la DH 512 bits, cela prend environ une semaine. Une fois cela fait, l'attaquant peut casser les échanges de clés DH avec ce service en environ 1-2 minutes par échange. Une fois l'échange rompu, l'attaquant accède aux clés de session, leur permettant de décrypter tout le trafic.
Ce problème peut être résolu de la manière suivante:
En remarque, l'un des facteurs intéressants de ce bogue est qu'il correspond aux capacités signalées de la NSA dans le domaine du décryptage du trafic TLS et IKE (VPN). Dans le cas de la capture et du décryptage de trafic de masse, l'attaque de pré-calcul devient particulièrement efficace et effective, en raison de la grande quantité de données disponibles qui est susceptible d'être associée à un nombre premier partagé connu.
Plus de détails disponibles:
Logjam est une attaque de déclassement de chiffrement où un homme au milieu peut tromper les points finaux en utilisant un chiffrement faible. Un chiffrement faible permettrait à l'homme au milieu de décrypter facilement le trafic intercepté.
Comme pour toutes les autres attaques de déclassement de chiffrement, la meilleure façon de l'empêcher est de désactiver les chiffrements faibles en premier lieu. Si des chiffrements faibles ne sont pas disponibles, même une rétrogradation de chiffrement réussie entraînera un cryptage fort.
Pour éviter Logjam, vous pouvez suivre les recommandations du Guide to Deploying Diffie-Hellman for TLS qui vous aideront à configurer votre serveur (Apache HTTP Server, nginx, IIS, Lighttpd, Tomcat, Postfix, Sendmail, Dovecot , HAProxy, OpenSSH, Amazon Elastic Beanstalk):
Mozilla SSL Configuration Generator est également un bon outil de configuration.