HTTPS 的加密流程

目錄

一、HTTPS是什么?

二、為什么要加密

三、"加密" 是什么

四、HTTPS 的工作過程?

1.對稱加密

2.非對稱加密

3.中間人攻擊

4.證書

總結


一、HTTPS是什么?

HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 協議之上的安全協議,用于在客戶端和服務器之間通過互聯網傳輸數據的加密和身份驗證。它使用 SSL/TLS (Secure Sockets Layer/Transport Layer Security) 協議來保護數據的安全性,可以防止數據被竊聽、篡改或偽造。

HTTP 協議是一種明文傳輸的協議,數據在傳輸過程中不加密,容易被黑客截獲并竊取敏感信息。而使用 HTTPS 協議進行數據傳輸,可以通過 SSL/TLS 協議將數據加密,使得數據在傳輸過程中無法被黑客竊取,保護了數據的安全性。

HTTPS 還可以對服務器端的身份進行驗證,防止偽造服務器,保護了雙方的身份安全。在 HTTPS 和 SSL/TLS 協議的支持下,現在許多電子商務、銀行、社交網絡和其他網站都采用 HTTPS 協議來保護用戶的隱私和安全。

二、為什么要加密

HTTP 是一種應用層協議,是用于在 Web 應用程序之間傳遞數據的標準方式,但是 HTTP 本身并不安全,因為 HTTP 在傳輸數據時是明文傳輸的,攻擊者可以很容易地截獲和竊取數據。這就會導致以下不安全的情況:

1. 竊取敏感信息: 攻擊者可以竊取用戶登錄信息、信用卡信息、銀行賬戶信息等敏感信息。

2. 篡改數據:攻擊者可以在傳輸過程中篡改數據,比如,將網頁內容篡改成惡意代碼,欺騙用戶下載惡意文件等。

3. 偽造身份:攻擊者可以偽造身份,冒充網站或服務器,從而欺騙用戶提供個人信息或敏感信息。

HTTPS 是在 HTTP 協議基礎上加入了 SSL/TLS 加密機制,對 HTTP 的傳輸過程進行加密,可以保護數據的安全性和完整性,解決了 HTTP 明文傳輸所帶來的安全問題。因此,在需要保護用戶隱私信息或者防止黑客攻擊時,使用 HTTPS 更加安全可靠。

由于我們通過網絡傳輸的任何的數據包都會經過運營商的網絡設備(路由器, 交換機等), 那么運營商的網絡設備就可以解析出你傳輸的數據內容, 并進行篡改.這就是運營商劫持
點擊 "下載按鈕", 其實就是在給服務器發送了一個 HTTP 請求, 獲取到的 HTTP 響應其實就包含了該 APP的下載鏈接. 運營商劫持之后, 就發現這個請求是要下載天天動聽, 那么就自動的把交給用戶的響應給篡改 成 "QQ瀏覽器" 的下載地址了

?三、"加密" 是什么

加密就是把 明文 (要傳輸的信息)進行一系列變換, 生成 密文 .
解密就是把 密文 再進行一系列變換, 還原成 明文 .
在這個加密和解密的過程中, 往往需要一個或者多個中間的數據, 輔助進行這個過程, 這樣的數據稱為 密鑰 (正確發音 yue 四聲, 不過大家平時都讀作 yao 四聲)

四、HTTPS 的工作過程?

既然要保證數據安全, 就需要進行 "加密".
網絡傳輸中不再直接傳輸明文了, 而是加密之后的 "密文".
加密的方式有很多, 但是整體可以分成兩大類: 對稱加密 和 非對稱加密

1.對稱加密

進行安全傳輸,其中最核心的技術就是加密,而其中最為簡單、有效的方法就是“對稱加密”。對稱加密的方式如下:

明文 + ?key ?=>? 密文。加密的過程

密文 + ?key ?=>? 明文。解密的過程

其中key就表示密鑰,是一串數字或者字符串。同一個密鑰可以用來加密也可以用來解密,因此就稱其為“對稱密鑰”。但是其保證安全性的前提是,不能讓密鑰被他人知道,如果密鑰被一些不法之徒獲取,那么這個加密也就形同虛設了。

下面我們用圖片演示過程及信息:

但是問題來了,客戶端需要自己生成一個密鑰,如何把這個密鑰告訴給服務器呢?

