一文說透https中的s是什麼?

2022-09-20 19:09:07 字數 3973 閱讀 1453

一、http 與 https 有哪些區別?

1. http 是超文字傳輸協議,資訊是明文傳輸,存在安全風險。https ,是在 tcp 和網路層之間加入了 ssl/tls 安全協議,也就是安全套接字層,使得報文能夠加密傳輸。

2. http 連線建立相對簡單, tcp 三次握手建立之後便可進行 http 的報文傳輸。而 https 在 tcp三次握手之後,還需進行 ssl/tls 的四次握手過程,才可進入加密報文傳輸。

3. http 的埠號是 80,https 的埠號是 443。

4. https 協議需要向 ca(證書權威機構)申請數字證書,來保證伺服器的身份是可信的。**是真的**,不是假冒的釣魚**等。

二、https 解決了 http 的具體哪些問題呢?

所以https解決了三個問題,防竊聽、防篡改、防冒充。

四、基礎的加密演算法和基於這些加密演算法的加密機制

1、對稱加密演算法

加密金鑰和解密金鑰是一樣的,加密過程和解密過程是對稱的,所以叫做對稱加密演算法。

優點:加密速度快

缺點:需要雙方都有金鑰,怎麼樣傳輸金鑰是最大的問題。

2、非對稱加密演算法(公開金鑰加密演算法)

幾點說明:

3、混合加密--數字信封技術

通過公開金鑰加密演算法傳輸對稱加密演算法的金鑰,這樣就解決了對稱加密演算法的金鑰分發問題。

在實際的通訊過程中,https 採用的是對稱加密和非對稱加密結合的「混合加密」方式:

在通訊建立前採用非對稱加密的方式交換「會話秘鑰」,後續就不再使用非對稱加密。

在通訊過程中全部使用對稱加密的「會話秘鑰」的方式加密明文資料。

採用「混合加密」的方式的原因:

對稱加密只使用乙個金鑰,運算速度快,金鑰必須保密,無法做到安全的金鑰交換。

非對稱加密使用兩個金鑰:公鑰和私鑰,公鑰可以任意分發而私鑰保密,解決了金鑰交換問題但速度慢。

4、摘要演算法(雜湊演算法)

幾點說明:

5、數字證書

客戶端先向伺服器端索要公鑰,然後用公鑰加密資訊,伺服器收到密文後,用自己的私鑰解密。

這就存在些問題,如何保證客戶端得到的伺服器的公鑰沒有被篡改過、且不是釣魚**的公鑰呢?

所以這裡就需要借助第三方權威機構 ca (數字證書認證機構),將伺服器公鑰在數字證書認證機構中註冊,註冊後的公鑰就可以證明伺服器的真實身份。

1、伺服器把自己的公鑰在數字證書認證機構(ca)註冊,數字證書認證機構用自己的私鑰加密伺服器的公鑰,得到伺服器的數字證書,並發給伺服器。

2、在客戶端和伺服器通訊時,伺服器把自己的ca證書傳送給客戶端。

3、客戶端用數字證書認證機構的公鑰解密伺服器的數字證書,得到伺服器的公鑰。並用伺服器的公鑰加密通訊資訊,傳給伺服器。

4、伺服器用自己的私鑰解密客戶端傳來的密文,得到明文。

綜上:一共講述了三種加密演算法和三種基於這些加密演算法的加密機制,加密演算法:對稱加密演算法、非對稱加密演算法(公開金鑰加密演算法)和雜湊演算法(摘要演算法);加密機制:數字信封技術、混合加密機制、數字證書。

四、https是如何建立連線的?其間互動了什麼?

在傳輸層,通過tcp協議的三次握手通訊雙方建立連線之後,ssl/tls 協議的握手階段涉及四次通訊。

這四次的通訊過程其一為了產生乙個雙方都知道的會話金鑰,來加密通訊的內容;其二是驗證伺服器的真實身份。具體可見下圖::

ssl/tls 協議建立的詳細流程:

step1.  客戶端發起加密通訊請求

客戶端主要向伺服器傳送以下資訊:2個支援+1個隨機數

(1)客戶端支援的 ssl/tls 協議版本,如 tls 1.2 版本。

(2)客戶端支援的密碼套件列表,如公開金鑰加密演算法rsa 加密演算法。

(3)第乙個隨機數,即客戶端生產的隨機數(client random),後面用於生產「會話秘鑰」。

