HTTP學習——————(四)TLS等加密算法

前文學習:
一、二、三
學習來源網站 :
極客時間

TLS

目的:身份驗證、保密性、完整性

解決問題:
Record記錄協議——對稱加密
Handshake握手協議———1.驗證通訊雙方身份 2.交換加解密安全套件 3.協商加密參數
在這里插入圖片描述

有密鑰交換算法、身份驗證算法、對稱加密算法-強度-工作模式、簽名hash算法

對稱加密算法

在這里插入圖片描述

原理:對稱加密之所以能實現一把密鑰既能實現加密也能實現解密,是因為XOR異或運算(不同為1相同為0)這種運算速度很快。
這就要求密鑰和明文長度需要一至所以需要使用padding(填充)——Block cipher分組加密:將明文分為多個等長的Block模塊,對每 個模塊分別加解密,因此最后一個明文Block模塊長度不足時,需要填充
填充方式:位填充:以Bit位為單位填充/字節填充:以字節為單位填充

分組工作模式

允許使用同一個分組密碼密鑰對多于一塊的數據進行加密,并且保證其安全性

ECB模式:直接將明文分解為多塊,對每個快獨立加密————無法隱藏數據特征
CBC模式:每個明文塊與前一個密文進行異或后,再進行加密————加密過程串行化(多個CPU無法同時進行)
CTR模式:通過遞增一個加密計數器已產生連續的密鑰流————不能提供密文消息完整性校驗,所以需要利用hash函數去檢驗完整性

hash函數
不同的輸入經過hash函數之后會得到不同的值(這些值都是較短的、很難相同)
所以能利用消息中的MAC(Hash之后的值)去驗證完整性————即傳送方通過Hash算法將消息轉化為MAC值通過密鑰的異或操作生成最終MAC,傳送給接收方不僅有消息還有最終MAC值,接收方通過密鑰和傳輸過來的消息進行相同操作對比傳輸過來的MAC和生成的MAC是否相同即可。

AES加密算法

是比利時密碼學所設計,又稱Rijndael加密算法
填充算法:PKCS7
常用分組工作模式:GCM

步驟:
把明文按照128bit(16字節)拆分成若干明文塊,每個明文塊是4*4矩陣
按照選擇的填充方式來填充最后一個明文塊
每一個明文塊利用AED加密器和密鑰,加密成密文塊
拼接所有的密文塊,成為最終的密文結果

十輪加密
分為三類:
在這里插入圖片描述

1.初始輪
AddRoundKey 輪密鑰加
2.普通輪
AddRoundKey 輪密鑰加
SubBytes 字節替代
ShiftRows 行移位
MixColumns 列混合
3.最終輪
SubBytes 字節代替
ShiftRows 行移位
AddRoundKey 輪密鑰加

詳細解讀里面的加密
AddRoundKey 步驟:
矩陣中的每一個字節都與該次回合密鑰做XOR運算;每個子密鑰由密鑰生成方案產生
在這里插入圖片描述

密鑰K是經過密鑰擴展算法,密鑰擴展就是把我們每一輪的密鑰所使用的密鑰擴展成為下一輪使用的密鑰
,比如說先把每4個字節構成一個字,把它構成一個4字節的數組再基于G函數和異或生成下一輪密鑰。
在這里插入圖片描述

SubBytes 步驟
透過一個非線性的替換函數,用查找表的方式把每個字節都替換成對應的字節
避免了簡單代數性質的攻擊,即提供一個S沙盒,將a每個都通過S找到索引值放入SubBytes后替換
S盒子就是一個二維表格,有行和列
在這里插入圖片描述

ShiftRows 步驟
把矩陣中的每個橫列進行循環式移位
第一行不變,第二行循環左移1個字節,第三行循環左移2個字節,第四行循環左移3個字節

MixColumns 步驟
將左邊行舉證和列出的另一個矩陣進行相乘的出另一個矩陣

解密反之

非對稱加密

每個參與方都有一對密鑰
公鑰——向對方公開
私鑰——僅自己使用

