HTTPS的過程和原理

2021-08-22 02:51:02 字數 2576 閱讀 2565

1.握手的時候使用的非對稱加密演算法 ,用來加密握手之後的請求和應答

2.傳輸資訊的時候使用的對稱加密,

3.保證資料的完整性用的是hash演算法(數字簽名)

在了解https之前,得先了解對稱加密和非對稱加密

對稱加密

這就是對稱加密演算法,其中圖中的金鑰s同時扮演加密和解密的角色。具體細節不是本文範疇。

只要這個金鑰s不公開給第三者,同時金鑰s足夠安全。因為世界上有且只有a與b知道如何加密和解密他們之間的訊息。

但是,在web環境下,我們的web伺服器的通訊模型沒有這麼簡單:

如果伺服器端對所有的客戶端通訊都使用同樣的對稱加密演算法,無異於沒有加密。

非對稱加密

特點是私鑰加密後的密文,只要是公鑰,都可以解密,但是公鑰加密後的密文,只有私鑰可以解密。私鑰只有乙個人有,而公鑰可以發給所有的人

非對稱加密,只能保證a、b向伺服器端方向是安全的,因為秘鑰是伺服器私有的,就算資訊被別人擷取了也無法解密;

伺服器端向a、b……的方向還是不安全的,這是因為公鑰是公開的,資訊被別人擷取了可以通過公鑰解密.

數字簽名

——–簽名就是在資訊的後面再加上一段內容,可以證明資訊沒有被修改過,怎麼樣可以達到這個效果呢?一般是對資訊做乙個hash計算得到乙個hash值,注意,這個過程是不可逆的,也就是說無法通過hash值得出原來的資訊內容。在把資訊傳送出去時,把這個hash值加密後做為乙個簽名和資訊一起發出去。 接收方在收到資訊後,會重新計算資訊的hash值,並和資訊所附帶的hash值(解密後)進行對比,如果一致,就說明資訊的內容沒有被修改過,因為這裡hash計算可以保證不同的內容一定會得到不同的hash值,所以只要內容一被修改,根據資訊內容計算的hash值就會變化。當然,不懷好意的人也可以修改資訊內容的同時也修改hash值,從而讓它們可以相匹配,為了防止這種情況,hash值一般都會加密後(也就是簽名)再和資訊一起傳送,以保證這個hash值不被修改。至於如何讓別人可以解密這個簽名,這個過程涉及到數字證書等概念,我們後面在說到數字證書時再詳細說明,這裡您先只需先理解簽名的這個概念。

細心的人可能已經注意到了如果使用非對稱加密演算法,我們的客戶端a,b需要一開始就持有公鑰,要不沒法開展加密行為啊。這下,我們又遇到新問題了,如何讓a、b客戶端安全地得到公鑰?

我能想到的方案只有這些:

方案1. 伺服器端將公鑰傳送給每乙個客戶端

方案2. 伺服器端將公鑰放到乙個遠端伺服器,客戶端可以請求得到

我們選擇方案1,因為方案2又多了一次請求,還要另外處理公鑰的放置問題。

但是方案1有個問題:如果伺服器端傳送公鑰給客戶端時,被中間人調包了,怎麼辦?

我畫了張圖方便理解:

顯然,讓每個客戶端的每個瀏覽器預設儲存所有**的公鑰是不現實的。

公鑰被調包的問題出現,是因為我們的客戶端無法分辨返回公鑰的人到底是中間人,還是真的伺服器。這其實就是密碼學中提的身份驗證問題。

這時就需要數字證書來解決上述問題:

數字證書可以保證數字證書裡的公鑰確實是這個證書的所有者(subject)的,或者證書可以用來確認對方的身份.

①客戶端的瀏覽器向伺服器傳送客戶端ssl 協議的版本號,加密演算法的種類,產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的各種資訊。

②伺服器向客戶端傳送ssl 協議的版本號,加密演算法的種類,隨機數以及其他相關資訊,同時伺服器還將向客戶端傳送自己的證書。

③客戶利用伺服器傳過來的資訊驗證伺服器的合法性,伺服器的合法性包括:證書是否過期,發行伺服器證書的ca 是否可靠,發行者證書的公鑰能否正確解開伺服器證書的「發行者的數字簽名」,伺服器證書上的網域名稱是否和伺服器的實際網域名稱相匹配。如果合法性驗證沒有通過,通訊將斷開;如果合法性驗證通過,將繼續進行第四步。

④使用者端隨機產生乙個用於後面通訊的「對稱密碼」,然後用伺服器的公鑰(伺服器的公鑰從步驟②中的伺服器的證書中獲得)對其加密,然後傳給伺服器。

⑤伺服器用私鑰解密「對稱密碼」(此處的公鑰和私鑰是相互關聯的,公鑰加密的資料只能用私鑰解密,私鑰只在伺服器端保留)。然後用其作為伺服器和客戶端的「通話密碼」加解密通訊。同時在ssl 通訊過程中還要完成資料通訊的完整性,防止資料通訊中的任何變化。

⑥客戶端向伺服器端發出資訊,指明後面的資料通訊將使用的步驟⑤中的主密碼為對稱金鑰,同時通知伺服器客戶端的握手過程結束。

⑦伺服器向客戶端發出資訊,指明後面的資料通訊將使用的步驟⑤中的主密碼為對稱金鑰,同時通知客戶端伺服器端的握手過程結束。

⑧ssl 的握手部分結束,ssl 安全通道的資料通訊開始,客戶和伺服器開始使用相同的對稱金鑰進行資料通訊,同時進行通訊完整性的檢驗。

HTTPS的基礎原理和通訊過程

二 https 當中的 s 代表的是 安全 secure 在登入銀行或電郵賬號時,你會常常看到它出現在瀏覽器位址列。不過,移動應用在網路連線安全性上面沒有那麼透明,使用者很難知道應用連線網路時使用的是 http 還是 https。ats 由此登場,它在 ios 9 當中是預設開啟的。然而,開發者仍然...

HTTPS工作原理(握手過程)

參考書籍 http 參考博文 客戶端向伺服器傳送clienthello,其主要內容為客戶端所支援的加密演算法 ssl版本和隨機數r1。伺服器向客戶端傳送serverhello,從第一步傳輸的加密演算法和ssl版本中選擇乙個作為以後通訊使用,並生成隨機數r2,發給客戶端。伺服器向客戶端傳送自己的證書 ...

https協議原理過程

https概念 1 客戶端發起https請求 客戶端或者瀏覽器向伺服器傳送https請求 2 伺服器本身儲存私鑰和證書 利用相應命令在服務端本地生成私鑰檔案 利用私鑰檔案生成證書請求檔案,向證書頒發機構申請證書。也可以利用私鑰檔案,生成自簽發證書,但不會通過客戶端合法性驗證。3 伺服器將公鑰返回給客...