初探HTTPS協議

2021-07-26 02:20:15 字數 2083 閱讀 5886

概述

http協議屬於明文傳輸協議,互動過程以及資料傳輸都沒有進行過加密,通訊雙方也沒有進行身份驗證,通訊過程非常容易遭到劫持,篡改等安全問題,為了提高網路傳輸的安全性,https應運而生.相比http,https提供了以下三個特性:

資料完整性:內容傳輸經過完整性校驗

資料私隱性:內容經過對稱加密,每個連線生成乙個唯一的加密金鑰

身份認證:第三方無法偽造服務端(客戶端)身份

然而https的工作流程是怎樣的呢,且往下看:

幾個重要概念

https協議中涉及到了幾個重要的概念,先說明一下:

1. ssl/tsl

ssl(secure sockets layer):安全套接層,它是在上世紀90年代中期,由網景公司設計的,為解決使用的 http 協議造成傳輸內容會被**(嗅探)和篡改等安全問題而設計的,到了2023年,ssl成為網際網路上的標準,名稱改為tsl(transport layer security):傳輸層安全協議,兩者可視為同一種東西的不同階段。

https(http over ssl)也是在http的基礎加了一層ssl的封裝。

2. 對稱加密與非對稱加密

對稱加密(aes,rc4,3des) 採用單鑰密碼系統的加密方法,同乙個金鑰可以同時用作資訊的加密和解密,優點是演算法公開、計算量小、加密速度快、加密效率高。;

非對稱加密(rsa,dsa/dss )演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密,非對稱加密演算法比對稱加密演算法慢數千倍,但在保護通訊安全方面,非對稱加密演算法卻具有對稱密碼難以企及的優勢。

3.ca 證書

ca是certificate authority的縮寫,也叫「證書授權中心」,ca 證書,顧名思義,就是ca頒發的證書(內含公鑰和私鑰),網上的公眾使用者通過驗證 ca 的簽字從而信任 ca ,任何人都可以得到 ca 的證書(含公鑰),用以驗證它所簽發的證書。

4.tcp與udp

tcp協議是面向連線、保證高可靠性(資料無丟失、資料無失序、資料無錯誤、資料無重複到達)傳輸層協議。

udp協議也是傳輸層協議,它是無連線,不保證可靠的傳輸層協議。

5.雜湊演算法

雜湊演算法(md5,sha1)將任意長度的二進位制值對映為較短的固定長度的二進位制值,這個小的二進位制值稱為雜湊值。雜湊值是一段資料唯一且極其緊湊的數值表示形式。

了解完幾個概念之後。進入正題,https的工作流程:

https工作流程

客戶端向伺服器傳送請求,並告訴伺服器支援的演算法列表;

伺服器選擇一種演算法,並將自己的證書返回給客戶端,證書包含伺服器網域名稱和公鑰等資訊;

客戶端得到證書後進行驗證,驗證通過的話就生成乙個隨機值,並用證書中的公鑰進行加密

傳遞加密資訊,目的就是讓伺服器得到這個隨機值,以後客戶端與伺服器的通訊就可以通過這個隨機值來進行加密解密;

伺服器用自己的私鑰解密客戶端傳過來的隨機值,然後把內容進行對稱加密,即將資訊和私鑰通過加密演算法混在一起,這樣除非知道私鑰,不然無法獲取到內容,而客戶端與伺服器都知道這個私鑰,所以只要加密演算法夠強大,私鑰夠複雜,資料就很安全了;

將加密後的資訊發給客戶端,客戶端還原資訊

客戶端用之前生成的私鑰解密伺服器發過來的資訊,便獲取到了解密後的內容;

為什麼會同時使用對稱加密與非對稱加密呢?因為非對稱加密是分解大素數,大數計算,資料分割需要消耗很多的cpu資源,但是安全性非常高,對稱加密相對來說安全性沒那麼高,但是計算量小,速度快,所以在第一次握手的時候,使用的非對稱加密來交換對稱加密的金鑰,之後就通過對稱加密來通訊;

https協議 什麼是HTTPS協議?

在我們平常上網的時候我經常接觸的 應該大部分都是 或者我們知道讓他是乙個超文字傳輸協議。那麼https是個什麼?雖然http和這個https兩者只差乙個s,但是本質是大不相同的,他們是兩種不同的網路傳輸協議。千萬不要搞混淆了。http協議通過請求 響應的方式,在客戶端和服務端之間進行通訊。這一切看起...

SSL協議 HTTPS協議

ssl secure socket layer安全套接層 tls transport layer security傳輸層安全,是被標準化的ssl pki 公鑰基礎設施 pki提供電子簽名證書,伺服器購買證書 網路伺服器通過證書被認證,客戶端則不需要認證。tls的三個階段 1.協商金鑰演算法 2.通過...

HTTP協議 HTTPS協議

http協議是基於tcp協議的,當然是要先建立tcp連線了。目前使用的http協議大部分都是1.1.在1.1的協議裡面,預設是開啟了keep alive的,這樣建立的tcp連線,就可以在多次請求中復用。http的報文大概分成三大部分。第一部分是請求行,第二部分是請求的首部,第三部分才是請求的正文實體...