RSA算法公私鑰產生——隨機選擇兩個不相等的質數p和q
計算p和q的乘機n(明文小于n)
計算n的歐拉函數v=x(n)
隨機選擇一個整數k
1<k<v且k與v互為質數
計算k對于v的模反元素d
公鑰:(k,n)
私鑰:(d,n)

openssl

openssl genrsa -out 導出文件 生成私鑰
openssl rsa -in 導出文件 -pubout -out 公鑰生成 生成公鑰

所以使用公鑰去加密、私鑰去解密
openssl rsautl -encrypt -in 需要加密文件 -inkey 公鑰 -out 到處加密后的文件
私鑰解密
openssl rsautl -decrypt -in 加密后的文件 -inkey 私鑰 -out 解密后的文件

非對成加密應用:數字簽名
基于私鑰加密,只能使用公鑰解密:起到身份認證的作用

公鑰管理:Public Key Infrastructure (PKI)公鑰基礎設施
由CA數字證書認證機構將用戶個人身份與公開密鑰關聯在一起
公鑰數字證書組成:CA信息、公鑰用戶信息、公鑰、權威機構的簽字、有效期——因為用戶通過私鑰加密所以就知道是誰發出來的,一查CA機構就知道了
PKI用戶——向CA注冊公鑰的用戶、希望使用已注冊用戶

簽名與驗簽流程
在這里插入圖片描述

現將用戶個人信息Data利用Hash函數進行加密生成Hash值,再把Hash值利用CA機構的私鑰進行加密的到秘文,再把秘文、用戶信息、證書、網站的公鑰打包為證書
驗簽過程 把證書提取出兩部分,一為原始數據和用戶信息,將這個使用hash加密后的到一個值。第二個為證書傳過來的已經公鑰加密的值,讓他使用CA機構的私鑰去解密確認他的信用
如果這兩個相同那就是可信任網站

DH密鑰交換協議

前向保密性:前向保密性保證了過去的通信即使在將來密鑰泄露的情況下仍然是安全的。
可以讓雙方在完全沒有任何預先信息的條件下通過不安全信道創建起一個密鑰。
首先客戶端發送請求給服務端,服務端生成一對密鑰1,公鑰1返回給客戶端,私鑰留給自己。然后客戶端再生成一對密鑰2,私鑰2依舊留給自己公鑰2給服務端,之后這兩種密鑰通過通過一種算法組成的就是完全,這就是對稱加密算法的交換性。
如果存在中間人偽造攻擊就可以使用身份驗證去解決這個問題

TLS運作方式

客戶端發送請求尋找安全套件,服務端選擇安全套件并且發送證書和DH加密后的公鑰同時返回給客戶端。同時客戶端返回一個公鑰給服務器,兩邊同時證書交換
在這里插入圖片描述

TLS1.3
只需要1次RTT就可以完成了
在這里插入圖片描述

Session緩存的手段減少RTT次數,因為服務器存儲的有sessionID并且沒有過期,那么就可以繼續使用上次點的加密密鑰,這樣就可減少傳輸密鑰所需要的RTT時間
問題:多個服務器如何共享SessionID,以及SessionId存放的時間應該是多久呢
解決辦法:Session ticket
每臺session中不再需要存放session的信息,而是基于獨有的密碼(整個服務器分享的密碼)
客戶端基于Session ticker加密后發給服務器集群,服務器是共享這個密碼的解密后就獲取上次連接后的密鑰就可以繼續使用上次連接的密鑰

重放攻擊:中間惡意服務器利用原本正確的報文重新發給對應的服務器,從而改變服務器狀態————解決辦法協定過期時間

量子通訊協議

OTP的絕對安全性:
密鑰隨機生成、密鑰的長度大于明文長度、相同的密鑰只能使用一次

如何傳遞密鑰————QKD量子密鑰分發
基于量子力學中:任何對量子系統的測量都會對系統產生干擾
QKD:如果有第三方試圖竊聽密碼,則通信雙方便會察覺

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

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

相關文章

