網絡協議——HTTPS協議

目錄

一、HTTPS是什么

加密是什么

二、HTTPS的工作過程

(一)對稱加密

(二)非對稱加密

(三)在非對稱加密的基礎上,引入證書校驗

證書是什么

證書的內容

用證書解決中間人攻擊

三、總結


一、HTTPS是什么

HTTPS 也是一個應用層協議.是在 HTTP 協議的基礎上引入了一個加密層.
HTTP 協議內容都是按照文本的方式明文傳輸的.這就導致在傳輸過程中出現一些被篡改的情況.

臭名昭著的“運營商劫持”

當我們在瀏覽器中下載一個“天天動聽”,正常情況下,會跳轉出這個下載鏈接。

但是遇到運營商劫持的情況,下載鏈接就會變成QQ瀏覽器的鏈接。

當我們通過網絡傳輸任何網絡數據時,都會經過運營商的路由器/交換機,運營商作為中間人,就能解析出你傳輸的網絡數據,并進行篡改。

點擊"下載按鈕",其實就是在給服務器發送了一個 HTTP 請求,獲取到的 HTTP 響應其實就包含了該APP 的下載鏈接.運營商劫持之后,就發現這個請求是要下載天天動聽,那么就自動的把交給用戶的響應給篡改成 "QQ瀏覽器" 的下載地址了。

在互聯網上,明文傳輸是一件很危險的事情,因此我們在HTTP的基礎上進行加密得到了HTTPS。

加密是什么

  • 加密就是將明文(需要傳輸的數據)經過一系列操作,變成密文。
  • 解密就是將密文經過一系列操作,變成明文。

二、HTTPS的工作過程

HTTPS在HTTP的基礎上對網絡數據進行了加密。

加密方式有兩種:對稱加密和非對稱加密

(一)對稱加密

對稱加密就是使用同一個密鑰,把明文加密成密文發送出去,接收方再用這個密鑰將密文解析成明文。

引入對稱加密之后,即使數據被截獲,由于黑客不知道密鑰是啥,因此就無法進行解密,也就不知道請求的真實內容是啥了. 但事情沒這么簡單.服務器同一時刻其實是給很多客戶端提供服務的.這么多客戶端,每個人用的秘鑰都必須是不同的(如果是相同那密鑰就太容易擴散了,黑客就也能拿到了).因此服務器就需要維護每個客戶端和每個密鑰之間的關聯關系,這也是個很麻煩的事情。

因此客戶端與服務器建立連接的時候,就約定好密鑰是什么。

但是在客戶端與服務器約定密鑰的時候,如果密鑰用明文傳輸,那黑客也能讀取到密鑰并破解。

這樣就形同虛設了,因此密鑰也要加密傳輸,這就需要一個“密鑰的密鑰”,再這樣下去,這樣就死循環了。于是引入了非對稱加密。

(二)非對稱加密

非對稱加密在對稱加密的基礎上多使用了兩個密鑰:公鑰和私鑰。

公鑰和私鑰是配對的.最大的缺點就是運算速度非常慢,比對稱加密要慢很多.

  • 通過公鑰對明文加密,變成密文
  • 通過私鑰對密文解密,變成明文

也可以反著用

  • 通過私鑰對明文加密,變成密文
  • 通過公鑰對密文解密,變成明文

  • 在上述過程中,公鑰的作用是用來封裝對稱密鑰,相當于是把對稱密鑰給鎖起來。
  • 私鑰保存在服務器端,用來解開封裝對稱密鑰的鎖,從而得到對稱密鑰。

在這個過程中,黑客要得到私鑰才能進行解密,只用服務器才有私鑰,即使公鑰被黑客知道了,也不能破解出密鑰是什么。當密鑰被安全告知給服務器,后續客戶端和服務器之間的數據傳輸,就都靠對稱密鑰來加密了。

當前場景一共有三個密鑰(也相當于三個步驟):

  • 客戶端生成的對稱密鑰,用于對后續數據進行加密。
  • 服務器生成的公鑰,用來對對稱密鑰進行加密傳輸,可以告知給所有設備使用。
  • 服務器持有的私鑰,用來解密出對稱密鑰。

(三)在非對稱加密的基礎上,引入證書校驗

在非對稱加密的基礎上,還是存在重大的隱患的。

