Question:
Quelle couche est TLS?
Andrew Spott
2015-07-07 19:51:29 UTC
view on stackexchange narkive permalink

TLS signifie «sécurité de la couche transport ». Et la liste des numéros de protocole IP inclut "TLSP" comme "Protocole de sécurité de la couche de transport". Ces deux choses me laissent penser que TLS est un protocole de couche de transport.

Cependant, la plupart des gens semblent parler de TLS sur TCP. Wikipédia le répertorie comme un protocole de "couche d'application". Ceci est encore plus compliqué par le fait que TCP n'a rien de tel qu'un numéro de protocole: il ne contient que des octets bruts, alors comment analyser que vous obtenez un paquet TLS, par rapport à un paquet qui commence juste par 0x14 - 0x18 ou équivalent?

Connexes: [Où le cryptage SSL a-t-il lieu?] (Http://security.stackexchange.com/questions/19681/where-does-ssl-encryption-take-place)
Cela ne répond pas à votre question principale, mais ... TCP a des ports. Ce ne sont pas des numéros de protocole, mais ils remplissent souvent ce rôle, car sur la plupart des serveurs, chaque service faisant face au réseau aura un port dédié et il sait à quel type de paquets s'attendre sur ce port.
Cinq réponses:
Tom Leek
2015-07-07 20:17:35 UTC
view on stackexchange narkive permalink

Le modèle OSI, qui catégorise les protocoles de communication en couches successives, n’est que cela: un modèle . Il s'agit d'une tentative de pousser une réalité physique dans des boîtes étiquetées clairement définies. Personne n'a jamais garanti que cela fonctionne ...

Historiquement, ce modèle a été construit et publié lorsque l'ISO faisait pression pour l'adoption de ses propres protocoles réseau. Ils ont perdu. Le monde, dans son ensemble, a préféré utiliser le TCP / IP beaucoup plus simple. Le «modèle» a survécu à la mort de son écosystème initial et de nombreuses personnes ont essayé de l'appliquer à TCP / IP. C'est même généralement enseigné de cette façon. Cependant, le modèle ne correspond pas bien à TCP / IP. Certaines choses ne rentrent pas dans les couches, et SSL / TLS en fait partie.

Si vous regardez les détails du protocole:

  • SSL / TLS utilise un support de transport sous-jacent qui fournit un flux bidirectionnel d'octets. Cela le placerait quelque part au-dessus de la couche 4.
  • SSL / TLS organise les données sous forme d'enregistrements, pouvant contenir, en particulier, des messages de prise de contact. Les messages de prise de contact ressemblent à la couche 5. Cela placerait SSL / TLS au niveau 6 ou 7.
  • Cependant, ce que SSL / TLS transmet sont des "données d'application", qui sont en fait un flux bidirectionnel d'octets . Les applications qui utilisent SSL / TLS l'utilisent vraiment comme protocole de transport . Ils utilisent ensuite leur propre représentation de données et leurs propres messages et sémantiques dans ces «données d'application». Par conséquent, SSL / TLS ne peut pas être, dans le modèle OSI, au-delà de la couche 4.

Ainsi, dans le modèle OSI, SSL / TLS doit être dans la couche 6 ou 7, et, en même temps , en couche 4 ou en dessous. La conclusion est incontournable: le modèle OSI ne fonctionne pas avec SSL / TLS. TLS n'est dans aucune couche.

(Cela n'empêche pas certaines personnes de pousser arbitrairement TLS dans une couche. Comme cela n'a aucun impact pratique - il ne s'agit que d'un modèle - vous pouvez déclarer conceptuellement que TLS est la couche 2, 5 ou 17; cela ne sera pas prouvé faux.)

Merci. Cela aide vraiment. Connaissez-vous la réponse à ma dernière question alors? Puisque TCP n'a pas de numéro de protocole, comment puis-je savoir que je regarde un paquet TLS?
Habituellement, TLS se produit parce que le client et le serveur conviennent que TLS doit se produire. Par exemple, lors de la connexion à une URL `https: // ', un navigateur Web sait juste qu'il devrait commencer un TLS, car c'est ce que signifie le' s 'dans' https '. _De l'extérieur_, vous pouvez généralement déduire que TLS se produit parce que vous reconnaissez les en-têtes d'enregistrement TLS. Chaque enregistrement commence par un en-tête de cinq octets: un octet pour le type d'enregistrement (0x14 à 0x17), puis la version du protocole (0x03 suivi de 0x00, 0x01, 0x02 ou 0x03), puis la longueur de l'enregistrement (sur deux octets, big-endian) .
Pour résumer, vous savez généralement que TLS est là à cause du contexte (par exemple, s'il est sur le port TCP 443, alors il y a de fortes chances que ce soit TLS), et vous pouvez reconnaître de manière _heuristique_ les enregistrements TLS avec un faible taux de faux positifs. Par exemple, hier encore, je regardais des paquets RDP, et en plein milieu d'eux, j'ai reconnu une poignée de main TLS encapsulée. Notamment, la poignée de main implique l'envoi d'un certificat depuis le serveur, et le certificat encodé se démarque vraiment dans les vidages hexadécimaux (enfin, pour moi du moins).
L'un des concepts les plus utiles du modèle OSI est la séparation des couches. TCP / IP suit cela dans une certaine mesure. Donc TCP ne sait rien de ce qui est encapsulé dans les paquets, donc pas de numéro de protocole. Vous devez donc impliquer le paquet à travers ce que l'on appelle généralement "l'inspection approfondie des paquets".
@AndrewSpott TCP n'a en effet pas de numéro de protocole mais il a des numéros de port qui, dans une certaine mesure, servent le même objectif. Habituellement, vous n'aurez pas plus d'un service à l'écoute sur un numéro de port spécifique, et ce service sait quel protocole parler sur ce port. Dans des cas moins courants, on peut décider de faire comprendre à un service différents protocoles sur un seul port et demander à ce service de déduire des octets envoyés par le client, quel protocole est utilisé. Dans certains cas, il peut s'agir d'une vulnérabilité de sécurité si le client et le serveur parlent des protocoles différents.
De toute évidence, des nombres imaginaires devraient être utilisés pour TLS. TLS est la couche 4i.
Il s'avère que dans les couches supérieures, OSI est trop fin (dans le «monde réel», nous utilisons les protocoles Internet, qui compressent les couches 5-7 en une seule couche) tandis que dans les couches inférieures, il est trop grossier (encore une fois, dans le «monde réel», nous utilisons des protocoles basés sur IEEE tels que Ethernet ou WiFi, qui divisent les couches OSI 1 et 2 en trois couches: PHY, MAC et LLC).
@JörgWMittag: Le modèle de couches OSI a des limitations supplémentaires lors de la communication via des liens avec des temps de propagation et des caractéristiques de fiabilité différents, et contribue probablement à beaucoup de frustration des utilisateurs avec le WiFi. Si un utilisateur clique sur un bouton et n'obtient aucune réponse, le gestionnaire WiFi de la machine locale saura si les requêtes associées au clic ont encore atteint le routeur, et saura également combien de temps il s'est écoulé depuis qu'il a été informé pour la dernière fois que le routeur n'a pas de données. disponible, mais il n’existe aucun mécanisme permettant d’informer l’application.
RoraΖ
2015-07-07 20:14:49 UTC
view on stackexchange narkive permalink

Modèle TCP / IP

  1. Couche de liaison
  2. Couche Internet (IP)
  3. Couche de transport
  4. Application

TLS opère entre la couche Transport et la couche Application (en quelque sorte). En réalité, il enveloppe simplement le trafic de la couche application dans le chiffrement pendant le transport.

L'échange de clés TLS se produit entre les couches. Ici, ce n'est pas vraiment la couche de transport car des éléments comme les numéros de port et les numéros de séquence sont déjà en place au niveau de la couche de transport. Il n'envoie que des données pour établir des protocoles de cryptage afin de pouvoir envelopper la couche Application.

IPSec fait en quelque sorte la même chose, uniquement dans une couche antérieure. La sécurité IP protège tout ce qui se trouve au-dessus de la couche IP. La sécurité du transport protège tout ce qui se trouve au-dessus de la couche de transport. Les échanges de clés pour les deux se trouvent dans un endroit étrange car ils ont juste besoin d'envoyer des données pour établir la couche sécurisée. Un peu comme ICMP est considéré comme un protocole IP, mais il contient toujours des données après la couche IP. Est-ce que cela en fait une couche de transport? Non.

Modèle OSI

Le modèle OSI a un peu plus de granularité.

  1. Couche physique
  2. Couche de liaison de données
  3. Couche réseau (IP)
  4. Couche de transport (TCP)
  5. Couche de session (TLS)
  6. Présentation Layer
  7. Application Layer (HTTP)

TLS établit une session chiffrée. Dans le modèle OSI, c'est là que TLS opère. Il configure sa session et ajoute une couche de cryptage pour la couche d'application (HTTP).

Une réponse connexe.

Analyse de TLS

Dans l ' En-tête du protocole de contrôle de transmission, il y a un champ Décalage des données . Ce champ représente la taille de l'en-tête TCP en mots de 32 bits. La taille minimale de cette valeur est de 5 (20 octets). Il s'agit d'un décalage fixe depuis le début de l'en-tête TCP. En utilisant cette valeur, vous connaîtrez la taille du TCP et pourrez l'utiliser pour calculer le début de la partie TLS.

Un enregistrement TLS commencera toujours par un type de contenu, puis par la version SSL. Il n'y a que 5 types de contenu différents et 4 versions différentes à craindre. Donc, en utilisant les 3 premiers octets des données suivant l'en-tête TCP, vous devriez être en mesure de déterminer si SSL / TLS est utilisé.

Je lancerais Wireshark sur votre machine (non -work) et filtre sur "ssl". Ensuite, accédez simplement à https://www.google.com. Vous pourrez voir l'intégralité de la poignée de main. Toutes les couches sont réparties pour vous. Cela donnera une bonne représentation de la façon dont les couches sont construites avec TLS, et vous pourrez voir chacun des enregistrements TLS.

Merci. Pouvez-vous répondre à la deuxième partie de ma question? À savoir, maintenant que j'ai la charge utile d'un paquet TCP, comment puis-je savoir que je regarde un paquet TLS?
@AndrewSpott Désolé, j'ai mis à jour ma réponse.
StackzOfZtuff
2015-07-07 20:28:07 UTC
view on stackexchange narkive permalink

Cette réponse ne traite que du sous-aspect "TLSP" de la question.


la liste des numéros de protocole IP inclut "TLSP" comme "Protocole de sécurité de la couche de transport".

Je n'avais jamais entendu parler de ce protocole. Ce n'est pas le protocole que vous utilisez pour afficher les pages HTTPS.

TLSP semble être un protocole très obscur. Et il a été enregistré en 1994-10. C'était avant le protocole que nous appelons maintenant communément "TLS". À l'époque, le protocole s'appelait encore "SSL". Le premier projet public de "TLS" est daté de deux ans plus tard, le 26/11/1996.

Voir cette question pour plus de détails sur la chronologie:

L'IANA nomme "Christer_Oberg@bull.se" comme titulaire. Ce nom ne me dit rien. Le site bull.se n'est également plus actif.

Il existe en fait une page LinkedIn pour un suédois Christer Öberg qui a travaillé pour une entreprise "Bull" en tant que "CTO security solutions" en 1994. Je suppose que c'est le gars qui a soumis une fois l'enregistrement "TLSP". (Et aussi qu'il est le seul à pouvoir vous dire ce qu'était vraiment "TLSP".)

Selon Wikipedia, «Transport Layer Security Protocol» est synonyme de «Transport Layer Security». Il se peut que Wikipédia se trompe.
Ouais. Ils ne donnent pas de citation pour cela. Je pense que quelqu'un est devenu confus. Mais je n'ai pas vérifié. Cela devrait être facile à dire à partir de l'historique des modifications qui a créé ce lien.
Tyler Durden
2015-07-08 02:47:41 UTC
view on stackexchange narkive permalink

TCP a un numéro de protocole IP: 0x06

TSL / SSL est un protocole d'application, ce qui signifie qu'un programme (pas le système d'exploitation) traite les paquets. Par exemple, si un serveur Web accepte les requêtes HTTPS, c'est alors le serveur Web qui traite les paquets SSL qui sont à l'intérieur des paquets TCP.

Le protocole TLSP 0x38 est spécifique à Kryptonet. Personne n'a utilisé la gestion des clés Kryptonet depuis des années.

Les paquets de communication ne sont pas traités de manière générique en fonction de leur contenu. Le serveur s'attend à ce que les paquets soient dans le bon protocole dès le départ. Par exemple, si un serveur SSL écoute sur une socket et reçoit un paquet non SSL, il l'ignorera.

Amar T
2020-02-19 17:47:50 UTC
view on stackexchange narkive permalink

Couche de transport comme son nom l'indique. La couche de transport est responsable de la communication de bout en bout, donc toutes les données qui entrent dans la couche réseau / Internet doivent être cryptées, cela est fait par la couche au-dessus de la couche réseau / Internet. Et c'est la couche de transport

TLS n'est pas de bout en bout.Il est facilement cassé en plusieurs points en cours de route.TLS ne peut pas être utilisé pour transporter des données, simplement pour chiffrer les données transportées, donc non, il ne se trouve pas sur la couche Transport.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...