web-dev-qa-db-fra.com

Implications fonctionnelles des différences de SSL et TLS

Je sais que TLS est essentiellement une version plus récente de SSL, et qu'il prend généralement en charge la transition d'une connexion non sécurisée à sécurisée (généralement via une commande StartTLS).

Ce que je ne comprends pas, c'est pourquoi TLS est important pour un professionnel informatique et pourquoi, compte tenu du choix, je choisirais l'un sur l'autre. TLS est-il vraiment juste une version plus récente, et si oui, c'est un protocole compatible?

En tant que professionnel informatique: quand dois-je utiliser lequel? Quand ne pas utiliser lequel?

31
Randell

Réponse courte:

SSL est le précurseur de TLS. SSL était un protocole exclusif développé par Netscape Communications, plus tard normalisé au sein de l'IETF et renommé TLS. En bref, les versions vont dans cet ordre: SSLV2, SSLV3, TLSV1.0, TLSV1.1 et TLSV1.2.

contrairement à une croyance relativement répandre, cela ne consiste pas du tout à avoir à exécuter un service sur un port distinct avec SSL et à pouvoir sur le même port que la variante de texte brut Tls. SSL et TLS peuvent être utilisés pour les deux approches. Il s'agit de la différence entre SSL/TLS lors de la connexion (parfois appelée "SSL implicite/TLS") et SSL/TLS après un. La commande a été émise au niveau du protocole, typiquement STARTTLS (parfois appelée "SSL Explicit/TLS"). Le mot clé dans STARTTLS est "Démarrer", pas TLS. C'est un message, au niveau du protocole d'application, pour indiquer qu'il doit être un commutateur à SSL/TLS, s'il n'a pas été lancé avant tout échange de protocole d'application.

L'utilisation des deux modes doit être équivalente, à condition que le client soit configuré pour s'attendre à SSL/TLS d'une manière ou d'une autre, de manière à ne pas être déclassée sur une connexion en texte brut.

Réponse plus longue:

SSL V.S. Tls

Pour autant que je sache, SSLV1 n'a jamais quitté les laboratoires. SSLV2 et SSLV étaient des protocoles développés par Netscape. SSLV2 a été considéré comme insécurisé pendant un certain temps, car il est sujette aux attaques de déclassement. SSLV3 utilise interne (3,0) comme numéro de version (dans le message ClientHello).

TLS est le résultat de la normalisation en tant que protocole plus ouvert au sein de l'IETF. (Je pense avoir lu quelque part, peut-être dans le livre d'E. Romorla, que le nom avait été choisi de manière à ce que tous les participants soient également mécontents de celui-ci, afin de ne pas favoriser une entreprise particulière: il s'agit d'une pratique assez courante dans les normes corps.) Les personnes intéressées par la manière dont la transition a été apportée peut lire la liste SSL-Talk[~ # ~] FAQ [~ # ~ # ~] ; Il existe de multiples copies de ce document autour, mais la plupart des liens (sur netscape.com) sont obsolètes.

TLS utilise des messages très similaires (suffisamment différents pour rendre les protocoles incompatibles, Bien qu'il soit possible de négocier une version commune ). Le TLS 1. , 1.1 et 1.2ClientHello messages utilisez (3,1), (3,2), (3,3) Pour indiquer le numéro de version, ce qui montre clairement la suite de SSL.

Il y a plus de détails sur les différences de protocole dans cette réponse .

Quand dois-je utiliser lequel? Quand ne pas utiliser lequel?

Utilisez la version la plus élevée que vous puissiez si possible. En pratique, en tant que fournisseur de services, cela obligera vos utilisateurs à avoir des clients qui supportent ces versions. Comme d'habitude, c'est toujours un exercice d'évaluation des risques (de préférence soutenu avec une analyse de rentabilisation, le cas échéant). Cela étant dit, coupé SSLV2 de toute façon.

De plus, notez que la sécurité fournie par SSL/TLS ne concerne pas uniquement la version que vous utilisez, il s'agit également d'une configuration appropriée: il est certainement préférable d'utiliser SSLV3 avec une suite de chiffrement forte que TLSV1.0 avec un faible (ou Anonyme/Null-cryptage) Suite Cipher. Certaines suites de chiffrement, considérées comme trop faibles, ont été explicitement interditées par de nouvelles versions de TLS. Les tableaux dans le fournisseur Java 7 Sunjsse (et leurs notes de bas de page) peuvent être d'intérêt si vous voulez plus de détails.

Il serait préférable d'utiliser TLS 1.1 au moins, mais tous les clients ne les soutiennent pas encore malheureusement (par exemple Java 6). Lorsque vous utilisez une version sous 1.1, cela vaut certainement la peine d'être examinée atténuer la vulnérabilité de la bête .

Je recommanderais généralement Livre d'Eric Schancorla - SSL et TLS: concevoir et construire des systèmes sécurisés, Addison-Wesley, 2001 ISBN 0-201-61598- aux personnes qui veulent vraiment plus de détails.

V.S. implicite SSL Explicit/TLS

Il y a un mythe indiquant que TLS vous permet d'utiliser le même port alors que SSL ne peut pas. Ce n'est tout simplement pas vrai (et je quitterai Port Unification pour cette discussion). Malheureusement, ce mythe semble avoir été propagé aux utilisateurs par le fait que certaines applications telles que MS Outlook offrent parfois un choix entre SSL et TLS dans leurs options de configuration lorsqu'elles entendent réellement un choix entre SSL/TLS implicite et explicite. (Il existe des experts SSL/TLS chez Microsoft, mais il semble qu'ils n'étaient pas impliqués dans l'interface utilisateur Outlook.)

Je pense que la raison pour laquelle cette confusion se produit est due à la mode STARTTLS mode. Certaines personnes semblent avoir comprises cela comme STARTTLS = TLS, mais ce n'est pas le cas. Le mot clé dans STARTTLS est "Démarrer", pas TLS. Pourquoi cela n'a pas été appelé STARTSSL ou STARTSSLORTLS est dû au fait que ces extensions ont été spécifiées au sein de l'IETF, qui utilise uniquement les noms utilisés dans ses spécifications (en supposant que le nom TLS serait éventuellement le seul debout , J'imagine).

  • SSL sur le même port que le service de texte brut: proxy HTTPS.