答案是:網絡傳輸

這樣的話看起來我們是需要針對key也進行加密一下? 所以接下來我們引用了非對稱加密.

2.非對稱加密

非對稱加密就是,生成一對密鑰,一個叫公鑰(pub)一個叫密鑰(pri)。加密方式如下:

明文 + 公鑰 => 密文。

密文 + 私鑰 => 明文。

其中,明文也可以使用私鑰加密,密文可以使用私鑰解密。公鑰是可以公開的,私鑰是私密的。

所以我們接下來的目標就是客戶端把自己的key安全傳輸到服務器

首先服務器生成一對公鑰私鑰。其中客戶端持有公鑰,服務器持有私鑰。由于客戶端的公鑰從服務器獲取,因此黑客也可以知道公鑰。但是由于私鑰只有服務器才知道,不會告訴別人。因此就算黑客知道了公鑰,也無法解密。

接著客戶端使用公鑰來對對稱密鑰進行加密,傳輸給服務器,服務器通過私鑰進行解密,獲得對稱密鑰。此時客戶端就可以使用這個對稱密鑰進行后續的傳輸工作。

但是由于非對稱加密比較慢,對稱加密比較快。因此一般使用非對稱加密來進行對稱密鑰的加密傳輸。而用對稱加密來進行后續的傳輸工作。?

3.中間人攻擊

上面所說的非對稱加密和對稱加密好像是已經把要傳輸的數據保護的天衣無縫了。但是,其實其中還有一個巨大的漏洞。這就是我們所說的中間人攻擊。

雖然我們認為已經非常安全了,但是黑客不是吃素的

上圖就是關于中間人攻擊的一個介紹。實質上就是黑客在中間充當一個雙面客。服務器將公鑰pub發送過來,黑客在中間劫持。并且自己生成了一對非對稱密鑰。將自己生成的pub2發送給客戶端。但是由于客戶端不知道發送來的pub2是不是服務器發送來的公鑰,因此也就上當。將對稱密鑰通過pub2進行加密,發送給黑客。然后黑客將以pub2加密的對稱密鑰進行解密,那到對稱密鑰。再將對稱密鑰使用pub1進行加密,發送給服務器。由于服務器也不知道這個加密過的對稱密鑰是不是客戶端發過來的,因此也就使用這個對稱密鑰進行后續的加密了。

從上述過程來說,客戶端無法判斷公鑰的真假造成的。如果客戶端可以辨別公鑰的真假,那么這個中間人攻擊也就迎刃而解了!

4.證書

證書是什么

SSL/TLS 證書是一種網絡安全協議,用于在互聯網上建立安全通信。在 HTTPS 這種加密方式中,證書用于驗證網站的身份和保證數據傳輸的安全性。

證書由數字簽名機構(CA)頒發,證明了網站的身份信息和公鑰的有效性。CA 通過審核網站申請者的身份信息,發放證書并簽名,網站通過證書驗證來證明其身份,以確保用戶與網站建立的加密連接是信任的。

證書包含網站的信息,如名稱、域名、過期日期和公鑰等等。證書中的公鑰可用于安全地加密用戶數據并將其發送到服務器。證書還包含簽名,以確保其未被篡改。如果簽名無效或證書已過期,則表示證書不可信任。

瀏覽器通常默認信任一些公共的 CA,這些 CA 證書預裝在瀏覽器中。這意味著如果網站使用由公共 CA 頒發的證書,瀏覽器將信任該證書,并且用戶可以通過 HTTPS 安全地與該網站建立連接。

為了解決上述問題,人們就想出來了“證書”這個方法。就是上服務器(網站)在成立的時候,需要去一些專門的認證機構(第三方機構)申請證書。服務器需要提供一些資質。當申請通過之后,機構就會給你頒發證書。其中,證書中也就包含了公鑰。此時客戶端申請公鑰的時候,此時就不應該只是請求要一個公鑰了,而是請求要一個證書。當客戶端拿到證書之后,就可以進行校驗。驗證證書是不是假的或者被篡改的。如果客戶端發現證書是無效的,瀏覽器就會直接彈框警告。

