web-dev-qa-db-fra.com

Pourquoi TLS nécessite TCP?

J'ai un examen de sécurité du réseau oral à venir et je sais que lors des examens précédents, le professeur a demandé pourquoi TLS nécessite TCP. Je sais qu'il y a DTLS mais cela ne faisait pas partie de la conférence. La question est donc de savoir quel avantage TLS gagne en exigeant que son protocole sous-jacent soit TCP, je suppose. J'ai déjà entendu des suppositions folles mais aucun argument convaincant.

Au début du RFC, il est dit :

Au niveau le plus bas, superposé à un protocole de transport fiable (par exemple, TCP [TCP]), se trouve le protocole d'enregistrement TLS.

Apparemment partout ailleurs (selon mon jugement), le RFC ne nécessite pas seulement "un protocole de transport fiable" mais TCP en particulier.

40
UTF-8

TLS nécessite un transport fiable. Sur Internet, cela ne laisse que TCP, car UDP n'offre pas de fiabilité.

TLS nécessite un transport fiable car (conformément à l'architecture en couches du modèle de référence ISO/OSI), il ne gère pas les erreurs de transport, les paquets perdus ou d'autres perturbations qui peuvent survenir avec IP.

TLS est conçu pour offrir un canal sécurisé en plus d'un transport fiable et il le fait très bien. DTLS effectue (je suppose) la gestion des erreurs nécessaire au sein du protocole.

Si TLS devait être exécuté sur UDP, les connexions et les prises de contact pourraient échouer simplement parce qu'un paquet s'est perdu en transit et que personne ne l'a remarqué.

L'atténuation de ces problèmes est (selon le modèle de référence ISO/OSI) la tâche désignée d'un transport fiable. Tout transport fiable fonctionne théoriquement, mais à toutes fins pratiques des réseaux IP, cela implique généralement TCP.

65
Tobi Nary

TLS ne nécessite pas TCP, il nécessite uniquement un transport fiable. Il existe même un standard pour TLS sur SCTP qui est un autre protocole de transport fiable.

Mais, si vous utilisez Internet aujourd'hui, vous n'avez généralement que UDP et TCP comme protocoles de transport sur IP et à partir de ces deux TCP est le seul fiable) . Ce qui signifie que si vous ne disposez que de cette sélection limitée de protocoles de transport, alors TLS nécessite TCP car il ne fonctionne pas avec UDP. Pour travailler avec UDP, il existe un protocole similaire DTLS qui est conçu pour travailler sur des transports peu fiables.

35
Steffen Ullrich

En plus de ce que d'autres ont déjà dit, TLS nécessite un protocole de couche de transport fiable car il exige que tous les paquets de données soient reçus, reçus dans l'ordre et reçus sans être corrompus. Il y a plusieurs raisons à cela:

  • Si un paquet était abandonné ou corrompu, TLS n'aurait aucun moyen de récupérer les données de ce paquet à présenter à la couche application et, ainsi, l'hypothèse de fiabilité présentée à la couche application serait perdue.

  • Si un paquet était corrompu, même par un seul bit, il serait probablement complètement brouillé en raison du chiffrement, en particulier si un chiffrement par bloc est utilisé.

  • Si un paquet était perdu, corrompu ou traité dans le désordre, tout schéma de chiffrement basé sur Cipher Block Chaining échouerait non seulement à déchiffrer le bloc actuel, mais échouerait également pour chaque bloc après , car chaque bloc dépend du bloc qui le précède (et, par conséquent, de tous les blocs précédents.) Ainsi, toute erreur de paquet sur le réseau nécessiterait que la connexion TLS soit supprimée et renégociée. Le bloc de chiffrement enchaînant les XOR le texte en clair d'un bloc de chiffrement avec le texte chiffré du bloc précédent avant de le chiffrer afin d'empêcher une personne surveillant le texte chiffré de pouvoir détecter des modèles de textes en double en double à partir du texte chiffré.

  • Si un enregistrement était corrompu, même par un seul bit, le Message Authentication Code ne correspondrait pas, ce qui obligerait TLS à penser (correctement) que le message avait été modifié en transit, ce qui entraînerait la connexion TLS être démoli.

  • Si un enregistrement était reçu dans le désordre alors qu'un chiffrement de flux était en cours d'utilisation, la partie du message dans cet enregistrement serait décryptée de manière incorrecte (en utilisant la mauvaise partie du flux) et, par conséquent, la vérification MAC échouerait et le La connexion TLS serait interrompue.

Bien sûr, TLS lui-même fonctionnera bien tant que le protocole de transport sous-jacent fournit la garantie de fiabilité. Rien dans TLS lui-même n'exige que le protocole de transport sous-jacent soit TCP. Bien sûr, TCP est généralement le protocole fiable de choix en ce qui concerne Internet.

13
reirab

TLS ne nécessite pas TCP . Par exemple, j'utilise une clé d'authentification TLS avec OpenVPN qui (selon ma configuration pour réduire la surcharge) passe par une interface TUN qui utilise UDP . TLS peut être utilisé sur les deux, et probablement sur d'autres choses que je ne connais pas.

3