HTTP 和HTTPS 之間除了安全性差異外,還有哪些差異

HTTP 和HTTPS 之間除了安全性差異外,還有哪些差異

HTTPS 協議的搜尋排名優於HTTP 協議,主要是因為HTTPS 協議可以提高用戶的信任度和安全感,從而提高用戶的訪問量和停留時間,這些都是搜尋引擎優化(SEO)的重要因素。

HTTP 和 HTTPS 是兩種常見的網路協議,它們都是用於在瀏覽器和伺服器之間傳輸資料的。但是,它們之間也有一些重要的區別,這些區別涉及資料的安全性、傳輸效能、使用成本和搜尋排名等方面。本文將從以下幾個面向來介紹 HTTP 和 HTTPS 的區別,本文內容大綱如下:

圖片圖片

資料的安全性

HTTP 協議是一種明文傳輸協議,它不對數據進行任何加密或驗證,這意味著任何人都可以在網路上截獲、查看或修改HTTP傳輸 的 數據,這就存在很大的安全風險,尤其是對於一些敏感的訊息,如使用者名稱、密碼、銀行卡號、身分證號等。

HTTPS 協定是一種安全傳輸協議,它在 HTTP 的基礎上增加了 SSL/TLS 層,SSL/TLS 是一種加密和認證技術,它可以對資料進行加密、解密、簽署和驗證,這樣就可以保證資料的機密性、完整性和身分真實性,防止資料被第三方竊取或竄改。

圖片圖片

圖片來源https://coolcao.com 2018/08/06/https/

如上圖,HTTPS 流程包含握手和後續的資料傳輸,握手的目的是為了客戶端與服務端協商加密演算法等參數。

HTTPS 協定的工作原理大致如下:

  1. 客戶端首次請求伺服器,告訴伺服器自己支援的協定版本,支援的加密演算法及壓縮演算法,並產生一個隨機數(client random)告知伺服器。

客戶端需要提供的資訊:

  • 支援的協定版本,如TSL1.0 版本
  • 客戶端產生的隨機數,用以稍後產生對稱金鑰
  • 支援的加密演算法;支援的壓縮方法等
  1. 伺服器確認雙方使用的加密方法,並傳回給客戶端憑證以及一個伺服器產生的隨機數(server random)

伺服器需要提供的資訊:

  • 協議的版本
  • 加密的演算法
  • 伺服器產生的隨機數
  • 伺服器憑證
  1. 用戶端收到憑證後,先驗證憑證的有效性,然後產生一個新的隨機數(premaster secret),並使用數位憑證中的公鑰,加密這個隨機數,發送給伺服器。

客戶端會對伺服器下發的憑證進行驗證,驗證通過後,客戶端會再次產生一個隨機數(premaster secret),然後使用伺服器憑證中的公鑰進行加密,以及放一個ChangeCipherSpec 訊息即編碼改變的訊息,還有整個前面所有訊息的hash 值,進行伺服器驗證,然後用新秘鑰加密一段資料一併發送到伺服器,確保正式通訊前無誤。

  1. 伺服器接收到加密後的隨機數後,使用私鑰解密,取得這個隨機數(premaster secret)。
  2. 最後,伺服器和客戶端根據約定的加密方法,使用前面提到的三個隨機數字(client random, server random, premaster secret),產生對稱金鑰,用來加密接下來的整個對話過程。服務端以對稱金鑰加密回應資料傳給客戶端,客戶端用對稱金鑰解密回應數據,得到明文資料。

傳輸效能

要討論傳輸性能,需要針對不同的 HTTP 版本做說明,

HTTPS VS HTTP 1.1

在 HTTP 1.1 中,HTTP 1.1 的效能比 HTTPS 還要好一些,主要是因為 HTTPS 只是在 HTTP 1.1 協定上增加了 SSL/TLS 層,沒有其他方面的修改。

增加了 SSL/TLS 層後,需要額外的加密和解密的過程,這會增加資料的處理時間和傳輸時間,同時也消耗更多的CPU 和記憶體資源。另外 HTTPS 協定還需要進行憑證的驗證和金鑰的協商,這也會增加連線的建立時間。

HTTP 1.1 連線建立過程只需要進行TCP 的三次握手,而 HTTPS 協定的連線建立過程還需要進行 SSL/TLS 的握手,這會多出至少6 次的往返時間(RTT)。

因此,HTTPS 的連線建立時間比 HTTP 1.1 的連線建立時間長得多。

HTTP 2 VS HTTP 1.1

HTTP 2 比起 HTTP 1.1 的效能提升就比較多了,主要有以下幾點。

二進位分幀

HTTP 2 使用二進位分幀,可以減少資料的大小和格式的複雜度,提高資料的傳輸效率。

它主要修改了 HTTP 1.1 的封包傳輸格式。HTTP 1.1 以換行符作為純文字的分隔符,而 HTTP 2 將所有傳輸的資訊分割為更小的訊息和幀,並採用二進位格式對它們編碼,這些幀對應著特定資料流中的訊息,他們都在一個TCP 連線內復用。

