HTTPS是什么,詳解它的加密過程

目錄

1.前言

2.兩種加密解密方式

2.1對稱加密

2.2非對稱加密

3.HTTPS的加密過程

3.1針對明文的對稱加密

3.2針對密鑰的非對稱加密

3.3證書的作用


1.前言

? 我們知道HTTP協議是超文本傳輸協議,它被廣泛的應用在客戶端服務器上,用來傳輸文字,圖片,視頻,js,html等.但是這種傳輸如果經過了黑客的路由器或者別有用心的人的設備,可以很輕松的破解并修改我們的內容,這種協議的安全性得不到保障.為了解決這種問題,我們引入了HTTPS,它是基于HTTP協議的一種加密安全協議,可以把HTTP協議傳輸的內容進行加密傳輸,讓黑客或者別有用心的人破解不了.

2.兩種加密解密方式

2.1對稱加密

? ?我們首先要說明一個概念就是HTTP是明文傳輸的,如果我們想讓他被加密,那么就需要用到數據加密.那么我們應該如何對正文部分進行加密呢?考慮到資源消耗成本問題還有揭秘問題.我們可以使用對稱加密對數據進行加密,即加密和解密的算法都是同一個密鑰.

2.2非對稱加密

? 而非對稱加密,加密和解密采用的是兩個密鑰 ,如k1,k2這兩個密鑰是成對的,k1用來加密,此時k2就用來解密.也可以使用k2加密 ,k1解密.我們可以把一個密鑰公開出去,而這個公開出去的密鑰,就是公鑰,還有一個密鑰自己保存好,這個密鑰就是私鑰.手里只有一把的話,是無法知道另一把是啥的.

? 看起來非對稱加密很安全,但是這種加密方式,所需要消耗的系統資源開銷也更大.

那么HTTPS是如何進行加密的呢?

3.HTTPS的加密過程

我們站在黑客的角度來看,如果一個HTTP請求或者響應進行傳輸,在不考慮服務器被黑的情況下,傳遞到服務器之前,如果黑客想攔截的話,則需要在傳遞的過程中攔截.

如下圖所示:

數據首先從客戶端傳遞到服務器的過程中被黑客攔截了.如果是HTTP明文傳輸,那么就會被黑客直接拿到數據,這樣,黑客如果想篡改數據或者拿到隱私去做違法犯罪的事情就很容易.

那么我們該如何在盡可能不影響效率的情況下對HTTP請求進行加密呢?

3.1針對明文的對稱加密

我們可以使用對稱加密我們的數據,即客戶端和服務器公用同一個密鑰,這樣黑客拿到數據以后就破解不了了

我們需要注意兩點

1.對稱加密的時候,客戶端和服務器用的是同一個密鑰

2.不同的客戶端的,用的密鑰都不同,

這也就意味著,每個客戶端鏈接服務器的時候,都需要生成一個隨機的密鑰,并且告訴給服務器.也不一定是客戶端生成,服務器生成并且告訴給客戶端也可以,

但是這個密鑰生成的過程,很容易被黑客拿到,即告訴了客戶端的時候,黑客也可以拿到這個這個密鑰,哪就形同虛設了.

那么這種情況應該怎么辦呢? 我們可以使用非對稱加密把密鑰進行單獨的密文傳輸.

3.2針對密鑰的非對稱加密

我們使用非對稱加密的主要目的就是把明文密鑰進行加密,確保密鑰的安全性.

這里有同學可能會問,那么為什么不能直接把明文對稱加密呢,而是要大費周章的這樣搞?原來這是因為非對稱加密使用的系統資源遠大于對稱加密,如果大規模使用,就很難承擔了.

我們讓服務器生成公鑰和私鑰,公鑰可以告訴所有人,而私鑰只有服務器自己知道.客戶端就可以使用公鑰對密鑰加密,這樣黑客就算拿到了這個密鑰,因為他沒有解密所需的私鑰,也解不開這個密鑰.

只要這個對稱密鑰的數據到達服務器,后續就可以客戶端和服務器通過這個密鑰來進行交流,黑客就無法破解后續的內容了,

上述過程看似天衣無縫,但是在聰明的黑客眼里,還是很容易破解,即使用中間人攻擊

服務器可以創建自己的公鑰和私鑰,那么黑客也可以用同樣的方式,創建出一對公鑰和私鑰,冒充自己是服務器,

在服務器拿到了基于pub1加密的key 的時候,自然可以通過自己的私鑰解密,也就相信了是這么回事.后續的交流都是key,而客戶端全程渾然不知.他只是拿到了假的公鑰然后加密傳給黑客,黑客解密后就拿到了key.然后通過服務器的pub1加密,偽造自己是客戶端傳給服務器.

