http 超文字協議是網際網路基礎協議,但它使用明文傳輸十分不安全. 而 https 則在 http 協議基礎上增加了 tls 認證加密過程, 使得傳輸變得安全,但加密握手過程中帶來了效能上的損耗. 本文梳理了 https 的一些知識以及效能優化的方法.1.1 http 協議http 協議是用於從 www 伺服器傳輸超文字到本地瀏覽器的傳輸協議. 是最廣泛使用的網路傳輸協議.
1.3 ssl/tls
ssl(secure socket layer)安全套接層是為網路提供安全完整通訊的安全協議.tls( transpor layer security)是改進了 ssl 中存在的安全漏洞的安全協議,提供給兩個應用程式保密性、資料完整性的通訊協議.
https 超文字傳輸安全協議(hyper text transfer protocol oversecure socket layer) 是結合 http+ssl/tls 協議的安全傳輸協議,它廣泛用於網際網路上的資料安全傳輸.
2.1 https 原理
https 主要用於解決 http 協議明文傳輸的缺陷,傳輸的資料可能被截獲、修改或者偽造雙方. https 則是為了解決該問題的協議, 它結合了 ssl/tls 和 http 協議,確保通訊雙方是可信、資料是加密的且未被篡改過的.
加密: 相比 http ,https 對資料進行了加密,可以避免使用者的資料被監聽.
資料一致性: 確保使用者的資料在傳輸過程中不會被篡改.
身份認證: 確保**是安全受信的,通過對**進行身份認證,防止中間人攻擊.
非對稱加密: 加密金鑰和解密金鑰是不一樣的加密方式,如 rsa 等. 由於加密和解密金鑰不同,則可以將加密金鑰公開作為公鑰,而收資訊一方保留解密用的私鑰,避免了對稱加密演算法需要交換金鑰的風險.
ssl/tlsssl(secure socket layer): 位於可靠的面向連線的網路層協議和應用層協議之間的一種協議層.
tls(transport layer security): 用於兩個應用程式之間提供保密性和資料完整性. tls 使得 ssl 更加安全.
2.2 https 握手過程
https 的建立過程包括7 次握手,除了 tcp 建立連線的三次握手,還包括 tls 四次握手過程. 如下:
首先通過 tcp三次握手建立連線
客戶端傳送帶有 syn 及 seq 的請求
伺服器返回 ack、ack、syn、seq 的請求
客戶端返回 ack 及 ack,連線建立
通過 tls 的四次握手建立安全的連線, 以下是 tls 1.2 的過程:
客戶端向伺服器傳送 client hello 訊息, 其中攜帶客戶端支援的協議版本、加密演算法、壓縮演算法以及客戶端生成的隨機數.
服務端收到 client hello 訊息後,向客戶端返回一小資訊
server hello訊息,並攜帶選擇特定的協議版本、加密方法、會話 id 以及服務端生成的隨機數.
certificate訊息,即服務端的證書鏈,其中包含證書支援的網域名稱、發行方和有效期等資訊.
server key exchange訊息,傳遞公鑰以及簽名等資訊.
可選的訊息certificaterequest,驗證客戶端的證書.
server hello done 訊息,通知服務端已經傳送了全部的相關資訊.
客戶端收到服務端的協議版本、加密方法、會話 id 以及證書等資訊後,驗證服務端的證書
向客戶端傳送change cipher spec訊息,通知客戶端後面的資料段會加密傳輸;
向客戶端傳送finished訊息,驗證客戶端的 finished 訊息並完成 tls 握手;
服務端收到change cipher spec和finished訊息後,可以開始進行應用資料傳輸.
在 tcp + tls 建立的安全通道的基礎上,通過 http 協議進行資料傳輸
下圖是訪問 過程中的 tls 握手過程,可以看到下面的 tlsv1.2 過程中,進行了四次握手,有兩次 (out) 傳送資料,兩次(in) 接受伺服器請求. 過程如下所示:
3.1 效能消耗
在 https 建立的過程中,完整的四次握手效能十分低,是 http 的 10%. 這對於使用者體驗是很大的傷害,一些高訪問量的**十分有必要進行 https 的優化. 以下亮點是 https 中效能差的部分:
3.3 優化方案
對於減少 https 消耗的時間,可以從減少計算量、提公升計算效能等方面考慮,以下是三個優化點:
使用**計算: 對於需要消耗 cpu 計算的演算法過程,使用**計算,從而減少完全握手所需的計算時間.
優化對稱加密演算法: 對稱加密演算法涉及塊式對稱加密演算法、流式對稱加密演算法. 開啟 aes-ni 並使用,提公升計算效能.
4.1 參考資料
1. 2.
3. 4.
end
https協議 什麼是HTTPS協議?
在我們平常上網的時候我經常接觸的 應該大部分都是 或者我們知道讓他是乙個超文字傳輸協議。那麼https是個什麼?雖然http和這個https兩者只差乙個s,但是本質是大不相同的,他們是兩種不同的網路傳輸協議。千萬不要搞混淆了。http協議通過請求 響應的方式,在客戶端和服務端之間進行通訊。這一切看起...
https握手過程
瀏覽器將自己的ssl加密元件 ras加密演算法 對稱加密演算法 hash摘要演算法 金鑰長度 傳送給請求 會從中選出一組加密演算法和hash演算法,並將自己的身份資訊以證書的方式發回瀏覽器。瀏覽器驗證證書的正確性,或者使用者接收了不受信任的證書,瀏覽器會生成一串隨機的密碼,並用證書的公鑰加密,同時使...
HTTPS握手過程
加密方案 非對稱加密 ssl握手過程 伺服器發動 server hello done 的報文通知客戶端,最初階段的ssl握手協商結束。ssl第一次握手結束之後,客戶端解析證書 客戶端的tls完成 如果證書有問題,就發出警告。拿到服務端的公鑰。以 client key exchange 報文作為回應。...