我們知道公鑰是由服務器生成的,再傳輸給客戶端,問題是:

  • 服務器生成的公鑰,是如何傳輸到客戶端的呢?
  • 客戶端在收到公鑰的時候,怎么分辨這個公鑰是不是黑客偽造的呢。

中間人攻擊

在公鑰傳輸給客戶端的時候,黑客可以使用到中間人攻擊,獲取到對稱密鑰。

在中間人攻擊的時候,黑客實現了一個“欺下瞞上”的效果。

這個漏洞關鍵點在于,客戶端無法區分收到的公鑰是否是被篡改過的,于是就引入校驗機制,來驗證收到的公鑰。

證書是什么

服務端在使用HTTPS前,需要向CA機構申領一份數字證書,數字證書里含有證書申請者信息、公鑰信息等。服務器把證書傳輸給瀏覽器,瀏覽器從證書里獲取公鑰就行了,證書就是公鑰的載體

作用:

  • 安全傳遞公鑰:證書里包含服務器公鑰,借助 CA 機構的可信體系,能讓公鑰在傳輸到瀏覽器等客戶端時,避免被中間人篡改、替換,就像給公鑰 “保鏢護送”,確保客戶端拿到的是服務器真實、未被污染的公鑰 。
  • 證明身份合法性:它是經 CA 認證的 “身份憑證”,向客戶端證明 “我這個服務器是合法、可信的,不是假冒的” 。客戶端會校驗證書,若證書有問題(比如過期、被吊銷、不是受信任 CA 簽發),瀏覽器會警告,不讓不安全連接建立,防止用戶連到釣魚網站 。

服務器在搭建的過程中,就可以向第三方公證機構申請證書,然后保存在服務器端。

證書的內容

證書中包含了:

  • 證書的頒布機構是誰
  • 證書的有效期是多久
  • 服務器的域名是什么
  • 服務器的公鑰是什么??
  • 證書的數字簽名是多少(被加密的校驗和)??

其中證書的數字簽名相當于身份證一樣,用于校驗證書的真偽,它是將證書里面的公鑰和其他數據部分代入一個固定的公式(比如hash函數)算出來的一個數字,然后第三方機構也生成一對非對稱密鑰(pub2,pri2)然后用私鑰pri2對校驗和進行加密,數字簽名本質上是一個被加密過的校驗和。

用證書解決中間人攻擊

解決中間人攻擊就在于防止服務器生成的公鑰被篡改。

過程是這樣的:

  • 在客戶端請求建立連接后,得到服務器發來的證書(公鑰的載體)。
  • 客戶端針對收到的證書進行解析,計算其中的校驗和1。
  • 客戶端使用認證機構的公鑰pub2解析證書中的數字簽名,得到校驗和2.
  • 判斷校驗和1與校驗和2是否相等。

原理:

原理在于,證書中的其他部分(包括公鑰)相當于是計算過程,而數字簽名是加密過的計算結果。

如果黑客寫改了證書中的公鑰,那就是計算過程出現錯誤,那么計算結果(校驗和)肯定就錯誤。

而用戶拿到公鑰,就相當于有了參考答案,就能驗證黑客是否對證書進行了修改。

那如果黑客連同公鑰(過程)和數字簽名(答案)一起改了呢,改了之后也必須對新的校驗和進行加密(這里只能用黑客自己的私鑰,拿不到認證機構的私鑰),依舊會被判斷出。

引入證書,是防止黑客修改公鑰
黑客看到公鑰是啥,無所謂(本身公鑰就是公開的)
黑客看到校驗和,無所謂,本身只是用來校驗數據,沒有啥別的意義

整個過程只是為了保證客戶端可以驗證,公鑰是合法的
只要公鑰的合法性驗證通過,后續客戶端繼續使用公鑰對對稱密鑰加密
后續繼續使用對稱密鑰來進行加密傳輸

三、總結

