科普文:HTTPS協議

概敘

????????HTTPS(Secure Hypertext Transfer Protocol)即安全超文本傳輸協議,是一個安全通信通道。用于計算機網絡的安全通信,已經在互聯網得到廣泛應用。

????????HTTPS 是基于 HTTP 的擴展,其相當于 HTTP協議+SSL(安全套接層)/TLS(安全傳輸層協議)協議加密。因此 HTTPS 也常指 HTTP over SSL 或 HTTP over TLS。

HTTP 的缺點:

  1. HTTP 通信使用明文,內容可能會被竊聽。
  2. HTTP 無法驗證報文的完整性,所以有可能遭到篡改。
  3. HTTP 不驗證通信方的身份,有可能遭遇偽裝。
  4. HTTP 通信使用明文,且不驗證通信方的身份,會被中間人挾持。

????????HTTPS 與 HTTP 的區別:HTTP 協議的數據傳輸是通過明文的形式做傳輸,即使約定了加密方式,但是第一次傳輸的時候還是明文;鑒于此,HTTPS使用的是非對稱加密,為秘鑰的傳輸外層再做一層保護,非對稱加密的一組秘鑰對中,包含一個公鑰和一個私鑰。明文既可以用公鑰加密,用私鑰解密;也可以用私鑰加密,用公鑰解密。

  • HTTPS 協議需要到 CA 申請證書;
  • HTTP 是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協議;
  • HTTP 和 HTTPS 使用的是完全不同的連接方式,端口也不一樣。前者是 80,后者是 443;
  • HTTP 的連接是無狀態的,HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網絡協議,比 HTTP 更安全。

????????總的來說:HTTPS 目前是最流行的 HTTP 安全形式。使用 HTTPS 時,所有的 HTTP 請求和響應數據在發送到網絡之前,都要進行加密。

????????HTTPS 在 HTTP 下面提供了一個傳輸級的密碼安全層: SSL 和 TLS。

HTTPS解決的問題是什么?

????????答:信任主機的問題

????????采用https的服務器必須從CA?(Certificate Authority)申請一個用于證明服務器用途類型的證書。該證書只有用于對應的服務器的時候,客戶端才信任此主機。所以目前所有的銀行系統網站,關鍵部分應用都是https 的。客戶通過信任該證書,從而信任了該主機。其實這樣做效率很低,但是銀行更側重安全。這一點對我們沒有任何異議,我們的服務器,采用的證書不管是自己發布的還是從公眾的地方發布的,其客戶端都是自己人,所以我們也就肯定信任該服務器。

????????通訊過程中的數據的泄密和被篡改

????????1. 一般意義上的https,就是服務器有一個證書。

????????????????a) 主要目的是保證服務器就是他聲稱的服務器,這個跟第一點一樣。

????????????????b)服務端和客戶端之間的所有通訊,都是加密的。

????????????????i. 具體講,是客戶端產生一個對稱的密鑰,通過服務器的證書來交換密鑰,即一般意義上的握手過程。

????????????????ii. 接下來所有的信息往來就都是加密的。第三方即使截獲,也沒有任何意義,因為他沒有密鑰,當然篡改也就沒有什么意義了。

????????2. 少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書。

????????????????a) 這里客戶端證書,其實就類似表示個人信息的時候,除了用戶名/密碼,還有一個CA?認證過的身份。因為個人證書一般來說是別人無法模擬的,所以這樣能夠更深的確認自己的身份。

????????????????b) 目前少數個人銀行的專業版是這種做法,具體證書可能是拿U盤(即U盾)作為一個備份的載體。

SSL 與 TLS 概述

????????SSL(Secure Socket Layer)即,位于可靠的面向連接的網絡層協議和應用層協議之間的一種協議層。SSL 通過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和服務器之間的安全通訊。

SSL 協議可分為兩層:

  • SSL 記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如 TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。
  • SSL 握手協議(SSL Handshake Protocol):它建立在 SSL 記錄協議之上,用于在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

