【Linux后端服务器开发】HTTPS协议

目录

一、加密算法

二、中间人攻击

三、CA认证


一、加密算法

HTTPS协议是什么?HTTPS协议也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。

HTTP协议内容是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。

什么是加密?加密就是把明文(需要传输的内容)进行一系列变换,生成密文。解密就是加密的逆过程,将密文还原成明文。

在这个加密和解密的过程中,往往需要一个或多个中间的数据,辅助进行这个过程,这样的数据称为密钥。

对称加密

  • 采用单密钥的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称作对称加密,也称单密钥加密
  • 特点:算法公开、计算量小、安全性低、加密速度快

非对称加密

  • 需要两个密钥来进行加密和解密,这两个密钥是公钥(public key)和私钥(private key)
  • 通过公钥对明文加密,变成密文;通过私钥对密文解密,得到明文,公钥和私钥可以反着用
  • 特点:算法复杂、安全性较高、加密速度较低

对称加密&&非对称加密

由于对称加密存在密钥易泄漏问题,非对称加密存在加密效率低的问题,我们可以使用非对称加密完成服务器公钥的传递,通过服务器的公钥形成密钥再进行对称加密传输数据。

表面上看对称加密&&非对称加密的组合使用解决了安全性和效率性的问题,但是依然存在被中间人攻击的风险。

二、中间人攻击

中间人攻击 (Man-in-the-MiddleAttack),简称MITM攻击

  1. 服务器有非对称密钥的公钥S、私钥S'
  2. 中间人有非对称密钥的公钥M、私钥M'
  3. 客户端向服务器发送公钥请求,服务器明文传送公钥给客户端
  4. 中间人劫持数据报文,提取S并保存好,然后将被劫持报文中的公钥S替换成自己的公钥M,并将伪造报文发送客户端
  5. 客户端收到报文,提取公钥M(客户端不知道服务器的公钥S已经被换过了),自己形成对称密钥C,用公钥M加密得到密文X,形成报文发送给服务器
  6. 中间人再次劫持后得到密文X,直接用自己的私钥M'进行解密,得到密钥C,再用自己之前保存的服务器公钥S加密C,得到密文Y,再将报文推送给服务器
  7. 服务器拿到密文Y,用私钥S'解密,得到通信密钥C
  8. 双方开始采用对称密钥C进行对称加密通信,但是一切都在中间人的掌握中,劫持数据、进行切图或者篡改数据......

三、CA认证

服务端在使用HTTPS之前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性

CA证书可以理解为一个结构化的字符串,里面包含的信息是:证书发布机构、证书有效期、公钥、证书所有者、签名......

当服务端申请CA证书的时候,CA机构会对服务端进行审核,并专门为该网站形成数字签名,过程如下:

  1. CA机构拥有非对称加密的公钥A和私钥A'
  2. CA机构对服务端申请的证书明文数据进行hash,形成数据摘要
  3. CA机构最后对数据摘要用私钥A'加密,得到数字签名S

服务端申请的证书明文和数字签名S共同组成了数字证书,这样的一份数字证书就可以发送给服务端了

数据摘要&&数据指纹

  • 数字指纹(数据摘要),其基本原理是利用单向散列Hash函数对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
  • 特点:和加密算法的区别是摘要严格意义上不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比

数字签名

摘要经过加密,就得到数字签名,签名的形成是基于非对称加密算法的

数字签名的本质是为了防篡改,保证服务器公钥的合法性

非对称加密&&对称加密&&证书认证

在客户端和服务器刚建立连接的时候,服务器给客户端返回一个证书,证书包含了之前服务器的公钥,也包含了网站的身份信息

 

客户端获取到这个证书的时候,会对证书进行校验:

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置受信任的证书发布机构)
  • 验证证书是否被篡改(从系统中拿到该证书发布机构的公钥,对签名解密,得到一个hash值,称为数字摘要,设为hash1,然后计算整个证书明文信息的hash值,设为hash2,对比hash1和hash2是否相等,如果相等则证明证书是没有被篡改过的) 

HTTPS工作过程中涉及到的密钥有三组:

  • 第一组(非对称加密):用于校验证书是否合法
  • 第二组(非对称加密):用于协商生成对称加密的密钥
  • 第三组(对称加密):客户端和服务器的数据通信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vray GPU渲染如何设置?最适合 VRay 渲染的 GPU 是什么?

Chaos 提供的 Vray GPU是一个独立的渲染引擎,提供 GPU 硬件加速。它还与 CPU(处理器)配合使用,并利用 CPU 和 GPU 硬件进行无缝混合渲染。 GPU 渲染使 Vray GPU 渲染引擎能够在系统的 GPU 而不是 CPU 上执行光线跟踪计算。由于 G…

STM32MP157驱动开发——按键驱动(阻塞与非阻塞)

“阻塞与非阻塞 ”机制: 阻塞: 使用 休眠唤醒机制,read函数会休眠,是阻塞的使用 poll 时,如果传入的超时时间不为 0,表示 read函数会休眠,这种访问方法也是阻塞的。 非阻塞 使用 poll 时&am…

解析数据可视化工具:如何选择最合适的软件

在当今信息爆炸的时代,数据已成为各行各业的重要资源。为了更好地理解和分析数据,数据可视化成为一种必不可少的工具。市面上数据可视化工具不说上千也有上百,什么帆软、powerbi、把阿里datav,腾讯云图、山海鲸可视化等等等等&…

N位分频器的实现

