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

Je sais qu’il n’y a pas de réponse unique et rapide, mais existe-t-il une approximation générique de l’estimation de l’ ordre de grandeur pour la surcharge de cryptage du protocole SSL par rapport à la communication par socket non cryptée? Je ne parle que du traitement de communication et du temps de connexion, sans compter le traitement au niveau de l’application.

Mettre à jour

Il y a une question à propos de HTTPS contre HTTP , mais je suis intéressé à regarder plus bas dans la stack.

(J’ai remplacé l’expression “ordre de grandeur” pour éviter toute confusion; je l’utilisais plutôt comme un jargon informel plutôt que dans le sens formel du CompSci. Bien sûr, si je le pensais formellement, en véritable connaisseur, j’aurais pensé binary plutôt que décimal! 😉

Mettre à jour

Par requête dans le commentaire, supposons que nous parlons de messages de bonne taille (plage de 1k-10k) sur des connexions persistantes. La configuration de la connexion et la surcharge des paquets ne sont donc pas des problèmes importants.

Je seconde @erickson: la pénalité de vitesse de transfert de données pure est négligeable. Les processeurs modernes atteignent un débit crypté / AES de plusieurs centaines de Mbits / s. Donc, à moins que vous ne soyez sur un système à ressources limitées (téléphone mobile), TLS / SSL est assez rapide pour écarter des données.

Mais gardez à l’esprit que le cryptage rend la mise en cache et l’équilibrage de la charge beaucoup plus difficiles. Cela pourrait entraîner une énorme pénalité de performance.

Mais la configuration de la connexion est vraiment une solution pour beaucoup d’applications. Sur les connexions à faible bande passante, à perte de paquets élevée, à latence élevée (appareil mobile à la campagne), les allers-retours supplémentaires requirejs par TLS peuvent rendre quelque chose de lent dans quelque chose d’inutilisable.

Par exemple, nous avons dû supprimer le besoin de chiffrement pour accéder à certaines de nos applications Web internes – elles étaient presque inutilisables si elles étaient utilisées en Chine.

En supposant que vous ne comptiez pas la configuration de la connexion (comme vous l’avez indiqué dans votre mise à jour), cela dépend fortement du chiffre 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 chiffrer environ 250 Mo par seconde avec RC4 sur un seul cœur. (RC4 est ce que vous devriez choisir pour des performances maximales.) AES est plus lent, fournissant “seulement” environ 50 Mo / s. Donc, si vous choisissez des codes corrects, vous ne pourrez pas garder un seul cœur actif occupé avec le chiffrement de la surcharge, même si vous avez une ligne à 1 Gbit entièrement utilisée. [ Edit : RC4 ne doit pas être utilisé car il n’est plus sécurisé. Cependant, le support matériel AES est désormais présent dans de nombreux processeurs, ce qui rend le cryptage AES très rapide sur ces plates-formes.]

L’établissement de la connexion est cependant différent. Selon l’implémentation (par exemple, prise en charge du faux démarrage TLS), des allers-retours seront ajoutés, ce qui peut entraîner des retards importants. En outre, une crypto coûteuse a lieu sur le premier établissement de connexion (le processeur susmentionné ne peut accepter que 14 connexions par cœur 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 ultérieures, les sessions précédentes sont souvent réutilisées, évitant la crypto coûteuse.

Donc, pour résumer:

Transfert sur connexion établie:

  • Retard: presque aucun
  • CPU: négligeable
  • Bande passante: négligeable

Premier établissement de connexion:

  • Retard: allers-retours supplémentaires
  • Bande passante: plusieurs kilo-octets (certificates)
  • CPU sur le client: moyen
  • CPU sur le serveur: haut

Établissements de connexion suivants:

  • Retard: un aller-retour supplémentaire (pas certain si un ou plusieurs, peut être lié à la mise en œuvre)
  • Bande passante: négligeable
  • CPU: presque aucun