????????TLS:安全傳輸層協議(TLS)用于在兩個通信應用程序之間提供保密性和數據完整性。TLS 記錄協議用于封裝各種高層協議。作為這種封裝協議之一的握手協議允許服務器與客戶機在應用程序協議傳輸和接收其第一個數據字節前彼此之間相互認證,協商加密算法和加密密鑰。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)

????????SSL/TLS 協議為了解決 HTTP 協議的缺點,希望達到:

  • 所有信息都是加密傳播,第三方無法被竊聽。
  • 具有校驗機制,一旦被篡改,通信雙方立刻會發現。
  • 配備身份證書,方式身份被冒充。

????????SSL 是一個二進制協議,與 HTTP 完全不同,其流量是承載在另一個端口上的(通常是 443),如果 SSL 和 HTTP 的流量都從 80 端口到達,大部分 web 服務器會將二進制 SSL 流量理解為錯誤的 HTTP 并關閉連接。

SSL證書

????????SSL證書是一種數字證書,可以由組織或個人購買,并允許Web服務器和瀏覽器之間的安全連接。它通過將加密密鑰綁定到組織的詳細信息來做到這一點。

????????證書包含有關證書持有者的姓名、證書序列號和到期日期、證書持有者的公鑰副本以及證書頒發機構的數字簽名等信息。這會對網站進行身份驗證,證明它確實是它聲稱的網站,而不是冒充該網站的黑客。

????????在服務器向客戶端發送公鑰這一過程中,客戶端可能會收到黑客假冒服務器發送的假的公鑰。為了安全考慮,就需要用到 SSL 證書了。在通信時,服務器將證書發送給客戶端,客戶端會對證書的真偽進行校驗,保證了安全。

????????從本質上講,它會驗證該站點是否如其所說。

SSL 與 TLS 二者之間關系

????????TLS 是 SSL3.0 的后續版本。TLS 與 SSL3.0 之間存在著顯著的差別,主要是它們所支持的加密算法不同,所以 TLS 與 SSL3.0 不能互操作。

????????SSL 是 Netscape 開發的專門用戶保護 Web 通訊的,目前版本為 3.0。最新版本的 TLS 是 IETF(Internet Engineering Task Force,Internet 工程任務組)制定的一種新的協議。最新版本的 TLS1.0,它建立在 SSL3.0 協議規范之上,是 SSL3.0 的后續版本。兩者差別極小,可以理解為 SSL3.1。

通過證書防止中間人攻擊

????????中間人獲取信息后,模擬客戶端和服務器,并使用偽造的服務器證書發送給客戶端的情況,是一種常見的中間人攻擊手法。

????????為了避免這種情況,SSL/TLS 協議和瀏覽器等客戶端采取了多種措施:

證書鏈驗證
????????客戶端會驗證服務器證書是否由受信任的證書頒發機構(CA)簽署。證書鏈驗證過程如下:
服務器提供的證書會包括一個完整的證書鏈,根證書在客戶端的受信任證書庫中。
客戶端驗證從服務器證書到根證書的整個鏈條。如果任意一個證書不匹配或無效,連接將被終止。


證書透明度(Certificate Transparency, CT)
????????這是一個公開的日志系統,所有頒發的證書都會被記錄在透明日志中。客戶端可以檢查收到的證書是否在這些日志中,并驗證其合法性。通過這種方式,可以防止惡意CA頒發偽造的證書。

在線證書狀態協議(Online Certificate Status Protocol, OCSP)
????????OCSP用于檢查證書是否被吊銷。客戶端在連接服務器時,會請求OCSP響應,確認證書仍然有效。如果證書被吊銷,客戶端將拒絕連接。

HTTP嚴格傳輸安全(HTTP Strict Transport Security, HSTS)
????????HSTS允許服務器告知瀏覽器只能通過HTTPS連接,并拒絕所有HTTP連接。這可以防止降級攻擊,中間人無法通過強制降級到HTTP來進行中間人攻擊。

證書釘扎(Certificate Pinning)
????????證書釘扎將特定服務器的證書或公鑰綁定到客戶端,確保只有特定的證書或公鑰可以用于該服務器。即使中間人使用偽造的證書,也無法通過驗證。

