HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS

这里是Themberfue

✨上节课我们聊到了对称加密和非对称加密,实际上,单纯地非对称加密并不能保证数据不被窃取,我们还需要一个更加重要的东西——证书 


中间人攻击 

  • 通过非对称加密生成私钥priKey和公钥pubKey用来加密对称加密生成的密钥,确实可以有效的对数据的传输进行保护,但其中还存在一个非常严重的漏洞。
  • ✨中间人攻击(Man-In-The-Middle Attack,MITM) 是一种网络攻击形式,攻击者通过拦截和篡改两方通信内容,冒充通信的某一方与另一方对话,从而获取敏感信息或进行恶意操作。整个过程通常对通信双方是不可见的,因此具有很大的隐蔽性。
  • 中间人攻击通常冒充双方之一:假装是服务器与客户端通信、假装是客户端与服务器通信,攻击者在通信中插入、修改或窃取数据,而通信双方误以为彼此直接对话。
  • 中间人攻击的常见手段有很多种,这里我们只讲其中的一种:通过特殊手段拿到加密的密钥。
  • ✨客户端服务端通信前,客户端向服务端请求获得 公钥pub1,服务端接受请求返回 公钥pub1,此时黑客拦截到响应,但黑客自己又生成了一对 公钥pub2 和 私钥pri2,黑客伪造响应数据包将 公钥pub2 返回客户端,客户端没有能力辨别该公钥的真假,便直接拿来用了,随后将客户端生成的 密钥key 使用 公钥pub2 进行加密,随后再度发送请求给服务端,此时又被黑客拦截了,黑客将使用 私钥pri2 对通过 公钥pub2 加密的 密钥 key 进行解密,从而得到 密钥key,随后再使用 公钥pub1 再度对该 密钥key 加密并伪造请求数据包发送给服务端,服务端得到之后使用 私钥pri1 进行解密得到密钥key,此时服务端也不会有所怀疑。在整个过程中,服务端和客户端根本不知道它们的通信还有一个中间人黑客进行篡改,密钥key 就这样被拿到了,往后的通信都会被破解。

  • 如果依然有点模糊,这边还有一个比喻,希望可以加深理解:❤️假设你在咖啡馆里,想给朋友发一封信。你把信交给服务员,请他送到朋友手中。然而,服务员偷偷打开信,读了内容,还伪造了一份不同的回复信交给你。你以为在和朋友直接通信,但实际上服务员(中间人)在整个过程中窃取并操控了你的信息。
  • ✨✨✨防御中间人攻击的关键在于:确保通信双方能够相互验证身份,并通过加密保护通信数据的完整性和机密性。

CA证书

  • ✨上述提到的中间人攻击,关键就在于服务端和客户端不知道对方的身份是否正确,所以,引入校验机制以检验对方的身份是否合法,通常校验客户端请求服务器的公钥是否被中间人修改过。
  • 如何验证,就是验证 "证书"。CA证书(Certificate Authority Certificate)是由证书颁发机构(CA)签发的电子文件,用于在网络通信中证明服务器或客户端的身份,并帮助建立安全的通信。CA 证书是 HTTPS 和其他加密协议的重要组成部分。

证书的组成

证书持有者信息

  • 持有者名称(通常是域名)。
  • 组织信息(如公司名、地点)。

CA 信息

  • 签发证书的证书颁发机构名称。

公钥

  • 用于加密通信的公钥。

证书序列号

  • 证书的唯一标识。

有效期

  • 证书的开始时间和到期时间。

签名算法

  • 用于签名的哈希算法(如 SHA256)。