這種方法如何解決呢?最關鍵的一點,在客戶端拿到公鑰的時候,要是有辦法驗證這個公鑰是不是真的.而不是黑客給的.

3.3證書的作用

要求服務器這邊提供一個證書.

證書是一個結構化的數據結構,有很多屬性.

如:服務器的域名,公鑰,證書有效期等

證書會有一個簽名,里面本質上是一個加密的校驗和,可以把證書其它字符進行一系列的算法得到一個校驗和,如果兩份數據一樣,即校驗和一樣,那么就說明是一樣的,如果不一樣,則兩份數據不一樣.就是這個公鑰有問題.

客戶端拿到證書以后主要做兩件事:

1.用一樣的算法進行計算,得到校驗和1

2/使用系統內置的公證機構公鑰,對證書的簽名進行解密,得到校驗和2.

對比一下就知道是不是真的了.

市面上的公證機構沒幾家,基本上都在操作系統里面.公鑰也都在

1.如果黑客直接修改公鑰,不修改簽名,那么校驗和不一樣,就識別出來了,

2.如果黑客修改公鑰,也嘗試修改簽名,但是他不知道私鑰是什么,所以無法生成加密的簽名.

如果黑客拿自己的私鑰加密呢?客戶端用公證機構的公鑰解密也會失敗.

上述操作,就把客戶端篡改證書的行為給堵死了.

所以這種方法是可行的.這也是市面上流行的方法.

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

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

相關文章

java數據結構與算法刷題-----LeetCode572. 另一棵樹的子樹(經典題,樹字符串化KMP)

java數據結構與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續更新(進不去說明我沒寫完):https://blog.csdn.net/grd_java/article/details/123063846 文章目錄 1. 暴力求解,深度優先2. KMP算法進行串匹配 1. 暴力求…

WinForm、Wpf自動升級 AutoUpdater.NET

Github AutoUpdater.NET 目錄 一、IIS部署 更新站點 二、創建Winform 一、IIS部署 更新站點 IIS默認站點目錄下創建 目錄 Downloads、Updates Updates目錄創建文件 UpdateLog.html、AutoUpdaterStarter.xml UpdateLog.html&#xff1a; <html><body><h1…

從零開始手寫RPC框架(2)——Netty入門

學習前需要掌握基本的java網絡編程&#xff0c;可參考這篇博客 目錄 Netty 簡介Netty 使用 kryo 序列化傳輸對象案例客戶端代碼服務端代碼編碼器 Netty 簡介 是什么&#xff1f; Netty 是一個基于 NIO (Non-blocking I/O&#xff0c;非阻塞I/O)的 client-server(客戶端服務器…

mysql學習--binlog與gtid主從同步

基礎環境 基于centOS7-MySQL8.0.35版本 我們先準備一臺主服務器兩臺從服務器來實現我們主從同步的訴求 Master&#xff1a;192.168.75.142 slave1:192.168.75.143 slave&#xff1a;192.168.75.145 binlog主從同步 主庫配置 #我們需要在主從庫中都需要添加server_id&am…

大龍談智能內容開通視頻號啦

大家好&#xff0c;大龍談只能內容開通視頻號了&#xff0c;歡迎大家掃碼關注&#xff1a;

RISC-V特權架構 - 中斷與異常概述

RISC-V特權架構 - 中斷與異常概述 1 中斷概述2 異常概述3 廣義上的異常3.1 同步異常3.2 異步異常3.3 常見同步異常和異步異常 本文屬于《 RISC-V指令集基礎系列教程》之一&#xff0c;歡迎查看其它文章。 1 中斷概述 中斷&#xff08;Interrupt&#xff09;機制&#xff0c;即…

RocketMQ安裝

mq服務端安裝配置啟動把windows做成服務 mq管理界面安裝配置啟動 mq服務端 安裝 RocketMQ下載地址 配置 ROCKETMQ_HOME D:\google-d\rocketmq-all-5.2.0-bin-release啟動 # bin目錄cmd輸入 start mqnamesrv.cmd把windows做成服務 http://t.csdnimg.cn/qd2RD mq管理界面 …

ubuntu22.04安裝mysql8.0

官網下載mysql&#xff1a;MySQL :: Download MySQL Community Server 將mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar上傳到/usr/local/src #解壓壓縮文件 tar -xvf mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar解壓依賴包依次輸入命令 sudo dpkg -i m…

編程筆記 Golang基礎 045 math包

編程筆記 Golang基礎 045 math包 一、math包主要功能常量&#xff1a;函數&#xff1a;數值運算&#xff1a;三角函數&#xff1a;對數函數&#xff1a;隨機數相關&#xff1a; 二、示例代碼一三、示例代碼二小結 Go 語言的標準庫 math 提供了一系列基礎數學函數和常量&#xf…

