Dans SSL, le client se connecte et envoie la liste des chiffrements qu'il prend en charge; alors le serveur sélectionne l'un des chiffrements qu'il supporte également, et ce chiffrement est utilisé pour la connexion. Ce n'est que lorsque la connexion est établie (le "handshake" est terminé) HTTP entrent en jeu. Dans votre configuration, cela signifie que vous devez configurer votre serveur SSL pour accepter une variété de chiffrements, mais privilégier ceux avec une clé privée de 128 bits ou plus par rapport aux autres. Ainsi, un chiffrement inférieur à 128 bits sera sélectionné uniquement si aucun chiffrement à 128 bits ou plus n'est supporté par le client et le serveur. Ensuite, la page envoyée dans cette connexion serait modifiée, en fonction du chiffrement effectivement négocié.
Pour une telle configuration, vous devez être en mesure de faire ce qui suit:
- pour configurer la liste des chiffrements pris en charge par le serveur SSL;
- pour appliquer la préférence du serveur à la préférence du client, dans la liste des chiffrements pris en charge par le client et le serveur;
- pour accéder au chiffrement réellement utilisé à partir de votre moteur de génération de page, par ex. PHP.
Dans Apache mod_ssl, il semble que le point 1 est facile (directive « SSLCipherSuite ») et la section intitulée « Variables d'environnement » semble indiquer que le serveur SSL est prêt à donner des informations sur ce chiffre a été sélectionné pour la page générant le moteur; en particulier, la variable SSL_CIPHER_USEKEYSIZE
semble assez bonne. Donc le point 3 semble facile aussi. Je ne suis pas sûr de savoir comment cela se traduit dans le monde PHP, cependant.
Pour le point 2, c'est un peu plus difficile. La documentation de "SSLCipherSuite" semble indiquer que le serveur, par défaut, utilise son propre ordre de préférence, donc le point 2 serait facile aussi, mais cela nécessiterait un peu de test.
Maintenant, il ne reste qu'un point mineur, qui est l'état de 3DES. Nominalement, il utilise une clé de 192 bits. Tout cryptographe ou programmeur décent rappellerait que sur ces 192 bits, seulement 168 bits sont utilisés (les bits supplémentaires étaient censés servir de bits de contrôle de parité, mais personne ne les vérifie, ils sont simplement ignorés). Maintenant, certains universitaires ont également montré que la force réelle de l'algorithme est plus faible, quelque peu équivalente à une clé de 112 bits, du moins lorsqu'elle est vue dans la lumière académique appropriée. Le NIST (l'institution fédérale américaine qui traite de telles normes) a donc émis une recommandation selon laquelle 3DES devrait être considéré comme offrant «seulement 112 bits de sécurité», et 112 est inférieur à 128.
Bien sûr, 112 bits est encore loin dans le domaine de la technologie infaisable (et devrait le rester pendant au moins 30 ans, même si le progrès technologique continue son rythme effréné), donc ce n'est pas un vrai problème pour toute situation pratique, mais si vous êtes dans un cadre d'esprit standard-maniaque et souhaitent imposer "128" bits "réels" alors c'est une question à considérer.
@CalebD - Merci de m'avoir indiqué "Keep it Simple Stupid". J'ai décidé de rester simple et montrer aux clients comment vérifier la force de chiffrement de leur navigateur par leurs propres moyens. –