web-dev-qa-db-fra.com

clés de session de chiffrement symétrique en SSL / TLS

Cette question concerne les clés d'envoi et de réception de session utilisées dans le protocole SSL/TLS. ma compréhension est que cette clé utilise un cryptage symétrique (DES, AES, BlowFish, etc.) Je me demande, si les paires de clés public-privé sont supérieures aux clés symétriques en ce qui concerne la sécurité de l'échange de clés, pourquoi ne pas utiliser le cryptage asymétrique pour la session clés aussi?

il s'agit d'une extension d'une question existante: sécurité des PKI, certificats, autorités de certification, secret de transmission

66
lurscher

3 raisons (maintenant):

  1. Le chiffrement asymétrique est plus lent, beaucoup plus lent que le chiffrement symétrique. Des ordres de grandeur plus lents.
  2. Etant donné la même longueur de clé, asymétrique est beaucoup plus faible que symétrique, bit pour bit. Par conséquent, vous avez besoin d'une clé beaucoup plus grande pour fournir une protection équivalente. Cela contribue également à la lenteur mentionnée en 1.
  3. (Selon le commentaire de @ ThomasPornin :) Le chiffrement asymétrique entraîne une augmentation de la taille de la sortie. Par exemple, si vous utilisez RSA, les données chiffrées sont au moins 10% plus volumineuses que le texte clair. Le cryptage symétrique, en revanche, a une surcharge de taille fixe même lors du cryptage de gigaoctets de données.
77
AviD

Les algorithmes de chiffrement asymétriques sont beaucoup moins efficaces que les algorithmes symétriques. Donc, essentiellement, toute utilisation du chiffrement via des clés asymétriques implique le chiffrement d'une clé de session symétrique, avec laquelle le message réel est chiffré.

Outre les notes utiles d'AviD sur la longueur des clés, notez que si les attaques informatiques quantiques deviennent réalisables, elles rendront tous les algorithmes à clé publique traditionnels (et donc SSL/TLS) inefficaces. Mais l'AES-256 droit resterait solide même en cas d'attaque informatique quantique. Voir Taille de la clé - Effet des attaques informatiques quantiques - Wikipedia . La question serait alors de savoir comment échanger ces clés et leur faire confiance.

33
nealmcb

Il s'agit d'une approche standard, appelée (cryptosystème hybride. La cryptographie symétrique et la cryptographie asymétrique ont chacune leurs points forts et leurs points faibles. En particulier:

  • La cryptographie asymétrique permet à quiconque de crypter des messages qu'un seul participant sera en mesure de décrypter, et permet à quiconque de vérifier les messages qu'un seul participant peut avoir signés.
  • La cryptographie symétrique est beaucoup plus rapide que la cryptographie asymétrique. Vraiment beaucoup.

La sécurité n'est pas vraiment une préoccupation dans le choix entre la cryptographie symétrique et asymétrique. La cryptographie asymétrique résout des problèmes que la cryptographie symétrique ne peut pas; pour tout le reste, la cryptographie symétrique est utilisée, car elle est beaucoup plus rapide.

(En raison d'être plus rapide, la cryptographie symétrique a tendance à avoir une marge de sécurité plus élevée: les tailles de clé communes - AES 128 bits - sont suffisamment grandes pour que, à moins d'une percée mathématique complètement nouvelle, tous les ordinateurs existant actuellement sur terre fonctionnent aussi longtemps car l'univers a existé n'aurait que très peu de chances de briser le cryptage. La cryptographie asymétrique fonctionne sur des marges plus petites en raison de ses performances médiocres et il y a des améliorations mathématiques occasionnelles dans les méthodes de craquage qui rendent les tailles de clés couramment utilisées correctes pendant quelques années mais pas nécessairement pendant quelques décennies. Mais c'est une préoccupation secondaire par rapport à l'alternative capacités/performances.)

Les cryptosystèmes hybrides résolvent le dilemme en utilisant la cryptographie asymétrique uniquement là où cela est nécessaire:

  • Pour vérifier la signature d'un message, le message est haché et la cryptographie asymétrique est utilisée uniquement sur le hachage, pas directement sur le message de longueur variable.
  • Pour crypter certaines données, un clé de session symétrique est généré. La cryptographie asymétrique est utilisée pour partager cette clé symétrique entre les participants (le client et le serveur). Les "vraies" données sont cryptées et authentifiées à l'aide de cette clé symétrique.

Dans HTTPS, comme il est couramment utilisé sur le Web, le serveur a une clé publique, mais pas le client - tout navigateur peut contacter le serveur, le serveur se fiche de l'identité du client. ( Les certificats côté client sont utilisés là où cela a du sens .) Une vue de très haut niveau et incomplète d'un établissement de session HTTPS est:

  1. Le serveur envoie son certificat au client. Le certificat contient la clé publique du serveur et une signature de cette clé publique par un autorité de certification . Le client vérifie que l'autorité de certification est connue (les navigateurs sont livrés avec une liste de clés publiques des autorités de certification).
  2. Le client et le serveur s'arrangent pour choisir une clé symétrique, de telle manière qu'un attaquant ne pourra pas reconstruire la clé simplement en inspectant le trafic ou même en le modifiant (ou au moins un actif l'attaquant sera détecté et le client ou le serveur abandonnera alors la session). A échange de clés Diffie-Hellman plus une signature du serveur (pour permettre au client de vérifier que l'échange a été effectué avec le serveur, et non avec un attaquant de l'homme du milieu) est une possibilité pour générer la clé symétrique. Il est également possible de s'appuyer uniquement sur la clé privée du serveur (au détriment de ne pas garantir secret à transmettre ).
  3. Toutes les communications ultérieures utilisent cette clé symétrique.

Notez que j'ai fait beaucoup de simplifications ci-dessus. Pour plus de détails, lisez: