170 votes

Combien de frais généraux le SSL impose-t-il ?

Je sais qu'il n'y a pas de réponse toute faite, mais y a-t-il un moyen générique de estimation de l'ordre de grandeur approximation de la surcharge de cryptage du SSL par rapport à une communication par socket non cryptée ? Je ne parle que du traitement de la communication et du temps de transmission, sans compter le traitement au niveau de l'application.

Mise à jour

Il y a une question sur HTTPS et HTTP mais je suis intéressé à regarder plus bas dans la pile.

(J'ai remplacé l'expression "ordre de grandeur" pour éviter toute confusion ; je l'utilisais comme un jargon informel plutôt que dans le sens formel de CompSci. Bien sûr, si je avait si je l'avais voulu formellement, en tant que vrai geek, j'aurais pensé en binaire plutôt qu'en décimal ! ;-)

Mise à jour

Conformément à la demande formulée dans le commentaire, supposez que nous parlons de messages de bonne taille (de l'ordre de 1k-10k) sur des connexions persistantes. Ainsi, l'établissement de la connexion et la surcharge des paquets ne sont pas des problèmes importants.

0 votes

Vous pouvez consulter ce document similaire question .

1 votes

Pouvez-vous caractériser un peu plus votre application ? Par exemple, établit-elle beaucoup de connexions de courte durée ? Pendant la connexion, quelle est la taille d'un message individuel ? (Par exemple, peut-être que vous videz chaque pression de touche avec Telnet sur un tunnel SSL, ou peut-être que vous copiez des fichiers journaux de 1 To).

179voto

erickson Points 127945

Ordre de grandeur : zéro.

En d'autres termes, vous ne verrez pas votre débit diminuer de moitié, ou quoi que ce soit d'autre, lorsque vous ajoutez TLS. Les réponses à la question "Question "duplicate se concentrent principalement sur les performances des applications et sur la façon dont elles sont comparées à l'overhead SSL. Cette question exclut spécifiquement le traitement des applications, et cherche à comparer le non-SSL au SSL uniquement. Bien qu'il soit logique d'avoir une vue globale des performances lors de l'optimisation, ce n'est pas ce que demande cette question.

La principale surcharge du SSL est la poignée de main. C'est là que se produit la coûteuse cryptographie asymétrique. Après la négociation, des chiffrages symétriques relativement efficaces sont utilisés. C'est pourquoi il peut être très utile d'activer les sessions SSL pour votre service HTTPS, où de nombreuses connexions sont établies. Pour une connexion de longue durée, cet "effet final" n'est pas aussi important, et les sessions ne sont pas aussi utiles.


Voici une anecdote intéressante. Lorsque Google a adopté le protocole HTTPS pour Gmail, aucune ressource supplémentaire n'a été nécessaire, ni matériel réseau, ni nouveaux hôtes. La charge du processeur n'a augmenté que d'environ 1 %.

7 votes

Comment "activer les sessions SSL pour votre service HTTPS" ? Quelle est une bonne ressource pour en savoir plus à ce sujet ?

1 votes

L'activation des sessions SSL est spécifique au serveur. Lisez le manuel de votre serveur.

1 votes

Activer les sessions SSL, est-ce simplement utiliser Keep-Alive ou quelque chose de plus complexe ?

40voto

mdorseif Points 7473

Je suis d'accord avec @erickson : la pénalité en termes de vitesse de transfert des données est négligeable. Les processeurs modernes atteignent un débit crypto/AES de plusieurs centaines de MBit/s. Donc, à moins que vous ne soyez sur un système aux ressources limitées (téléphone portable), TLS/SSL est suffisamment rapide pour transférer des données.

Mais n'oubliez pas que le cryptage rend la mise en cache et l'équilibrage de la charge beaucoup plus difficiles. Cela peut entraîner une énorme pénalité de performance.

Mais la configuration de la connexion est vraiment un obstacle pour de nombreuses applications. Sur les connexions à faible bande passante, à forte perte de paquets et à latence élevée (appareil mobile à la campagne), les allers-retours supplémentaires requis par TLS peuvent transformer un appareil lent en un appareil inutilisable.

Par exemple, nous avons dû abandonner l'exigence de cryptage pour l'accès à certaines de nos applications web internes - elles étaient pratiquement inutilisables si elles étaient utilisées depuis la Chine.

20 votes

Avec 4 ans de recul : la Chine pourrait aussi avoir intentionnellement perturbé tout le trafic SSL/TLS.

3 votes

La censure de l'internet par la Chine et la tentative de renifler le trafic de tout le monde ne sont pas vraiment des nouvelles. Avec 4 ans de recul, on pourrait penser que c'est la NSA qui a fait un MITM sur le chemin de votre site.

0 votes

En cas de connexions irrégulières, la clé est de configurer le cryptage une fois pour toutes, puis d'éviter les renégociations, sauf si elles sont vraiment nécessaires, et de permettre aux deux parties de modifier leurs adresses IP à tout moment sans sourciller. (OpenVPN prend cela en charge.) L'informatique aide à rendre la fragmentation possible, car le MTU peut être très peu fiable et carrément malhonnête.

12voto

Jan Schejbal Points 2555

En supposant que vous ne comptez pas l'établissement de la connexion (comme vous l'avez indiqué dans votre mise à jour), cela dépend fortement du chiffrement choisi. La surcharge du réseau (en termes de bande passante) sera négligeable. La surcharge du processeur sera dominée par la cryptographie. Sur mon Core i5 mobile, je peux crypter environ 250 Mo par seconde avec RC4 sur un seul cœur. (RC4 est ce que vous devriez choisir pour une performance maximale). AES est plus lent et ne fournit "que" 50 Mo/s environ. Donc, si vous choisissez les bons ciphers, vous ne parviendrez pas à occuper un seul cœur actuel avec la surcharge cryptographique, même si vous disposez d'une ligne 1 Gbit entièrement utilisée. [ Modifier : RC4 ne doit pas être utilisé car il n'est plus sécurisé. Cependant, le support matériel d'AES est maintenant présent dans de nombreux processeurs, ce qui rend le chiffrement AES vraiment rapide sur ces plateformes].