数字签名

  • 由 CA 对证书内容进行签名,确保证书未被篡改。

  • ✨在正式对广大客户端提供前,服务器先向第三方权威认证机构申请颁发一个证书,通过提交一些服务器的域名、公钥等信息,随后机构颁发一个数字证书,证书的组成如上;证书的内容会被签名算法算出一个校验和,随后机构这边也会有一对公钥pub2私钥pri2私钥pub2用于加密先前求出的校验和,得到数字签名;校验和通常与内容有关,若内容相同,得到的校验和一定相同,若内容不相同,得到的校验和大概率不同,这和hash函数有一定的类似。
  • ✨在客户端和服务器通信时,客户端会先向服务器请求其的证书,客户端得到证书后,对证书上述的组成内容使用相同的签名算法算出一个新的校验和,随后使用第三方权威认证机构生成的公钥pub2数字签名进行解密得到服务器那边原始的校验和,将原始的校验和与客户端新算出的校验和进行比对,如果相同,则表明内容没有被篡改,不存在中间人拦截,如果不同,则表明内容被篡改,存在中间人拦截,立刻停止通信。
  • ❓看到这里,你或许会有点疑问,在这个过程中,怎么就保证内容一定没被修改了;别急,且听我一一道来。
  • 💎黑客会不会对公钥pub2进行修改,中间人攻击那样故技重施。答案是不会的,因为公钥pub2就不是通过网络传输的,而是操作系统内置的,你当然也可以查看自己操作系统内置的一些第三方机构。输入win+R,输入certmgr.msc后可以直接查看、打开控制面板,找到Internet选项,有一个内容tab栏,点击证书按钮便可查看。
  • 💎这些第三方生成的公钥pub2黑客当然也可以看到,但是只能看不能修改,无可奈何。除非你安装的操作系统不是正版,而是黑客魔改的,那当我没说。
  • 💎黑客可以自己申请或者伪造一个证书然后替换吗?确实可以申请或者伪造,但是证书的内容通常有许多唯一标识,标志着该证书的唯一性,就比如域名,黑客申请的域名的正规服务器的域名肯定不能相同,第三方机构肯定能知道你这个域名冲突了,那如果是黑客自己伪造的证书,这当然不需要通过第三方机构,但这也并不行,因为数字签名是通过第三方机构生成的私钥pri2加密的,如果黑客使用了自己的私钥加密,那么客户端使用第三方机构生成的公钥pub2解密时,就会解密失败,从而中断通信。
  • 💎如果黑客修改证书内容呢?那也一样,同样需要在修改完后使用第三方机构的私钥pri2加密,否则客户端就会解密失败。那黑客能拿到私钥pri2,要真能拿到,那也是厉害,这是真厉害,没得黑🫡。

  • 我们也可以通过浏览器查看你当前访问网站的一些证书信息,在域名左侧有个锁的图标就可以查看

  • 如果你访问的网站的证书是不合法的,浏览器通常会警告你,查询你是否继续访问还是退出该网页。经常网上冲浪的应该对这个不陌生。面对这种情况,还是建议不要无视风险,继续安装了。

SSL/TLS 

  • ✨SSL(Secure Sockets Layer)TLS(Transport Layer Security)是网络安全协议,用于在客户端和服务器之间建立安全加密的通信通道。它们在保护数据传输的机密性、完整性和身份验证方面发挥关键作用。

SSL 和 TLS 的关系

  • SSL 是最初由 Netscape (网景) 开发的安全协议。
  • TLS 是 SSL 的继任者,属于更安全的版本。
    • SSL 3.0 是最后一个 SSL 版本,之后改进的版本被命名为 TLS 1.0。
    • 当前(截至 2025 年)推荐使用的是 TLS 1.2 或 TLS 1.3,SSL 以及 TLS 1.0/1.1 已被淘汰。

SSL/TLS 的核心功能

  1. 数据加密:

    • 通过对称加密保证数据传输的机密性。
    • 防止传输中的数据被窃听。
  2. 数据完整性:

    • 使用消息摘要(如 HMAC)防止数据被篡改。
    • 如果数据被修改,接收方会发现并丢弃。
  3. 身份验证:

    • 使用数字证书验证服务器身份。
    • 可选:客户端身份验证(如双向认证)。

SSL/TLS 的工作流程

1. 握手阶段(Handshake)

  • 建立安全连接的过程,包括协商加密算法、验证身份和生成密钥。

主要步骤:

  1. 客户端 Hello

    • 客户端向服务器发送支持的 TLS 版本、加密套件、随机数等信息。
  2. 服务器 Hello

    • 服务器响应,确认使用的 TLS 版本、加密算法等,并发送服务器证书。
  3. 服务器证书验证

    • 客户端验证服务器证书的有效性,包括是否由受信任的 CA 签发、是否过期等。
  4. 密钥交换

    • 双方通过密钥交换算法(如 Diffie-Hellman 或 RSA)协商生成会话密钥。
    • TLS 1.3 直接采用预共享密钥(PSK)或密钥交换,跳过部分步骤。
  5. 完成握手

    • 客户端和服务器通过对称加密会话密钥,开始加密通信。

2. 加密通信阶段

  • 使用会话密钥对数据进行加密,保证传输的安全性。

3. 连接关闭阶段

  • 使用 TLS 关闭机制,确保剩余数据完整传输并正确断开连接。

主要特性

  1. 向后兼容性:

    • 允许客户端和服务器协商最低的 SSL/TLS 版本。
  2. 加密算法灵活性:

    • 支持多种加密算法(如 AES、ChaCha20),并根据安全性逐步淘汰不安全的算法。
  3. 支持扩展:

    • 如 ALPN(应用层协议协商)支持 HTTP/2。