多路復用

HTTP 2 支援多工,可在一個連線上並發傳輸多個請求和回應,避免了隊頭阻塞和重複建立連線的開銷。

HTTP 2 可以在共享TCP 連線的基礎上同時傳送請求和回應。HTTP 訊息可以被分解為獨立的幀,而不破壞訊息本身順序的情況下交錯發出去,在另一端根據流標識符和首部將他們重新組裝起來。透過多路復用技術,可以避免 HTTP 舊版的訊息頭阻塞問題,大幅提升傳輸效能。

首部壓縮

HTTP 2 支援首部壓縮,可以減少資料的傳輸量,節省了網路的頻寬。

HTTP 2 使用了HPACK 演算法來壓縮頭字段,這種壓縮格式對傳輸的頭字段進行編碼,減少了頭字段的大小。同時,在兩端維護了索引表,用於記錄出現過的頭字段,後面在傳輸過程中就可以傳輸已經記錄過的頭字段的索引號,對端收到數據後就可以通過索引號找到對應的值。比較 HTTP 1.1 使用文字的形式傳送訊息頭,HTTP 2 的首部壓縮可以減少請求資源大小。

HTTP 2 缺點

說了這麼多 HTTP 2 的優點,那 HTTP 2 的缺點我們也需要清楚。

  • HTTP 2 建立連線的延遲: HTTP 2 仍然基於TCP 協議,因此需要進行TCP 的三次握手和TLS 的握手,這會消耗一定的時間,影響資料的傳輸效率。
  • HTTP 2 隊頭阻塞沒有徹底解決: HTTP 2 雖然支援多路復用,可以在一個連線上並發傳輸多個請求和回應,但是如果其中一個資料流發生了丟包或延遲,那麼整個TCP 連線都會受到影響,導致後續的資料流也被阻塞。
  • HTTP 2 多路復用容易逾時: HTTP 2 的多路復用技術使得多個請求其實是基於同一個TCP 連接的,那麼如果某一個請求的處理時間過長,那麼多請求都可能超過客戶端的超時時間,導致請求失敗。

HTTP 3 VS HTTP 2

HTTP 3 相比 HTTP 2 的提升可以說是全方位的,底層的傳輸協定由TCP 協定改為使用基於UDP 協定的QUIC 協定,在應用層實現了擁塞控制、可靠傳輸的特性。

優點

HTTP 3 的優點主要體現在它使用了QUIC 協議,可以減少握手的延遲,提高連接的穩定性,支援更有效率的多路復用,以及更好的適應網路變化等

缺點

HTTP 3 的缺點主要體現在它仍然存在一些相容性和穩定性的問題,有時甚至會比HTTP 2 稍微慢一點。這可能是由於擁塞控制演算法的不同,或是由於網路設備和防火牆對UDP 的限製或過濾所導致的。

大家可以看到不同 HTTP 版本之間的效能差異是很大的。HTTP 2 和 HTTP 3 都是預設建立在 HTTPS 之上的。所以如果想要更高的HTTP 協定傳輸效能的話,可以使用 HTTP 2 或 HTTP 3 協定。

使用成本

HTTP 的使用成本比起 HTTPS 而言就低的多了,主要是因為 HTTPS 協議需要申請和維護數位證書,這通常需要一定的費用,而且證書的有效期有限,需要定期更新

在業務開發中一個阿里雲 HTTPS CA 的企業級證書一年的價格通常需要幾千人名幣.

另外,HTTPS 也需要消耗一丟丟的伺服器資源,因為 TLS 層的加密和解密過程也需要CPU 參與運算。

與之相比,HTTP 不需要申請和維護數位證書,也不需要更多的伺服器資源,所以說 HTTP 協定的使用成本更低。

搜尋排名

HTTPS 協議的搜尋排名優於 HTTP 協議,主要是因為 HTTPS 協定可以提高用戶的信任度和安全感,從而提高用戶的訪問量和停留時間,這些都是搜尋引擎優化(SEO)的重要因素。

另外,一些主流的搜尋引擎,如Google 和百度,也明確表示,HTTPS 協定是搜尋排名的重要權重指標,也就是說,HTTPS 網站比 HTTP 網站在搜尋排名中更有優勢。

HTTP 協定由於安全性較差,可能會導致用戶的流失和不滿,從而影響用戶的訪問量和停留時間,這些都會降低搜尋引擎優化(SEO)的效果。而且,HTTP 協定也沒有得到搜尋引擎的青睞,因此 HTTP 協定的搜尋排名較低。

綜上所述,HTTPS 協定在安全性和搜尋排名方面有明顯的優勢,而 HTTP 協定只是在成本控制方面會好一點。

隨著網際網路的發展,HTTPS 協定已成為越來越多網站的選擇,而 HTTP 協定也逐漸被淘汰。因此,建議網站的開發者和業者盡快將 HTTP 協議升級為 HTTPS 協議,以提高網站的安全性和競爭力。