HTTPS的加密過程

文章目錄

  • 前言
  • 一、為什么需要加密?
  • 二、只用對稱加密可以嗎?
  • 三、只使用非對稱加密
  • 四、雙方都使用非對稱加密
  • 五、使用非對稱加密+對稱加密
  • 六、引入證書
    • 1.如何放防止數字證書被篡改?
    • 2.中間人有可能篡改該證書嗎?
    • 3.中間人有可能掉包該證書嗎?
    • 4.怎么證明CA機構的公鑰是可信的?
    • 5.每次進行HTTPS請求時都必須在SSL/TLS層進行握手傳輸密鑰嗎?


前言

什么是HTTPS?

超文本傳輸安全協議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種網絡安全傳輸協議。具體介紹以前先來介紹一下以前常見的HTTP,HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的數據都是未加密的,也就是明文,因此使用HTTP協議傳輸隱私信息非常不安全。HTTP使用80端口通訊,而HTTPS占用443端口通訊。在計算機網絡上,HTTPS經由超文本傳輸協議(HTTP)進行通信,但利用SSL/TLS來加密數據包。HTTPS開發的主要目的,是提供對網絡服務器的身份認證,保護交換數據的隱私與完整性。這個協議由網景公司(Netscape)在1994年首次提出,隨后擴展到互聯網上。

SSL,即傳輸層安全,是一種用C語言編寫的加密協議,在計算機網絡上提供通信安全。它通過使用加密來保護數據的完整性和保密性。

TLS,即傳輸層安全,是一種在互聯網上進行安全通信的標準。它允許客戶/服務器應用程序以一種旨在防止竊聽和篡改信息的方式在網絡上通信。


一、為什么需要加密?

因為http的內容是明文傳輸的,明文數據會經過中間代理服務器、路由器、wifi熱點、通信服務運營商等多個物理節點,如果信息在傳輸過程中被劫持,傳輸的內容就完全暴露了。劫持者還可以篡改傳輸的信息且不被雙方察覺,這就是中間人攻擊。所以我們才需要對信息進行加密。最容易理解的就是對稱加密 。

常見的加密方式:

對稱加密:

  1. 采?單鑰密碼系統的加密?法,同?個密鑰可以同時?作信息的加密和解密,這種加密?法稱為對
    稱加密,也稱為單密鑰加密,特征:加密和解密所?的密鑰是相同的
  2. 常?對稱加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2等
  3. 特點:算法公開、計算量?、加密速度快、加密效率?
  4. 對稱加密其實就是通過同?個"密鑰",把明?加密成密?,并且也能把密?解密成明?

非對稱加密

  1. ?對稱加密需要兩個密鑰來進?加密和解密,這兩個密鑰是公開密鑰和私有密鑰。
  2. 常??對稱加密算法(了解):RSA,DSA,ECDSA
  3. 特點:算法強度復雜、安全性依賴于算法與密鑰但是由于其算法復雜,?使得加密解密速度沒有對稱加密解密的速度快。
  4. 公鑰和私鑰是配對的.最?的缺點就是運算速度?常慢,?對稱加密要慢很多:
    通過公鑰對明?加密,變成密?,通過私鑰對密?解密,變成明?

數據摘要&&數據指紋

  1. 數字指紋(數據摘要),其基本原理是利?單向散列函數(Hash函數)對信息進?運算,?成?串固定?度的數字摘要。數字指紋并不是?種加密機制,但可以?來判斷數據有沒有被竄改。
  2. 摘要常?算法:有MD5、SHA1、SHA256、SHA512等,算法把?限的映射成有限,因此可能會有碰撞(兩個不同的信息,算出的摘要相同,但是概率?常低)
  3. 摘要特征:和加密算法的區別是,摘要嚴格意義不是加密,因為沒有解密,只不過從摘要很難反推原信息,通常?來進?數據對?

二、只用對稱加密可以嗎?

