HTTPS加密原理

一、什么是HTTPS?

1.1 https是在http協議上加了一層加密解密層

如圖:

https協議就是在http協議的基礎上經過一層加密解密層發送,然后接收端同樣需要經過加密解密層才能獲取到發送過來的數據,這樣就可以保證數據傳輸的安全性;

1.2 什么是加密?什么是解密?什么是明文?什么是密文?什么是秘鑰?

明文加密后就是密文,密文解密后就是明文,除了明文跟密文外的用來輔助加密跟解密過程的其他數據為秘鑰;

舉例一個很簡單的加密解密過程:

如圖,明文7經過秘鑰5加密后得到密文2,密文2再由秘鑰5解密后得到明文7;

其中5是用來輔助整個加密解密過程的,5是一個秘鑰;

1.3 常見的加密方式:

①、對稱加密:一個秘鑰:加密和解密所用的秘鑰是同一個;

特點:算法公開,計算量小,加密速度快,加密效率高;

圖示:

②、非對稱加密:兩個秘鑰:需要兩個秘鑰來進行加密和解密:

特點:當用公鑰加密時只有擁有私鑰的人才能進行解密,算法復雜,運行速度慢;

圖示:

二、HTTPS采用的加密方案

我們從最簡單的加密方案開始,一步步優化,最后得到比較完善成熟的加密方案就是現在的HTTPS的采用的加密方案:

2.1、方案一:只使用對稱加密

這種方案有兩種情況:情況一:

這種情況存在的問題:因為服務端一般是少數的,而客戶端是大量的,如果大量的客戶端都用這個秘鑰A,如果當某一天Server端更換A秘鑰時,大量的客戶端都需要跟著更換秘鑰,這樣會非常的麻煩;

如果不想這么麻煩換一個方法就是以下這種情況二:

以上方法是先從Server里獲取到秘鑰后再用這個秘鑰來加密,這樣可以不用擔心Server端的秘鑰更改帶來的麻煩,但是如此一來加密工作形同虛設,因為中間人可以在第二個步驟時捕獲到A秘鑰,所以只用對稱加密的方案是行不通的;

2.2 方案二:只使用非對稱加密

方案二存在的問題:中間人在第二步捕獲公鑰保存起來,然后再在第④步時捕獲Server的響應,然后通過公鑰對其進行解密得到明文內容,因為這里的密文是Server通過A'(私鑰)形成的,用之前保存的公鑰可以破解;

2.3 方案三:雙方都使用非對稱加密

方案三存在的問題是:非對稱加密所使用的加密算法復雜,且如果雙方都是用非對稱運行速度會很慢;

2.4 方案四:對稱加密+非對稱加密

方案四是從方案一一步步優化升級過來的策略,已經屬于比較成熟熟的方案了,但是這樣就真的沒問題了嗎?

中間人偽造秘鑰:

以上之所以能被破解是因為客戶端在獲取到Server的S公鑰時,它自身不能夠辨別出接收到的是否是Server的公鑰!!

那么如何才能讓客戶端精準正確的分辨出它所接受到的公鑰的的確確是其請求的Server所發回來的公鑰呢??

三、引入證書

3.1、在了解證書之前我們先對數據摘要&&數據指紋有一個了解

數據摘要也叫數據指紋,下文為了統一我就用數據摘要來進行描述:

某個數據經過哈希函數運算后生成一個散列值,這個散列值就是數據摘要;

這個散列值具有的特點:固定長度、有非常低的概率會發生沖突、唯一性、不可逆:

意思是:

因此,經過哈希運算后得到的這個字符串就是數據摘要,它能表示唯一的一篇原文數據!!

3.2、數字簽名

數字簽名很好理解,數字簽名就是在數據摘要的基礎上再進行加密!!

3.3、有了以上兩個背景知識我們在來了解證書

證書就是:一坨數據經過哈希算法后得到一個數據摘要,在給這個數據摘要加密得到一個數字簽名,把這個數字簽名附加在這坨數據上,得到的就是證書!

看圖:

CA機構:一個大家都知道都公認的具有權威信的一個機構,只有這個機構才能簽名跟頒發證書;

CA機構怎么對數據摘要進行加密的:CA機構擁有一對公鑰、私鑰,CA機構用它的私鑰進行加密,然后把它的公鑰發給大家,大家可以通過這個公鑰對其進行解密!

然后回歸正題,在前面2.4第四個方案那里我們談到,如何讓客戶端分辨出它所接收到的公鑰是真正想請求的Server端的公鑰呢?

