https執行流程

2022-08-24 14:36:15 字數 2914 閱讀 4528

我們知道,http請求都是明文傳輸的,所謂的明文指的是沒有經過加密的資訊,如果http請求被黑客攔截,並且裡面含有銀行卡密碼等敏感資料的話,會非常危險。為了解決這個問題,netscape 公司制定了https協議,https可以將資料加密傳輸,也就是傳輸的是密文,即便黑客在傳輸過程中攔截到資料也無法破譯,這就保證了網路通訊的安全。

在正式講解https協議之前,我們首先要知道一些密碼學的知識。

明文: 明文指的是未被加密過的原始資料。

密文:明文被某種加密演算法加密之後,會變成密文,從而確保原始資料的安全。密文也可以被解密,得到原始的明文。

金鑰:金鑰是一種引數,它是在明文轉換為密文或將密文轉換為明文的演算法中輸入的引數。金鑰分為對稱金鑰與非對稱金鑰,分別應用在對稱加密和非對稱加密上。

對稱加密:對稱加密又叫做私鑰加密,即資訊的傳送方和接收方使用同乙個金鑰去加密和解密資料。對稱加密的特點是演算法公開、加密和解密速度快,適合於對大資料量進行加密,常見的對稱加密演算法有des、3des、tdea、blowfish、rc5和idea。

其加密過程如下:明文 + 加密演算法 + 私鑰 => 密文

解密過程如下:密文 + 解密演算法 + 私鑰 => 明文

對稱加密中用到的金鑰叫做私鑰,私鑰表示個人私有的金鑰,即該金鑰不能被洩露。

其加密過程中的私鑰與解密過程中用到的私鑰是同乙個金鑰,這也是稱加密之所以稱之為「對稱」的原因。由於對稱加密的演算法是公開的,所以一旦私鑰被洩露,那麼密文就很容易被破解,所以對稱加密的缺點是金鑰安全管理困難。

非對稱加密:非對稱加密也叫做公鑰加密。非對稱加密與對稱加密相比,其安全性更好。對稱加密的通訊雙方使用相同的金鑰,如果一方的金鑰遭洩露,那麼整個通訊就會被破解。而非對稱加密使用一對金鑰,即公鑰和私鑰,且二者成對出現。私鑰被自己儲存,不能對外洩露。公鑰指的是公共的金鑰,任何人都可以獲得該金鑰。用公鑰或私鑰中的任何乙個進行加密,用另乙個進行解密。

被公鑰加密過的密文只能被私鑰解密,過程如下:

明文 + 加密演算法 + 公鑰 => 密文, 密文 + 解密演算法 + 私鑰 => 明文

被私鑰加密過的密文只能被公鑰解密,過程如下:

明文 + 加密演算法 + 私鑰 => 密文, 密文 + 解密演算法 + 公鑰 => 明文

由於加密和解密使用了兩個不同的金鑰,這就是非對稱加密「非對稱」的原因。

非對稱加密的缺點是加密和解密花費時間長、速度慢,只適合對少量資料進行加密。

在非對稱加密中使用的主要演算法有:rsa、elgamal、rabin、d-h、ecc(橢圓曲線加密演算法)等。

https協議 = http協議 + ssl/tls協議,在https資料傳輸的過程中,需要用ssl/tls對資料進行加密和解密,需要用http對加密後的資料進行傳輸,由此可以看出https是由http和ssl/tls一起合作完成的。

ssl的全稱是secure sockets layer,即安全套接層協議,是為網路通訊提供安全及資料完整性的一種安全協議。ssl協議在2023年被netscape發明,後來各個瀏覽器均支援ssl,其最新的版本是3.0

tls的全稱是transport layer security,即安全傳輸層協議,最新版本的tls(transport layer security,傳輸層安全協議)是ietf(internet engineering task force,internet工程任務組)制定的一種新的協議,它建立在ssl 3.0協議規範之上,是ssl 3.0的後續版本。在tls與ssl3.0之間存在著顯著的差別,主要是它們所支援的加密演算法不同,所以tls與ssl3.0不能互操作。雖然tls與ssl3.0在加密演算法上不同,但是在我們理解https的過程中,我們可以把ssl和tls看做是同乙個協議。

