http、https、TLS、證書原理理解,對稱加密到非對稱加密問題,以及對應的大致流程

http 超文本傳輸協議

存在問題:

  1. 安全性、隱私性、數據完整性

  2. 易被中間人(黑客之類的)對數據進行劫持、篡改、隱私泄露

引出了=====================================================================

https (source)

  1. http 在網絡模型中的應用層
    Application => transport => internet => network Access
  2. 所有經由網絡中的數據都是 以 最原始狀態傳輸的,一旦被截獲,內容會被輕易獲取

https中引入了 =====================================================================

TLS協議

的概念=====================================================================

  1. 專門對數據進行加密解密操作
  2. 客戶端產生數據后,會通過TLS進行數據加密,傳到對端,通過TLS對數據進行解密
  3. 將解密后的 數據傳輸給http服務的

—網絡中 傳輸的 是加密后的數據

TLS 和 SSL 對比

  1. TLS(transport layer security):使用廣泛的網絡傳輸加密協議,規定了如何為在網絡中傳輸的數據進行加密和解密,確保數據安全性
  2. SSL(Secure Socket Layer) ===> SSL.3.0版本 共享給IETF組織,最終重命名為TLS
  3. SSL 為 TLS 前身

對稱加密

TLS 采用哪種方式對數據進行加密解密的

對稱加密

  • 指通訊雙方更具協商好的算法,生成一個唯一密鑰
  • 該密鑰用于同時對數據進行加解密操作

大致流程

  1. 訪問某個服務時(已經三次握手了),會先向服務端發送個 hello請求,請求中包含了客戶端所支持的 TSL版本 和加密函數 和 加密算法等信息
  2. 服務器接收請求,選取最優TSL協議、加密函數、加密算法,返回給客戶端
  3. 客戶端接收到響應后,先隨機生成一段字符串(預主密鑰),通過使用加密的函數和算法生成一組密鑰(會話密鑰)
  4. 同時客戶端把生成的 預主密鑰 發送給服務端,并且告知生成對稱密鑰的算法和信息。
  5. 服務端通過使用客戶端發送過來的 加密的函數和算法生成一組密鑰(會話密鑰)

名詞

預主密鑰: 客戶端隨機生成的一段字符串

會話密鑰(對稱密鑰): 預主密鑰 結合服務端返回的TLS協議、加密函數、加密算法 生成

問題

  1. 無法保證 預主密鑰安全傳輸給服務端
  2. 中間人也能拿到客戶端發送過來的 預主密鑰 和 TLS協議、加密算法、函數等信息,生成對應的 會話密鑰

怎么解決 預主密鑰安全傳輸===================================================

引入了=====================================================================

非對稱加密(PKI)

  • 公鑰: 用于加密,對外開發,所有人都能獲取
  • 私鑰: 用于解密,只有擁有者知道

public key infrastructure

示例

  1. 客戶端 向服務傳輸數據時, 服務端首先會生成 公鑰私鑰對
  2. 服務器將公鑰發送給客戶端,還有合適的TLS 協議, 加密算法等信息
  3. 客戶端隨機生成一串字符串(預主密鑰),預主密鑰通過 加密算法生成 對應的 會話密鑰
  4. 客戶端使用服務器發送的公鑰 對 預主密鑰進行加密。并且發送給服務端。還有 TLS 、加密算法等信息。
  5. 服務端通過自己的私鑰對 加密過的預主密鑰進行解密。得到正確的預主密鑰,通過加密算法得到 會話密鑰。

問題

  1. 無法保證客戶端獲取的公鑰真的是 目標服務提供的。
  2. 客戶端獲取到公鑰真的是目標服務所頒發的嗎?
舉例
  1. 服務器的公鑰、密鑰對被中間人截取。中間人提供自己的公鑰私鑰對給客戶端。客戶端不知道
  2. 客戶端隨機生成 預主密鑰,使用 中間人提供的公鑰進行加密;使用中間人提供的加密算法生成 會話密鑰
  3. 中間人拿到客戶端發來的加密后的預主密鑰,用自己的私鑰進行解密,拿到了正確的 預主密鑰。
  4. 中間人用預主密鑰生成對應的會話密鑰(中間人和客戶端之間的)
  5. 中間人用服務器的公鑰對 預主密鑰進行加密;用服務器提供的加密算法生成會話密鑰(中間人和服務器之間的)
  6. 服務器拿到中間人提供的加密后的預主密鑰,用自己的私鑰進行解密拿到 預主密鑰;進行會話密鑰生成。
  7. 這樣中間人就能對兩邊通訊內容繼續截取、監聽了

為解決這問題=================================================================
引入了=====================================================================

證書CSR

-Digital Certification 證書頒發機構(CA)所簽發

  • 唯一,表示一個站點的身份信息;網站的身份證
  • 證書:內容包含–證書的申請者、證書的頒發機構、證書的有效起始結束信息、證書的指紋(公鑰)

