HTTPS 原理全解析

協議

1、HTTP 協議(HyperText Transfer Protocol,超文本傳輸協議):是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議 。

2、HTTPS 協議(HyperText Transfer Protocol over Secure Socket Layer):可以理解爲HTTP+SSL/TLS, 即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL,用於安全的 HTTP 數據傳輸。
在這裏插入圖片描述
如上圖所示 HTTPS 相比 HTTP 多了一層 SSL/TLS

SSL(Secure Socket Layer,安全套接字層):1994年爲 Netscape 所研發,SSL 協議位於 TCP/IP 協議與各種應用層協議之間,爲數據通訊提供安全支持。

TLS(Transport Layer Security,傳輸層安全):其前身是 SSL,它最初的幾個版本(SSL 1.0、SSL 2.0、SSL 3.0)由網景公司開發,1999年從 3.1 開始被 IETF 標準化並改名,發展至今已經有 TLS 1.0、TLS 1.1、TLS 1.2 三個版本。SSL3.0和TLS1.0由於存在安全漏洞,已經很少被使用到。TLS 1.3 改動會比較大,目前還在草案階段,目前使用最廣泛的是TLS 1.1、TLS 1.2。

以上內容轉發自:HTTPS系列乾貨(一):HTTPS 原理詳解


以下內容總結來源:b站:【web安全3】【硬核】HTTPS原理全解析

1. http 明文傳輸

直接用http協議進行傳輸的過程中,數據是明文的,如果發送的數據中包含敏感數據(密碼,金額)等,將會變得非常危險。
在這裏插入圖片描述

2. 使用對稱加密傳輸

對稱加密:只有一個密鑰,假設爲key。那麼用key加密的數據,只能用key來進行解密。
在這裏插入圖片描述
使用對稱加密進行傳輸,傳輸過程中傳輸的都是密文,但是依舊不安全。
因爲客戶端有很多,不可能爲每個客戶端都量身制定一個key存儲在服務端,數據量太大。
因此只能服務端有一個key,用來對數據進行加密,那麼黑客也是一個用戶,同樣可以得到這個key,大家都用一個key,那麼加密與不加密就沒有意義。
在這裏插入圖片描述

3. 使用非對稱加密

非對稱加密:有兩個密鑰,一個公鑰(pKey)一個私鑰(sKey),公鑰和加密算法公開,私鑰只有服務端知道不公開。公鑰加密的數據只有私鑰能解密,私鑰加密的數據只有公鑰能解密。
在這裏插入圖片描述
如下圖中:客戶端向服務端索要公鑰,得到公鑰後,將數據用公鑰加密後發送,由於私鑰只有服務端存在,因此數據只能被服務端解密,黑客無計可施。
但是當服務端給客戶端發送數據的時候,因爲客戶端是不存在私鑰的,只能用私鑰進行加密。私鑰加密的數據並不安全,因爲公鑰是公開的,黑客同樣可以獲取公鑰,因此服務器給客戶端發送的數據並不安全。
在這裏插入圖片描述

4. 對稱+非對稱加密

對稱加密中:如果每個客戶端都有一個獨立的密鑰,那麼傳輸就安全了
非對稱加密中:客戶端向服務端發送數據是安全的,但是服務端給客戶端發送數據不安全

將對稱加密和非對稱加密進行結合:
1.客戶端組織一個唯一的用於對稱加密的密鑰key,通過對稱加密的方式發送給服務端(安全)。
2.將數據都用key進行對稱加密,然後發送,因爲黑客獲取不到key,不能破解數據。
在這裏插入圖片描述
但是上面的方法就真的就安全了嗎?還沒
假設黑客從一開始就捕獲了請求,一直作爲中間人對數據進行轉發,依舊存在問題:

如圖所示,黑客從始至終都參與這客戶端和服務端的數據交互,但是客戶端並不知道。此時黑客便可以對數據進行修改(金額,密碼)進而實現破壞。
在這裏插入圖片描述

5. CA 認證

CA 證書:CA 認證機構給服務器頒發
CA證書 = 服務器公鑰 + 簽名 + 頒發者與申請者信息

客戶端向服務端索要CA證書,得到證書後,會對證書進行檢驗真僞,於是黑客不能像 4 中一樣作爲一箇中間人存在,確保數據安全。

在用CA機構的公鑰對CA證書進行解密的時候,並不需要向CA機構去索要,操作系統中會寫死很多CA機構的公鑰,解密後就可以得到服務端公鑰。
在這裏插入圖片描述

CA 證書的簽發過程

1.服務方 S 向第三方機構CA提交公鑰、組織信息、個人信息(域名)等信息並申請認證。

2.CA 通過線上、線下等多種手段驗證申請者提供信息的真實性,如組織是否存在、企業是否合法,是否擁有域名的所有權等。

3.如信息審覈通過,CA 會向申請者簽發認證文件,CA 證書。

證書包含以下信息:
申請者公鑰、申請者的組織信息和個人信息、簽發機構 CA 的信息、有效時間、證書序列號等信息的明文,同時包含一個簽名

簽名的產生算法: 首先,使用散列函數計算公開的明文信息的信息摘要,然後,採用 CA 的私鑰對信息摘要進行加密,密文即簽名。

4.客戶端 C 向服務器 S 發出請求時,S 返回CA證書文件。

5.客戶端 C 讀取證書中的相關的明文信息,採用相同的散列函數計算得到信息摘要,然後,利用對應 CA 的公鑰解密簽名數據,對比證書的信息摘要,如果一致,則可以確認證書的合法性,即公鑰合法。

6.客戶端然後驗證證書相關的域名信息、有效時間等信息;

7.客戶端會內置信任 CA 的證書信息(包含公鑰),如果CA不被信任,則找不到對應 CA 的證書,證書也會被判定非法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章