瞭解 Http 和 Https 的區別(圖文詳解)

01 整體介紹

隨着 HTTPS 的不斷普及和使用成本的下降,現階段大部分的系統都已經開始用上 HTTPS 協議。HTTPS 與 HTTP 相比, 主打的就是安全概念,相關的知識如 SSL 、非對稱加密、 CA 證書、數據完整性保護 等,我們多多少少也都有聽過。本文重點從原理上講解 HTTPS 的安全性,以及同 HTTP 的比較說明。

02 HTTP 和 HTTPS 的比較

HTTP(全稱:HyperText Transfer Protocol,超文本傳輸協議)和 HTTPS(全稱:Hypertext Transfer Protocol Secure,超文本傳輸安全協議)都是互聯網中用於數據傳輸的協議,它們在多個方面有着顯著的差異和特點。

2.1 HTTP

HTTP(Hypertext Transfer Protocol),是一種發送和接收 HTML 頁面的方法,主要用於 Web 瀏覽器和網站服務器之間傳遞信息。它的主要特點如下:

1. 基於請求響應模式: HTTP 協議採用客戶端 - 服務器架構模式,客戶端向服務器發送請求,服務器返回相應的響應。這種模式能有效分離應用邏輯,提高系統的可維護性和擴展性。
2. 基於文本傳輸: HTTP 協議使用 ASCII 碼作爲通信協議,每個請求和響應都是一條文本消息,這使得通信協議更加簡單、直觀、易於處理。
3. 支持多媒體傳輸: HTTP 協議可以傳輸多種類型的數據,如 HTML、XML、JSON、圖片、音頻、視頻等,這使得 HTTP 協議成爲一種通用的網絡傳輸協議,適用於各種不同類型的應用場景。
4. 無連接: HTTP 協議是一個無連接協議,每個請求都是獨立的,服務器處理請求後立即關閉連接。這有助於節省資源,但也帶來了一些缺點,如需要重新建立連接、重複發送相同的頭部信息等。
5. 無狀態: HTTP 協議沒有客戶端的狀態存儲,也沒有事務處理的 “內存” 能力。這意味着每次訪問網站時可能需要重複的登錄操作。

然而,HTTP 協議也存在一些不足之處。由於它以明文方式發送內容,不提供任何方式的數據加密,因此安全性較差。如果攻擊者截取了 Web 瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息。因此,HTTP 協議不適合傳輸一些敏感信息,比如信用卡號、密碼等支付信息。

2.2 HTTPS

與 HTTP 相比,HTTPS(Hypertext Transfer Protocol Secure)則是以安全爲目標的 HTTP 通道。它在 HTTP 的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。HTTPS 的內容加密、身份驗證以及數據完整性保護的原理主要依賴於 SSL/TLS 協議。下面我們詳細來看看這幾方面的實現原理。

2.2.1 內容加密

HTTPS 使用對稱加密和非對稱加密相結合的方式來實現內容加密。

1. 對稱加密:在密鑰交換完成後,客戶端和服務器會生成一個共享的會話密鑰。這個會話密鑰用於後續的加密和解密操作。雙方使用這個會話密鑰,通過對稱加密算法(如 AES)對傳輸的數據進行加密和解密,確保數據在傳輸過程中的安全性。

如上圖,對稱加密雖然保證了消息的保密性,但是因 Client 和 Service 共享一個密匙,這樣就導致密匙特別容易泄露。

2. 非對稱加密:在 HTTPS 的握手階段,服務器會將其公鑰發送給客戶端。這個公鑰用於後續的加密通信。客戶端使用服務器的公鑰加密一個隨機數,然後將加密後的隨機數發送給服務器。服務器使用其私鑰解密這個隨機數,從而確保雙方都能安全地交換密鑰,這個過程稱爲密鑰交換。

如上圖,

2.2.2 身份驗證

HTTPS 使用數字證書來驗證服務器的身份。

1. 數字證書:數字證書是由權威的證書頒發機構(CA)頒發的,包含了服務器的公鑰、服務器的身份信息以及 CA 的簽名等信息。當客戶端與服務器建立 HTTPS 連接時,服務器會將其數字證書發送給客戶端。

2. 驗證過程:客戶端收到服務器的數字證書後,會驗證證書的合法性。首先,客戶端會檢查證書是否由受信任的 CA 頒發。然後,客戶端會檢查證書是否過期以及證書中的服務器身份信息是否與正在連接的服務器一致。最後,客戶端會使用 CA 的公鑰驗證證書上的簽名,確保證書在傳輸過程中沒有被篡改。如果證書驗證通過,客戶端就可以確認服務器的身份是可信的。

2.2.3 數據完整性

HTTPS 通過消息認證碼(MAC)來確保數據的完整性。

1. 消息認證碼:在 HTTPS 通信過程中,每個傳輸的數據包都會附帶一個 MAC 值。這個 MAC 值是通過將數據包的內容和會話密鑰一起輸入到一個哈希函數中計算得出的。因此,只有持有相同會話密鑰的接收方纔能計算出正確的 MAC 值。

2. 完整性校驗:當接收方收到數據包時,它會使用相同的會話密鑰和哈希函數計算 MAC 值,並與數據包中附帶的 MAC 值進行比較。如果兩個 MAC 值相同,那麼接收方就可以確認數據包在傳輸過程中沒有被篡改,從而保證了數據的完整性和安全性。

2.2.4 端口

HTTP 默認使用 80 端口,而 HTTPS 默認使用 443 端口。

2.2.5 性能

因爲 HTTPS 需要進行加密和解密操作,因此它的性能可能略低於 HTTP。但隨着技術的發展,這種性能差距已經接近可以忽略。

03 總結

HTTP 和 HTTPS 在差異方面,最顯著的是安全性。HTTP 是明文傳輸協議,而 HTTPS 是加密傳輸協議。這種加密特性使得 HTTPS 在傳輸敏感信息時更具優勢。此外,瀏覽器地址展示方式也有所不同,Https 有綠色安全鎖標誌,而 http 則有網站不安全標誌提醒。在協議層面,HTTPS 在 HTTP 的基礎上加入了 SSL 安全認證證書,從而提供了更高級別的安全防護。在涉及敏感信息傳輸的場景中,如在線購物、銀行業務等,基本都是用 HTTPS 協議進行數據傳輸。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/pRI5lPCZcqxq3Kup5oGg_w