it-swarm.com.de

Warum benötigt TLS TCP?

Ich habe eine bevorstehende mündliche Netzwerksicherheitsprüfung und weiß, dass der Professor in früheren Prüfungen gefragt hat, warum TLS TCP erfordert. Ich weiß, dass es DTLS gibt, aber es war nicht Teil der Vorlesung. Die Frage ist also, welchen Vorteil TLS hat, wenn das zugrunde liegende Protokoll TCP sein muss. Ich habe bereits einige wilde Vermutungen gehört, aber keine überzeugenden Argumente.

Am Anfang des RFC steht :

Auf der untersten Ebene befindet sich das TLS-Aufzeichnungsprotokoll, das über einem zuverlässigen Transportprotokoll (z. B. TCP [TCP])) liegt.

Scheinbar überall sonst (nach meinem Urteil) benötigt der RFC nicht nur "ein zuverlässiges Transportprotokoll", sondern TCP).

40
UTF-8

TLS erfordert einen zuverlässigen Transport. Im Internet bleibt nur TCP übrig, da UDP keine Zuverlässigkeit bietet.

TLS erfordert einen zuverlässigen Transport, da es (in Übereinstimmung mit der Schichtarchitektur des ISO/OSI-Referenzmodells) keine Transportfehler, verlorenen Pakete oder andere Störungen behandelt, die bei IP auftreten können.

TLS wurde entwickelt, um einen sicheren Kanal zusätzlich zu einem zuverlässigen Transport zu bieten, und dies funktioniert recht gut. DTLS übernimmt (ich nehme an) die notwendige Fehlerbehandlung innerhalb des Protokolls.

Wenn TLS über UDP ausgeführt werden soll, können Verbindungen und Handshakes fehlschlagen, nur weil ein Paket während der Übertragung verloren gegangen ist und niemand es bemerkt hat.

Die Minderung solcher Probleme ist (gemäß dem ISO/OSI-Referenzmodell) die vorgesehene Aufgabe eines zuverlässigen Transports. Jeder zuverlässige Transport funktioniert theoretisch, für alle praktischen Zwecke von IP-Netzwerken bedeutet dies jedoch normalerweise TCP.

65
Tobi Nary

TLS erfordert kein TCP, sondern nur einen zuverlässigen Transport. Es gibt sogar ein Standard für TLS über SCTP , ein weiteres zuverlässiges Transportprotokoll.

Wenn Sie jedoch das heutige Internet nutzen, haben Sie normalerweise nur UDP und TCP als Transportprotokolle zusätzlich zu IP und von diesen beiden TCP ist das einzig zuverlässige) Das heißt, wenn Sie nur diese begrenzte Auswahl an Transportprotokollen zur Verfügung haben, benötigt TLS TCP, da es nicht mit UDP funktioniert. Um mit UDP zu arbeiten, gibt es ein ähnliches Protokoll DTLS, das dafür ausgelegt ist Arbeit über unzuverlässige Transporte.

35
Steffen Ullrich

Zusätzlich zu dem, was andere bereits gesagt haben, erfordert TLS ein zuverlässiges Transportschichtprotokoll, da alle Datenpakete empfangen, in der richtigen Reihenfolge empfangen und unverfälscht empfangen werden müssen. Dafür gibt es mehrere Gründe:

  • Wenn ein Paket verworfen oder beschädigt würde, hätte TLS keine Möglichkeit, die Daten aus diesem Paket wiederherzustellen, um sie der Anwendungsschicht zu präsentieren, und somit würde die Annahme der Zuverlässigkeit, die der Anwendungsschicht präsentiert wird, verloren gehen.

  • Wenn ein Paket selbst durch ein einzelnes Bit beschädigt würde, würde es wahrscheinlich aufgrund der Verschlüsselung vollständig verstümmelt sein, insbesondere wenn eine Blockverschlüsselung verwendet wird.

  • Wenn ein Paket verloren geht, beschädigt oder nicht in der richtigen Reihenfolge verarbeitet wird, kann ein auf Cipher Block Chaining basierendes Verschlüsselungsschema nicht nur den aktuellen Block nicht entschlüsseln, sondern auch für jeden nachfolgenden Block , da jeder Block von dem Block davor abhängt (und damit von allen vorherigen Blöcken). Daher würde jeder Paketfehler im Netzwerk erfordern, dass die TLS-Verbindung abgebrochen und neu verhandelt wird. Verkettungsblockverkettung XORs der Klartext für einen Chiffrierblock mit dem Chiffretext des vorherigen Blocks vor dem Verschlüsseln, um zu verhindern, dass jemand, der den Chiffretext überwacht, Muster von doppelten Klartexten aus dem Chiffretext erkennen kann.

  • Wenn ein Datensatz selbst durch ein einzelnes Bit beschädigt würde, würde der Nachrichtenauthentifizierungscode nicht übereinstimmen, was TLS (korrekt) glauben lässt, dass die Nachricht während der Übertragung geändert wurde, was zur TLS-Verbindung führen würde abgerissen werden.

  • Wenn ein Datensatz außerhalb der Reihenfolge empfangen würde, während eine Stream-Verschlüsselung verwendet würde, würde der Teil der Nachricht in diesem Datensatz falsch entschlüsselt (unter Verwendung des falschen Teils des Streams), und somit würde die MAC-Prüfung fehlschlagen und die TLS-Verbindung würde abgebrochen.

Natürlich funktioniert TLS selbst einwandfrei, solange das zugrunde liegende Transportprotokoll die Garantie für Zuverlässigkeit bietet. In TLS selbst gibt es nichts, was erfordert, dass das zugrunde liegende Transportprotokoll TCP ist. Natürlich ist TCP im Allgemeinen das zuverlässige Protokoll der Wahl, wenn es um das Internet geht.

13
reirab

TLS benötigt kein TCP. Zum Beispiel verwende ich einen TLS-Authentifizierungsschlüssel mit OpenVPN, der (gemäß meiner Konfiguration, um den Overhead zu senken) über eine TUN-Schnittstelle geht, die auf UDP läuft. TLS kann für beide verwendet werden, und wahrscheinlich zusätzlich zu anderen Dingen, die mir nicht bekannt sind.

3