一、SSL/TLS 协议基础​

1.1、SSL/TLS 协议的核心功能​

SSL/TLS 协议的核心功能主要包括三个方面:加密、认证和完整性校验,这三大功能共同构建了网络通信的安全屏障。​

(一)加密​

加密是 SSL/TLS 协议最基本的功能。它通过使用对称加密算法和非对称加密算法相结合的方式,对客户端和服务器之间传输的数据进行加密处理,使得数据在传输过程中即使被攻击者截获,也无法被轻易解读。​

对称加密算法是指加密和解密使用相同密钥的算法,其特点是加密和解密速度快,适合对大量数据进行加密。在 SSL/TLS 协议中,对称加密算法用于对实际传输的数据进行加密,例如 AES(Advanced Encryption Standard,高级加密标准)算法就是一种常用的对称加密算法。​

非对称加密算法则是指加密和解密使用不同密钥的算法,其中一个是公开的公钥,另一个是只有所有者才知道的私钥。用公钥加密的数据只能用对应的私钥解密,反之亦然。非对称加密算法的安全性较高,但加密和解密速度相对较慢,因此在 SSL/TLS 协议中,它主要用于在握手阶段协商对称加密所使用的密钥,常用的非对称加密算法有 RSA、ECC(Elliptic Curve Cryptography,椭圆曲线密码学)等。​

(二)认证​

认证功能用于确保通信双方的身份是真实可靠的,防止攻击者伪装成合法的客户端或服务器进行通信。在 SSL/TLS 协议中,认证主要通过数字证书来实现。​

数字证书是由权威的证书颁发机构(CA,Certificate Authority)颁发的,它包含了服务器的公钥、服务器的身份信息(如域名)、证书的有效期以及证书颁发机构的签名等信息。当客户端与服务器建立连接时,服务器会向客户端发送其数字证书,客户端通过验证证书的签名来确认证书的真实性和有效性,进而确定服务器的身份。​

在一些安全性要求较高的场景中,还可以进行双向认证,即客户端也需要向服务器提供数字证书,以证明自己的身份。​

(三)完整性校验​

完整性校验用于保证数据在传输过程中没有被篡改。SSL/TLS 协议通过使用消息认证码(MAC,Message Authentication Code)来实现这一功能。在数据传输过程中,发送方会根据传输的数据和一个密钥生成一个 MAC 值,并将其附加在数据后面一起发送;接收方收到数据后,会使用相同的密钥和算法重新计算 MAC 值,并与接收到的 MAC 值进行比较,如果两者一致,则说明数据在传输过程中没有被篡改,否则说明数据可能被篡改过。​

1.2、SSL/TLS 协议的工作流程​

SSL/TLS 协议的工作流程主要包括握手阶段和数据传输阶段,其中握手阶段是整个协议中最为关键的部分,用于完成密钥协商和身份认证等工作。​

(一)握手阶段​

  1. 客户端发起连接请求:客户端向服务器发送一个 “Client Hello” 消息,其中包含了客户端支持的 SSL/TLS 版本、加密算法套件列表、一个随机数(Client Random)以及其他一些相关信息。​
  1. 服务器响应请求:服务器收到客户端的请求后,会发送一个 “Server Hello” 消息进行响应。该消息中包含了服务器选择的 SSL/TLS 版本、加密算法套件、一个随机数(Server Random)以及服务器的数字证书。​
  1. 客户端验证证书:客户端收到服务器的响应后,会对服务器的数字证书进行验证。验证过程包括检查证书的颁发机构是否可信、证书的有效期是否在范围内、证书上的域名是否与所访问的域名一致等。如果证书验证通过,客户端会生成一个预主密钥(Pre - Master Secret),并使用服务器证书中的公钥对其进行加密,然后通过 “Client Key Exchange” 消息发送给服务器。​
  1. 服务器解密获取预主密钥:服务器收到客户端发送的加密预主密钥后,使用自己的私钥进行解密,得到预主密钥。​
  1. 生成会话密钥:客户端和服务器分别使用之前生成的 Client Random、Server Random 以及预主密钥,通过相同的算法生成会话密钥(Session Key),会话密钥将用于后续的数据加密和完整性校验。​
  1. 验证与确认:客户端和服务器分别发送 “Finished” 消息,该消息中包含了对之前所有握手消息的摘要,用于验证握手过程是否被篡改。当双方都收到并验证通过对方的 “Finished” 消息后,握手阶段结束。​