第一步:Server端向CA機構申請證書,提交Sever端的域名、申請人、公鑰

第二步:CA機構審核通過后給Server頒發證書

第三步:Client向Server端申請Server的公鑰之前,Client端早已把CA結構發給大家的公鑰保存好;

第四步:Client獲取到Server的證書,這個證書上面除了數據+簽名外還寫有Server的公鑰;Client開始驗證這個公鑰的真實性:只需要用提前保存好的CA公鑰來解密這個證書上的簽名,得到一個數據摘要,然后同時把這個證書上的數據通過哈希運算得到一個數據摘要,然后這兩個數據摘要進行對比,如果一樣說明這個證書上攜帶的公鑰是通過CA機構審核的,是真實的!!

因此得到的方案五:

3.4、方案5:非對稱加密+對稱加密+證書認證

此時再遇到中間人攻擊:①中間人把數據篡改,Client把處理后的兩個數據摘要一對比就能發現;

②中間人把簽名進行篡改,Client無法通過CA公鑰解密簽名;

③中間人直接把這個證書調包:這個證書申請時有域名、申請人等信息,不會存在兩個一樣的域名,Client一樣能識別出來;

以上是HTTPS目前最為成熟的加密方案,也就是通過:非對稱+對稱加密+證書認證(但并不能保證百分百安全,往后可能還會出現某些防范不了的安全問題,所以方案沒有唯一的,都是在不停的完善當中);

以上為本次分享的所有內容,如果對你有所幫助,麻煩點贊收藏+關注哦!!謝謝!!!

咱下期見!!!

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

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

相關文章

無人機測量風速的思路

無人機測量風速主要依靠兩種思路:直接測量和間接測量(估算)。具體方法取決于無人機的類型、搭載的傳感器以及應用場景。 以下是主要的測量方法: 直接測量法(使用氣象傳感器): 原理:…

24. 開發者常用工具:抓包,弱網模擬,元素檢查

打開網頁F12進入開發者頁面。 ctrl shift n進入無痕模式,不會自動清理cookie,便于保持登陸狀態 本文介紹瀏覽器開發者工具中三個常用功能:抓包并導入 Postman、模擬弱網環境、檢查頁面元素與樣式。可用于前端調試、接口分析、頁面優化等場景…

將 Burp Suite 的請求復制到 Postman

將 Burp Suite 的請求復制到 Postman 的步驟如下: 方法 1:直接復制原始請求(推薦) 在 Burp 中捕獲請求 在 Proxy → HTTP history 或 Target → Site map 中找到目標請求。右鍵請求 → (Copy) → Copy as c…

MySQL RC隔離級別驚現間隙鎖:是bug嗎?

在MySQL的默認事務隔離級別——讀已提交(Read Committed, RC)中,開發者普遍認為不會出現間隙鎖(Gap Lock)。這一認知源于RC級別的設計原則:僅通過行鎖確保已提交數據的可見性,而將幻讀問題交由應…

恢復MacOS 26系統后臺的動作命令

1、終端 輸入 sudo mkdir -p /Library/Preferences/FeatureFlags/Domain回車后輸入mac解鎖密碼。 2、輸入強制關閉命令 sudo defaults write /Library/Preferences/FeatureFlags/Domain/SpotlightUI.plist SpotlightPlus -dict Enabled -bool false它會“強制關閉 Spotlight…

01-JS資料

JS數據類型 var str abc; var num 123; var bool true; var und undefined; var n null; var arr[x,y,z]; var obj {}; var fun function() {}; console.log(typeof str); //string console.log(typeof num); //number console.log(typeof bool); //boolean consol…

學習日記-day34-6.20

知識點: 1.快速入門 知識點 核心內容 重點 IOC容器創建 通過ClassPathXmlApplicationContext加載XML配置文件創建容器,關聯beans.xml 容器與配置文件的綁定關系(多配置文件支持) Bean獲取方式 1. getBean(String id)返回…

如何使用 neptune.ai 優化模型訓練期間的 GPU 使用率

GPU 可以大大加速深度學習模型的訓練,因為它們專門用于執行神經網絡核心的張量運算。 由于 GPU 是昂貴的資源,因此充分利用它們至關重要。GPU 使用率、內存利用率和功耗等指標可以洞悉資源利用率及其改進潛力。提高 GPU 使用率的策略包括混合精度訓練、優…

騰訊混元3D制作簡單模型教程-1