N位分频器的实现 一、 目的 使用verilog实现n位的分频器,可以是偶数,也可以是奇数 二、 原理 FPGA中n位分频器的工作原理可以简要概括为: 分频器的作用是将输入时钟频率分频,输出低于输入时钟频率的时钟信号。n位分频器可以将输入时钟频率分频2^n倍…

redis中缓存雪崩,缓存穿透,缓存击穿的原因以及解决方案

一 redis的缓存雪崩 1.1 缓存雪崩 在redis中,新,旧数据交替时候,旧数据进行了删除,新数据没有更新过来,造成在高并发环境下,大量请求查询redis没有数据,直接查询mysql,造成mysql的…

算法竞赛入门【码蹄集新手村600题】(MT1040-1060)

算法竞赛入门【码蹄集新手村600题】(MT1040-1060) 目录MT1041 求圆面积和周长MT1042 求矩形的面积和周长MT1043 椭圆计算MT1044 三角形面积MT1045 平行四边形MT1046 菱形MT1047 梯形MT1048 扇形面积MT1049 三角形坐标MT1050 空间三角形MT1051 四边形坐标MT1052 直角…

LabVIEW使用支持向量机对脑磁共振成像进行图像分类

LabVIEW使用支持向量机对脑磁共振成像进行图像分类 医学成像是用于创建人体解剖学图像以进行临床研究、诊断和治疗的技术和过程。它现在是医疗技术发展最快的领域之一。通常用于获得医学图像的方式是X射线,计算机断层扫描(CT),磁…

Python基于PyTorch实现循环神经网络回归模型(LSTM回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 LSTM网络是目前更加通用的循环神经网络结构,全称为Long Short-Term Memory,翻…

全志F1C200S嵌入式驱动开发(spi-nor驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和v3s一样,f1c200s本身也支持spi-nor flash。当然,不管是norflash,还是nandflash,都是为了能够让程序脱离sd卡,直接依靠板子上面的flash,就可以完成正常地加载和运行工作。tf…

flutter开发实战-jsontodart及 生成Dart Model类

flutter开发实战-jsontodart及 生成Dart Model类。 在开发中,经常遇到请求的数据Json需要转换成model类。这里记录一下Jsontodart生成Dart Model类的方案。 一、JSON生成Dart Model类 在开发中经常用到将json转成map或者list。通过json.decode() 可以方便 JSON 字…

华为数通HCIP-BGP基础

AS(自治系统/路由域) 定义:运行相同路由协议,具有相同管理规则的区域(一般为一个企业网); 指具有相同路由管理策略的区域合集,一般为一个园区网; 标识:…

制作一个简易的计算器app

1、Ui开发 笔者的Ui制作的制作的比较麻烦仅供参考,在这里使用了多个LinearLayout对屏幕进行了划分。不建议大家这样做最好使用GridLayout会更加快捷简单 笔者大致划分是这样的: 使用了四个大框,在第四个大框里面有多个小框 最终界面如下&am…

机器学习 day31(baseline)

语音识别的Jtrain、Jcv和人工误差 对于逻辑回归问题,Jtrain和Jcv可以用分类错误的比例,这一方式来代替单单只看Jtrain,不好区分是否高偏差。可以再计算人类识别误差,即人工误差,作为基准线Jtrain与baseline对比只高了…

鸿合一体机怎么系统还原

系统还原方法:先用牙签按住电脑还原按钮不松,然后按一下电源按钮开机,直到电脑进入系统还原画面,就可以松开还原按钮了,系统还原完成后会自动重启,重启完成就可以用了。

YOLOv7改进:CVPR 2023 | SCConv: 即插即用的空间和通道重建卷积

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 2.涨点效果:添加 SCConv,经过测试,有效涨点。…

UE5 用DLL文件制作第三方插件

本篇博文介绍了,如果在UE 中如何使用第三方库,及制作成插件的方法。 DLL 文件是上篇文章中创键的具体的方法见上篇文章。下面开始介绍方法 首先,创建一个空白的 UE5 C 项目,然后再创建一个空白内容的插件,如下图所示 …

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)六:后台主页功能实现下

一、本章内容 接上一章,继续实现后端主页内容,主要实现工具栏对应相关内容的实现,包括系统消息、系统公告、全屏切换、语言切换、主题切换等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 基于VUE3+Layui从头搭建通用后台管理系统合集…

微服务学习笔记-----Nacos安装教程(Windows和Linux版本)

Nacos安装教程 Nacos安装指南1.Windows安装1.1.下载安装包1.2.解压1.3.端口配置1.4.启动1.5.访问 2.Linux安装2.1.安装JDK2.2.上传安装包2.3.解压2.4.端口配置2.5.启动 3.Nacos的依赖 Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的Git…

ClickHouse(一):ClickHouse介绍及OLAP场景特征

目录 1. ClickHouse与其特性 ​​​​​​​2. 什么是ClickHouse ​​​​​​​3. OLAP场景的特征 进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! ​​​​​​​1. ClickHouse与其特性 …

Spring Cloud Eureka 服务发现速度慢配置优化总结

文章目录 一、 Eureka-server 服务端缓存问题1.1 服务端缓存1.2 客户端从服务端获取实例数据的过程1.3 优化 二、客户端 Eureka-client 缓存导致2.1 Eureka客户端和服务端交互缓存2.2 Ribbon 缓存了EurekaClient的缓存2.3 优化 使用Eureka时,常常会发现服务发现慢&a…