(二)数据传输阶段​

在握手阶段完成后,客户端和服务器便进入数据传输阶段。此时,双方会使用在握手阶段生成的会话密钥,通过对称加密算法对传输的数据进行加密,同时使用 MAC 进行完整性校验。在数据传输过程中,每一条消息都会被加密和添加 MAC 值,接收方收到消息后,会先验证 MAC 值以确保数据的完整性,然后再使用会话密钥进行解密,得到原始数据。​

当通信结束时,双方会发送 “Close Notify” 消息,关闭 SSL/TLS 连接。​

二、SSL 剥离漏洞的原理​

SSL 剥离漏洞是一种针对 SSL/TLS 协议的中间人攻击(Man-in-the-Middle, MITM)手段。攻击者利用了客户端和服务器之间安全协议协商过程中的弱点,通过改变客户端与服务器间的通信链路,将原本的 HTTPS 连接转换为不安全的 HTTP 连接,“剥离” 掉了客户端与服务器之间的 SSL/TLS 加密层,使得原本加密的通信数据变成了明文,从而能够读取或修改传输中的信息。​

SSL 剥离漏洞的核心原理在于攻击者能够拦截并篡改客户端与服务器之间的网络数据包,阻止它们建立正常的 SSL/TLS 加密连接。攻击者通常会采用以下几种技术来实现这一目的:​

  1. 证书警告欺骗:当用户尝试访问一个 HTTPS 站点时,攻击者可以伪造一个无效的安全证书。如果用户不熟悉证书验证过程,他们可能会忽略浏览器发出的安全警告继续访问,从而使得攻击者能够拦截流量。​
  1. HTTP 重定向绕过:许多网站会通过 HTTP 重定向将 HTTP 请求重定向至 HTTPS。攻击者可以通过修改 HTTP 响应,删除或更改重定向指令,从而使客户端保持在不安全的 HTTP 连接上。​
  1. HTTP Strict Transport Security (HSTS) 头部移除:HSTS 是一种机制,它允许服务器指示浏览器只使用 HTTPS 连接。攻击者可以移除或修改 HSTS 头部,防止浏览器自动使用 HTTPS。​

三、SSL 剥离攻击的过程​

  1. 中间人定位:攻击者首先需要处于用户与目标网站之间的网络位置,例如在公共 Wi-Fi 热点、路由器或 DNS 服务器上实施攻击。这种位置使得攻击者能够拦截、篡改和重新发送网络数据包。常见的实现方式有:​
  • ARP 欺骗:攻击者通过发送伪造的 ARP(地址解析协议)消息,将自己的 MAC 地址与目标服务器的 IP 地址关联起来,从而使受害者设备将原本发送给服务器的数据包发送到攻击者的设备上。​
  • DNS 欺骗:攻击者篡改 DNS(域名系统)查询结果,将目标网站的域名解析到自己控制的 IP 地址上。这样,当用户尝试访问目标网站时,实际上会连接到攻击者的服务器。​
  1. 拦截 HTTPS 请求:当用户尝试访问一个 HTTPS 网站时,攻击者拦截该请求,并不再将请求转发给服务器。​
  1. 降级连接:攻击者将 HTTPS 请求转换为 HTTP 请求,并将转换后的请求发送给服务器。由于 HTTP 是不加密的,攻击者可以轻松窃取或篡改传输的数据。例如,攻击者可以修改用户发送的登录表单数据,将用户名和密码发送到自己的服务器上,同时将修改后的无效数据发送给真正的服务器。​
  1. 伪造响应:服务器响应 HTTP 请求后,攻击者拦截响应,并将其转换为 HTTPS 响应,再发送给用户。这样,用户意识不到他们的连接已经被降级,仍然认为他们在安全地访问网站。用户在浏览网页时,可能会看到页面正常加载,没有任何异常提示,但实际上他们的所有通信数据都已被攻击者获取。​