step2. 服務端回應step1中的請求

伺服器收到客戶端請求後,向客戶端發出響應 。伺服器回應的內容有如下內容:2個確認+乙個隨機數+ca證書

針對客戶端發來的支援的tls協議版本和加密演算法列表,給出2個確認。

(1)確認 ssl/ tls 協議版本,如果瀏覽器不支援,則關閉加密通訊。

(2)確認使用密碼套件列表,如rsa 加密演算法。

(3)第二個隨機數,即伺服器生產的隨機數( server random ),後面用於生產「會話秘鑰」。

(4)伺服器的ca證書,用來驗證伺服器的真實身份。

step3. 客戶端回應伺服器

客戶端收到伺服器的回應之後,首先通過事先內置於瀏覽器或者作業系統中的 ca 公鑰,解密伺服器的ca證書,如果可以解密成功,說明伺服器身份真實,不是釣魚**。解密出來的明文就是伺服器的公鑰。然後向伺服器傳送如下資訊:2個通知+2個資料。

2個通知:

1、加密通訊演算法改變通知,隨後客戶端發出的資訊都將用「會話秘鑰」加密通訊。

2、客戶端握手結束通知,表示客戶端的握手階段已經結束。

2個資料:

1、第三個隨機數,即用伺服器公鑰加密過的隨機數( pre-master key ),也就是隨機數pre-master key的密文。

2、用摘要演算法把之前通訊的所有資料做個摘要,傳送給服務端,用來供伺服器校驗。

以上這樣伺服器和客戶端就同時有三個隨機數,即客戶端隨機數、伺服器隨機數和pre-master key,接著就用雙方協商定的加密演算法,各自生成本次通訊的「會話秘鑰」。在產生會話金鑰之前,伺服器需要用私鑰解密得到第三個隨機數pre-master key。

step4.  伺服器的最後回應

向客戶端發生最後的資訊:2個通知+乙個摘要

(1)加密通訊演算法改變通知,表示隨後的資訊都將用會話秘鑰加密通訊。

(2)伺服器握手結束通知,表示伺服器的握手階段已經結束。

(3)伺服器同時把之前所有通訊資料做個摘要,用來供客戶端校驗。

至此,整個 ssl/tls 的握手階段全部結束。

接下來,客戶端與伺服器進入加密通訊,就完全是使用普通的 http 協議,只不過用會話秘鑰加密內容。 

綜合四次握手過程,

在第一次和第二次握手中,雙方互換了各自隨機數給對方,協定了tls版本和加密演算法。

在第二次握手中,伺服器傳送自己的ca證書給客戶端。客戶端解密出伺服器的公鑰。驗證了伺服器的真實身份,防冒充

在第三次握手中,客戶端用伺服器的公鑰加密第三個隨機數,使得通訊雙方都有了產生會話金鑰的全部的、原始的資訊:三個隨機數和加密演算法,這樣產生了對稱加密的金鑰,並且分發給了通訊雙方。防竊聽

在第三次握手中,客戶端除了向伺服器傳輸了第三個隨機數的密文,還有所有通訊資料的摘要,供伺服器比對校驗,防篡改

在第四次握手中,伺服器向伺服器向客戶端傳輸了所有通訊資料的摘要,供客戶端比對校驗,防篡改。

一文說透WordPress的自定義文章型別

丘壑部落格 從2004年的1.0版本算起,wordpress在14年間已經迭代開發到了5.x版。如果說這中間哪個版本是乙個質的提公升的話,那應該算是2010年發布的代號為thelonious 的3.0版。這個版本發布了很多重要的功能,比如多站點 主題api等等,其中乙個就是 custom post ...

一文說透WordPress的自定義文章型別

丘壑部落格 從2004年的1.0版本算起,wordpress在14年間已經迭代開發到了5.x版。如果說這中間哪個版本是乙個質的提公升的話,那應該算是2010年發布的代號為thelonious 的3.0版。這個版本發布了很多重要的功能,比如多站點 主題api等等,其中乙個就是 custom post ...

C 一文搞懂C 中的std 是什麼

1.c 中的std 是什麼?std 是個命名空間標示符,c 標準庫中的函式或者物件都是在命名空間std中定義的,所以我們要使用標準函式庫中的函式或物件都要使用std來限定。標準庫在名字空間中被指定為std,所以在使用標準庫中的函式或者物件的時候要加上std 這樣編譯器就會明白我們呼叫的函式或者物件是...