【JavaEE】-- HTTPS

文章目錄

  • 1. HTTPS是什么?
  • 2. 加密是什么?
    • 2.1 引入對稱加密(效率高)
    • 2.2 引入非對稱加密(效率低)
    • 2.3 引入證書
      • 2.3.1 數據簽名
      • 2.3.2 通過證書解決中間人攻擊

1. HTTPS是什么?

HTTP也是一個應用層協議,是在HTTP協議基礎上引入了一個加密層。
HTTP協議內容大譜是按照文本的方式明文傳輸的,這就導致在傳輸的過程中會有被纂改的情況。

2. 加密是什么?

加密就是把明文(要傳輸的信息)進行一系列的變換,生成密文。
解密就是把密文再進行一系列的變換,還原成明文。

那么如何對數據進行加密呢?

2.1 引入對稱加密(效率高)

對稱加密就是加密和解密時使用的密鑰時相同的。

使用對稱加密,每個客戶端都生成一個自己的密鑰,這個密鑰就是以后在HTTP通訊中使用的密鑰,那么服務器就需要把客戶端和密鑰的關系維護起來。

客戶端和服務器在第一次建立連接的時候就需要協商出來一個密鑰,在協商密鑰的過程肯定不能以明文傳輸,所以在協商密鑰的時候也需要進行密文傳輸,所以就引入了非對稱加密。

2.2 引入非對稱加密(效率低)

非對稱加密就是使用公鑰加密用私鑰解密;使用私鑰加密用公鑰解密。公鑰加密的密文不能使用公鑰加密;私鑰加密的密文不能使用私鑰解密。

私鑰只保存在服務器,公鑰保存在客戶端。所有的客戶端持有相同的公鑰。

在這里插入圖片描述

在客戶端和服務端協商密鑰時使用非對稱加密進行加密,那么此時客戶端和中間設備都持有公鑰,服務器持有私鑰。協商時,客戶端使用公鑰加密來傳輸協商的密文,此時即便中間設備截胡了信息但是中間設備沒有私鑰,并不能破解,也就拿不到協商的密鑰了。之后被公鑰加密的密鑰傳輸到服務器,服務器使用私鑰進行解密,獲取到了協商的密文,服務器在給客戶端返回響應的時候就會使用密鑰加密要傳輸的數據。

在進行第一次協商正常通訊使用的密鑰時,借助非對稱加密,當正常密鑰協商完成之后,所有的交互都使用對稱加密進行通訊。

即便是這樣,中間設備依舊可以使用一些特殊的手段獲取到密鑰:中間設備可以自己生成一對私鑰和密鑰,中間設備在客戶端向服務器發送連接請求時攔截該請求,阻止其到達真實服務器,中間設備偽裝成服務器把自己偽造的公鑰發送給客戶端。客戶端將自己生成的此后進行通訊的密鑰使用公鑰加密發送給服務器時,中間設備再次進行攔截,此時就可以使用私鑰進行解密,獲取到客戶端和服務器協商的密鑰,然后再假裝若無其事的把破解出來的密鑰使用服務器真實發送的公鑰進行加密發送給服務器,服務器接收到時就察覺不到,依舊使用自己持有的私鑰進行正常解密。

那么此時僅僅引入一個非對稱加密就解決不了被中間設備惡意破解的問題了,此時就又引入了一個驗證公鑰真偽的證書。

2.3 引入證書

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

這個把這個證書理解為一個結構化的字符串,里面包含了一下信息:證書發布機構、證書有效期、公鑰、證書所有者、簽名…

在這里插入圖片描述

2.3.1 數據簽名

簽名的形成是基于非對稱加密算法的,注意,目前暫時和https沒有關系,不要和https中的公鑰私鑰搞混了。

在這里插入圖片描述
當服務端申請CA證書的時候,CA機構會對該服務端進行審核,并專門為該網站形成數字簽名,過程如下:

  1. CA機構擁有非對稱加密的私鑰A和公鑰A’
  2. CA機構對服務端申請的證書明文數據進行hash(使用MD5算法等),形成數據摘要(是一個字符串)。
  3. 然后對數據摘要用CA私鑰A’加密,得到數字簽名S服務端申請的證書明文和數字簽名S共同組成了數字證書,這樣一份數字證書就可以頒發給服務端了。