四、SSL 剥离漏洞的防范措施​

  • 强制使用 HTTPS:在服务器端配置强制将 HTTP 请求重定向到 HTTPS,确保用户始终通过加密连接访问网站。可以通过在 Web 服务器的配置文件中添加相应的重定向规则来实现。​
  • 启用 HSTS:配置 HTTP Strict Transport Security(HSTS),告诉浏览器在一定时间内只允许通过 HTTPS 访问网站。这样,即使攻击者试图进行 SSL 剥离攻击,浏览器也会拒绝连接到不安全的 HTTP 版本。HSTS 的配置可以在 Web 服务器或网站的代码中进行设置。

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

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

相关文章

c++-reverse_iterator

C反向迭代器 反向迭代器是C标准库提供的一种适配器,它允许我们以相反的顺序遍历容器,反向迭代器是正向迭代器的封装。 迭代器可以分为两类:方向性质:单向迭代器(Forward Iterator)双向迭代器(Bi…

linux内核驱动:电流/电压/功率监控模块INA226调试

目录背景一、芯片介绍二、手册三、内核驱动配置3.1 设备树配置3.2 修改内核配置文件3.3 编译四、内核驱动分析1、初始化流程2、属性文件/解释五、调试和计算背景 最近调试了一款德州仪器的带有I2C控制接口的可以实现电压、电流、功率监测,并可以进行报警设置的芯片I…

ACL 2024 大模型方向优秀论文:洞察NLP前沿​关键突破

关注gongzhonghao【计算机sci论文精选】近年来,以Transformer架构为核心的大语言模型重塑了自然语言处理领域的技术范式。当前ACL相关研究呈现多维度深化态势,从开源社区推动轻量化架构与低成本训练技术革新,到学术界探索检索增强等机制突破长…

乐创E20H1型IO从站与Ethercat转Profinet网关转换器的配置应用案例

本案例聚焦于西门子 1200PLC 与 E20H1 - T01 IO 从站的连接。在正常运行过程中,E20H1 - T01 IO 从站需支持 EtherCAT 协议,作为 EtherCAT 从站;而监控系统所采用的西门子 S7 - 1200 系列 PLC 则支持 PROFINET 协议。由于协议的不一致性&#…

【2】专业自定义图表创建及应用方法

一、专业自定义图表创建及应用方法1)不是图表的图表制作方法例题1:迷你图表制作方法定义:指依靠Excel基本制图功能之外的其他功能(如公式、条件格式、迷你图等)创建的数据可视化图表特点:引用数据少且占用…

embodied复现所需docker环境配置粗略流程

由于embodied很多安装包都需要linux环境,所以为了建立虚拟ubuntu系统,在不适用vmvare的情况,可以考虑使用docker容器来实现,也不会出现的vmware的卡顿情况 1.首先建立容器,并和pycharm建立连接,先安装docker desktop&a…

2025.8-12月 AI相关国内会议

以下是2025年8月至12月国内与人工智能(AI)相关的重要会议及活动总结,按时间顺序排列: 2025年8月第六届人工智能与机电自动化国际学术会议(AIEA 2025) • 时间:8月1-3日 • 地点:安徽…

计数组合学7.10(舒尔函数的组合定义)

7.10 舒尔函数的组合定义 前几节讨论的四个基 mλm_{\lambda}mλ​、eλe_{\lambda}eλ​、hλh_{\lambda}hλ​ 和 pλp_{\lambda}pλ​ 的定义都较为直观。本节将介绍第五个基,其元素记为 sλs_{\lambda}sλ​,称为舒尔函数,其定义则更为微…

