Question

Je sais qu'il n'y a pas une seule réponse dure et rapide, mais est-il un générique ordre de grandeur estimation approximation pour les frais généraux de chiffrement SSL par rapport à la communication socket non cryptée? Je ne parle que le traitement et le temps de comm fil, sans compter le traitement au niveau de l'application.

Mise à jour

Il est une question sur HTTPS contre HTTP , mais je suis intéressé à regarder bas dans la pile.

(j'ai remplacé l'expression « ordre de grandeur » pour éviter toute confusion, je l'ai utilisé comme jargon informel plutôt que dans le sens CompSci formel Bien sûr, si je HAD signifie formellement, comme. vrai geek je l'aurais pensé binaire plutôt que décimal; -)

Mise à jour

Par demande en commentaire, supposons que nous parlons de messages de bonne taille (gamme de 1K-10K) sur les connexions persistantes. Donc, mettre en place et les frais généraux de paquets connexion ne sont pas des problèmes importants.

Était-ce utile?

La solution

Ordre de grandeur:. Zéro

En d'autres termes, vous ne verrez pas votre débit coupé en deux, ou quelque chose comme ça, quand vous ajoutez TLS. Les réponses à la « en double » question se concentrer fortement sur les performances des applications, et comment cela se compare aux frais généraux SSL . Cette question exclut spécifiquement le traitement des demandes, et cherche à comparer non-SSL à SSL uniquement. Bien qu'il soit logique d'adopter une vision globale de la performance lors de l'optimisation, ce n'est pas ce que cette question demande.

La principale tête de SSL est la poignée de main. C'est là la cryptographie asymétrique coûteux se produit. Après négociation, relativement efficaces de chiffrements symétriques sont utilisés. Voilà pourquoi il peut être très utile pour activer des sessions SSL pour votre service HTTPS, où de nombreuses connexions. Pour une connexion à long terme, ce « effet fin » est pas aussi importante, et les sessions ne sont pas aussi utiles.


Voici une anecdote intéressante. Lorsque Google mis Gmail utiliser HTTPS, pas de ressources supplémentaires étaient nécessaires; pas de matériel de réseau, pas de nouveaux hôtes. Il n'a augmenté que la charge du processeur d'environ 1%.

Autres conseils

Je deuxième @erickson: La pénalité de vitesse pure de transfert de données est négligeable. Les processeurs modernes atteignent un débit de Crypto / AES de plusieurs centaines de Mbits / s. Donc, à moins que vous êtes sur la ressource système contraint (téléphone mobile) TLS / SSL est assez rapide pour élingage des données autour.

Mais gardez à l'esprit que le cryptage rend beaucoup plus difficile équilibre entre la mise en cache et la charge. Cela pourrait se traduire par une énorme pénalité de performance.

Mais la configuration de connexion est vraiment un bouchon de spectacle pour de nombreuses applications. Sur une faible bande passante, haute perte de paquets, les connexions à latence élevée (l'appareil mobile dans la campagne), les allers-retours supplémentaires requis par TLS pourrait rendre quelque chose de lent en quelque chose inutilisable.

Par exemple, nous avons dû laisser tomber l'exigence de chiffrement pour l'accès à certains de nos applications Web internes -. Ils où à côté de inutilisable si elle est utilisée de la Chine

En supposant que vous ne comptez pas mettre en place de connexion (comme vous l'indiquez dans votre mise à jour), il dépend fortement du chiffre choisi. les frais généraux du réseau (en termes de bande passante) sera négligeable. la surcharge du processeur sera dominé par la cryptographie. Sur mon portable Core i5, je peux chiffrer autour de 250 Mo par seconde avec RC4 sur un seul noyau. (RC4 est ce que vous devez choisir pour des performances maximales.) AES est plus lente, fournissant "seulement" environ 50 Mo / s. Donc, si vous choisissez chiffrements correct, vous ne parvenez pas à garder un seul noyau actuel occupé avec les frais généraux Crypto même si vous avez une ligne 1 Gbit pleinement utilisé. [ Modifier : RC4 ne doit pas être utilisé car il n'est plus sûr. 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.]

établissement de connexion, cependant, est différente. En fonction de la mise en œuvre (par exemple support pour faux départ TLS), il ajoutera allers-retours, ce qui peut entraîner des retards noticable. De plus, Crypto cher a lieu le premier établissement de la connexion (mentionnée ci-dessus CPU ne pouvait accepter que 14 connexions par cœur par seconde si vous bêtement utilisé des clés 4096 bits et 100 si vous utilisez les touches 2048 bits). Lors des connexions suivantes, des sessions précédentes sont souvent réutilisées, en évitant le Crypto cher.

Donc, pour résumer:

Transfert sur la connexion établie:

  • Délai: presque aucun
  • CPU: négligeable
  • Bande passante: négligeable

Première établissement de la connexion:

  • Délai: allers-retours supplémentaires
  • Bande passante: plusieurs kilo-octets (certificats)
  • CPU sur le client: moyen
  • CPU sur le serveur: haute

établissements de connexion suivantes:

  • Délai: aller-retour supplémentaire (pas sûr si un ou plusieurs, peut dépendre de la mise en œuvre)
  • Bande passante: négligeable
  • CPU: presque aucun
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top