HTTP 與 HTTPS 的區別

夏末18844發表於2018-10-23

基本概念

HTTP(HyperText Transfer Protocol:超文字傳輸協議)是一種用於分散式、協作式和超媒體資訊系統的應用層協議。 簡單來說就是一種釋出和接收 HTML 頁面的方法,被用於在 Web 瀏覽器和網站伺服器之間傳遞資訊。

HTTP 預設工作在 TCP 協議 80 埠,使用者訪問網站 打頭的都是標準 HTTP 服務。

HTTP 協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此,HTTP協議不適合傳輸一些敏感資訊,比如:信用卡號、密碼等支付資訊。

HTTPS(Hypertext Transfer Protocol Secure:超文字傳輸安全協議)是一種透過計算機網路進行安全通訊的傳輸協議。HTTPS 經由 HTTP 進行通訊,但利用 SSL/TLS 來加密資料包。HTTPS 開發的主要目的,是提供對網站伺服器的身份認證,保護交換資料的隱私與完整性。

HTTPS 預設工作在 TCP 協議443埠,它的工作流程一般如以下方式:

  • 1、TCP 三次同步握手

  • 2、客戶端驗證伺服器數字證書

  • 3、DH 演算法協商對稱加密演算法的金鑰、hash 演算法的金鑰

  • 4、SSL 安全加密隧道協商完成

  • 5、網頁以加密的方式傳輸,用協商的對稱加密演算法和金鑰加密,保證資料機密性;用協商的hash演算法進行資料完整性保護,保證資料不被篡改。

截至 2018 年 6 月,Alexa 排名前 100 萬的網站中有 34.6% 使用 HTTPS 作為預設值,網際網路 141387 個最受歡迎網站的 43.1% 具有安全實施的 HTTPS,以及 45% 的頁面載入(透過Firefox紀錄)使用HTTPS。2017 年3 月,中國註冊域名總數的 0.11%使用 HTTPS。

根據 Mozilla 統計,自 2017 年 1 月以來,超過一半的網站流量被加密。

HTTP 與 HTTPS 區別

  • HTTP 明文傳輸,資料都是未加密的,安全性較差,HTTPS(SSL+HTTP) 資料傳輸過程是加密的,安全性較好。

  • 使用 HTTPS 協議需要到 CA(Certificate Authority,數字證書認證機構) 申請證書,一般免費證書較少,因而需要一定費用。證書頒發機構如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

  • HTTP 頁面響應速度比 HTTPS 快,主要是因為 HTTP 使用 TCP 三次握手建立連線,客戶端和伺服器需要交換 3 個包,而 HTTPS除了 TCP 的三個包,還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。

  • http 和 https 使用的是完全不同的連線方式,用的埠也不一樣,前者是 80,後者是 443。

  • HTTPS 其實就是建構在 SSL/TLS 之上的 HTTP 協議,所以,要比較 HTTPS 比 HTTP 要更耗費伺服器資源。

TCP 三次握手

在TCP/IP協議中,TCP協議透過三次握手建立一個可靠的連線

HTTP 與 HTTPS 的區別

 

  • 第一次握手:客戶端嘗試連線伺服器,向伺服器傳送 syn 包(同步序列編號Synchronize Sequence Numbers),syn=j,客戶端進入 SYN_SEND 狀態等待伺服器確認

  • 第二次握手:伺服器接收客戶端syn包並確認(ack=j+1),同時向客戶端傳送一個 SYN包(syn=k),即 SYN+ACK 包,此時伺服器進入 SYN_RECV 狀態

  • 第三次握手:第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手

簡化:

HTTP 與 HTTPS 的區別

 

HTTPS 的工作原理

我們都知道 HTTPS 能夠加密資訊,以免敏感資訊被第三方獲取,所以很多銀行網站或電子郵箱等等安全級別較高的服務都會採用 HTTPS 協議。

HTTP 與 HTTPS 的區別

 

1、客戶端發起 HTTPS 請求

這個沒什麼好說的,就是使用者在瀏覽器裡輸入一個 https 網址,然後連線到 server 的 443 埠。

2、服務端的配置

採用 HTTPS 協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證透過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl 就是個不錯的選擇,有 1 年的免費服務)。

這套證書其實就是一對公鑰和私鑰,如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。

3、傳送證書

這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間等等。

4、客戶端解析證書

這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。

如果證書沒有問題,那麼就生成一個隨機值,然後用證書對該隨機值進行加密,就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。

5、傳送加密資訊

這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以透過這個隨機值來進行加密解密了。

6、服務段解密資訊

服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容透過該值進行對稱加密,所謂對稱加密就是,將資訊和私鑰透過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。

7、傳輸加密後的資訊

這部分資訊是服務段用私鑰加密後的資訊,可以在客戶端被還原。

8、客戶端解密資訊

客戶端用之前生成的私鑰解密服務段傳過來的資訊,於是獲取瞭解密後的內容,整個過程第三方即使監聽到了資料,也束手無策。

好文要頂   關注我   收藏該文    


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557905/viewspace-2217184/,如需轉載,請註明出處,否則將追究法律責任。

相關文章