【前端】CSS Grid布局介绍及示例

CSS Grid 简介 CSS Grid 是一个二维布局系统,专为处理行和列的复杂网页布局而设计。与 Flexbox(一维布局)不同,Grid 允许开发者同时控制行和列,实现更精确的布局结构。 核心概念: Grid 容器:通过…

[echarts]多个柱状图及图例

前言 实现多个柱状图功能,并设置多个图例样式,并定时刷新数据 react引入echarts import React, { useEffect, useRef } from react; import * as echarts from echarts; import DeviceApi from /api/screen/DeviceApi;const CenterDeviceSummary (props…

【读文献】Capacitor-drop AC-DC

[1] F. Song, et al., “An 85-to-230VAC to 3.3-to-4.6VDc 1.52W Capacitor-Drop Sigma-Floating-SC AC-DC Converter with 81.3% Peak Efficiency,” 2025 IEEE International Solid-State Circuits Conference (ISSCC), 2025.以下是针对该电容降压AC-DC转换器设计的通俗版解…

`StreamConfigurationMap` 实现逻辑与解析过程详解:相机流能力的声明、匹配与验证机制全景

StreamConfigurationMap 实现逻辑与解析过程详解:相机流能力的声明、匹配与验证机制全景 关键词: StreamConfigurationMap、CameraCharacteristics、OutputFormat、InputFormat、Size 配置、帧率范围、流兼容性、配置失败调试 摘要: StreamConfigurationMap 是 Android 相…

关于“PromptPilot” 之3 -Prompt构造器核心专项能力:任务调度

本篇问题Q20. 以上设计是“原始制造商”的典型范式。在三个不同理论层级(Prompt 构造进程的三个子进程(线程))分别适合三种不同的取向: 面向目标、面向结果和面向过程。不同取向将采取不同的策略 和不同的 监控方式&am…

Solana: 链上开发入门,用 Anchor 和 Rust 构建第一个程序

大家好,如果大家对 Solana 开发充满好奇,但又对 Rust 语言感到陌生,那么大家来对地方了。很多人在探索 Solana 这条高性能公链时,遇到的第一个门槛就是其原生开发语言——Rust。Rust 以其高性能和内存安全著称,但学习曲…

node.js之Koa框架

Koa框架介绍Koa 是一个新的 web 框架,由 Express 原班人马打造,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。Koa 解决了 Express 存在的一些问题,例如:中间件嵌套回调(callback hell)错误处理不…

C/C++离线环境安装(VSCode + MinGW)

因为工作需要部署离线C环境,网上有许多大佬分享了不错的教程,总结一篇完整教程自用,使用VSCode MinGW感谢一、安装准备二、软件安装1.安装MinGW2.安装VSCode及插件三、测试环境1.创建工程文件夹2.创建cpp文件总结感谢 本教程参考了以下教程…

如何创建一个飞书应用获取自己的飞书AppID和AppSecret?

这篇文章是接下来要开发「监控 X(原Twitter)博主账号最新推文」 自动化工作流的先导文章,由于内容相对独立,也可用于飞书应用的其他场景,故单独发出来,方便查阅。 监控X平台指定博主最新发文,需…

Prompt工程记录

Prompt基本建议:1.在查询中包含详细信息以获得更相关的答案总结会议笔记:先将会议笔记总结为一段,然后写一份演讲者的打分表,列出他们的每个要点;最后列出发言者建议的下一步行动或者行动项目(如果有的话)2…

CTE公用表表达式的可读性与性能优化

一、可读性优化CTE通过WITH子句定义临时命名结果集,将复杂查询分解为逻辑独立的模块,显著提升代码清晰度与可维护性‌:‌解构嵌套查询‌:将多层嵌套的子查询扁平化,例如传统嵌套统计订单的查询可重构为分步CTE&#xf…

8.1.2 TiDB存储引擎的原理

TiDB 简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据 库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布 式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 …