客戶端拿到證書之后,就首先需要針對證書進行校驗!!

  1. 得到初始的簽名:客戶端使用系統內置的權威機構的公鑰pub針對證書中的加密簽名解密,得到了初始簽名
  2. 計算現在的簽名:客戶端使用相同的簽名算法,基于證書的屬性進行計算
  3. 比較兩個簽名是否相同? 如果相同證明整數中的數據都是未被篡改的原始數據, 如果簽名不同說明證書數據被篡改,客戶端的瀏覽器彈框報錯.

?在這里我們需要明確證書的校驗:

證書中包含很多信息,我們用這些屬性進行一個計算也就是校驗和(簽名),再由證書頒布機構使用自己的私鑰進行加密, 此處我們要知道的是 這個私鑰只有證書機構自己知道

也就是說輸入數據沒有被篡改那么根據相同的算法得到的簽名也是一樣的

反之,簽名不同了,那么數據一邊被篡改了

在這種加密過程下,黑客是無法修改我們數據的,黑客如果想改就要知道證書機構的密鑰,否則解密了之后 黑客無法再次進行加密,那么到客戶端就會直接彈框報錯


總結

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

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

其實一切的關鍵都是圍繞這個對稱加密的密鑰. 其他的機制都是輔助這個密鑰工作的.
第二組非對稱加密的密鑰是為了讓客戶端把這個對稱密鑰傳給服務器.
第一組非對稱加密的密鑰是為了讓客戶端拿到第二組

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

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

相關文章

四、Controller 配置總結、RestFul 風格

文章目錄 一、Controller 配置總結二、RestFul 風格2.1 使用 RequestMapping 的 method 屬性指定請求類型 三、擴展:小黃鴨調試法 一、Controller 配置總結 實現 Controller 控制器的方式 實現 Controller 接口,重寫 handleRequest 方法實現 控制器實現 …

Markdown編輯器 Mac版Typora功能介紹

Typora mac是一款跨平臺的Markdown編輯器,支持Windows、MacOS和Linux操作系統。它具有實時預覽功能,能夠自動將Markdown文本轉換為漂亮的排版效果,讓用戶專注于寫作內容而不必關心格式調整。 Typora Mac版除了支持常見的Markdown語法外&#…

騰訊云輕量服務器測評:2核 2G 4M

騰訊云輕量2核2G4M服務器,4M帶寬下載速度可達512KB/秒,系統盤為50GB SSD盤,300GB月流量,地域節點可選上海、廣州和北京,騰訊云百科分享騰訊云2核2G4M輕量應用服務器配置性能表: 目錄 騰訊云輕量2核2G4M服…

Linux下使用Ffmpeg循環推流

#前臺運行 ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://10.55.134.12/live/test#后臺運行 nohup ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -ac…

爬蟲逆向實戰(十五)--阿某某營登錄

一、數據接口分析 主頁地址:阿某某營 1、抓包 通過抓包可以發現登錄接口是Users/Login 2、判斷是否有加密參數 請求參數是否加密? 通過查看“載荷”模塊可以發現有一個s加密參數 請求頭是否加密? 無響應是否加密? 無cookie是…

【LangChain】P1 LangChain 應用程序的核心構建模塊 LLMChain 以及其三大部分

LangChain 的核心構建模塊 LLMChain LangChain 應用程序的核心構建模塊語言模型 - LLMs提示模板 - Prompt templates輸出解析器 - Output Parsers LLMChain 組合 LangChain 應用程序的核心構建模塊 LangChain 應用程序的核心構建模塊 LLMChain 由三部分組成: 語言…

電腦鍵盤打不了字按哪個鍵恢復?最新分享!

“有沒有朋友知道電腦鍵盤為什么會莫名其妙就打不了字?明明用得好好的,突然就打不了字了,真的讓人很迷惑!有什么方法可以解決嗎?” 電腦鍵盤為我們的辦公提供了很大的方便,我們可以利用鍵盤輸入我們需要的文…

安防監控視頻云存儲平臺EasyCVRH.265轉碼功能更新:新增分辨率配置

安防視頻集中存儲EasyCVR視頻監控綜合管理平臺可以根據不同的場景需求,讓平臺在內網、專網、VPN、廣域網、互聯網等各種環境下進行音視頻的采集、接入與多端分發。在視頻能力上,視頻云存儲平臺EasyCVR可實現視頻實時直播、云端錄像、視頻云存儲、視頻存儲…

