抽象的https原理簡介

前言

小明和小美是一對好朋友,他們分隔兩地,平時經常寫信溝通,但是偶然被小明發現他回給小美的信好像被人拆開看過,甚至偷偷被篡改過。

對稱加密算法

開頭的通信過程比較像HTTP服務器與客戶端的通信過程,全明文傳輸,第三方比較容易在傳輸線路的任何節點上抓包獲取到傳輸內容,甚至篡改。

遇到這種事情,小明立刻就想到了要把寫信的內容加密再傳輸,這樣就安全了,常見的對稱加密算法有好多種:AES、DES、ChaCha20等,他們的共同特點就是加密解密用的是同一個密鑰。

剩下的就是得把加密寫信的想法以及密鑰告訴小美了,但這里就尷尬了,因為小明和小美只能寫信溝通,如果小明把密鑰放信里寄過去,哪個邪惡的郵遞員拆開看了,那么也就拿到了密鑰,后續的所有信件他都可以解密查看甚至一樣可以篡改。

非對稱加密算法

小明意識到只用這種對稱加密算法是行不通的,但是聰明的小明馬上就想到了可以用非對稱加密算法,常見的非對稱加密算法:RSA、DSA等,他們的共同特點就是加密解密用的是不同的密鑰,俗稱公鑰和私鑰。

公鑰加密的內容,只有私鑰可以解密出來,私鑰加密的內容,也只有公鑰可以解密出來。但是這種加密算法很復雜,加解密效率很低,特別是加密內容很長的時候,所以不能用非對稱加密算法加密整個信件內容,于是想到讓小美每次回信都生成隨機的對稱密鑰,非對稱加密算法只用來加解密這個比較短的對稱密鑰,加解密信件內容還是用效率比較高的對稱加密算法。

雖然開始有點繞了,但是這也難不倒小明,他立刻生成了一對公私鑰,私鑰自己留著,公鑰寫信寄給小美,并且告訴小美讓她隨機生成一個對稱加密算法密鑰,信件內容用這個對稱加密算法加密,然后密鑰本身再用公鑰加密,一起寫回信寄回來。

邪惡的郵遞員小黑再次截獲到了這封信,拆開一看馬上就意識到不妙,這封信一旦寄到小美手中,小美按照信中提到的方案加密回信的話,那么世界上就只有具有私鑰的小明能解密看懂信件了,這可不行,所以小黑一不做二不休直接自己生成了一對公私鑰對,拿自己的公鑰替換掉了這封信里的公鑰,然后寄給小美。

小美也確實按照這套加密方案加密回信了,但是用的是小黑替換過的公鑰,所以小黑可以用他的私鑰解密成功了,但是這樣的回信肯定不能直接轉給小明了,因為公鑰被換過小明是解不了的,所以小黑再用之前小明的公鑰加密 他已經解密后的內容,再寄給小明,雖然來回的加解密很麻煩,但是總算神不知鬼不覺的完成了信息截獲。

數字證書

小明也是馬上意識到了這其中的漏洞,冥思苦想還是覺得這個公私鑰對不能由自己生成,自己生成的公鑰小美完全沒辦法判斷是不是真的。
這時一個權威的第三方大佬大壯出現了,小明可以去大壯那里申請公私鑰對,但是這個公鑰就不是單純的公鑰了,而是放在一個叫做數字證書的函件里面,函件的內容包含以下信息:

  1. 公鑰
  2. 證書歸屬者:小明
  3. 證書簽發者:大壯
  4. 證書有效期:2025-04-18 ~ 2025-07-19
  5. 證書簽名:以上信息哈希摘要后,用大壯的頂級私鑰加密生成的

以上4個信息打包放一起,稱之為數字證書。
但是大壯又是如何保證數字證書里的公鑰不能被替換呢?這里就的得證書里的簽名,以及大壯大佬的身份了,大壯和所有的房地產開發商都是合作關系,所有房屋建造完后都內置了大壯的頂級證書,里面包含了大壯的頂級公鑰。

之后小明寫信直接把從大壯那申請的數字證書帶上,同樣是要求小美用上一節的方案生成密鑰加密傳輸。這時邪惡的小黑同樣攔截到了這封信,并且把證書里的公鑰換掉了,再發給小美,小美拆開信首先做的就是把數字證書拿出來,把前三個信息:公鑰、證書歸屬者、證書簽發者哈希摘要,然后拿出證書簽名用自己家里內置的頂級公鑰解密這個簽名也得到了一個哈希摘要值,對比兩個值居然不一樣!說明證書已經被人篡改了,說明有內鬼交易終止!

雖然小黑也可以去大壯那里申請數字證書,但是拿到的數字證書證書歸屬者會寫著小黑,這樣就算替換證書,小美一眼就看出來這不是小明的證書了。

至此小黑再也沒法偷看小明小美之間的信件了,除非他直接沖到小美家里把她家內置的頂級公鑰給換了,或者直接去把大壯的頂級私鑰搞到手,當然他是沒這個膽子和能力的。

證書鏈

