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.mzph.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;让爱与关怀跨越时空限制。 智能宠物监控系统的核心…