Python文件操作與輸入輸出:從基礎到高級應用

文章目錄 🍀引言🍀文件操作基礎🍀上下文管理器與文件自動關閉🍀文件的迭代與逐行讀取🍀文件的其他常見操作🍀輸入輸出基礎🍀 文件輸入輸出🍀格式化輸出🍀高級文件操作&am…

【BASH】回顧與知識點梳理(二十七)

【BASH】回顧與知識點梳理 二十七 二十七. 磁盤配額(Quota)27.1 磁盤配額 (Quota) 的應用與實作什么是 QuotaQuota 的一般用途Quota 的使用限制Quota 的規范設定項目 27.2 一個 XFS 文件系統的 Quota 實作范例實作 Quota 流程:設定賬號實作 Quota 流程-1&#xff1a…

jenkins gitlab 安裝

目錄 一 準備安裝環境 二 安裝gitlab軟件 三 配置gitlab 四 重新加載配置啟動gitlab 五 修改密碼 五 創建用戶組 一 準備安裝環境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安裝 Postfix 郵件服務器,以便 Git…

qt事件系統源碼-----定時器

qt定時器的使用一般有以下幾種方式: 1、直接使用QTimer對象,綁定定時器的timeout信號; 2、使用QTimer的靜態方法singleshot方法,產生一個一次性的定時事件 3、在QObject子類中,調用startTimer方法,產生定…

矢量繪圖UI設計軟件Sketch mac中文版軟件說明

Sketch mac是一款適用于 UI/UX 設計、網頁設計、圖標制作等領域的矢量繪圖軟件。 Sketch mac軟件特點 1. 簡單易用的界面設計:Sketch 的用戶界面簡潔明了,使得用戶可以輕松上手操作,不需要復雜的學習過程。 2. 強大的矢量繪圖功能&#xff1a…

flinksql實時統計程序背壓延遲優化

問題: flinkcdcflinksql做實時讀取sls日志和實時統計業務指標,今天發現程序背壓了,業務延遲了6個小時。解決辦法: 1、資源優化 作業并發大時:在作業的高級配置的資源配置中,增加JobManager的資源&#xf…

香港服務器三網直連內地線路什么意思?好用嗎?

?  三網直連內地是指香港服務器可以直接連接中國內地的電信、聯通和移動三大運營商網絡,避免了中間網絡干線的支持。這樣可以實現直接、快速、穩定的網絡訪問,提高用戶對網絡訪問的效率,減少網絡訪問問題和擁堵的現象。 香港服務器直連內地…

XSS 跨站腳本攻擊

XSS(DOM) XSS 又稱CSS(Cross Site Scripting)或跨站腳本攻擊,攻擊者在網頁中插入由JavaScript編寫的惡意代碼,當用戶瀏覽被嵌入惡意代碼的網頁時,惡意代碼將會在用戶的瀏覽器上執行。 XSS攻擊可分為三種:分別為反射型(Reflected…

線程|線程的使用、四種實現方式

1.線程的實現方式 1.用戶級線程 開銷小,用戶空間就可以創建多個。缺點是:內核無法感知用戶級多個線程的存在,把其當作只有一個線程,所以只會提供一個處理器。 2.內核級線程 相對于用戶級開銷稍微大一點,可以利用多…

Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理

Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理 目錄 Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理 一、簡單介紹 二、實現原理 三、注意事項 四、實現步驟 五、關鍵代碼 一、簡…

01- vdom 和模板編譯源碼

組件渲染的過程 template --> ast --> render --> vDom --> 真實的Dom --> 頁面 Runtime-Compiler和Runtime-Only的區別 - 簡書 編譯步驟 模板編譯是Vue中比較核心的一部分。關于 Vue 編譯原理這塊的整體邏輯主要分三個部分,也可以說是分三步&am…

《vue3實戰》運用radio單選按鈕或Checkbox復選框實現單選多選的試卷制作

文章目錄 目錄 系列文章目錄 1.《Vue3實戰》使用axios獲取文件數據以及走馬燈Element plus的運用 2.《Vue3實戰》用路由實現跳轉登錄、退出登錄以及路由全局守護 3.《vue3實戰》運用Checkbox復選框實現單選多選的試卷展現(本文) 文章目錄 前言 radio是什…