EasyRecovery數據恢復軟件2024最新版包括Windows和Mac

EasyRecovery數據恢復軟件適用于多種環境和使用場景。首先&#xff0c;它適用于各種操作系統&#xff0c;包括Windows和Mac。無論用戶使用的是哪種操作系統&#xff0c;都可以使用該軟件進行數據恢復。 其次&#xff0c;EasyRecovery支持從各種存儲設備和媒介中恢復數據&#…

自定義BeanNameGenerator生成規則

通過點進ComponentScan注解進入源碼可以看到 追隨BeanNameGenerator進入源碼可以看到該類是個借口且只有一個方法 點擊上面黑色箭頭出現兩個實現方法 點擊第一個方法 進入determineBeanNameFromAnnotation方法中 通過上訴自定義一個生成beanName方法 先創建一個CustomeBeanN…

使用結構體和類在Unity中管理IMU數據

使用結構體和類在Unity中管理IMU數據 IMU數據簡介使用結構體管理IMU數據結構體的優點結構體的使用場景 使用類管理IMU數據類的優點類的使用場景 結構體(struct) vs 類(class)為什么考慮使用結構體 結論 在Unity開發中&#xff0c;合理地選擇數據結構對于確保游戲和應用的性能和…

60 個 CSS 選擇器,一網打盡!

CSS 選擇器用于選擇 HTML 元素并將樣式應用于它們。使用這些選擇器&#xff0c;可以定義特定條件下應用哪些樣式。除了普通的選擇器外&#xff0c;還有偽類和偽元素&#xff0c;用于選擇具有特定狀態或特定部分的元素&#xff0c;并將樣式應用于它們。本文將通過圖文并茂的方式…

Windows11家庭版安裝Docker

文章目錄 安裝Docker安裝hyper-v繼續解決報錯完成效果圖進一步測試是否完成安裝 安裝Docker windows如何安裝docker 裝好之后&#xff0c;我打開報錯。 安裝hyper-v 按這個視頻操作&#xff1a;Windows 11 家庭版安裝 Hyper-V bat文件里的代碼是&#xff1a; pushd "…

【Educoder數據挖掘實訓】異常值檢測-3σ法

【Educoder數據挖掘實訓】異常值檢測-3σ法 開挖&#xff01; 這個異常值檢測基于的是兩點&#xff1a; 數據往往遵循正態分布在正態分布中&#xff0c; [ μ ? 3 σ , μ 3 σ ] [\mu - 3\sigma, \mu 3\sigma] [μ?3σ,μ3σ]包含了正態分布中 99.74 % 99.74\% 99.74%的數…

【投稿優惠|快速見刊】2024年圖像,機器學習和人工智能國際會議(ICIMLAI 2024)

【投稿優惠|快速見刊】2024年圖像&#xff0c;機器學習和人工智能國際會議&#xff08;ICIMLAI 2024&#xff09; 重要信息 會議官網&#xff1a;http://www.icimlai.com會議地址&#xff1a;深圳召開日期&#xff1a;2024.03.30截稿日期&#xff1a;2024.03.20 &#xff08;先…

2024全國水科技大會暨高氨氮廢水厭氧氨氧化處理技術論壇(四)

一、會議背景 為積極應對“十四五”期間我國生態環境治理面臨的挑戰&#xff0c;加快生態環境科技創新&#xff0c;構建綠色技術創新體系&#xff0c;全面落實科學技術部、生態環境部等部委編制的《“十四五”生態環境領域科技創新專項規劃》&#xff0c;積極落實省校合作&…

pip下載paddle、sklearn、cv2問題

ModuleNotFoundError: No module named ‘paddle‘ ModuleNotFoundError: No module named sklearn No matching distribution found for cv2 Could not build wheels for opencv-python, which is required to install pyproj

什么是BGP網絡 (邊界網關協議)

BGP&#xff08;邊界網關協議&#xff09;是一種用于在互聯網中交換路由信息的協議。作為網關或路由器之間的協議&#xff0c;BGP主要用于幫助確定數據包在網絡中的路徑。它通過在不同自治系統&#xff08;AS&#xff09;之間交換路徑信息&#xff0c;實現了全球互聯網網絡的連…

MySQL進階之(三)InnoDB數據存儲結構之數據頁結構

三、InnoDB數據存儲結構之數據頁結構 3.1 數據庫的存儲結構3.1.1 MySQL 數據存儲目錄3.1.2 頁的引入3.1.3 頁的概述3.1.4 頁的上層結構 3.2 數據頁結構3.2.1 文件頭和文件尾01、File Header&#xff08;文件頭部&#xff09;02、File Trailer&#xff08;文件尾部&#xff09; …