TLS 1.3 的改进

  1. 简化握手:

    • 减少握手过程中的往返次数(从两次减少到一次)。
    • 更快的连接建立速度。
  2. 更强的安全性:

    • 移除弱加密算法和协议(如 RSA 和 MD5)。
    • 默认启用前向保密(Perfect Forward Secrecy,PFS)。
  3. 效率提升:

    • 提供 0-RTT(零延迟握手)机制,加速后续连接。

SSL/TLS 的典型应用场景

  1. HTTPS(HTTP over TLS):

    • 为网站提供安全加密通信。
  2. 邮件传输:

    • 如 SMTPS、IMAPS。
  3. 虚拟专用网络(VPN):

    • 如 OpenVPN 使用 TLS 进行隧道加密。
  4. 实时通信:

    • WebRTC 中的加密。

常见的挑战与问题

  1. 性能开销:

    • TLS 加密和握手过程增加了 CPU 和带宽开销。
    • 解决:启用硬件加速(如 AES-NI)、使用更高效的协议(如 TLS 1.3)。
  2. 证书管理复杂性:

    • 证书需要定期更新、配置和管理。
  3. 攻击风险:

    • 如中间人攻击(MITM)、TLS 降级攻击(POODLE)等。
    • 解决:强制使用最新版本的 TLS,启用 HSTS。

总结

SSL/TLS 是保障互联网安全的重要基石,通过加密、验证和完整性检查,确保数据安全传输。随着 TLS 的不断发展(特别是 TLS 1.3 的普及),性能和安全性得到了进一步提升。理解其原理有助于更好地设计和保护网络应用。


  • 至此,HTTP/HTTPS 协议的相关内容就已经全部讲完了,如有遗漏,私信我~~~
  • 下一节,我们将进入传输层 UDP/TCP 协议的讲解,大家敬请期待哦~~~
  • 毕竟不知后事如何,且听下回分解 
  • ❤️❤️❤️❤️❤️❤️❤️

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

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

相关文章

C# 25Dpoint

C# 25Dpoint ,做一个备份 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace _25Dpoint {public partial cl…

网络层协议-----IP协议