如果通信雙?都各?持有同?個密鑰X,且沒有別?知道,這兩?的通信安全當然是可以被保證的(除
?密鑰被破解)

在這里插入圖片描述

引?對稱加密之后,即使數據被截獲,由于?客不知道密鑰是啥,因此就?法進?解密,也就不知道請求的真實內容是啥了。

但事情沒這么簡單,服務器同?時刻其實是給很多客戶端提供服務的,這么多客戶端,每個??的秘鑰都必須是不同的(如果是相同那密鑰就太容易擴散了,?客就也能拿到了),因此服務器就需要維護每個客戶端和每個密鑰之間的關聯關系,這也是個很?煩的事情~

?較理想的做法,就是能在客?端和服務器建?連接的時候,雙?協商確定這次的密鑰是啥~

但是如果直接把密鑰明?傳輸,那么?客也就能獲得密鑰了~~此時后續的加密操作就形同虛設了,
因此密鑰的傳輸也必須加密傳輸!

但是要想對密鑰進?對稱加密,就仍然需要先協商確定?個"密鑰的密鑰",這就成了"先有雞還是先有
蛋"的問題了,此時密鑰的傳輸再?對稱加密就?不通了。

三、只使用非對稱加密

鑒于?對稱加密的機制,如果服務器先把公鑰以明??式傳輸給瀏覽器,之后瀏覽器向服務器傳數據
前都先?這個公鑰加密好再傳,從客戶端到服務器信道似乎是安全的(有安全問題),因為只有服務器有
相應的私鑰能解開公鑰加密的數據。

但是服務器到瀏覽器的這條路怎么保障安全?

如果服務器?它的私鑰加密數據傳給瀏覽器,那么瀏覽器?公鑰可以解密它,?這個公鑰是?開始通
過明?傳輸給瀏覽器的,若這個公鑰被中間?劫持到了,那他也能?該公鑰解密服務器傳來的信息
了。

四、雙方都使用非對稱加密

  1. 服務端擁有公鑰S與對應的私鑰S’,客戶端擁有公鑰C與對應的私鑰C’
  2. 客戶和服務端交換公鑰
  3. 客戶端給服務端發信息:先?S對數據加密發送,只能由服務器解密,因為只有服務器有私鑰S’
  4. 服務端給客戶端發信息:先?C對數據加密發送,只能由客戶端解密,因為只有客戶端有私鑰C’

這樣貌似也?啊,但是效率太低!!!但也有安全問題!!!

五、使用非對稱加密+對稱加密

我們用對稱加密提高效率:

  1. 服務端具有?對稱公鑰S和私鑰S’
  2. 客戶端發起https請求,獲取服務端公鑰S
  3. 客戶端在本地?成對稱密鑰C,通過公鑰S加密,發送給服務器
  4. 由于中間的?絡設備沒有私鑰,即使截獲了數據,也?法還原出內部的原?,也就?法獲取到對稱密鑰(真的嗎?)
  5. 服務器通過私鑰S’解密,還原出客戶端發送的對稱密鑰C,并且使?這個對稱密鑰加密給客戶端返回的響應數據
  6. 后續客戶端和服務器的通信都只?對稱加密即可,由于該密鑰只有客戶端和服務器兩個主機知道,其他主機/設備不知道密鑰即使截獲數據也沒有意義

看似天衣無縫,但實際上還存在安全問題!如果從最開始,中間人就開始攻擊了呢?

  1. 服務器具有?對稱加密算法的公鑰S,私鑰S’
  2. 中間?具有?對稱加密算法的公鑰M,私鑰M’
  3. 客戶端向服務器發起請求,服務器明?傳送公鑰S給客戶端
  4. 中間?劫持數據報?,提取公鑰S并保存好,然后將被劫持報?中的公鑰S替換成為??的公鑰M,并將偽造報?發給客?端
  5. 客戶端收到報?,提取公鑰M(??當然不知道公鑰被更換過了),??形成對稱秘鑰X,?公鑰M加密X,形成報?發送給服務器
  6. 中間?劫持后,直接???的私鑰M’進?解密,得到通信秘鑰X,再?曾經保存的服務端公鑰S加密后,將報?推送給服務器
  7. 服務器拿到報?,???的私鑰S’解密,得到通信秘鑰X
  8. 雙?開始采?X進?對稱加密,進?通信。但是?切都在中間?的掌握中,劫持數據,進?竊聽甚?修改,都是可以的