域名系統安全擴展(DNSSEC)
????????DNSSEC通過對DNS數據進行簽名,確保DNS響應的真實性和完整性,防止中間人篡改DNS記錄并進行流量劫持。

雙因素認證(2FA)
????????即使在建立安全連接后,中間人成功截獲了會話,雙因素認證提供了額外的安全層,防止未經授權的訪問

HTTPS如何加密數據

????????對安全或密碼學基礎有了解的同學,應該知道常見的加密手段。一般來說,加密分為對稱加密、非對稱加密(也叫公開密鑰加密)。

????????1.客戶端瀏覽器和服務器,通過三次握手,創建TCP鏈接。? ? ? ? ? ? ?

? ? ? ? 2.瀏覽器請求https鏈接,服務端返回證書公鑰。

? ? ? ? 3.瀏覽器產生隨機數[key1],作為后面傳輸數據時的對稱加密密鑰,并用證書公鑰非對稱加密隨機數傳給服務器。(上圖中234三步所示)

? ? ? ? 4.服務器收到隨機數[key1]密文,用證書私鑰非對稱解密,同時服務器將解密到的隨機數[key

1]作為后面傳輸數據時的對稱加密密鑰[key1],[key1]保存在服務端,同時服務端產生一個隨機數random2,服務端用[key1]對random2進行對稱加密,加密后的密文和明文返回給瀏覽器。

? ? ? ? 5.瀏覽器收到密文,用本地的密鑰[key1],進行對稱解密,解密到的明文和服務端傳過來的明文比對,一致,則說明,身份驗證完成。后面即可用本地的密鑰[key1]進行數據的對稱加密和解密。

? ? ? ? 6.SSL/TLS的4次握手完成,即可進行https通信。

? ? ? ? 7.瀏覽器將請求數據用本地的密鑰[key1]進行對稱加密,發給服務器。

? ? ? ? 8.服務器收到瀏覽器的加密請求,用本地的密鑰[key1]進行對稱解密,同時將響應也用本地的密鑰[key1]進行對稱加密,發給瀏覽器。

? ? ? ? 9.瀏覽器收到服務器的加密響應,用本地的密鑰[key1]進行對稱解密,然后完成瀏覽器的數據渲染展示。

? ? ? ? 10.https通信結束,瀏覽器發起TCP4次握手斷開TCP鏈接。

HTTPS 下瀏覽器訪問一個網站的全過程

????????https的整個通信過程可以分為兩大類:證書驗證和數據傳輸階段。數據傳輸階段又分為非對稱加密和對稱加密兩個階段。

img

????????具體流程如下:

  1. 首先客戶端請求 https 網址,然后連接到 Server 的 443 端口(https 默認端口)。
  2. 采用 https 協議的服務器必須要有一套數字 CA 證書。頒發證書的同時會產生一個私鑰和公鑰。私鑰由服務端自己保存,不可泄漏。公鑰則附加在證書中,可以公開。證書本身附帶一個電子簽名,可以用來驗證證書的完整性和真實性,可以防止證書被篡改。
  3. 服務器響應客戶端請求,將證書傳遞給客戶端。證書包含公鑰和大量其他的信息,比如證書頒發機構信息、公司信息和證書有效期等。
  4. 客戶端解析證書并對其進行驗證,如果證書不是可信的機構頒布,或者證書的域名與實際域名不一致,或證書已經過期,就會向訪問者顯示一個警告。如果證書沒有問題,客戶端就會從服務器證書中取出服務器的公鑰A,并生成一個隨機碼KEY,并使用公鑰對其進行加密。
  5. 客戶端會把加密后的隨機碼KEY發送給服務器,作為后面對稱加密的密鑰。
  6. 服務器在收到隨機碼KEY之后會使用私鑰B將其解密。經過以上這些步驟,客戶端和服務器終于建立了安全的連接,接下來可以使用對稱加密進行通信了。
  7. 服務器使用密鑰(隨機碼KEY)對數據進行對稱加密并發送給客戶端,客戶端使用相同的密鑰解密數據。
  8. 雙方使用對稱加密傳輸所有的數據。

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

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

相關文章

