web-dev-qa-db-fra.com

Quelle couche est TLS?

TLS signifie " transport sécurité de la couche". Et la liste des numéros de protocole IP inclut "TLSP" comme "Transport Layer Security Protocol". Ces deux choses me laisseraient croire que TLS est un protocole de couche transport.

Cependant, la plupart des gens semblent parler de TLS sur TCP. Wikipedia le répertorie comme un protocole de "couche d'application". Ceci est encore compliqué par le fait que TCP n'a pas quelque chose comme un numéro de protocole: il empaquette juste des octets bruts, alors comment analyser si vous obtenez un paquet TLS, vs un paquet qui commence simplement par 0x14 - 0x18 ou équivalent?

60
Andrew Spott

Le modèle OSI , qui classe les protocoles de communication en couches successives, n'est que cela: un modèle . C'est une tentative de pousser une réalité physique dans des boîtes étiquetées soigneusement 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 son propre protocoles résea . Ils ont perdu. Le monde, dans son ensemble, a préféré utiliser le plus simple TCP/IP . Le "modèle" a survécu à la mort de son écosystème initial, et de nombreuses personnes ont essayé de l'appliquer à TCP/IP. Il est même couramment 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, qui peuvent contenir notamment des messages de prise de contact. Les messages de prise de contact ressemblent à la couche 5. Cela mettrait SSL/TLS à la couche 6 ou 7.
  • Cependant, ce que SSL/TLS transmet, ce sont des "données d'application", qui sont en fait un flux d'octets bidirectionnel. Les applications qui utilisent SSL/TLS l'utilisent vraiment comme protocole de transport . Ils utilisent ensuite leur propre représentation de données et messages et sémantique au sein de ces "données d'application". Par conséquent, SSL/TLS ne peut pas, dans le modèle OSI, dépasser la couche 4.

Ainsi, dans le modèle OSI, SSL/TLS doit être dans la couche 6 ou 7 et, en même temps , dans la 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. Puisqu'il n'a aucun impact pratique - ce n'est qu'un modèle - vous pouvez conceptuellement déclarer que TLS est la couche 2, 5 ou 17; il ne sera pas prouvé faux.)

101
Tom Leek

Modèle TCP/IP

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

TLS fonctionne entre la couche Transport et la couche Application (sorte de). Vraiment, 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 sur la couche de transport. Il s'agit uniquement d'envoyer des données pour établir des protocoles de chiffrement afin de pouvoir envelopper la couche Application.

IPSec fait 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é des transports protège tout ce qui se trouve au-dessus de la couche de transport. Les échanges de clés pour les deux sont dans un endroit étrange car ils ont juste besoin d'envoyer des données pour établir la couche sécurisée. Un peu comme la façon dont 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. Couche de présentation
  7. Couche d'application (HTTP)

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

ne réponse connexe .

Analyser TLS

Dans le En-tête du protocole de contrôle de transmission , il y a un champ Data Offset. Ce champ représente la taille de l'en-tête TCP en mots 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 TLS Record commencera toujours par un type de contenu, puis 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 pouvoir déterminer si SSL/TLS est utilisé.

Je voudrais exécuter Wireshark sur votre machine (non-travail) et filtrer 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 découpées 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.

33
RoraΖ

Cette réponse ne concerne que le sous-aspect "TLSP" de la question.


la liste des numéros de protocole IP comprend "TLSP" comme "Transport Layer Security Protocol".

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 c'était enregistré en 1994-1 . C'était avant le protocole que nous appelons maintenant couramment "TLS". À l'époque, le protocole s'appelait toujours "SSL". Le premier projet public de "TLS" est daté de deux ans plus tard, le 1996-11-26.

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

L'IANA nomme "[email protected]" en tant que déclarant. Ce nom ne me dit rien. Le site Web bull.se n'est également plus actif.

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

8
StackzOfZtuff

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

TSL/SSL est un protocole d'application qui signifie qu'un programme (pas le système d'exploitation) traite les paquets. Par exemple, si un serveur Web accepte les demandes HTTPS, c'est le serveur Web qui traite les paquets SSL qui se trouvent à l'intérieur des paquets TCP 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 un socket et reçoit un paquet non SSL, il l'ignorera.

3
Tyler Durden