De nos jours, la plupart des serveurs HTTPS peuvent gérer les TLS, mais il y a quelques années, la plupart des gens utilisaient SSLV3 pour HTTPS. HTTPS (strictement parlant, normalisé comme http sur TLS ) établit normalement la connexion SSL/TLS sur la connexion TCP, puis échange un message HTTP sur la couche SSL/TLS. Il y a une exception à cela lors de l'utilisation d'un proxy HTTP entre les deux. Dans ce cas, le client se connecte au proxy HTTP en clair (typiquement sur le port 3128), puis émet la commande HTTP CONNECT et, à condition que la réponse ait réussi, initie la poignée de main SSL/TLS en envoyant un ClientHello message. Tout cela se produit sur le même port que la connexion entre le navigateur et le proxy est concerné (évidemment pas entre proxy et le serveur cible: ce n'est même pas la même machine). Cela fonctionne simplement bien avec SSLV3. Beaucoup d'entre nous dans des situations derrière un proxy auront utilisé cela contre des serveurs qui n'ont pas pris en charge au moins TLS 1.0.

  • SSL sur le même port que le service de texte brut: e-mail.

Celui-ci est clairement hors de spécifications, mais dans la pratique, cela fonctionne souvent. Parlant strictement des spécifications parlent de passer à TLS (non SSL) après avoir utilisé la commande StartTLS. En pratique, SSL fonctionne souvent également (comme si la spécification "HTTP Over TLS" englobe également en utilisant SSL au lieu de TLS). Vous pouvez l'essayer par vous-même. En supposant que vous ayez un serveur SMTP ou IMAP prenant en charge StartTLS, utilisez Thunderbird, entrez dans les préférences, les options avancées, l'éditeur de configuration et désactivez security.enable_tls. De nombreux serveurs accepteront toujours la connexion, simplement parce que leurs implémentations déléguent la couche SSL/TLS à une bibliothèque SSL/TLS, qui sera généralement capable de gérer SSL et TLS de la même manière, sauf si elles sont configurées pour ne pas le faire. Comme la OpenLAp FAQ le place, " tandis que le mécanisme est conçu pour être utilisé avec TLSV1, la plupart des implémentations se retomberont à SSLV3 (et SSLV2) si nécessaire. ". Si vous n'êtes pas sûr, vérifiez avec un outil comme WireShark.

  • Tls sur un port distinct.

De nombreux clients peuvent utiliser TLS 1.0 (au moins) pour les protocoles où la variante sécurisée est sur un port différent. De toute évidence, il existe un certain nombre de navigateurs et de serveurs Web prenant en charge TLS 1.0 (ou supérieur) pour HTTPS. De même, SMTPS, IMAPS, POPS et LDAPS peuvent également utiliser TLS. Ils ne sont pas limités à SSL.

Quand dois-je utiliser lequel? Quand ne pas utiliser lequel?

Entre SSL/TLS explicite et implicite, cela n'a pas d'importance. Ce qui compte, c'est que votre client sait à quoi s'attendre et est configuré de manière appropriée pour le faire. Plus important encore, il devrait être configuré pour rejeter les connexions de texte brut lorsque cela s'attend à une connexion SSL/TLS, qu'il soit implicite ou explicite .

La principale différence entre SSL/TLS implicite et implicite sera dans la clarté des paramètres de configuration.

Par exemple, pour LDAP, si le client est un serveur HTTPD Apache ( mod_ldap - Sa documentation a également mal-à-tête la différence entre SSL et TLS, malheureusement), vous pouvez utiliser implicite SSL/TLS à l'aide d'une URL ldaps:// (par exemple, AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one) ou utilisez Explicit SSL/TLS à l'aide d'un paramètre supplémentaire (par exemple, AuthLDAPURL ldap://127.0.0.1/dc=example,dc=com?uid?one TLS).

Il existe peut-être généralement de parler un risque légèrement moindre lors de la spécification du protocole de sécurité dans le schéma d'URL (https, ldaps, ...) que lorsque le client configure un paramètre supplémentaire à Activer SSL/TLS, car ils peuvent oublier. Ceci est discutable. Il peut également y avoir des problèmes dans l'exactitude de la mise en œuvre d'un par rapport à l'autre (par exemple, je pense que le client LDAP Java ne prend pas en charge la vérification du nom d'hôte lors de l'utilisation ldaps://, quand il devrait, alors qu'il est pris en charge avec ldap:// + starttls).

En cas de doute, et être compatible avec plus de clients si possible, il ne semble pas faire de mal à offrir les deux services lorsque le serveur le prend en charge (votre serveur n'écoutera simplement que deux ports en même temps). De nombreuses implémentations de serveurs pour les protocoles pouvant être utilisées avec les deux modes prendront en charge les deux.

Il incombe au client de ne pas se laisser rétrograder à une connexion en texte brut. En tant qu'administrateur de serveur, vous ne pouvez rien faire techniquement de votre part pour éviter les attaques de déclassement (en dehors de nécessiter un certificat client peut-être). Le client doit vérifier que SSL/TLS est activé, qu'il s'agisse d'une connexion ou d'une commande STARTTLS-. De la même manière qu'un navigateur ne devrait pas se laisser rediriger de https:// à http://, un client pour un protocole prenant en charge STARTTLS devrait s'assurer que la réponse a été positif et la connexion SSL/TLS a été activée avant de continuer. Un attaquant actif de MITM pourrait autrement rétrograder facilement soit des connexions.

Par exemple, Les anciennes versions de Thunderbird avaient une mauvaise option pour cela appelée "Utiliser tls, si disponible" , qui impliquait essentiellement que si un attaquant MITM a pu modifier les messages du serveur afin qu'il ne puisse pas Prise en charge de la publicité pour StartTLS, le client vous laisserait silencieusement être dégradé à une connexion en texte brut. (Cette option non sécurisée n'est plus disponible à Thunderbird.)

44
Bruno

TLS est un nouveau protocole que SSL (mais Afaik, il est compatible avec SSL V3). Habituellement, il n'y a qu'une seule différence à craindre:

Un protocole SSL'ed a généralement un port séparé - par exemple, 80 pour HTTP et 443 pour HTTPS (http/ssl). Lorsque vous vous connectez au port SSL, toute la session est cryptée.

TLS est plus récent que SSL, et il ne nécessite pas de port séparé - à la place, il doit être négocié par le client. Par exemple, vous pouvez exécuter IMAP sur le port 143 et si le serveur de messagerie et le client support TLS, le client Enverra une commande STARTTLS et seulement activer le cryptage. De cette façon, vous n'avez pas besoin d'un port SSL séparé uniquement, tout en restant compatible avec les applications SSL-Moins.

Sommaire:
[.____] SSL : légèrement plus âgé. Ports séparés pour connexions plaines et cryptées. Tout le trafic sur le port SSL est toujours crypté.
[.____] [~ # ~] tls [~ # ~ ~]: port unique pour connexions simples et cryptées. Le cryptage est activé uniquement après des problèmes de client une commande STARTTLS.

13
user1686

TLS est simplement une version plus récente de SSL. Utilisez TLS lorsque vous avez la possibilité. Plus, comme d'habitude, sur Wikipedia .

10
innaM

De cela Base de connaissances de l'Université Indiana Article:

SSL signifie la couche de sockets sécurisée. Netscape a initialement développé ce protocole pour transmettre des informations privées, garantir l'intégrité des messages et garantir l'identité du serveur. SSL travaille principalement à l'aide d'un cryptage de clé publique/privé sur les données. Il est couramment utilisé sur les navigateurs Web, mais SSL peut également être utilisé avec des serveurs de messagerie ou tout type de transaction client-serveur. Par exemple, certains serveurs de messagerie instantanée utilisent SSL pour protéger les conversations.

TLS signifie la sécurité des couches de transport. Le groupe de travail sur Internet d'ingénierie (IETF) a créé TLS comme successeur de SSL. Il est le plus souvent utilisé comme paramètre dans les programmes de messagerie, mais comme SSL, TLS peut avoir un rôle dans toute transaction client-serveur.

Les différences entre les deux protocoles sont très mineures et très techniques, mais elles sont des normes différentes. TLS utilise des algorithmes de cryptage plus forts et a la capacité de travailler sur différents ports. De plus, TLS version 1.0 n'inonchère pas avec SSL version 3.0.

8
Rajat

TLS est la version plus récente de SSL. Bien que, dans certains endroits, ces mots peuvent signifier quelque chose d'autre que des protocoles, veuillez donc clarifier votre question.

4
wRAR