L'établissement de la connexion, cependant, est différent. Selon l'implémentation (par exemple, la prise en charge du faux départ TLS), il ajoutera des allers-retours, ce qui peut entraîner des retards notables. De plus, un cryptage coûteux a lieu lors du premier établissement de la connexion (le processeur mentionné ci-dessus ne peut accepter que 14 connexions par cœur et par seconde si vous utilisez des clés de 4096 bits et 100 si vous utilisez des clés de 2048 bits). Lors des connexions suivantes, les sessions précédentes sont souvent réutilisées, ce qui évite le cryptage coûteux.

Donc, pour résumer :

Transfert sur connexion établie :

  • Retard : presque nul
  • CPU : négligeable
  • Largeur de bande : négligeable

Établissement de la première connexion :

  • Retard : allers-retours supplémentaires
  • Bande passante : plusieurs kilobytes (certificats)
  • CPU sur le client : moyen
  • CPU sur le serveur : élevé

Établissements de connexion ultérieurs :

  • Retard : aller-retour supplémentaire (pas sûr qu'il y en ait un ou plusieurs, cela peut dépendre de l'implémentation).
  • Largeur de bande : négligeable
  • CPU : presque aucun

0 votes

Note importante : Personne ne devrait plus jamais utiliser RC4. Le protocole doit être considéré comme cassé et la transmission RC4 avec ce protocole doit être considérée comme équivalente à une transmission non cryptée, au moins pour la sécurité des organisations d'espionnage. De nos jours, quelque chose comme chacha20-poly1305 est fortement recommandé pour le cryptage de masse en raison de son indépendance vis-à-vis de telles organisations.

5voto

Ray Vahey Points 2740

Anatomie et performance du traitement SSL http://www.cs.ucr.edu/~bhuyan/papers/ssl.pdf

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X