問題本質出在哪?了呢?客戶端?法確定收到的含有公鑰的數據報?,就是?標服務器發送過來的!

六、引入證書

服務端在使?HTTPS前,需要向CA機構申領?份數字證書,數字證書?含有證書申請者信息、公鑰信息等。服務器把證書傳輸給瀏覽器,瀏覽器從證書?獲取公鑰就?了,證書就如?份證,證明服務端公鑰的權威性。

下圖截自《圖解TCP/IP》:

在這里插入圖片描述

證書本身的傳輸過程中,如何防止被篡改?即如何證明證書本身的真實性?身份證運用了一些防偽技術,而數字證書怎么防偽呢?

1.如何放防止數字證書被篡改?

我們把證書原本的內容生成一份“簽名”,比對證書內容和簽名是否一致就能判別是否被篡改。這就是數字證書的“防偽技術”,這里的“簽名”就叫數字簽名:

在這里插入圖片描述
數字簽名的制作過程:

  1. CA機構擁有非對稱加密的私鑰和公鑰。
  2. CA機構對證書明文數據T進行hash。
  3. 對hash后的值用私鑰加密,得到數字簽名S

瀏覽器驗證過程:

  1. 拿到證書,得到明文T,簽名S。
  2. 用CA機構的公鑰對S解密(由于是瀏覽器信任的機構,所以瀏覽器有它的公鑰),得到S’。
  3. 用證書里指明的hash算法對明文T進行hash得到T’。
  4. 顯然通過以上步驟,T’應當等于S‘,除非明文或簽名被篡改。所以此時比較S’是否等于T’,等于則表明證書可信。

2.中間人有可能篡改該證書嗎?

假設中間人篡改了證書的原文,由于他沒有CA機構的私鑰,所以無法得到此時加密后簽名,無法相應地篡改簽名。瀏覽器收到該證書后會發現原文和簽名解密后的值不一致,則說明證書已被篡改,證書不可信,從而終止向服務器傳輸信息,防止信息泄露給中間人。

3.中間人有可能掉包該證書嗎?

假設有另一個網站B也拿到了CA機構認證的證書,它想劫持網站A的信息。于是它成為中間人攔截到了A傳給瀏覽器的證書,然后替換成自己的證書,傳給瀏覽器,之后瀏覽器就會錯誤地拿到B的證書里的公鑰了,這確實會導致上文“中間人攻擊”那里提到的漏洞?

其實這并不會發生,因為證書里包含了網站A的信息,包括域名,瀏覽器把證書里的域名與自己請求的域名比對一下就知道有沒有被掉包了。

4.怎么證明CA機構的公鑰是可信的?

讓我們回想一下數字證書到底是干啥的?沒錯,為了證明某公鑰是可信的,即“該公鑰是否對應該網站”,那CA機構的公鑰是否也可以用數字證書來證明?沒錯,操作系統、瀏覽器本身會預裝一些它們信任的根證書,如果其中會有CA機構的根證書,這樣就可以拿到它對應的可信公鑰了。

實際上證書之間的認證也可以不止一層,可以A信任B,B信任C,以此類推,我們把它叫做信任鏈或數字證書鏈。也就是一連串的數字證書,由根證書為起點,透過層層信任,使終端實體證書的持有者可以獲得轉授的信任,以證明身份。

5.每次進行HTTPS請求時都必須在SSL/TLS層進行握手傳輸密鑰嗎?

每次請求都經歷一次密鑰傳輸過程非常耗時,那怎么達到只傳輸一次呢?

