Ist TCP sicherer als UDP?
Ja, aber wir müssen uns sehr klar darüber sein, worüber wir sprechen, wenn wir über "Sicherheit" sprechen, und diese Aussage nicht auf Protokolle der oberen Ebene verallgemeinern.
Derzeit wird Sicherheit häufig mit der CIA -Triade verknüpft:
- C Onfidentiality.
- I Integrität.
- A Verfügbarkeit.
Die Version 4 des IP-Protokolls, das heute noch am häufigsten verwendet wird, ist ein sehr altes Tier, das in den 70er und 80er Jahren entwickelt wurde.
Zu dieser Zeit war Vertraulichkeit nicht wirklich ein Thema und das, worauf es wirklich abzielte Ziel war es, Integrität und Verfügbarkeit zu erreichen (das Arpanet-Netzwerk, der Vorfahr des Internets, aus dem das IP-Protokoll hervorging, sollte die Kontinuität des Dienstes auch im Falle eines Atomkrieges gewährleisten und keine Daten während des Transports schützen).
In dieser Optik wurden zwei Transportprotokolle über die IP-Schicht entwickelt: TCP und UDP.
TCP wa Es wurde entwickelt, um sowohl die Eigenschaften Integrität als auch Verfügbarkeit sicherzustellen. Es umfasst die damals fortschrittlichen Techniken wie einen Drei-Wege-Handshake, die Aushandlung von Parametern, die Behandlung verschiedener Verbindungsstatus, die transparente Neuordnung von Paketen, Bestätigungsfenster und Wiederholungsmechanismen. Dies gibt dem Absender eine gute Garantie dafür, dass die von ihm gesendeten Daten in einer vollständig unverfälschten Form empfangen wurden (dh keine fehlenden, geänderten oder ungeordneten Teile).
Erinnern Sie sich jedoch daran, dass das, worauf dieses Protokoll abzielte, a war technische Katastrophe, keine böswillige Manipulation der Daten während der Übertragung. Ein solches Problem war zu diesem Zeitpunkt völlig außer Reichweite.
UDP hingegen wurde als schnelles Protokoll konzipiert. Es hat keine der oben genannten Funktionen und daher auch keine ihrer Gemeinkosten. Insbesondere wenn der Absender einige Daten über UDP sendet, können die empfangenen Daten unvollständig, ungeordnet oder überhaupt nicht empfangen sein: Das UDP-Protokoll selbst bietet keinen Mechanismus, um dies weder auf der Sender- noch auf der Empfängerseite zu verhindern oder zu erkennen / p>
Auf diese Weise ist TCP in der Tat sicherer als UDP, wenn Sie sich auf die Datenintegrität und Verfügbarkeitseigenschaften der Sicherheit konzentrieren.
Ist ein Anwendungsprotokoll, das auf TCP basiert, sicherer als eines, auf das Sie sich verlassen UDP?
Mit Sicherheit nicht.
Dies bedeutet nur, dass Benutzer, die ein auf UDP basierendes Anwendungsprotokoll entwickeln, mehr Arbeit haben, da sie möglicherweise in ihren Anwendungsprotokoll-Problemumgehungen die fehlenden Funktionen implementieren müssen im UDP-Protokoll. Sie müssen berücksichtigen, dass gesendete Daten möglicherweise nicht unbedingt empfangen werden, dass empfangene Daten möglicherweise nicht in der richtigen Reihenfolge vorliegen usw. Dies sind alles bekannte Probleme.
OpenVPN zum Beispiel, während es unterstützt TCP hauptsächlich aus Gründen der Kompatibilität mit restriktiven Firewalls, wird standardmäßig ausgeführt und läuft am besten über UDP. Ein Wechsel zu TCP ist möglich, erhöht jedoch in keiner Weise die Sicherheit, da der Unterschied zwischen den beiden Transportschichtprotokollen UDP und TCP vollständig von OpenVPN selbst behandelt wird. Wenn Sie auf TCP umschalten, wird nur der TCP-Overhead zum OpenVPN-Protokoll hinzugefügt, wodurch die Leistung verringert wird.
Ist TCP besser als UDP?
Nein, dies ist ausschließlich eine Wahl für das Anwendungsprotokolldesign
UDP ist ein roheres Protokoll. Bei korrekter und sorgfältiger Verwendung kann eine bessere Leistung als TCP erzielen, was zu einer schwierigeren Entwicklung und Wartung des Anwendungsprotokolls führt.
- Wenn die Anwendung nicht rechtzeitig ist TCP ist sensibel und bietet sich als natürliche Wahl an, da das Rad nicht neu erfunden werden muss.
Wenn die Anwendung zeitkritisch ist, muss eine Diskussion stattfinden, in der entschieden werden soll, ob jede Anwendung ihren Nachteil hat: eine potenzielle Leistungseinbuße mit TCP gegen eine sicher komplexere Anwendung mit UDP. Die meisten Protokolle sind nicht zeitkritisch und daher ist TCP das am häufigsten verwendete Protokoll. Wenn Sie eine Webseite laden oder eine E-Mail erhalten, gibt es keinen Unterschied, ob Sie sie 10 Millisekunden früher oder später erhalten.
Zwei klassische Beispiele für Protokolle, die UDP verwenden, zusätzlich zu dem zuvor genannten OpenVPN: sind Media Streaming und DNS.
Beim Media-Streaming ist es Ihnen egal, ob ein Videobild oder einige Millisekunden Video oder Audio fehlen, solange das Video oder Audio reibungslos und synchron abgespielt wird. In diesem Fall möchten Sie keine sich wiederholenden Pausen einleiten, da TCP ein fehlendes Paket erkannt und den Absender aufgefordert hat, den Inhalt des letzten Bestätigungsfensters erneut zu senden.
Bei DNS sind Anforderungen und Antworten normalerweise sehr kurz und Sie möchten, dass der Prozess der Namensauflösung so schnell wie möglich ist (beachten Sie, dass längere und weniger zeitkritische Antworten wie DNS-Zonenübertragungen normalerweise immer noch auf TCP stattfinden). Es ist schneller, die Namensauflösungsanforderung an den DNS-Server zu senden, wenn die Anforderung oder ihre Antwort nur wenige Male verloren geht, als für jede Anforderung einen vollständigen Drei-Wege-Handshake zu verarbeiten.
Was ist mit Vertraulichkeit und böswilliges Schnüffeln / Manipulieren (und IPv6)?
Alles, was uns bisher wichtig war, war im Geiste dieses alten IPv4 das Gleichgewicht zwischen Übertragungsgeschwindigkeit und Datenintegrität + Verfügbarkeit. Wenn wir darüber hinaus noch Vertraulichkeit hinzufügen möchten, können wir dies tun, dies muss jedoch auf Anwendungsebene erfolgen, da IPv4, wie bereits erwähnt, nicht von Vertraulichkeitsproblemen betroffen ist.
Eine moderne, vollwertige Sicherheitsimplementierung kann auf Anwendungsebene implementiert werden und auf TCP- oder UDP-Protokollen (oder beiden) basieren, ohne dass dies Auswirkungen auf die Sicherheit des Anwendungsprotokolls selbst hat (siehe Beispiel OpenVPN oben).
Wie eingangs erwähnt, stammt IPv4 jedoch tatsächlich aus einem anderen Computerzeitalter. Es erhielt einen Nachfolger mit dem Namen if IPv6, das IPSec auf IP-Ebene nativ unterstützt und somit modernere Sicherheitsdienste unter Transportprotokollen wie UDP und TCP bereitstellt.
Dies ermöglicht Delegieren der Datenverschlüsselung während der Übertragung von der Anwendung an die Netzwerkschicht und Ermöglichen, dass sowohl UDP als auch TCP genau die gleichen Sicherheitsgarantien bieten. In den meisten Szenarien wird der UDP-Leistungsgewinn jedoch durch den IPSec-Overhead ausgeglichen, sodass ich nicht sicher bin, ob die Verwendung von UDP anstelle von TCP von Vorteil ist, solange IPv6-IPSec verwendet wird.