不是真的。
這兩個協議都沒有任何旨在提供機密性的內置功能。上面的協議層(或下面的下面的)應該提供任何安全性。
TCP是比UDP更複雜的協議,這使得它很難被欺騙,但是這些並發症很少會成為嚴重的障礙。
當人們說TCP比UDP“更可靠”時,他們並不是在指安全性。 TCP更可靠,因為它確保按順序接收所有段,並重新傳輸所有丟失的段。 UDP不能保證這一點。當連接不良時,UDP段可能會丟失而無法跟踪或到達錯誤的順序。如何解決此問題取決於應用程序。
不是真的。
這兩個協議都沒有任何旨在提供機密性的內置功能。上面的協議層(或下面的下面的)應該提供任何安全性。
TCP是比UDP更複雜的協議,這使得它很難被欺騙,但是這些並發症很少會成為嚴重的障礙。
當人們說TCP比UDP“更可靠”時,他們並不是在指安全性。 TCP更可靠,因為它確保按順序接收所有段,並重新傳輸所有丟失的段。 UDP不能保證這一點。當連接不良時,UDP段可能會丟失而無法跟踪或到達錯誤的順序。如何解決此問題取決於應用程序。
要使用TCP將數據發送到應用程序,首先必須建立一個連接。在建立連接之前,數據包僅到達OS層,而不到達應用程序。建立連接要求您將數據包接收回初始端。如果要偽造不在自己網絡上的IP地址並建立TCP連接,則需要能夠攔截另一側發出的數據包。 (您需要位於端點之間,以及到達偽造IP地址的數據包通常可以到達的位置,或執行其他一些巧妙的路由技巧。)
UDP沒有連接,因此您可以偽造具有任意IP地址的數據包,它應該到達應用程序。當然,除非您在正確的“位置”,否則您仍然不會取回數據包。這是否重要取決於您放置在應用程序中的安全性。如果您比應用程序內部的其他IP地址更信任某些IP地址,則可能是一個問題。
因此從這個意義上講,TCP比UDP更“安全”。取決於應用程序,這可能與安全性相關或無關。就其本身而言,用TCP代替UDP並不是一個很好的理由,因為這兩個協議之間還涉及其他折衷。
在閱讀MS SDL(Microsoft安全開發生命週期)演示文稿時,我發現建議在應用程序中用TCP替換UDP,因為TCP比UDP更安全。但是它們都只是傳輸層,僅此而已。
那麼,為什麼TCP比UDP更安全?
普通UDP不會保持狀態,沒有握手等。這意味著除非其他層上沒有保護措施,否則攻擊者可以輕鬆發送欺騙性的數據包。
另一方面,發送欺騙性的TCP數據包需要攻擊者猜測已建立連接的序列號和客戶端端口。
TCP並不比UDP更安全,它是有狀態的,並且需要每個段的確認,因此它更加“可靠”。 UDP是無狀態的,只發送段就不知道客戶端是否獲得它們。
兩者都沒有其他定制的安全功能,差別在於每種協議的不同要求,任何可感知的安全利益是協議功能性的副產品,而不是故意的安全功能。
編輯:UDP和TCP具有特定用途,這些用途均與安全性無關。
兩者協議依賴於其他協議來提供安全性。因此,儘管TCP的受攻擊面可能稍小,但這對於確保您需要以安全性為導向的協議的安全性而言,確實是無關緊要的。像DTLS或googles QUIC之類的協議。
選擇針對更適合UDP的用例實現TCP,而不是正確地保護UDP(在大多數用例中TCP也需要保護)。使用9桿鐵桿進行推桿是因為您認為9桿鐵桿是在戰鬥中捍衛自己的更好武器……當口袋裡有槍時。
是的,但是當我們談論“安全性”時,我們必須非常清楚所談論的內容,而不是將此語句概括為上層協議。
當前,安全性通常與 CIA 三合會相關:
版本4 IP協議(至今仍是最常用的協議)是一種非常古老的野獸,它是在70年代和80年代開發的。
當時,機密性並不是真正的主題,而真正的目標是為了實現完整性和可用性(Arpanet網絡是Internet的始祖,它誕生了IP協議,旨在即使在發生核戰爭的情況下也能確保服務的連續性,而不是保護傳輸中的數據)。
在這種光纖中,在IP層上開發了兩種傳輸協議:TCP和UDP。
TCP wa旨在確保完整性和可用性屬性的一種。它包括當時的先進技術,例如三向握手,參數協商,各種連接狀態處理,透明的數據包重新排序,確認窗口和重試機制。這為發送方提供了很好的保證,即發送方發送的數據已以完整無損的形式(即沒有丟失,更改或無序的部分)被接收。
提醒該協議所針對的是技術災難,而不是惡意篡改傳輸中的數據。當時這個問題完全不在討論之列。
相反,UDP被設計為快速協議。它沒有上述功能,因此也沒有任何開銷。特別是,當發送方使用UDP發送某些數據時,接收到的數據可能是不完整的,無序的或根本沒有接收到:UDP協議本身不提供任何機制來防止或檢測到這兩個發送方或接收方。 / p>
這樣,當關注安全的數據完整性和可用性屬性時,TCP確實比UDP更安全。
當然不是。
這僅意味著開發依賴UDP的應用協議的人們將有更多工作,因為他們可能需要在應用協議中解決缺少的功能在UDP協議中。他們將必須考慮到發送的數據不一定會被接收,接收的數據可能未按正確的順序等等。這些都是眾所周知的問題。例如,
OpenVPN支持TCP主要是為了與限制性防火牆兼容,默認情況下運行,並且在UDP上運行效果最佳。可以將其切換到TCP,但不會以任何方式提高其安全性,因為兩個傳輸層協議UDP和TCP之間的差異完全由OpenVPN自己處理。將其切換為TCP只會增加OpenVPN協議的TCP開銷,從而降低其性能。
否,這完全是應用程序協議設計的選擇
UDP是更原始的協議。如果正確,謹慎地使用它,則 可能會比TCP獲得更好的性能,但代價是應用協議的開發和維護更加困難。
大多數協議都不是時間敏感的,因此TCP是使用最廣泛的協議。確實,當您加載網頁或接收電子郵件時,遲早接收10毫秒也沒有什麼區別。
除了先前引用的OpenVPN之外,還有兩個使用UDP的經典協議示例,是媒體流和DNS。
使用媒體流,只要視頻或音頻流暢且同步地播放,您就不會真正在乎是否缺少一個視頻幀或幾毫秒的視頻或音頻。在這種情況下,您不想引起重複的暫停,因為TCP檢測到一個丟失的數據包並要求發送方重新發送最後一個確認窗口的內容。
對於DNS,請求和答复通常非常短並且您希望名稱解析過程盡可能快(請注意,時間敏感度越來越低的答案,例如DNS區域傳輸通常仍會在TCP上發生)。與處理每個請求的成熟的三向握手相比,在請求或其答案丟失的機會很少的情況下,重新發送名稱解析請求到DNS服務器的速度要快得多。
到目前為止,我們所關心的只是,按照舊的IPv4的精神,是傳輸速度與數據完整性+可用性之間的平衡。現在,如果我們想在此之上添加機密性,我們可以做到這一點,但是它必須在應用程序層完成,因為如前所述,IPv4不受機密性問題的關注。
可以在應用程序層上實現現代的,完整的安全性實現,並且依賴於TCP或UDP(或兩者)協議,而對應用程序協議安全性本身沒有任何影響(請參見上面的OpenVPN示例)。 / p>
但是,如開頭所述,IPv4確實來自另一個計算時代。如果它是IPv6的名稱的後繼者,它本身就在IP層支持IPSec,從而在傳輸協議(例如UDP和TCP)下面提供了更現代的安全服務。負責將應用程序中的傳輸中數據加密委派給網絡層,並允許UDP和TCP提供完全相同的安全性保證。但是,在大多數情況下,UDP性能的提高將被IPSec的開銷所抵消,因此,只要使用IPv6 IPSec,我不確定使用UDP代替TCP是否會有任何優勢。
TCP是“基於連接的”,這意味著它以序列號的形式內置了可靠性。因此,例如,我通過TCP向您發送了一個圖像,但是有1/4的數據包丟失了。由於我們有一個基於序列號的基於連接的協議,因此您的計算機將知道您缺少該數據,因此向我請求該數據以確保數據完整性。這比較慢,但是更安全。另外,為了欺騙TCP / IP數據包,您必須捕獲該序列號並發送惡意數據包。沒有中間人,這幾乎是不可能的!
UDP是“無連接”協議,這意味著它只是發送數據而忘記了。沒有數據的可靠性或完整性,但是對於某些應用程序它更快,更高效。
在實踐中,TCP在防火牆網絡中更容易監控:與外部連接與內部建立的連接有關的流量,以及與服務器角色相對應的流量,可以通過單獨的策略加以區分和處理。例如,您可以輕鬆確保受保護的網絡上的主機可以訪問外部Web服務器,但不能充當外部客戶端的Web服務器。對於UDP服務(例如DNS),實施此類策略需要更多的情報和猜測,因為您必須考慮傳輸層上下的信息。
TCP不比UDP“更安全”:
UDP只是IP數據包之上的一個薄層,而TCP具有復雜的和標準的其他機制,這些機制是IP包的一部分。
值得一看的是QUIC項目,以了解有關TCP / UDP差異的更多信息,以及Google為什麼要在UDP而非TCP之上創建自己的安全HTTP / 2傳輸層。
讓我們引用 https://www.chromium.org/quic:
QUIC與TCP + TLS + HTTP2相比的主要優勢包括:
- 連接建立等待時間
- 改善的擁塞控制
- 沒有線頭阻塞的多路復用
- 前向糾錯
- 連接遷移
讓我們從安全性的角度為每個對象設置一些優點/缺點,然後查看:
UDP
TCP
當前,TCP不比UDP更安全。 TCP比UDP更可靠,因為TCP可以檢測並重新傳輸錯誤數據包。
如果希望進行安全的數據傳輸,那麼您正在考慮使用諸如TLS或IPSec之類的格式加密。
TCP具有連接的概念,而UDP沒有。但是,從安全角度來看,連接概念既是優點也是缺點。連接的主要安全強度是標準化的,應用程序開發人員,網絡設備和防火牆都可以依靠固定的方法來建立連接,處理數據包分段,重傳等。此外,連接概念使在頂部建立其他安全性層(例如SSL)變得更加容易。
但是,TCP連接並不能為直接針對傳輸層的攻擊提供很多保護,例如SYN洪水攻擊。理論上,使用UDP可以對每個數據包進行身份驗證以減輕其中的某些風險。
因此,我認為UDP從理論上講比TCP更安全,但是我們生活在一個安全性不高的世界中所以理論上的力量是沒有意義的。在現實世界中,可以找到兩種方式的示例-一種協議以另一種協議不易受到攻擊的方式失敗。
總而言之,我認為沒有答案要使哪種協議更“安全”,您需要使問題符合您所關注的威脅以及您願意花費多長時間來緩解這些威脅。如果是所有威脅,而您又有無限的時間和金錢,那麼我的理論答案就成立了。