大壯的證書簽發生意做的紅紅火火,越來越多的人找大壯簽發證書,但是大壯一個人有點力不從心,畢竟簽發證書用的私鑰讓任何其他人幫忙都很危險,一旦他的頂級私鑰泄露,他的生意就完蛋了。這里就體現出了基于根證書簽發下級證書的局限性:

  1. 經常拿著頂級私鑰去簽發下級證書,難免會出意外被人偷走,最好鎖起來不要經常拿出來
  2. 需要證書的人太多了,大壯幫不過來

所以大壯想到一個方案,找到一個可以信賴的伙伴大強,只需要簽發一個中間證書和中間私鑰給大強,證書包含以下信息:

  1. 中間證書公鑰
  2. 證書歸屬者:大強
  3. 證書簽發者:大壯
  4. 證書有效期:2025-04-18 ~ 2099-12-31
  5. 證書權限:簽發寫信證書
  6. 證書簽名:以上信息哈希摘要后,用大壯的頂級私鑰加密生成的

大強拿著這個中間證書開辦了一家新的證書簽發機構,又可以簽發下級證書了,但是他簽發的下級證書跟大壯簽發的不太一樣,他簽發的證書實際會包含兩個證書,類似以下內容:

=======證書開始=======
1. 中間證書公鑰
2. 證書歸屬者:大強
3. 證書簽發者:大壯
4. 證書有效期:2025-04-18 ~ 2099-12-31
5. 證書權限:簽發寫信證書
6. 證書簽名:以上信息哈希摘要后,用大壯的頂級私鑰加密生成的
=======證書結束==============證書開始=======
1. 寫信公鑰
2. 證書歸屬者:小明
3. 證書簽發者:大強
4. 證書有效期:2025-04-18 ~ 2025-12-31
5. 證書權限:僅用于寫信
6. 證書簽名:以上信息哈希摘要后,用大強的私鑰加密生成的
=======證書結束=======

這回小美收到信,拿到這個證書就需要先校驗最后這個證書,這個證書可信后,根據證書簽發者:大強,找到上級證書再用家里的頂級公鑰校驗這個上級證書,如果也可信,就算是整個證書鏈都可信了。

之所以證書信息里有個證書權限信息,就是為了防止一些只用來寫信的證書,被人拿來簽發下級證書。基于這個原理甚至可以簽發下級中間證書,形成好幾個證書串聯起來的證書鏈。

至此大壯終于可以躺平賺錢了。。。

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

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

相關文章

高級java每日一道面試題-2025年4月13日-微服務篇[Nacos篇]-Nacos如何處理網絡分區情況下的服務可用性問題?

如果有遺漏,評論區告訴我進行補充 面試官: Nacos如何處理網絡分區情況下的服務可用性問題? 我回答: 在討論 Nacos 如何處理網絡分區情況下的服務可用性問題時,我們需要深入理解 CAP 理論以及 Nacos 在這方面的設計選擇。Nacos 允許用戶根據具體的應用…

python解壓文件 zip tar.gz tar.xz

以下代碼為解壓zip包 tar包文件 zip_path:文件絕對路徑 output_folder:文件解壓后存放的文件夾路徑 def extract_file(zip_path, output_folder):# 支持解壓zip tar tar.gz tar.xz .tar.bz2# 確保輸出文件夾存在os.makedirs(output_folder, exist_okT…

網絡基礎(協議,地址,OSI模型、Socket編程......)

目錄 一、計算機網絡發展 二、協議 1.認識協議 2.OSI七層模型 3.TCP/IP 五層(或四層)模型 4.協議本質 三、網絡傳輸流程 1.MAC地址 2.協議棧 3.IP地址 IP地址 vs MAC地址 1. 核心區別 2. 具體通信過程類比 3. 關鍵總結 為什么需要兩者? 4.協議棧圖解…

生成式AI對話中提示詞策略:明確問題、明確目標和提供背景信息是最有效的策略

生成式AI對話中提示詞策略:明確問題、明確目標和提供背景信息是最有效的策略 最有效的提示詞策略包括明確問題、明確目標和提供背景信息。普適性有效提示詞策略可分為三類:明確需求與精確指引型、清晰解釋與邏輯排序型、拆解任務與多樣化表達型。[局限]數據來源于中國用戶,…

AtCoder ABC402 ABCD

A - CBC 把大寫字母按順序連起來 B - Restaurant Queue 一眼隊列,stl模擬就行 C - Dislike Foods 顯然,每次克服暴力枚舉每個菜肴會超時。 然而題目中給了每個菜肴的配菜個數,不妨換過來統計每個配菜用在了哪些菜肴。每次克服時&#x…

Transformer 架構 - 解碼器 (Transformer Architecture - Decoder)

歡迎回到我們的 Transformer 系列教程!在上一篇中,我們詳細探討了 Transformer 的編碼器,它負責將輸入的源序列(比如源語言句子)轉換為一系列包含豐富上下文信息的向量表示。 現在,我們將把目光投向 Transformer 的另一半——解碼器 (Decoder)。解碼器負責接收編碼器的輸…