證書的申請流程

  • 向CA機構進行申請,—簽發簽證。
    網站申請證書時
  1. 申請者需要創建一個證書申請請求文件(SCR)Certificate Signing Request
  2. 申請證書中通常要包含:網站域名、IP地址、公司名稱、地理位置、郵箱地址、公鑰信息等信息
  3. 發送給 CA,ca對信息審核,審核完成后頒發給申請者,申請者把證書部署在web服務即可

證書的工作原理

1. 證書指紋:

  1. 用戶唯一表示證書(確保證書的完整性)
  • hash 加密: 單項加密算法

    • 特性:不可逆、唯一性

    生成證書時,會對證書的內容和公鑰分別進行hash計算,作為證書指紋附加到證書中,同時說明使用的hash算法

  1. 瀏覽器從服務端獲取到證書后會使用相同的算法對證書進行hash 算法。將計算后的結果與附加在證書的中的指紋做對比
  2. 如果一致,證明證書在網絡傳輸過程中沒有被人所截獲并篡改內容
  3. 實現對證書正確性的核實(但無法保證證書是合法機構頒發的。也可能是一些偽造證書)
問題
  1. 還需要核實證書的真實性,確定證書真是由證書中所描述的CA所頒發的,而不是偽造的。

通過證書簽名實現=====================================================================

2. 數字簽名(驗證證書的真實性)

  • 通過 KPI(非對稱加密)來進行加密和解密進行驗證證書的真偽

  • CA使用私鑰進行加密,公鑰進行解密

  • CA生成好證書后,會對證書進行 私鑰加密,并附加到證書中發送給服務器

  • 客戶端網站獲取到證書后。會使用 CA對應的公鑰 對其進行解密,一但解密成功。就代表 證書確實是CA機構頒發的

問題

瀏覽器CA的公鑰在那兒呢,怎么安全獲取CA公鑰呢,如何保證公鑰不被中間人替換

就要知道=============================================================

預安裝

  1. 機構對證書進行簽名時,不僅用到私鑰,還會用到另外一個證書-根證書

    • 作用;為其他證書進行簽名,每個操作系統都會維護一個根證書庫:默認瀏覽器已經安裝好了受信人的CA根證書
  2. 驗證證書中的數字簽名時,只要找到對應的CA根證書即可(避免網絡傳輸時被竊聽,掉包的風險)

=============

大概流程

  1. 客戶端請求時(三次握手后),發送hello 請求,攜帶 支持的TLS、加密算法
  2. 服務端響應 服務端采用的 TLS協議, 解密算法;同時發送 證書給客戶端
  3. 客戶端驗證證書指紋、簽名確定證書的真實性。
  4. 客戶端通過CA提供的公鑰從證書中提起出服務器的公鑰(保證公鑰一定是目標服務器的)
  5. 客戶端生成預主密鑰,使用 公鑰進行加密,發送給服務器,攜帶加密算法等信息;預主密鑰使用加密算法生成 會話密鑰
  6. 服務器使用自己的私鑰 對 加密的預主密鑰解密,拿到正確的預主密鑰;使用加密算法生成 對應的會話密鑰。
  7. 開始真正傳輸數據,并且這些數據進行會話密鑰加密。

1-6之間的過程(不包括三次握手) 俗稱為 TLS握手。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77582.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77582.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77582.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度補全網絡:如CSPN++填補稀疏點云的深度信息

深度補全網絡:CSPN填補稀疏點云的深度信息 深度補全(Depth Completion)是計算機視覺中的一個重要任務,旨在從稀疏的深度測量中恢復密集的深度圖。CSPN(Convolutional Spatial Propagation Network)是這一領域的前沿方法之一。 CSPN概述 CSPN是對原始CSPN…

QT網絡拓撲圖繪制實驗

前言 在網絡通訊中,我qt常用的是TCP或者UDP協議,就比方說TCP吧,一臺服務器有時可能會和多臺客戶端相連接,我之前都是處理單鏈接情況,最近研究圖結構的時候,突然就想到了這個問題。那么如何解決這個問題呢&…

DNS主從同步實驗

dns域名解析原理 實驗步驟1、主dns要完成dns解析:192.168.21.128 [rootlocalhost ~]# yum install bind -y [rootlocalhost ~]# systemctl start named [rootlocalhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; direct…

知識了解03——怎么解決使用npm包下載慢的問題?

1、為什么使用npm下載包會下載的慢 因為使用npm下載包時,默認使用國外服務器進行下載,此時的網絡傳輸需要經過漫長的海底電纜,因此下載速度會變慢 2、怎么解決?(切換鏡像源) (1)方…

在Ubuntu系統中安裝和升級RabbitVCS

在Ubuntu系統中安裝和升級RabbitVCS 目前在ubuntu中使用svn的GUI工具,已經安裝了。想升級一下。 當前遇到的問題是,我想用它看看我當前的代碼對應的版本號,然后再決定是否update。但是,好像我看不出來。根本不如在windows使用To…

cv::dnn::NMSBoxes和nms-free的比較