0708,LINUX目錄相關操作

主要是冷氣太足感冒了&#xff0c;加上少吃藥抗藥性差&#xff0c;全天昏迷&#xff0c;學傻了學傻了 cat t_chdir.c #include <stdio.h> #include <unistd.h> #include <error.h> #include <errno.h> #include <sys/stat.h>int main(int argc…

魯棒控制器設計方法:systune,hinfsyn,musyn,slTuner

systune和hinfsyn更側重于基于數學模型的控制器設計&#xff0c;而musyn則特別考慮了系統的不確定性。slTuner則提供了在Simulink環境中進行控制器設計和調整的能力。 指定結構的控制器整定&#xff1a;systune, hinfstruct廣義控制對象整定&#xff1a;musyn, mixed musyn, h…

應急響應-ELK日志分析系統

&#x1f3bc;個人主頁&#xff1a;金灰 &#x1f60e;作者簡介:一名簡單的大一學生;易編橙終身成長社群的嘉賓.? 專注網絡空間安全服務,期待與您的交流分享~ 感謝您的點贊、關注、評論、收藏、是對我最大的認可和支持&#xff01;?? &#x1f34a;易編橙終身成長社群&#…

2024年PMP考試備考經驗分享

PMP是項目管理領域最重要的認證之一,本身是IT行業比較流行的證書&#xff0c;近幾年在臨床試驗領域也漸漸流行起來&#xff0c;是我周圍臨床項PM幾乎人手一個的證書。 考試時間&#xff1a;PMP認證考試形式為180道選擇題&#xff0c;考試時間為3小時50分。 考試計劃&#xff…

NFS綜合項目

現有主機 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主機上提供 DNS 和 WEB 服務 2、dns 服務提供本實驗所有主機名解析 3、web服務提供 www.rhce.com 虛擬主機 4、該虛擬主機的documentroot目錄在 /nfs/rhce 目錄 5、該目錄由 node02 主機提供的NFS…

Spring——自動裝配Bean

自動裝配是Spring滿足bean依賴的一種方式 Spring會在上下文中自動尋找&#xff0c;并自動給bean裝配屬性 在Spring中有三種裝配的方式&#xff1a; 1. 在xml中顯示配置 2. 在java中顯示配置 3. 隱式的自動裝配bean【重要】 測試 記得創建Cat、Dog、People類 public clas…

NI 5G大規模MIMO測試臺:將理論變為現實

目錄 概覽引言MIMO原型驗證系統MIMO原型驗證系統硬件LabVIEW通信系統設計套件&#xff08;簡稱LabVIEW Communications&#xff09;CPU開發代碼FPGA代碼開發硬件和軟件緊密集成 LabVIEW Communications MIMO應用框架MIMO應用框架特性單用戶MIMO和多用戶MIMO基站和移動站天線數量…

常用控件(三)

輸入類控件 QLineEditQTextEditQComboBoxQSpinBoxQDateTimeEditQDialQSlider QLineEdit QLineEdit用來表示單行輸入框&#xff0c;可以輸入一段文本&#xff0c;但是不能換行; 核心屬性: 屬性說明text輸入框中的文本inputMask輸入內容格式約束maxLength最大長度frame是否添加邊…

推薦算法有哪些?——協同過濾、內容推薦、DNN、FM、DeepFM

推薦算法是機器學習和數據挖掘領域的一個重要研究方向&#xff0c;旨在向用戶或群體推薦可能感興趣的物品或信息。 以下是對您提到的幾種推薦算法的詳細介紹&#xff1a; 1. 協同過濾&#xff08;Collaborative Filtering&#xff09; 定義&#xff1a;協同過濾是一種基于用…

FOLANNIC FD31 UPS工作原理介紹

1&#xff0e;1簡介 FOLANNIC FD31系列UPS系工業級電廠型不間斷電源&#xff0c;是為重要負載提供不受電網干擾、穩壓、穩頻的電力供應的電源設備&#xff0c;在市電掉電后&#xff0c;UPS可給負載繼續提供一段時間供電&#xff0c;此系列UPS采用帶輸出隔離變壓器的高頻雙變換結…

鏈表---頭插法+尾插法

本博客介紹了單鏈表的實現&#xff0c;以及頭插法尾插法的代碼實現 1.定義一個結點類 class ListNode{int value;ListNode next;public ListNode(int value) {super();this.value value;}Overridepublic String toString() {return "ListNode{" "value" …

Windows部署MySQL環境

一、下載MySQL數據庫 進入官網&#xff1a;https://www.mysql.com 找到紅框位置&#xff0c;點擊DOWNLOADS頁面下翻&#xff0c;找到紅框位置并點擊進入&#xff08;圖片右下方那個&#xff09; 選擇紅框部分 這里按照紅框選擇的是離線安裝&#xff0c;之間點擊download即可&…

【史上最全面ESP32】軟件中斷與硬件中斷

文章目錄 前言硬件中斷硬件中斷概念硬件中斷的使用 軟件中斷軟件中斷概念軟件中斷的使用 總結 前言 ESP32是一款高度集成的芯片&#xff0c;具有強大的中斷處理能力。在ESP32中&#xff0c;我們可以配置所有的GPIO引腳作為硬件中斷源&#xff0c;通過附加它們到相應的中斷服務…

JFlash讀取和燒錄加密stm32程序

JFlash讀取和燒錄加密stm32程序 安裝后JFlash所在的目錄&#xff1a;C:\Program Files\SEGGER\JLink 一、燒寫加密程序 1、打開C:\Program Files\SEGGER\JLink目錄&#xff0c;找到JFlash.exe,雙擊它&#xff0c;就可以打開該執行程序。見下圖&#xff1a; 2、選擇“Create …

代碼隨想錄算法訓練營第三十天 | 01背包問題 二維 01背包問題 一維 416. 分割等和子集

46. 攜帶研究材料&#xff08;第六期模擬筆試&#xff09; 題目描述 小明是一位科學家&#xff0c;他需要參加一場重要的國際科學大會&#xff0c;以展示自己的最新研究成果。他需要帶一些研究材料&#xff0c;但是他的行李箱空間有限。這些研究材料包括實驗設備、文獻資料和…

無題:天選之子?

1. 從一個人說起&#xff1a;孤獨信 原名獨孤如愿&#xff0c;字期彌頭云中郡&#xff08;今內蒙古自治區和林格爾縣&#xff09;人&#xff0c;鮮卑族西魏、北周(南北朝)時期名將&#xff0c;八柱國之一北塞俊郎&#xff0c;容儀俊美&#xff0c;善于騎射獨孤側帽&#xff1a…

SQL語法(DQL):SELECT 多表查詢之子查詢

1、子查詢 定義&#xff1a;如果某一個SQL語句A包含了一個查詢Select語句B&#xff0c;稱B叫做子查詢&#xff0c;稱A叫做主查詢&#xff0c;A帶有子查詢語句目的&#xff1a;提高代碼復用性&#xff0c;間接提高代碼開發效率分類&#xff1a; 條件子查詢&#xff1a;將子查詢…

開發指南042-產生待辦

整個平臺待辦是統一處理的&#xff0c;各業務微服務需要產生待辦時調用系統API <dependency><groupId>org.qlm</groupId><artifactId>qlm-api</artifactId><version>1.0-SNAPSHOT</version> </dependency> Autowired privat…

Nature Renderer 2022(植被渲染工具插件)

渲染大量詳細的植被。 自然渲染器通過替換Unity的默認地形細節和樹系統來提高植被渲染的質量。一切都適用于現有數據:使用相同的草地、植被和樹木,并保留現有地形。我們只是升級您的渲染器。 Unity驗證的解決方案 Nature Renderer受到25000多名開發人員的信任,是Unity驗證的…

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型

編者按&#xff1a; 如何更好地評估和比較不同版本的大語言模型&#xff1f;傳統的學術基準測試固然重要&#xff0c;但往往難以全面反映模型在實際應用場景中的表現。在此背景下&#xff0c;本文作者別出心裁&#xff0c;通過讓 Llama-2 和 Llama-3 模型進行井字游戲對決&…