J'essaie de comprendre le protocole SSL/TLS et je suis perdue sur un point spécifique.
Quel est le lien entre la clé de serveur public (p. Ex .: "EC 256 bits" ou "bits RSA 2048") et les suites ciphères?
Ce post donne une réponse: Certificats SSL et correspondance de suites Cipher Mais lorsque j'essaie d'analyser les suites ciphères pour https://www.wikipedia.org , il y a quelque chose d'illogique à moi. Wikipedia.org a une clé EC 256 bits et TLS_RSA_WITH_AES_128_CBC_SHA est une suite de chiffrement acceptée. Selon ce post SSL Certificats et Cipher Suites Correspondance (si je le comprends correctement), il ne devrait pas être possible car
"Pour TLS_RSA_ * CIPHER Suites, l'échange de clés utilise le cryptage d'une valeur aléatoire choisie par le client avec la clé publique RSA du serveur, de sorte que la clé publique du serveur doit être de type RSA et doit être appropriée pour le cryptage (le certificat du serveur ne doit pas inclure de Extension d'utilisation clé qui dit "Signature Seulement"). "
Alors, pourquoi pouvons-nous utiliser TLS_RSA_WITH_AES_128_CBC_SHA sur Wikipedia?
wikipedia.org a une clé EC 256 bits et TLS_RSA_WITH_AES_128_CBC_SHA est une suite de chiffrement acceptée. Selon ce poste de certificats SSL et de la correspondance des suites ciphères (si je le comprends correctement), il ne faut pas être possible.
En fait, Wikipedia.org a à la fois des certificats ECDSA et RSA et les utilise en fonction desquels les chiffres fournissent aux chiffres. Lorsque le client prend en charge les chiffres ECDSA, vous obtenez le certificat EC256:
$ openssl s_client -connect www.wikipedia.org:443 -cipher 'ECDSA' |\
openssl x509 -text -noout
...
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
Si vous appliquez à la place des chiffres d'exécution avec une authentification RSA, vous obtenez un certificat différent qui utilise une clé RSA 2048:
$ openssl s_client -connect www.wikipedia.org:443 -cipher 'RSA' |\
openssl x509 -text -noout
...
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Cette configuration n'est pas rare car ECDSA offre de meilleures performances avec la même sécurité, mais tous les clients ne prennent pas encore possible à la CISDA. Une configuration avec Dual Certificats n'est pas prise en charge par tous les serveurs Web, mais vous disposez de serveurs largement utilisés comme nginx et Apache .
Les TLS_RSA_WITH_AES_128_CBC_SHA
Ciphersuite utilise RSA pour l'authentification et l'échange de clé. La longueur de la clé n'est pas spécifiée, mais la norme actuelle est une clé de 2048 bits RSA, de sorte que ce qui est probable ce qui est utilisé dans ce cas.
Pour d'autres ciphersuites, vous pouvez voir des composants qui différencient l'algorithme d'échange de clés et l'algorithme d'authentification. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
serait un exemple de ceci, où ECDHE (courbe elliptique DIFFE HELLMAN SEphemeral) est l'algorithme d'échange de clé, mais la clé du certificat est pour l'algorithme de signature numérique de courbe elliptique.
Donc, si la ciphersuite étant utilisée pour votre session TLS était TLS_RSA_WITH_AES_128_CBC_SHA
, c'était pour un certificat RSA, pas un certificat ECDSA. Vous auriez besoin d'utiliser une ciphersuite différente dans ce cas.