騰訊混元3D制作簡單模型的零門檻教程,涵蓋新手快速入門與進階操作,結合官方工具特性及行業實踐,分為兩個核心板塊: ?? 一、新手零門檻:5分鐘生成可打印模型(適合完全小白) 通過騰訊元寶APP的“3D角色夢工廠”功能,無需任何建模基礎: 上傳照片 打開騰訊元寶APP → …

一個庫,比如kott_tinymce ,想把的依賴庫從kotti升級到kotti2 ,請問我是不是查找替換,把所有的kotti字符替換成kotti2就行了?

一個庫,比如kott_tinymce ,想把的依賴庫從kotti升級到kotti2 ,請問我是不是查找替換,把所有的kotti字符替換成kotti2就行了? kotti和kotti2的包結構、模塊路徑、接口完全一樣,除了import kotti 變成kotti2 如果 kotti…

企業實踐 | 銀河麒麟KylinOS-V10(SP3)高級服務器操作系統基礎安裝指南

前言:國產操作系統的崛起與實踐背景 在國產化浪潮與信息技術自主可控的大背景下,銀河麒麟操作系統作為國產操作系統的代表之一,正逐步成為企業級應用的重要選擇。本文將詳細介紹銀河麒麟高級服務器操作系統V10 SP3版本的基礎知識與安裝實踐&…

Ubuntu 一鍵安裝 ROS

Ubuntu 一鍵安裝 ROS 安裝命令如下: wget http://fishros.com/install -O fishros && . fishros 指令執行后,顯示log如下圖: 之后根據不同的系統安裝對應的ros版本即可。

深度學習——基于卷積神經網絡實現食物圖像分類【4】(使用最優模型)

文件目錄 引言一、環境準備二、數據預處理訓練集預處理說明:驗證集預處理說明: 三、自定義數據集類四、設備選擇五、CNN模型構建六、模型加載與評估1. 加載預訓練模型2. 準備測試數據3. 測試函數4. 計算準確率 七、完整代碼八、總結 引言 本文將詳細介紹…

C++基礎算法————并查集

C++并查集詳解與實戰指南 一、引言 并查集(Union-Find)是一種高效的數據結構,用于處理一些不相交集合的合并與查詢問題。它在圖論、社交網絡、網絡連通性等領域有廣泛的應用。并查集的核心思想是通過一個數組來記錄每個元素的父節點,從而將元素組織成若干棵樹,每棵樹代表…

系統性能優化的關鍵手段

系統性能的提升方向 服務器并發處理能力:通過優化內存管理策略、選擇合適的連接模式(長連接或短連接)、改進 I/O 模型(如 epoll、IOCP)、以及采用高效的服務器并發策略(如多線程、事件驅動等)&a…

httpclient實現http連接池

HTTP連接池是一種優化網絡通信性能的技術,通過復用已建立的TCP連接減少重復握手開銷,提升資源利用率。以下是關鍵要點: 核心原理與優勢 ?連接復用機制? 維護活躍連接隊列,避免每次請求重復TCP三次握手/SSL協商,降低…

廣義焦點丟失:學習用于密集目標檢測的合格和分布式邊界盒之GFL論文閱讀

摘要 一階段檢測器通常將目標檢測形式化為密集的分類與定位(即邊界框回歸)問題。分類部分通常使用 Focal Loss 進行優化,而邊界框位置則在狄拉克δ分布下進行學習。最近,一階段檢測器的發展趨勢是引入獨立的預測分支來估計定位質量,所預測的質量可以輔助分類,從而提升檢…

Real-World Deep Local Motion Deblurring論文閱讀

Real-World Deep Local Motion Deblurring 1. 研究目標與實際問題意義1.1 研究目標1.2 實際問題1.3 產業意義2. 創新方法:LBAG模型與關鍵技術2.1 整體架構設計2.2 關鍵技術細節2.2.1 真實模糊掩碼生成(LBFMG)2.2.2 門控塊(Gate Block)2.2.3 模糊感知補丁裁剪(BAPC)2.3 損…

【Docker基礎】Docker鏡像管理:docker commit詳解

目錄 引言 1 docker commit命令概述 1.1 什么是docker commit 1.2 使用場景 1.3 優缺點分析 2 docker commit命令詳解 2.1 基本語法 2.2 常用參數選項 2.3 實際命令示例 2.4 提交流程 2.5 步驟描述 3 docker commit與Dockerfile構建對比 3.1 構建流程對比 3.2 對…

可調式穩壓二極管

1.與普通穩壓二極管的比較: 項目普通穩壓二極管可調式穩壓二極管(如 TL431)輸出電壓固定(如5.1V、3.3V)可調(2.5V ~ 36V,取決于外部分壓)精度低(5%~10%)高&a…