HTTPS協議的加密流程

目錄

一,HTTPS是什么

二,兩種加密方式

三,HTTPS的加密過程

3.1 引入對稱加密

3.2 引入非對稱加密

3.3 引入證書


一,HTTPS是什么

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

也就是說使用HTTP協議進行網絡傳輸是不安全的,所以現在使用HTTPS協議來進一步確保用戶的信息安全。

二,兩種加密方式

加密就是把明文通過一系列的變換,生成密文,解密就是把密文再通過一系列的變換,還原成明文

加密的兩種方式:

1)對稱加密:加密和解密使用的密鑰是同一個密鑰

  • 明文 + 密鑰 => 密文
  • 密文 + 密鑰 => 明文。

2)非對稱加密:加密和解密使用的密鑰是一對密鑰,分為公鑰和私鑰,這兩者是可以互換的,使用公鑰加密,就使用私鑰解密,使用私鑰加密,就使用公鑰解密

  • 明文 + 公鑰 => 密文 /?明文 + 私鑰 => 密文
  • 密文 + 私鑰 => 明文 /?密文 + 公鑰 => 明文

三,HTTPS的加密過程

3.1 引入對稱加密

仔細思考,上面的模型還存在一個重大問題,服務器不是只和一個客戶端通信,那么這些客戶端使用的密鑰是相同的嗎?很明顯,每個客戶端的密鑰必須是不同的,這樣彼此之間才不知道對方的密鑰是啥。

既然要求每個客戶端的密鑰都不相同,那么就需要在每個客戶端與服務器建立連接的時候,把密鑰生成出來(這里涉及到一些隨機數機制來確保密鑰互不相同),然后客戶端再把生成出來的密鑰通過網絡發給服務器。

但是這里又出現了一個問題,客戶端發送給服務器的密鑰也是沒有加密的,也就是說密鑰是可以被黑客截獲的,這樣就又回到了最初的問題,如何加密?所以這時我們就引入了另一種加密方式 —— 非對稱加密。

3.2 引入非對稱加密

通過上述過程,客戶端生成的密鑰就不會被黑客獲取到,接下來就可以通過密鑰來進行通信了。這時候就會有人問了,既然可以使用非對稱密鑰加密,那為什么還要使用對稱加密,直接全部使用非對稱加密不就行了嗎?

這是因為非對稱加密/解密,運算成本是很高的,運算速度也比較慢,而對稱加密/解密,運算成本低,速度快。所以非對稱加密通常是在一些比較關鍵的環節使用(傳遞密鑰),成本就比較可控,后續傳輸大量的業務數據,都是使用效率更高的對稱加密。這樣整體的傳輸效率也會得到提高。

但是上述流程還存在一個漏洞,畫個圖理解一下:

?在上述流程中,客戶端的對稱密鑰就會被黑客獲取到,之后客戶端與服務器之間的通信也就會一覽無余了。那么要如何解決這種 "中間人" 問題呢?這時候就需要引入第三方公正機構。

3.3 引入證書

會發生上述 "中間人" 問題的原因是客戶端無法區分這個公鑰究竟是不是黑客偽造的,因此在這里就要引入第三方,即一個被大家信任的"公正機構",如果公正機構說這個公鑰是正確的,不是被偽造的,我們就可以使用這個公鑰進行加密。

將這個流程畫個圖理解一下:

公正機構針對證書中的各個屬性,計算出來的一個校驗和,并對這個校驗和進行加密,就得到了數字簽名,這里的加密是指公正機構使用自己生成的一對非對稱密鑰加密,公正機構會使用自己持有的私鑰對校驗和進行加密,公鑰會發布到各個客戶端設備中(往往公鑰是內置到系統中,安裝了系統,就會自導公正機構的公鑰)。

當客戶端拿到數字簽名,就可以通過系統內置的公正機構的公鑰進行解密,得到最初的校驗和,然后客戶端在重新計算一遍校驗和,看看和解密出來的校驗和是否一樣,如果一致,就說明證書沒有被篡改,公鑰是可信的。