服務器會為每個瀏覽器(或客戶端軟件)維護一個session ID,在TLS握手階段傳給瀏覽器,瀏覽器生成好密鑰傳給服務器后,服務器會把該密鑰存到相應的session ID下,之后瀏覽器每次請求都會攜帶session ID,服務器會根據session ID找到相應的密鑰并進行解密加密操作,這樣就不必要每次重新制作、傳輸密鑰了!

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

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

相關文章

開窗函數rank() over,dense_rank() over,row_number() over的區別

1.rank() over 查詢出指定的條件進行排名,條件相同排名相同的話,排名之間是不連續的 例如排名如 1 2 3 3 5 6 7 等,相同的排名會自動跳過 2.dense_rank() over 查詢出指定的條件后進行排名,條件相同,排名相同的話&…

【YOLO系列】YOLOv9論文超詳細解讀(翻譯 +學習筆記)

前言 時隔一年,YOLOv8還沒捂熱,YOLO系列最新版本——YOLOv9 終于閃亮登場! YOLOv9的一作和v7一樣。v4也有他。 他于2017年獲得臺灣省National Central University計算機科學與信息工程博士學位,現在就職于該省Academia Sinica的…

【大數據】Flink SQL 語法篇(六):Temporal Join

《Flink SQL 語法篇》系列,共包含以下 10 篇文章: Flink SQL 語法篇(一):CREATEFlink SQL 語法篇(二):WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 語法篇(三&…

機器視覺——硬件選型

1、相機選型 在選擇機器視覺相機時,通常需要考慮以下幾個方面: 1、分辨率:相機的分辨率決定了其拍攝圖像的清晰度和細節程度。根據具體的應用需求,可以選擇適當的分辨率范圍。 2、幀率:幀率表示相機每秒鐘能夠拍攝的…

2023年營養保健品線上電商市場行業分析(2024年營養保健行業未來趨勢分析)

近年來,受人口老齡化、養生年輕化等因素驅動,保健品行業增長強勁,加之越來越多的年輕人也加入養生大軍,成為保健品市場上的一股新力量,進一步帶動市場擴容。 鯨參謀數據顯示,2023年度,京東平臺…

[pdf]《軟件方法》2024版部分公開-共196頁

DDD領域驅動設計批評文集 做強化自測題獲得“軟件方法建模師”稱號 《軟件方法》各章合集 潘加宇《軟件方法》2024版部分公開pdf文件,共196頁,已上傳CSDN資源。 也可到以下地址下載: http://www.umlchina.com/url/softmeth2024.html 如果…

Ubuntu20.04 ssh終端登錄后未自動執行.bashrc

sudo vim ~/.profile輸入以下內容 if [ -n "$BASH_VERSION" ]; then if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 執行 source ~/.profile重新測試 其他答案 如果你的~/.bashrc文件在Ubuntu中沒有自動生效,…

3. 文檔概述(Documentation Overview)

3. 文檔概述(Documentation Overview) 本章節簡要介紹一下Spring Boot參考文檔。它包含本文檔其它部分的鏈接。 本文檔的最新版本可在 docs.spring.io/spring-boot/docs/current/reference/ 上獲取。 3.1 第一步(First Steps) …

解析電源模塊測試條件與測試步驟 快速完成測試

高溫高濕儲存測試是電源模塊環境適應性測試內容之一,在實際使用過程中由于應用場景不同電源所處的環境也是多樣的,因此需要測試電源對各種環境的適應能力,提高電源的性能和可靠性。 電源高溫高濕存儲測試的目的是為了測量環境對電源結構、元件…

C語言第三十三彈---動態內存管理(上)

?個人主頁: 熬夜學編程的小林 💗系列專欄: 【C語言詳解】 【數據結構詳解】 動態內存管理 1、為什么要有動態內存分配 2、malloc和free 2.1、malloc 2.2、free 3、calloc和realloc 3.1、calloc 3.2、realloc 4、常見的動態內存的錯…

氣象數據收集

1、國家氣象科學數據中心 預報數據:需要定制,收費10萬+ 觀測數據:國家氣象信息中心-中國氣象數據網 (cma.cn)https://data.cma.cn/data/cdcdetail/dataCode/A.0012.0001.html 地面基本氣象觀測數據 滯后2天 滯后一天 路面數據同化系統,實時 國家氣象信息中心-中國氣象數…

11.以太網交換機工作原理

目錄 一、以太網協議二、以太網交換機原理三、交換機常見問題思考四、同網段數據通信全過程五、跨網段數據通信全過程六、關鍵知識七、調試命令 前言:在網絡中傳輸數據時需要遵循一些標準,以太網協議定義了數據幀在以太網上的傳輸標準,了解以…

android移動應用開發基礎答案,安卓工程師面試題

一線企業的app都是多線程和多進程的,而Android進程間通信機制就是Binder,原生的線程間通信則是Handler,Binder和Handler是了解安卓運行機制必須要掌握的一個知識點,更是一線企業面試必問的知識點! 以下幾道就是大廠關于…

【QT+QGIS跨平臺編譯】之五十五:【QGIS_CORE跨平臺編譯】—【qgsmeshcalcparser.cpp生成】

文章目錄 一、Bison二、生成來源三、構建過程一、Bison GNU Bison 是一個通用的解析器生成器,它可以將注釋的無上下文語法轉換為使用 LALR (1) 解析表的確定性 LR 或廣義 LR (GLR) 解析器。Bison 還可以生成 IELR (1) 或規范 LR (1) 解析表。一旦您熟練使用 Bison,您可以使用…

Unity中URP實現水體(整理優化)

文章目錄 前言一、優化水的深度1、我們把 水流動的方向 和 水深淺過渡值,整合到一個四維變量中2、修改 水體流動方向3、在片元著色器中,修改使用過渡變量 二、優化泡沫三、優化水下的扭曲1、修復原本擾動UV的計算 四、優化水面高光1、把高光強度、光滑度…

紅隊基礎設施建設

文章目錄 一、ATT&CK二、T1583 獲取基礎架構2.1 匿名網絡2.2 專用設備2.3 滲透測試虛擬機 三、T1588.002 C23.1 開源/商用 C23.1.1 C2 調研SliverSliver 對比 CS 3.1.2 CS Beacon流量分析流量規避免殺上線 3.1.3 C2 魔改3.1.4 C2 隱匿3.1.5 C2 準入應用場景安裝配置說明工具…

UC++對象方法IsValid()、IsValidLowLevel()、IsValidLowLevelFast()的區別

在 Unreal Engine 中,IsValid(), IsValidLowLevel(), 和 IsValidLowLevelFast() 是用于檢查 UObject(Unreal Object)有效性的三個不同的方法。它們之間的區別主要在于檢查的級別和效率。 IsValid(): 檢查級別: IsVal…

深度學習 精選筆記(2)自動求導與概率

學習參考: 動手學深度學習2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、請聯系侵刪。 ②已寫完的筆記文章會不定時一直修訂修改(刪、改、增),以達到集多方教程的精華于一文的目的。 ③非常推薦上面(學習參考&#x…

Linux系統——LAMP架構

目錄 一、LAMP架構組成 1.LAMP定義 2.各組件的主要作用 3.CGI和FastCGI 3.1CGI 3.3CGI和FastCGI比較 4.PHP 4.1PHP簡介 4.2PHP的Opcode語言 4.3PHP設置 二、LAMP架構實現 1.編譯安裝Apache httpd服務 2.編譯安裝Mysql 3.編譯安裝PHP 4.安裝論壇 5.搭建博客 W…

Linux編程 2.4 文件和目錄-Linux文件系統結構

1、文件操作基本元素 文件操作相關的最基本元素是:目錄結構、索引節點和文件的數據本身。 目錄結構(目錄項)索引節點(i節點)文件的數據 2、文件系統的三個區域 屬性: 超級塊:存放文件系統本身…