為什么數據摘要在網絡傳輸的時候一定要使用私鑰加密形成數字簽名呢?
常見的數據摘要算法有:MD5、SHA系列。
以MD5為例,我們不需要研究具體的計算簽名的過程,只需要了解MD5的特點:

  1. 定長。無論多長的字符串,計算出來的MD5值都是固定的長度(16字節版本或32字節版本)。
  2. 分散。源字符串只要改變一點點,最終得到的MD5值都會差別很大。
  3. 不可逆。通過源字符串生成MD5 很容易,但是通過MD5 還原成源字符串理論上不可能的。
    正因為MD5有這樣的特性,我們可以認為:如果兩個字符串的MD5 值相同,則認為這兩個字符串相同。
    此時,如果中間設備把內容進行修改并重新hash,客戶端就分辨不出來了,所以被傳輸的哈希值不能傳輸明文,需要傳輸密文。所以CA使用自己的私鑰加密形成數字簽名,將證書內容和加密的數字簽名合起來形成證書,辦法給服務器,當客戶端請求時就發給客戶端,中間人沒有CA私鑰,就無法更改或者整體掉包,就能保證安全。最后,客戶端通過操作系統中已經存了的證書發布機構的公鑰進行解密,還原出原始的哈希值,再進行校驗。

中間人有沒有可能纂改該證書?
即便中間人纂改了該證書,由于他沒有CA機構的私鑰,所以無法hash之后用私鑰加密形成簽名,那么也就沒辦法對纂改之后的證書形成匹配的簽名。如果強行進行纂改的化,客戶端收到該證書后會發現明文和簽名解密后的值不一致,則說明證書已經被纂改,證書不可信,從而終止向服務器傳輸信息,防止信息泄露給中間人。

有沒有可能中間人直接掉包整個證書?
因為中間人沒有CA私鑰,所以無法制作假的證書,所以中間人只能向CA申請真證書,然后用自己申請的證書進行掉包,這個確實能夠做到證書的整體掉包,但是證書明文中包含了域名等服務端認證信息,如果整體掉包,客戶端依舊能夠識別出來。

為什么簽名不直接進行加密,而是要先hash形成摘要?
縮小簽名密文的長度,加快數字簽名的驗證簽名的運算速度。

2.3.2 通過證書解決中間人攻擊

在客戶端和服務端剛建立連接的時候,服務器就給服務端返回一個證書,這個證書包含了公鑰,也包含了網站的身份信息。

在這里插入圖片描述
當客戶端獲取到這個證書之后,會對證書進行校驗(防止證書是偽造的)。

  1. 判定證書的有效期是否過期。
  2. 判斷證書的發布機構是的受信任。
  3. 驗證證書是否被纂改:從系統中拿到該證書發布機構的公鑰,對簽名進行解密

在這里插入圖片描述

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

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

相關文章

撰寫腳本,通過發布/joint_states話題改變機器人在Rviz中的關節角度

撰寫腳本,通過發布/joint_states話題改變機器人在Rviz中的關節角度 提問 為我寫一個改變關節base_spherical_center_high_joint角度的python腳本吧。適用于ROS2的humble 回答 下面是一個適用于 ROS 2 Humble 的 Python 腳本,它會以指定頻率持續發布 …

Redis : Hash類型

哈希類型 哈希類型的命令 hset 設置key指定的字段(field)的值(value) 也可以設置多組field和value hget 獲得哈希中指定字段的值 如果該字段為空或者key為空則返回nil hexists 判斷哈希中是否有該字段的值 如果有則會返回1…

【Chipyard】 conda 環境安裝與使用

一、Conda 安裝(以 Miniconda 為例) Conda 是一個強大的環境管理工具,可用于創建、隔離和管理不同的 Python/R 環境。以下是在 Ubuntu 上安裝和使用的完整流程: 1. 下載 Miniconda 安裝包 bash # 下載最新版 Miniconda3&#…

【愚公系列】《生產線數字化設計與仿真》009-顏色分類站仿真(設置顏色分類站的仿真序列)

🌟【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】🌟 📣開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! &#x1f…

ios 26官宣:car play升級提升車載體驗

蘋果公司正式官宣推出ios 26,該版本為ios 18的后續版本。此次軟件更新在命名上煥然一新,設計層面更是實現了全面革新。其中,car play界面迎來全新升級,同時還新增了car play ultra功能。借助這一功能,用戶不僅能夠使用…

Mac 上使用 mysql -u root -p 命令,出現“zsh: command not found: mysql“?如何解決

一、確定 MySQL 安裝路徑: 如果你是使用 Homebrew 安裝的 MySQL,通常安裝路徑是 /usr/local/mysql/bin 如果你是通過官方 DMG 安裝包安裝的 MySQL,默認安裝路徑可能是 /usr/local/mysql/bin 你可以在終端中使用以下命令來查找 MySQL 的安裝…

微軟PowerBI考試 PL300-使用適用于 Power BI 的 Copilot 創建交互式報表