在上述機制下,黑客就無法對證書內容進行篡改了,或者說篡改了也會被發現:

  1. 如果黑客篡改了里面服務器的公鑰,替換成自己的,那么客戶端在進行校驗和驗證的時候,就會發現校驗和不一致,客戶端就認為公鑰被篡改了
  2. 如果黑客不止替換了公鑰,還將數字簽名給替換了,那么由于黑客沒有私鑰,無法對其篡改后的數據進行加密,或者說,使用自己的私鑰加密后,客戶端無法對其進行解密,而公正機構的公鑰是客戶端系統自帶的,黑客無法替換
  3. 如果黑客自己申請一個證書,完全替換掉服務器的證書呢?這也是行不通的,因為申請證書是需要提交材料的,其中就有網站的主域名,認證機構會對這個域名是否歸你所有進行認證。

綜上所述,只要通過證書的檢驗,就說明公鑰是服務器的公鑰了

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

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

相關文章

每天一道算法題(十)——獲取和為k的子數組

文章目錄 1、問題2、示例3、解決方法(1)方法1——雙指針 總結 1、問題 給你一個整數數組 nums 和一個整數 k ,請你統計并返回 該數組中和為 k 的子數組的個數 。 子數組是數組中元素的連續非空序列。 2、示例 示例 1: 輸入&#x…

多分類自定義采樣比例

多分類自定義采樣比例 import torch from torch.utils.data import DataLoader, Dataset, WeightedRandomSampler from torchvision import transforms from torchvision.datasets import ImageFolder# 假設你有一個自定義的數據集類 class CustomDataset(Dataset):def __init…

51單片機按鍵控制LED燈亮滅的N個玩法

51單片機按鍵控制LED燈亮滅的N個玩法 1.概述 這篇文章介紹按鍵的使用,以及通過控制LED燈的小實驗,發現按鍵中存在的問題,然后思考并解決這些問題。達到熟練使用按鍵控制元器件。 2.搭建硬件環境 1.硬件準備 名稱型號數量單片機STC12C205…

2023全球數字貿易創新大賽9-12

目錄 回答評委提問:先說痛點-再說怎樣解決 食品安全溯源是否全流程 星火? 鏈網

Sleuth

Sleuth 一 引言 隨著服務的越來越多,對調?鏈的分析會越來越復雜。它們之間的調?關系也許如下圖: 問題: 1:微服務之間的調?錯綜復雜,?戶發送的請求經歷那些服務,調?鏈不清楚,沒有? 個?…

【SpringCloud微服務全家桶學習筆記-Hystrix(服務降級,熔斷,接近實時的監控,服務限流等)】

服務雪崩 (微服務面臨的問題) 多個微服務之間調用的時候,假設微服務A調用微服務B和微服務C,微服務B和微服務C又調用其它的微服務,這就是所謂的“扇出”。如果扇出的鏈路上某個微服務的調用響應時間過長或者不可用&…

HarmonyOS開發(五):常用基礎組件

1、組件介紹 組件(Component),是界面搭建及顯示的最小單元。 組件根據功能可以分為五大類:基礎組件、容器組件、媒體組件、繪制組件、畫布組件 2、基礎組件 基礎組件是視圖層的基本組成單元,它包含:Text、Image、T…

OpenCV C++ 張正友相機標定【相機標定原理、相機標定流程、圖像畸變矯正】

文章目錄 3.1 標定原理3.2 相機標定流程步驟1:采集棋盤格圖像,批處理(調整尺寸、重命名)步驟2:提取棋盤格內角點坐標步驟3:進一步提取亞像素角點信息在棋盤標定圖上繪制找到的內角點(非必須,僅為了顯示)步驟4:相機標定--計算出相機內參數矩陣和畸變系數步驟5:畸變圖像…

Spring (二)@Order, Ordered 失效

Spring (二)Order, Ordered 失效 先上例子 public class OrderAnnotationExample {Order(2)static class MyBeanFactoryPostProcessor1 implements BeanFactoryPostProcessor {Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFa…

如何加速JavaScript 代碼運行速度

如何加速JavaScript 代碼運行速度 前言減少DOM訪問避免不必要的變量延遲script加載異步和同步使用異步編程避免使用With關鍵詞 前言 本文主要通過五個方面來講解如何使Js代碼得到性能優化,從而實現加快Js代碼運行速度的作用。那么好,本文正式開始。 減…

感染了后綴為.[bkpsvr@firemail.cc].EKING勒索病毒如何應對?數據能夠恢復嗎?

導言: 在當前數字時代,勒索病毒成為網絡威脅的一大隱患。本文將深入介紹一種名為[bkpsvrfiremail.cc].EKING的勒索病毒,以及如何應對遭受其攻擊后,有效地恢復被加密的數據文件,并提供一些預防措施以減少感染的風險。數…

sqlserver==索引解析,執行計劃,索引大小

1創建測試表 -- 創建大型表 CREATE TABLE LargeTableWithIndex (ID int IDENTITY(1,1) PRIMARY KEY,IndexedColumn int,NonIndexedColumn nvarchar(255),OtherData nvarchar(255) );2插入測試數據 -- 使用 T-SQL 插入大量數據 DECLARE @i int = 1; WHILE @i <= 100000 -- …

Mac中LaTex無法編譯的問題

最近在使用TexStudio時&#xff0c;遇到一個棘手的問題&#xff1a; 無法編譯&#xff0c;提示如下&#xff1a; kpathsea: Running mktexfmt xelatex.fmt /Library/TeX/texbin/mktexfmt: kpsewhich -var-valueTEXMFROOT failed, aborting early. BEGIN failed–compilation a…

[Linux] Network: IPv6 link-local 地址是否可用不自動生成

原來有一段時間在做擴充產品的VLAN個數&#xff0c;然后就遇到過一個問題&#xff1a;說這個Linux的默認配置里&#xff0c;會為每一個網絡接口添加一個link-local的地址&#xff0c;就是FE80::開頭的地址&#xff0c;在RFC-4291里有如下的定義&#xff1a; Link-Local unicas…

redis運維(十二) 位圖

一 位圖 ① 概念 1、說明&#xff1a;位圖還是在操作字符串2、位圖玩字符串在內存中存儲的二進制3、ASCII字符通過映射轉化為二進制4、操作的是字符串value ② ASCII字符鋪墊 1、控制ASCII字符 2、ASCII可顯示字符 ③ SETBIT 細節&#xff1a; setbit 命令的返回值是之…

git常用命令(git github ssh)

目錄 1、語法說明2、本地倉庫相關操作建立一個git文件(git init)把工作區的文件添加到暫存區(git add)把暫存區的文件添加到本地倉庫(git commit)查看暫存區和本地倉庫中的文件(git ls-files)查看文件夾下所有文件的狀態(git status)查看版本庫中的提交記錄(git log)恢復的文件…

如何解決msvcp110.dll丟失問題,分享5個有效的解決方法

最近&#xff0c;我在使用電腦時遇到了一個令人頭疼的問題——msvcp110.dll丟失。這個錯誤通常會導致某些應用程序無法正常運行。為了解決這個問題&#xff0c;我們需要采取一些有效的方法來修復丟失的msvcp110.dll文件。那么&#xff0c;msvcp110.dll到底是什么呢&#xff1f;…

代碼隨想錄 10.14 || 二叉樹 LeetCode 669.修剪二叉搜索樹、108.將有序數組轉換為二叉搜索樹、538.將二叉搜索樹轉為累加樹

669.修剪二叉搜索樹 根據給定的最小邊界 left 和最大邊界 right 修剪二叉搜索樹&#xff0c;保留值在 left ~ right 的節點&#xff0c;刪除不滿足此條件的節點。修剪樹不應該改變保留在樹中的元素的相對結構&#xff0c;即父子關系。 設 cur 為當前訪問的二叉樹節點&#xff0…