1. 原理與目標 cv::dnn::NMSBoxes 基于傳統的非極大值抑制(NMS)算法,通過交并比(IoU)篩選重疊框,保留置信度最高的框,抑制冗余檢測。支持變體如 Soft-NMS(通過降低分數而非直接抑制&…

React-useImperativeHandle (forwardRef)

我們會遇到這樣的場景:某個組件想要暴露一些方法,來供外部組件來調用。例如我們在開發form表單的時候,就需要把設置表單值、重置值、提交等方法暴露給外部使用。會有如下代碼: import { forwardRef } from react;const Form for…

多人五子棋聯機對戰平臺 測試報告

目錄 項目介紹 測試用例設計 部分功能測試示例 自動化測試 測試范圍 排除范圍 自動化測試目錄?編輯 執行全部自動化測試用例 性能說明 總結 性能測試 結果分析 測試總結 項目介紹 該項目基于WebSocket實現實時通信,采用SSM框架構建在線五子棋多人聯機…

JAVAEE(網絡原理—UDP報頭結構)

我們本篇文章要講的是UDP的報頭結構以及注意事項。 下面呢,我先說一下UDP是什么? 1.UDP是什么? UDP是一種網絡協議。網絡協議是計算機網絡中,為了使不同設備之間能夠準確、高效地進行數據交換和通信,而預先制定的一…

STM32學習筆記匯總

所有學習資料均參考b站江科大,和鐵山羊 一.創建工程(比較麻煩,而且時間長了就容易忘記) 二.點燈大師(成功的第一步) 三.不同的燒錄器使用(Jlink-stlink)

【MySQL】SQL語句在MySQL中的執行過程?主要存儲引擎區別?

MySQL SQL語句執行過程詳解 作為面試官,我來詳細剖析一條SQL語句在MySQL中的完整執行過程,這是每個后端開發者都應該掌握的核心知識。 一、連接階段 建立連接 客戶端通過TCP/IP協議與MySQL服務器建立連接(默認3306端口)服務器驗證用戶名、密碼和權限…

【記錄】服務器安裝ffmpeg

前言 因為項目中需要用到 ffmpeg 進行圖像的一些操作,本文記錄下在服務器安裝 ffmpeg 的全過程,還是具有一定挑戰性的。 系統詳情 本文使用的操作系統詳情如下 通過 命令 cat /etc/os-release 獲取 雖然操作系統為 Rocky Linux,但安裝過程是通用的,因為本文記錄的是從源代碼…

Django之modelform使用

Django新增修改數據功能優化 目錄 1.新增數據功能優化 2.修改數據功能優化 在我們做數據優化處理之前, 我們先回顧下傳統的寫法, 是如何實現增加修改的。 我們需要在templates里面新建前端的頁面, 需要有新增還要刪除, 比如說員工數據的新增, 那需要有很多個輸入框, 那html…

HTML5 應用程序緩存:原理、實踐與演進

在 Web 技術的發展歷程中,HTML5 引入的應用程序緩存(Application Cache)曾是提升 Web 應用離線體驗的重要技術。它允許 Web 應用進行緩存,使用戶在沒有因特網連接時也能訪問應用,為 Web 應用帶來了顯著的優勢。然而&am…

【問題筆記】解決python虛擬環境運行腳本無法激活問題

【問題筆記】解決python虛擬環境運行腳本無法激活問題 錯誤提示問題所在解決方法**方法 1:臨時更改執行策略****方法 2:永久更改執行策略** **完整流程示例** 錯誤提示 PS F:\PythonProject\0419graphrag-local-ollama-main> venv1\Scripts\activate…

解決echarts餅圖label顯示不全的問題

解決辦法 添加如下配置: labelLayout: {hideOverlap: false},

Pandas數據合并與重塑

在數據處理與分析的領域中,Pandas 無疑是一顆璀璨的明星。它提供了豐富且強大的功能,讓我們能夠輕松應對各種復雜的數據操作。其中,數據合并與重塑是兩個至關重要的環節,它們能夠幫助我們整合不同來源的數據,調整數據的…

Nodejs數據庫單一連接模式和連接池模式的概述及寫法

概述 單一連接模式和連接池模式是數據庫連接的兩種主要方式: 單一連接模式: 優點:實現簡單,適合小型應用缺點:每次請求都需要創建新連接,連接創建和銷毀開銷大,并發性能差,容易出…

將 DeepSeek 集成到 Spring Boot 項目實現通過 AI 對話方式操作后臺數據

文章目錄 項目簡介GiteeMCP 簡介環境要求項目代碼核心實現代碼MCP 服務端(批量注冊 Tool)MCP 客戶端(調用 DeepSeek) DeepSeek APIDockersse 連接ws 連接(推薦)http 連接 Cherry Studio配置模型配置 MCP調用…

【HDFS入門】HDFS性能調優實戰:壓縮與編碼技術深度解析

目錄 1 HDFS性能調優概述 2 HDFS壓縮技術原理與應用 2.1 常見壓縮算法比較 2.2 壓縮流程架構 2.3 壓縮配置實踐 3 列式存儲編碼技術 3.1 ORC與Parquet對比 3.2 ORC文件結構 3.3 Parquet編碼流程 4 性能調優實戰建議 4.1 壓縮選擇策略 4.2 編碼優化技巧 5 性能測試…