FastExcel vs EasyExcel vs Apache POI:三者的全面對比分析

一、核心定位與歷史沿革 Apache POI&#xff08;1990s-&#xff09; 作為Java生態中最古老的Excel處理庫&#xff0c;提供對.xls/.xlsx文件的全功能支持。其核心價值在于對Excel規范的完整實現&#xff0c;包括單元格樣式、公式計算、圖表操作等深度功能。但存在內存消耗大&…

辛格迪客戶案例 | 鼎康生物電子合約系統(eSign)項目

01 案例企業 鼎康(武漢)生物醫藥有限公司于2013年06月19日成立 &#xff0c;是一家總部位于湖北武漢的CDMO公司&#xff0c;堅持以客戶為中心&#xff0c;以及時、經濟和高質量為服務導向。鼎康生物擁有先進的150,000平方英尺的生產廠房&#xff0c;生產設施位于中國武漢的Bio…

multer 依賴詳解

multer 是一個用于處理 multipart/form-data 類型表單數據的 Node.js 中間件&#xff0c;主要用于文件上傳。它基于 busboy 構建&#xff0c;使用起來非常方便。 一、安裝 npm install multer 二、基本使用 const express require("express");const multer req…

點云配準技術的演進與前沿探索:從傳統算法到深度學習融合(4)

4、點云配準面臨的挑戰與應對策略 4.1 點云配準面臨的主要挑戰 在點云配準的實際應用中&#xff0c;盡管已經取得了顯著的研究成果&#xff0c;但仍然面臨著諸多復雜而嚴峻的挑戰&#xff0c;這些挑戰嚴重制約了點云配準技術在更多領域的廣泛應用和深入發展。 在自動駕駛場景…

PostgreSQL10 物理流復制實戰:構建高可用數據庫架構!

背景 PostgreSQL 10 在高可用架構中提供了物理復制&#xff0c;也稱為流復制&#xff08;Streaming Replication&#xff09;&#xff0c;用于實現實例級別的數據同步。PostgreSQL 復制機制主要包括物理復制和邏輯復制&#xff1a;物理復制依賴 WAL 日志進行物理塊級別的同步&…

?算法OJ?位操作實戰【計數】(C++ 實現)