目录 1.认识IP地址 2.IP地址的分类 3.子网划分 4.公网IP和私网IP 5.IP协议 6.如何解决IP地址不够用 1.认识IP地址 IP 地址(Internet Protocol Address)是指互联网协议地址。 它是分配给连接到互联网的设备(如计算机、服务器、智能手机…

如何在Jupyter中快速切换Anaconda里不同的虚拟环境

目录 介绍 操作步骤 1. 选择环境,安装内核 2. 注册内核 3. 完工。 视频教程 介绍 很多网友在使用Jupyter的时候会遇到各种各样的问题,其中一个比较麻烦的问题就是我在Anaconda有多个Python的环境里面,如何让jupyter快速切换不同的Pyt…

分布式数据存储基础与HDFS操作实践(副本)

以下为作者本人撰写的报告,步骤略有繁琐,不建议作为参考内容,可以适当浏览,进一步理解。 一、实验目的 1、理解分布式文件系统的基本概念和工作原理。 2、掌握Hadoop分布式文件系统(HDFS)的基本操作。 …

【Linux】操作系统与进程概念

一、操作系统 1.1概念 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括: 1.内核(进程管理,内存管理,文件管理,驱动管理) 2.其他程序&#xff0…

深度学习中的学习率调度器(scheduler)分析并作图查看各方法差异

文章目录 1. 指数衰减调度器(Exponential Decay Scheduler)工作原理适用场景实现示例 2. 余弦退火调度器(Cosine Annealing Scheduler)工作原理适用场景实现示例 3. 步长衰减调度器(Step Decay Scheduler)工…

WEB攻防-通用漏洞_XSS跨站_权限维持_捆绑钓鱼_浏览器漏洞

目录 XSS的分类 XSS跨站-后台植入Cookie&表单劫持 【例1】:利用beef或xss平台实时监控Cookie等凭据实现权限维持 【例2】:XSS-Flash钓鱼配合MSF捆绑上线 【例3】:XSS-浏览器网马配合MSF访问上线 XSS的分类 反射型(非持久…

【AIGC-ChatGPT进阶提示词指令】智慧母婴:打造基于成长树的儿童发展引导系统

第一次进入全站综合热榜,有点紧张 好了,开始今天的内容,今天的内容是基于育儿的系统 今天继续回馈大家,最近都是可以在自媒体上使用的提示词。提示词在最下方 引言 在人工智能时代,如何将传统育儿智慧与现代教育理念有…

使用葡萄城+vue实现Excel

最终实现效果如下 包含增加复选框 设置公式 设置背景颜色等,代码实在太多 有需要可留言 第一步:创建表头 请使用官网提供的网址:在线 Excel 编辑器 | SpreadJS 在线表格编辑器 1.点击下方号,创建一个新的sheet页 默认新创建的she…

【Qt】01-了解QT

踏入QT的殿堂之路 前言一、创建工程文件1.1 步骤介绍1.2 编译介绍方法1、方法2、编译成功 二、了解框架2.1 main.cpp2.2 .Pro文件2.2.1 注释需要打井号。2.2.2 F1带你进入帮助模式2.2.3 build文件 2.3 构造函数 三、编写工程3.1 main代码3.2 结果展示 四、指定父对象4.1 main代…

《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》

哈喽,大家好!在平常开发过程中会遇到许多意想不到的坑,本篇文章就记录在开发过程中遇到一些常见的问题,看了许多博主的异步编程,我只能说一言难尽。本文详细的讲解了异步编程之美,是不可多得的好文&#xf…

unity——Preject3——面板基类

目录 1.Canvas Group Canvas Group 的功能 Canvas Group 的常见用途 如何使用 Canvas Group 2.代码 3.代码分析 类分析:BasePanel 功能 作用 实际应用 代码解析:hideCallBack?.Invoke(); 语法知识点 作用 虚函数(virtual)和抽象类(abstract)的作用与区别 …

Windows service运行Django项目

系统:Windows Service 软件:nssm,nginx 配置Django项目 1、把Django项目的静态文件整理到staticfiles文件夹中 注:settings中的设置 STATIC_URL /static/ STATIC_ROOT os.path.join(BASE_DIR, staticfiles/) STATICFILES_DI…

SQL面试题1:连续登陆问题

引言 场景介绍: 许多互联网平台为了提高用户的参与度和忠诚度,会推出各种连续登录奖励机制。例如,游戏平台会给连续登录的玩家发放游戏道具、金币等奖励;学习类 APP 会为连续登录学习的用户提供积分,积分可兑换课程或…

【大数据】机器学习-----线性模型

一、线性模型基本形式 线性模型旨在通过线性组合输入特征来预测输出。其一般形式为: 其中: x ( x 1 , x 2 , ⋯ , x d ) \mathbf{x}(x_1,x_2,\cdots,x_d) x(x1​,x2​,⋯,xd​) 是输入特征向量,包含 d d d 个特征。 w ( w 1 , w 2 , ⋯ ,…

OpenCV基础:矩阵的创建、检索与赋值

本文主要是介绍如何使用numpy进行矩阵的创建,以及从矩阵中读取数据,修改矩阵数据。 创建矩阵 import numpy as npa np.array([1,2,3]) b np.array([[1,2,3],[4,5,6]]) #print(a) #print(b)# 创建全0数组 eros矩阵 c np.zeros((8,8), np.uint8) #prin…

(蓝桥杯)二维数组前缀和典型例题——子矩阵求和

题目描述 小 A 同学有着很强的计算能力,张老师为了检验小 AA同学的计算能力,写了一个 n 行 m 列的矩阵数列。 张老师问了小 A 同学 k 个问题,每个问题会先告知小 A 同学 4 个数 x1,y1,x2,y2画出一个子矩阵,张老师请小 A同学计算出…

Node.js - HTTP

1. HTTP请求 HTTP(Hypertext Transfer Protocol,超文本传输协议)是客户端和服务器之间通信的基础协议。HTTP 请求是由客户端(通常是浏览器、手机应用或其他网络工具)发送给服务器的消息,用来请求资源或执行…

[读书日志]8051软核处理器设计实战(基于FPGA)第七篇:8051软核处理器的测试(verilog+C)

6. 8051软核处理器的验证和使用 为了充分测试8051的性能,我们需要测试每一条指令。在HELLO文件夹中存放了整个测试的C语言工程文件。主函数存放在指令被分为五大类,和上面一样。 打开后是这样的文件结构。HELLO.c是主文件,这是里面的代码&am…

深入浅出 Android AES 加密解密:从理论到实战

深入浅出 Android AES 加密解密:从理论到实战 在现代移动应用中,数据安全是不可忽视的一环。无论是用户隐私保护,还是敏感信息的存储与传输,加密技术都扮演着重要角色。本文将以 AES(Advanced Encryption Standard&am…