HTTPS 工作過程中涉及到的密鑰有三組.

  • ????????第一組(非對稱加密): 用于校驗證書是否被篡改.服務器持有私鑰(私鑰在注冊證書時獲得), 客戶端持有公鑰(操作系統包含了可信任的 CA 認證機構有哪些,同時持有對應的公鑰).服務器使用這個私鑰對證書的簽名進行加密.客戶端通過這個公鑰解密獲取到證書的簽名,從而校驗證書內容是否是篡改過.
  • ????????第二組(非對稱加密): 用于協商生成對稱加密的密鑰.服務器生成這組私鑰 - 公鑰對,然后通過證書把公鑰傳遞給客戶端.然后客戶端用這個公鑰給生成的對稱加密的密鑰加密,傳輸給服務器,服務器通過私鑰解密獲取到對稱加密密鑰.
  • ????????第三組(對稱加密): 客戶端和服務器后續傳輸的數據都通過這個對稱密鑰加密解密.

其實一切的關鍵都是圍繞這個對稱加密的密鑰.其他的機制都是輔助這個密鑰工作的.

第二組非對稱加密的密鑰是為了讓客戶端把這個對稱密鑰傳給服務器.
第一組非對稱加密的密鑰是為了讓客戶端拿到第二組非對稱加密的公鑰.

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

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

相關文章

React 基礎實戰:從組件到案例全解析

React 基礎實戰專欄:從組件到案例全解析 本專欄圍繞 React 核心概念(組件、Props、State、生命周期)展開,通過 6個實戰案例+核心知識點拆解,幫你掌握 React 基礎開發邏輯,每篇聚焦1個實戰場景,搭配完整代碼與原理講解,適合 React 入門者鞏固基礎。 專欄目錄 【組件傳…

ARM芯片架構之CoreSight Channel Interface 介紹

CoreSight Channel Interface(通道接口)詳解1. 概述 Channel Interface 是 ARM CoreSight 架構中用于在不同組件之間傳遞觸發事件的專用接口。它是 Event Interface 的增強版本,支持多通道、雙向通信,以及同步與異步兩種時鐘域連接…

Blender模擬結構光3D Scanner(二)投影儀內參數匹配