https為了兼顧安全與效率,同時使用了對稱加密和非對稱加密。資料是被對稱加密傳輸的,對稱加密過程需要客戶端的乙個金鑰,為了確保能把該金鑰安全傳輸到伺服器端,採用非對稱加密對該金鑰進行加密傳輸,總的來說,對資料進行對稱加密,對稱加密所要使用的金鑰通過非對稱加密傳輸。

以下來自於limboy的部落格

https在傳輸的過程中會涉及到三個金鑰:

伺服器端的公鑰和私鑰,用來進行非對稱加密

客戶端生成的隨機金鑰,用來進行對稱加密

乙個https請求實際上包含了兩次http傳輸,可以細分為8步。

1.客戶端向伺服器發起https請求,連線到伺服器的443埠

2.伺服器端有乙個金鑰對,即公鑰和私鑰,是用來進行非對稱加密使用的,伺服器端儲存著私鑰,不能將其洩露,公鑰可以傳送給任何人。

3.伺服器將自己的公鑰傳送給客戶端。

4.客戶端收到伺服器端的公鑰之後,會對公鑰進行檢查,驗證其合法性,如果發現發現公鑰有問題,那麼https傳輸就無法繼續。嚴格的說,這裡應該是驗證伺服器傳送的數字證書的合法性,關於客戶端如何驗證數字證書的合法性,下文會進行說明。如果公鑰合格,那麼客戶端會生成乙個隨機值,這個隨機值就是用於進行對稱加密的金鑰,我們將該金鑰稱之為client key,即客戶端金鑰,這樣在概念上和伺服器端的金鑰容易進行區分。然後用伺服器的公鑰對客戶端金鑰進行非對稱加密,這樣客戶端金鑰就變成密文了,至此,https中的第一次http請求結束。

5.客戶端會發起https中的第二個http請求,將加密之後的客戶端金鑰傳送給伺服器。

6.伺服器接收到客戶端發來的密文之後,會用自己的私鑰對其進行非對稱解密,解密之後的明文就是客戶端金鑰,然後用客戶端金鑰對資料進行對稱加密,這樣資料就變成了密文。

7.然後伺服器將加密後的密文傳送給客戶端。

8.客戶端收到伺服器傳送來的密文,用客戶端金鑰對其進行對稱解密,得到伺服器傳送的資料。這樣https中的第二個http請求結束,整個https傳輸完成。

HTTPS加密流程

1 客戶端發起https請求首先向服務端傳送客戶端ssl tls協議版本號 支援的加密演算法種類 如 rsa加密演算法,des對稱加密演算法,sha1摘要演算法 產生隨機數等資訊 2 服務端向瀏覽器回傳 ssl tls 協議版本號 選擇一種客戶端瀏覽器支援的加密演算法和hash演算法 隨機數 服務端...

HTTPS 實現流程

https協議其實就是http over tsl,基礎的http通訊是明文的,有三大風險 資訊被竊聽,資訊被篡改,身份的冒充。tsl協議就是為防範這些風險存在的。tsl使用非對稱加密保護下的對稱加密在保證了通訊效率的同時防止竊聽,使用證書體系防止資訊篡改和身份冒認。注意 tsl協議握手階段的通訊是明...

HTTPS通訊流程

https的通訊流程 1 客戶端向伺服器發起ssl通訊,報文中包含客戶端支援的ssl的指定版本,加密元件列表 所使用的加密演算法及金鑰長度 2 伺服器的響應報文中,包含ssl版本以及加密元件,伺服器的加密元件內容是從客戶端發來的加密元件列表中篩選出來的,伺服器還會發乙個公開金鑰並且帶有公鑰證書 3 ...