微軟PowerBI考試 PL300-使用適用于 Power BI 的 Copilot 創建交互式報表 Microsoft Power BI 可幫助您通過交互式報表準備數據并對數據進行可視化。 如果您是 Power BI 的新用戶,可能很難知道從哪里開始,并且創建報表可能很耗時。 通過適用于 Power BI …

Android11三網共存

一、優先級基本知識介紹 Android6.0之后系統中優先級設置都是根據Score分值來設置優先級,分值0-100,數值越高,越優先。 SIM卡網絡 50 wifi網絡 60 有線網絡 70手機網絡設置都有自己的Factory設置類,都繼承自NetworkFactory.j…

【散刷】二叉樹基礎OJ題(三)

📝前言說明: 本專欄主要記錄本人的基礎算法學習以及刷題記錄,使用語言為C。 每道題我會給出LeetCode上的題號(如果有題號),題目,以及最后通過的代碼。沒有題號的題目大多來自牛客網。對于題目的…

什么是數據交換?有哪些數據交換方式?

目錄 一、數據交換是什么 二、數據交換面臨的挑戰 1. 數據格式差異 2. 數據標準不統一 3. 安全與隱私問題 4. 網絡與性能問題 三、常見的數據交換方式 1. 文件交換 2. 數據庫直連 3. 中間件交換 4. API接口交換 四、數據交換的發展趨勢 1. 實時性要求提高 2. 標準…

C#winform畫圖代碼記錄

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 坐標變換 {public partial class Fo…

python打卡day50

import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt import numpy as np# 定義通道注意力 class ChannelAttention(nn.Module):def __i…

Go語言多線程問題

打印零與奇偶數(leetcode 1116) 方法1:使用互斥鎖和條件變量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…

ateⅹⅰt()的用法

在C/C++中, atexit() 函數用于注冊程序退出時需要調用的函數,即使程序通過 main() 函數返回、 exit() 函數退出或異常終止,這些注冊的函數也會被執行。以下是其詳細用法: 1. 函數原型與頭文件 #include <cstdlib> // C++中需包含此頭文件 int atexit(void (*functio…

【大模型】 使用llama.cpp 進行模型轉換和量化

目錄 1 相關知識 ■llama.cpp ■GGUF 格式 ■量化 2 詳細步驟 克隆 llama.cpp 倉庫 安裝依賴 配置 CMake 構建 構建項目 驗證安裝 轉換 safetensors 為 FP16 GGUF 量化模型 (Q4_K_M) 測試量化模型 1 相關知識 ■llama.cpp llama.cpp是一個開源的 C/C++ 庫,旨…

大數據學習(133)-Hive數據分析2

????&#x1f34b;&#x1f34b;大數據學習&#x1f34b;&#x1f34b; &#x1f525;系列專欄&#xff1a; &#x1f451;哲學語錄: 用力所能及&#xff0c;改變世界。 &#x1f496;如果覺得博主的文章還不錯的話&#xff0c;請點贊&#x1f44d;收藏??留言&#x1f4…

IDEA 連接 Docker 一鍵打鏡像

首先&#xff0c;檢查 IDEA 是否安裝了 Docker 插件&#xff1a; 版本比較新的 IDEA 默認都安裝了這個插件&#xff0c;如果沒有安裝&#xff0c;安裝一下。 確保我們虛擬機上安裝了 Docker 和 Docker-compose&#xff0c;并啟動了 Docker。 找到 IDEA 下方的 Services tab 欄…

第六講——一元函數微分學的應用之中值定理、微分等式與微分不等式

文章目錄 連續函數性質定理定理1 有界與最值定理定理2 介值定理定理3 平均值定理定理4 零點定理定理5 費馬定理導數介值定理(達布定理) 中值定理羅爾定理拉格朗日中值定理柯西中值定理泰勒公式 討論方程的根問題——微分等式證明不等式問題使用函數的性質(單調性、凹凸性、最值…

2025.06.11【Ribo-seq】|用CPAT預測sORF序列的編碼潛能

文章目錄 前言一、準備工作1. 安裝CPAT2. 下載物種特異性模型 二、準備sORF核酸序列1. 獲取sORF的拼接核酸序列示例腳本&#xff08;假設已獲得外顯子fasta&#xff09;&#xff1a; 三、運行CPAT預測編碼潛能1. 準備CPAT模型和hexamer表2. 運行CPAT 四、結果解讀五、常見問題與…

Hive面試題匯總

一、hive架構相關 遇到這類問題&#xff0c;可以靈活的去回答&#xff0c;比如可以結合平時使用hive的經驗作答&#xff0c;也可以結合下圖從數據的讀入、解析、元數據的管理&#xff0c;數據的存儲等角度回答&#xff1a; 二、hive的特點 本題主要為了考察對hive的整體使用…