關于投影儀外參的設置可參見前一篇文章 Blender模擬結構光3D Scanner(一)外參數匹配-CSDN博客 使用Projectors插件模擬投影儀 Step 1 在Github下載插件(https://github.com/Ocupe/Projectors)。下載zip壓縮包即可,無…

synchronized的作用

目錄 一、核心作用 二、實現原理:基于"對象鎖" 三、使用方式 四、鎖的優化 五、優缺點 六、總結 synchronized 是 Java 中用于解決多線程并發安全問題的核心關鍵字,它的主要作用是實現線程間的同步,確保多個線程在訪問共享資…

機試備考筆記 14/31

2025年8月14日 小結:(17號整理14號的筆記,這輩子真是有了w(゚Д゚)w)昨天摔了跤大的,今天好媽媽在家,松弛。省流:6道中等,明天只學了10分鐘嘻嘻 目錄LeetCode22…

dolphinscheduler中任務輸出變量的問題出現ArrayIndexOutOfBoundsException

一段腳本任務如下:ret/data/dolphinscheduler/loadOraTable.sh "yonbip/yonbip10.16.10.69:1521/orcl" "select t.bondcontractno,t.olcunissuemny from yonbip.bond_contract t " "/dmp/biz" "bip" "2025-08-13"…

OpenCv(二)——邊界填充、閾值處理

目錄 一、邊界填充(Border Padding) 1. 常見填充類型及效果 2.代碼示例 (1)constant邊界填充,填充指定寬度的像素 (2)REFLECT鏡像邊界填充 (3)REFLECT_101鏡像邊界…

Leetcode 15 java

今天復習一下翻轉二叉樹 226. 翻轉二叉樹 給你一棵二叉樹的根節點 root ,翻轉這棵二叉樹,并返回其根節點。 示例 1: 輸入:root [4,2,7,1,3,6,9] 輸出:[4,7,2,9,6,3,1]示例 2: 輸入:root [2…

嵌入式學習的第四十九天-時鐘+EPIT+GPT定時器

一、時鐘1.時鐘系統基本概念(1)PLL (鎖相環, Phase-Locked Loop)作用:PLL是一種反饋控制電路,用于生成穩定的高頻時鐘信號。它通過將輸出時鐘與參考時鐘進行比較和調整,可以產生比輸入參考時鐘頻率高得多的輸出時鐘。倍…

Python Sqlalchemy數據庫連接

Python Sqlalchemy數據庫連接一、連接數據二、模型三、ORM操作一、連接數據 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 1. 連接數據庫 dbHost postgres://用戶名:密碼主機:端口/數據庫名 engine create_engine(dbHost) # create_engi…

【Node.js】ECMAScript標準 以及 npm安裝

目錄 一、 ECMAScript標準 - 默認導出和導入 二、ECMAScript標準 - 命名導出和導入 三、包的概念 五、 npm - 安裝所有依賴 六、 npm - 全局軟件包 Node.js總結 總結不易~ 本章節對我有很大的收獲, 希望對你也是!!! 本節素材…

NPM 、 NPX

NPM vs. NPX 簡單來說,npm 是一個 node 包管理器,npx 是一個 Node 包執行器。 NPX 是一個 Node 包執行器,該 Node 包可以是本地也可以是遠程的。允許開發者在無需安裝的情況下執行任意 Node 包。npm 在安裝nodejs 就自動帶了 npm install -g …

守護品質安全,防偽溯源系統打造全鏈路信任體系

一、引言在當下這個信息透明、品質至上的時代,防偽溯源已經成為眾多品牌保護自身利益、提升消費者信任度的重要手段。為了滿足市場上對高效、可靠的防偽溯源查詢系統的迫切需求,榕壹云精心打造了一款防偽溯源查詢系統。二、項目背景隨著商品市場的不斷擴…

【完整源碼+數據集+部署教程】無人機航拍視角洪水檢測與受災房屋識別圖像分割救援指導系統源碼和數據集:改進yolo11-DCNV2

背景意義 研究背景與意義 隨著全球氣候變化的加劇,極端天氣事件的頻率和強度不斷上升,洪水作為一種常見的自然災害,給人類社會帶來了嚴重的威脅。洪水不僅導致人員傷亡和財產損失,還對基礎設施和生態環境造成了深遠的影響。因此&a…

C# 結構體與類的區別是什么?

結構體是值類型是儲存在棧中獨立儲存的,數據與數據之間不會相互影響,即使將一個結構體賦值給另外一個結構體也不會相互影響。 類是一個模板,實例出來的對象是獨立的不會相互影響,但是將一個對象賦值給另一個對象時 會把指向堆內存中數據的指針賦值給另一個對象.從而發生兩個變量…

Redis GEO

Redis GEO 引言 Redis 是一款高性能的鍵值存儲系統,廣泛應用于緩存、消息隊列等領域。Redis GEO 是 Redis 2.4 版本后新增的一個功能,用于存儲地理位置信息。本文將詳細介紹 Redis GEO 的概念、使用方法以及應用場景。 什么是 Redis GEO? Redis GEO 是 Redis 的一個模塊…

Go從入門到精通系列學習路線規劃

Go從入門到精通系列學習路線規劃 目錄導航 Go從入門到精通系列學習路線規劃首頁說明 第1篇_Go語言初探_環境搭建與HelloWorld 第2篇_Go語言基礎語法_變量常量與數據類型 第3篇_Go語言控制結構_條件判斷與循環 第4篇_Go語言函數詳解 第5篇_Go語言數據結構詳解 第6篇_Go語言結構體…

Grid系統概述

目錄 概念及功能 網格對象(Grid Object) 和世界對象(World Object) 工作流程 概念及功能 TrinityCore 的 Grid 系統是一套復雜的地圖分區管理機制,其核心目標是通過動態管控游戲世界的區域狀態和對象生命周期&#…

一文搞懂LLM大模型!LLM從入門到精通萬字長文(2024.12月最新)

LLM從入門到精通精品文章 目錄 一、LLM基本概念 二、LLM發展歷程 三、LLM大模型的分類 四、LLM主流大模型類別 五、LLM大模型建立的流程 六、Fine-Tuning 七、Prompt-Tuning 八、超大規模參數模型Prompt-Tuning方法 8.1上下文學習 In-Context Learning 8.2.指令學習 …

Next.js跟React關系(Next.js是基于React庫的全棧框架)(文件系統路由、服務端渲染SSR、靜態生成SSG、增量靜態再生ISR、API路由)

文章目錄**1. React 是基礎,Next.js 是擴展****2. Next.js 解決了 React 的哪些痛點?****3. 核心區別****4. Next.js 的核心特性**1. **文件系統路由**2. **服務端渲染(SSR)**3. **靜態生成(SSG)**4. **增量…