Open ericltw opened 5 years ago
每個連接到internet的設備都分配一個ip,確保連接internet的設備能夠互相發送data。
IP protocol通過將data分成小塊的data來工作,這些小塊的data稱為封包(packets),每個封包包含header,header內包含像是source address和destination address。
當封包離開設備,會經過一個個gateway轉發,直到到達指定得destination address。因為data被拆分為packets,因此不能保證所有的封包經過同相同的路由,甚至不依照順序到達。
IP僅保證了封包從source address傳送到destination address,但IP不處理封包掉包或是封包錯誤,甚至這些封包如何在到達destination還原順序。
而TCP基於IP,目的就是保障封包的的可靠性,所謂可靠性指的是所有由發送端發送的所有封包,將全部正確的到接收端,且能確保以正確的順序重新組合˙。
封包序號(sequence number)
確保接收端能夠以正確的順序將TCP的資料還原。
回應序號(acknowledge number)
當發送端接收端收到這個確認碼,代表接收端已經收下封包。
確認檢查碼(Checksum)
封包由發送端送出去之前,會先進行檢驗動作,並將檢驗值標於此欄位,當接收端收到此封包後,再次檢驗此封包,比對檢查碼是否一致,確保封包內容正確,如果不正確則請求發送端重新發送。
與TCP不同,UDP不保證封包可靠性,接收端不需要告知發送端已經收到封包,所有丟失的封包也不會重傳,特性為對比TCP他的速度更快。
UDP沒有sequence number,因此接收端無法確認發正確的封包順序,但有checksum的機制,以進行最基礎的正確性過濾。
使用相同的key執行加密和解密。
使用一個key來加密數據,另一個key來解密數據,在非對稱系統中,用於加密的key我們稱為public key,可以與任何人分享,用於解密的key為private key,應保密。
TLS(SSL為TLS的前身)的目的是在兩個應用程序之間提供隱私(privacy)和數據完整性(data integrity)。TLS由兩個layer組成,分別是TLS Record Protocol和TLS Handshake Protocol,TLS基於reliable transport protocol(e.g. TCP)。
TLS Record Protocol用於封裝各種更高級別的協議,提供具有兩個基本屬性的連接安全性:
Connection is private
透過對稱加密用於數據加密,對稱加密的key是每個連接唯一生成的,並且基於另一個協議,TLS Handshake Protocol,TLS Record Protocol也可以不加密使用。
Connection is reliable
消息傳輸透過keyed MAC檢查數據完整性。security hash functions用於MAC計算,TLS Record Protocol也能在沒有MAC的況下運行。TLS Handshake Protocol使用TLS Record Protocol作為安全參數協商的傳輸方式。
TLS Record Protocol封裝的其中一個協議就是TLS Handshake Protocol,允許server和client驗證身份,在應用協議發送或接收第一個byte前協商加密算法和加密密鑰。TLS Handshake Protocol提供具有三個基本屬性的連接安全性:
Authentication
可以透過certificate / symmetric key來驗證對方身份,這種驗證身份可以設置為可選,但通常至少一方式必須的。
The negotiation of shared secret is secure
The negotiation is reliable
TLS與application protocol無關,High-level protocol可以基於TLS。TLS並沒有指定如何通過TLS添加安全性,有關如何啟動TLS握手和如何解釋交換的authentication certificates的決定,由運行於TLS之上的設計和實現者決定。
https://tiptopsecurity.com/how-does-https-work-rsa-encryption-explained/