神經網絡與模型訓練過程筆記

1.專有名詞 ANN 人工神經網絡,一種受生物神經元啟發的監督學習算法。輸入數據通過網絡中的層級函數傳遞,激活特定神經元。函數復雜度越高,模型對數據的擬合能力越強,預測精度越高。 偏置項 其中x下表從1開始的是輸入變量&#xf…

【計算機網絡 | 第二篇】常見的通信協議(一)

HTTP和HTTPS有什么區別? 端口號:HTTP默認是80端口,HTTPS默認是443。 URL前綴:HTTPHTTP 的 URL 前綴是 http://,HTTPS 的 URL 前綴是 https://。 安全性和資源消耗:HTTP協議運行在TCP上,都是明…

【python實用小腳本系列】用 Python 自己手搓一個給視頻“靜音”的小腳本,批量處理,輕松高效制作“無聲電影”!

嘿,小伙伴們!今天我來給大家介紹一個超實用的 Python 小工具——一個能給視頻“靜音”的“聲音消除器”!是不是聽起來很酷?想象一下,你可以把任何有聲視頻變成無聲視頻,是不是很有趣?接下來&…

【gpt生成-總覽】怎樣才算開發了一門編程語言,需要通過什么測試

開發一門真正的編程語言需要經歷完整的設計、實現和驗證過程,并通過系統的測試體系驗證其完備性。以下是分階段開發標準及測試方法: 一、語言開發核心階段 1. 語言規范設計(ISO/IEC 標準級別) ??語法規范??:BNF/…

leetcode222 完全二叉樹的節點個數

完全二叉樹 的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其余每層節點數都達到最大值,并且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層(從第 0 層開始),則該層…

若依集成BladeX單點登錄的令牌管理與api請求流程

目錄 概述系統架構單點登錄流程令牌管理機制接口調用流程關鍵代碼實現數據結構安全性考慮常見問題與解決 概述 本文檔詳細說明若依系統如何實現與BladeX的單點登錄集成,包括令牌管理和接口調用的完整流程。整個集成采用基于OAuth2的授權碼流程,允許用…

《AI大模型應知應會100篇》第27篇:模型溫度參數調節:控制創造性與確定性

第27篇:模型溫度參數調節:控制創造性與確定性 摘要 在大語言模型的使用中,“溫度”(Temperature)是一個關鍵參數,它決定了模型輸出的創造性和確定性之間的平衡。通過調整溫度參數,您可以根據任…

愛普生SG2520VGN差分晶振5G基站的時鐘解決方案

在 5G 通信時代,數據流量呈爆發式增長,5G 基站作為信號的核心中轉樞紐,承載著前所未有的數據傳輸與處理重任。從海量的物聯網設備連接,到高速移動用戶的數據交互,每一個環節都對基站的性能提出了嚴苛要求。而精準穩定的…

GitHub SSH連接終極解決方案

GitHub SSH連接終極解決方案:443端口修改多場景故障排查指南 一、問題現象速查 當開發者執行以下命令時出現連接異常: ssh -T gitgithub.com常見報錯類型: 經典端口阻塞ssh: connect to host github.com port 22: Connection refused密鑰驗…

面向新一代擴展現實(XR)應用的物聯網框架

中文標題: 面向新一代擴展現實(XR)應用的物聯網框架 英文標題: Towards an IoT Framework for the New Generation of XR Applications 作者信息 Joo A. Dias,UNIDCOM - IADE,歐洲大學,里斯本&…

Qt unknown module(s) in qt:serialport解決方法

在Ubuntu和CentOS系統中,若使用Qt時遇到Unknown module(s) in QT: serialport錯誤,通常是由于未正確安裝Qt的串口模塊(QSerialPort)或項目配置不當導致。以下是針對兩種系統的解決方案: 一、安裝Qt串口模塊 1. Ubuntu/Debian系列 安裝開發包: 執行以下命令安裝Qt5串口模…

閥門軸承電動車工件一鍵精修軟件

若需定制開發“ComfyUI意見精修軟件” 技術棧建議: 前端:React/Vue Figma插件API(直接讀取設計稿)。 后端:Node.js/Python NLP庫(spaCy/NLTK)。 數據庫:MongoDB(存儲…

chapter32_SpringMVC與DispatcherServlet

一、簡介 從本章節開始進入SpringMVC的學習,SpringMVC最重要的類就是DispatcherServlet DispatcherServlet的本質是一個Servlet,回顧一下Servlet JavaWeb就是基于Servlet的Servlet接口有5個方法Servlet實現類是HttpServlet,自定義的Servle…

《Learning Langchain》閱讀筆記3-基于 Gemini 的 Langchain如何從LLMs中獲取特定格式

純文本輸出是有用的,但在某些情況下,我們需要 LLM 生成結構化輸出,即以機器可讀格式(如 JSON、XML 或 CSV)或甚至以編程語言(如 Python 或 JavaScript)生成的輸出。當我們打算將該輸出傳遞給其他…