191. Number of 1 Bits Given a positive integer n, write a function that returns the number of set bits in its binary representation (also known as the Hamming weight). int hammingWeight(uint32_t n) {int count 0;while (n) {count n & 1; // 檢查最低位…

從二維隨機變量到多維隨機變量

二維隨機變量 設 X X X和 Y Y Y是定義在同一樣本空間 Ω \varOmega Ω上的兩個隨機變量&#xff0c;稱由它們組成的向量 ( X , Y ) (X, Y) (X,Y)為二維隨機變量&#xff0c;亦稱為二維隨機向量&#xff0c;其中稱 X X X和 Y Y Y是二維隨機變量的分量。 采用多個隨機變量去描述…

RabbitMQ系列(一)架構解析

RabbitMQ 架構解析 RabbitMQ 是一個基于 AMQP 協議的開源消息中間件&#xff0c;其核心架構通過多組件協作實現高效、可靠的消息傳遞。以下是其核心組件與協作流程的詳細說明&#xff1a; 一、核心組件與功能 Broker&#xff08;消息代理服務器&#xff09; RabbitMQ 服務端核…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_list_init

ngx_list_init 定義在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…

Linux切換Python版本

1、更新apt sudo apt update2、查詢python安裝路徑 which python 或者which python33、查詢安裝版本 # 查看所有以 "python" 開頭的命令&#xff08;包括版本號&#xff09; ls -l 安裝路徑* 例如 ls -l /usr/bin/python*4、修改軟連接 udo unlink /usr/bin/pyt…

Spring Cloud之注冊中心之Nacos的使用

目錄 Naacos 服務注冊/服務發現 引?Spring Cloud Alibaba依賴 引入Nacos依賴 引入Load Balance依賴 配置Nacos地址 服務端調用 啟動服務 Naacos Nacos是Spring Cloud Alibaba的組件, Spring Cloud Alibaba遵循Spring Cloud中定義的服務注冊, 服務發現規范. 因此使?Na…

使用通義萬相Wan2.1進行視頻生成

使用通義萬相Wan2.1進行視頻生成 源代碼準備運行環境準備創建Python虛擬環境并激活安裝依賴包 模型下載生成視頻官網的視頻生成例子簡單描述場景視頻生成示例詳細描述場景視頻生成示例 最近通義萬相開源了其視頻生成模型。模型有兩個版本&#xff0c;一個是1.3B的&#xff0c;一…

鴻蒙HarmonyOS 開發簡介

鴻蒙開發入門教程 一、技術簡介 鴻蒙操作系統&#xff08;HarmonyOS&#xff09;是面向萬物互聯時代的全場景分布式操作系統&#xff0c;具備分布式軟總線、分布式數據管理、分布式任務調度等核心能力&#xff0c;能讓設備間實現無縫連接與協同&#xff0c;為用戶提供統一、流…

docker和containerd從TLS harbor拉取鏡像

私有鏡像倉庫配置了自簽名證書&#xff0c;https訪問&#xff0c;好處是不需要處理免費證書和付費證書帶來的證書文件變更&#xff0c;證書文件變更后需要重啟服務&#xff0c;自簽名證書需要將一套客戶端證書存放在/etc/docker/cert.d目錄下&#xff0c;或者/etc/containerd/c…

linux ununtu通過nginx-1.6.2.tar.gz安裝nginx并安裝在自定義目錄XXX下 的步驟

Ubuntu 下通過源碼安裝 Nginx 1.6.2 到自定義目錄 /home/aot/nginx 的步驟 以下是將 Nginx 1.6.2 源碼包離線安裝到自定義目錄的詳細流程&#xff0c;包含依賴管理、編譯配置和服務管理&#xff1a; 一、準備工作 1. 下載源碼包和依賴&#xff08;需聯網環境準備&#xff09;…

C++ 變量的輸入輸出教程

一、變量的基本概念 在 C 中&#xff0c;變量是用于存儲數據的命名內存位置。在使用變量之前&#xff0c;需要先聲明它的類型和名稱&#xff0c;這樣編譯器才能為其分配適當大小的內存空間。例如&#xff1a; int age; // 聲明一個整型變量 age double salary; // 聲明一個…

React底層常見的設計模式

在React中&#xff0c;常見的設計模式為開發者提供了結構化和可重用的解決方案&#xff0c;有助于提高代碼的可維護性和可擴展性。以下是對React中幾種常見設計模式的詳細解析&#xff0c;并附上示例代碼和注釋&#xff1a; 1. 容器組件與展示組件模式&#xff08;Container/P…

【MATLAB例程】三維下的IMM(交互式多模型),模型使用CV(勻速)和CA(勻加速)

給出三維下的交互式多模型&#xff08;IMM&#xff09;matlab例程&#xff0c;模型使用勻速運動CV和勻加速運動CA&#xff0c;濾波使用EKF&#xff08;擴展卡爾曼濾波&#xff09; 文章目錄 代碼運行結果程序結構 代碼講解模型定義&#xff1a;軌跡生成&#xff1a;IMM核心流程…

物理內存組織與分配的核心概念

在 Linux 內核內存管理&#xff08;尤其是 Buddy System 伙伴系統&#xff09;中&#xff0c;node、zone、type 和 order 是描述物理內存組織與分配的核心概念。以下是它們的詳細解釋&#xff1a; 1. Node&#xff08;NUMA 節點&#xff09; 定義&#xff1a; 在 NUMA&#xf…

智科技賦能寵物關懷新時代

在科技日新月異的今天&#xff0c;智能寵物監控技術正悄然引領寵物護理領域的新變革。借助尖端的傳感器技術、高清攝像頭以及強大的數據分析能力&#xff0c;這些智能系統為寵物主人開辟了前所未有的寵物關懷途徑&#xff0c;讓愛與關懷跨越時空限制。 智能寵物監控系統的核心…