当前位置: 首页 > news >正文

【计算机网络】应用层——HTTPS协议详解

文章目录

  • 1. HTTPS 协议简介
  • 2. 了解“加密”
  • 3. HTTPS 保证数据安全传输的三大机制
    • 3.1 引入对称加密
    • 3.2 引入非对称加密
    • 3.3 引入“SSL/TLS证书”(防止中间人攻击)
    • 3.4 HTTPS安全机制总结

📄前言
前面的文章已经对 HTTP 协议 进行了较为详细的介绍,本文所介绍的 HTTPS 协议是对 HTTP 协议的补充,HTTPS 协议主要解决的是 HTTP 协议在网络上数据传输的安全问题。


1. HTTPS 协议简介

什么是 HTTPS 协议

HTTPS 协议又称为“安全超文本传输协议”,它是 HTTP 协议的安全版本,主要通过在 HTTP和TCP/IP 之间添加一层加密层来增强数据传输的安全性。

HTTPS 协议的特点

  • 加密:HTTPS 协议使用 SSL或TLS 协议对数据进行加密,保证了数据在传输过程中被窃听的安全性(密文与原始明文差异极大)。
  • 数据完整性:HTTPS 协议可以保证数据在传输过程中未被修改,保护了数据的完整性。
  • 身份验证:通过 SSL/TLS 证书 验证服务器的身份,保证客户端访问的是目标服务器而非冒名顶替的服务器,可以防止“中间人”攻击。

引入 HTTPS 协议的必要性
在商场、酒店、KTV等公共场所中,出于加快网络访问速度、下载大型应用/文件、节省流量等目的,我们往往会连接商家提供的 WIFI,但在享受公共网络便利的同时,我们往往容易忽略其中带来的安全隐患:由于互联网上的所有数据都需经过路由器的多次转发,最终到达目标主机。当黑客入侵了这些场所的路由器,就可以通过抓包工具获取所有经过该路由器转发的数据,因此当我们通过网络传输了某些比较敏感的数据(如账户名、密码、身份证、各类支付密码、家庭住址等)且数据是明文传输的,黑客就可以通过这些信息做出某些违法行为,进而造成不可挽回的损失。
在这里插入图片描述


2. 了解“加密”

加密是一种安全技术,通过将原始信息(明文)转换成不易读的格式(密文),来防止未经授权的访问。其中,用来加密的工具称为“密钥”,密钥可以完成明文和密文的相互转换,只有拥有正确密钥的人才能够读取原始信息。

加密根据类型不同可以分为 对称加密非对称加密

  • 对称加密:使用相同的密钥进行加密和解密。这种加密方式的优点是加密/解密的速度快,适合大数据量的传输,缺点是密钥的分发和管理比较困难(详见 3.1引入对称加密),一旦一方密钥泄露,加密信息就会被破解。
  • 非对称加密:使用一对密钥(公钥和私钥)进行加密和解密,它的特点是:使用公钥加密需私钥解密,且加密与解密的角色可以互换。非对称加密可以解决密钥的分发和管理问题(详见3.2引入非对称加密),但加密/解密的开销较大,所消耗时间也较长。

思考:经过加密后的数据一定能保证安全传输吗?
答案是否定的。虽然黑客获取加密过的 HTTP 请求后并不能直接


3. HTTPS 保证数据安全传输的三大机制

HTTPS之所以能够保证数据安全地传输,原因是依靠对称加密非对称加密数字证书这三大机制的相互配合。

3.1 引入对称加密

通过上述 HTTPS 的介绍我们可以知道,将数据在网络上进行明文传输是非常不安全的,因此需引入对称加密可以有效增加数据传输的安全性,这样一来即使客户端发送的数据被黑客截获,那数据也是相对安全的(密文的破解需要一定的成本和时间)。
在这里插入图片描述
注意:使用对称加密传输数据时,需给每个客户端分发不同的密钥,原因是假如多个客户端都使用相同的密钥,一旦密钥被黑客破解,那么所有使用该密钥加密的数据都会被轻易获取。

上述过程确实可以很大程度上保证数据的安全传输,但前提是客户端能够正确拿到服务器生成的密钥,那么问题来了,客户端如何拿到密钥呢?
答案其实也很明确,通过网络传输对称密钥。(如下图)
在这里插入图片描述

这时候我们可能又有一个疑问:假如黑客在通信双方使用密文传输前就已经入侵了中间网络设备,那么这个加密不就相当于“脱裤子放屁”,也就跟明文传输没有区别了?
事实上对称加密确实存在上述问题,因此它通常只适合于正式进行数据传输的过程中,而不适用于数据传输前的密钥传递

3.2 引入非对称加密

我们已经知道了,对称加密存在密钥分发问题,因此引入非对称加密不仅可以保证数据的安全传输,也可以解决密钥的分发问题。(如下图)
非对称加密的原理也非常简单:服务器生成一对密钥(公钥和私钥),通过由服务器持有私钥,客户端持有公钥,在数据传输前服务器将公钥通过网络传输给客户端,之后客户端使用公钥对 HTTP 请求进行加密,服务器再通过私钥对密文进行解密。在这种机制下,就算黑客通过入侵网络设备获取了公钥,由于他没有私钥,也就不能得到客户端发送的原始信息。(如下图)
在这里插入图片描述
注意:通过上述非对称已经可以完美解决数据的安全传输和密钥的分发问题,但上述加密过程还存在两个问题:(1)黑客虽然获取不了客户端发送的密文请求,但可以通过公钥解密得到服务器返回的响应(2)非对称加密解密开销加大,频繁使用该方式传输数据会造成没必要的开销。

针对第一个问题,在大部分场景下不是一个严重问题,因为采用加密的方式传输数据的初心是为了保护用户发送请求中的隐私数据(如账户密码、身份证、家庭住址、各类支付密码等),而服务器返回的数据大部分情况下是可以被公开的。

对于第二个问题,频繁非对称加密解密不仅会消耗额外的硬件资源,而且造成的时间开销还会影响用户的使用体验。因此,在实际情况中往往采用非对称加密的方式将公钥传输给客户端,接着客户端再生成一把对称密钥,使用公钥对该密钥进行加密后传输给服务器,服务器收到请求后使用私钥解密得到对称密钥,在后面的通信过程中,双方都使用对称密钥传输信息。这样一来两个都得以解决。(如下图)
在这里插入图片描述

3.3 引入“SSL/TLS证书”(防止中间人攻击)

上述过程引入非对称加密后,利用 非对称加密+对称加密 相结合的手段巩固了 HTTPS 安全传输的基本盘,但仍然存在一个严重的漏洞——中间人攻击,如果黑客利用了该漏洞,通信双方的传输数据将被 悄无声息的获取,等同于明文传输!!!

什么是中间人攻击呢?

中间人攻击指攻击者在通信双方之间秘密穿插自己,甚至伪装成通信的另一方,使得通信双方认为他们在直接地、安全地与对方通信,但实际上所有传递的信息都经过攻击者,从而通过这种攻击达到窃取通信过程的敏感数据或篡改数据的目的。

那么攻击者如何通过“中间人攻击”达到隐藏自己、获取通信过程中的数据呢?具体步骤如下:

  1. 客户端向服务器询问公钥
  2. 黑客传递询问公钥请求,服务器端生成 public1 和 private1,并把 公钥public1 作为响应返回。
  3. 黑客收到 public1后保存下来(用于后面加密对称密钥,达到隐藏自己的目的),同时自己生成 public2和private2,将 public2返回给客户端
  4. 客户端收到公钥后,用 public2 加密自己生成的对称密钥并传递给服务器
  5. 黑客收到请求,使用 private2 解密获取用于日常数据传输的对称密钥,再用 public1 加密对称密钥,传递给服务器。(这样既能使服务器和客户端能够正常使用对称密钥传输数据,也能够达到隐藏自己的目的,后面就能随意监听通信双方传输的数据,甚至伪装成另一方与对面通信,以此达到其他非法目的)
  6. 服务器收到请求,使用 private1 解密获取对称密钥,此时服务器和客户端都认为彼此是直接、安全地进行通信。

在这里插入图片描述


要解决上述“中间人攻击”问题,可以引入公证机构颁发的“SSL/TLS证书”(数字证书),那么公证机构和数字证书分别是什么呢?

公证机构是一个受信任的第三方机构,它负责颁发、管理和吊销数字证书。公证机构会验证证书申请者(网站)的身份,以确保证书申请者的身份是合法和受信任的。

数字证书,也称为SSL/TLS证书,是一种文件形式的身份凭证,用于证明公钥的所有权。数字证书上有域名、服务器公钥、组织名称等信息,还包含一个最关键的信息——数字签名。

那么数字签名又是什么呢?它的作用是什么?
数字签名是将证书上的其他属性通过一定计算得到一个校验和,再通过公证机构生成的私钥(非对称密钥)加密得到的加密校验和
众所周知校验和的作用是用来验证数据在传输过程中是否发生改变(出错或被篡改),而对于客户端来说,它本身持有公证机构生成的配对的公钥(预装浏览器或操作系统时内置的),只需使用公证机构发布的公钥对数字签名解密得到原始校验和,再与证书上内容计算得到的校验和进行比较,若校验和一致则说明 服务器公钥、网址等信息是正确且安全的。(如下图)
在这里插入图片描述

思考一:若黑客替换了证书中的公钥是否可行?
答案是否定的。原因是一旦服务器的公钥被替换,客户端如果证书计算出来的校验和一定与解密后的原始校验和不一致,这样则说明了公钥或其他内容被修改过。

思考二:若黑客将公钥连同加密的校验和一同替换了是否可行?
答案也是否定的、若要替换校验和需使用私钥加密,而私钥是公证机构持有的,若使用黑客生成的私钥加密校验和,客户端则不能正确解密数字签名,因此这种方法也是行不通的。

思考三:若黑客也向公证机构申请一个证书,将证书里的公钥、校验和等属性替换成自己的,后面再将证书传递给客户端,借助上述的中间人攻击手段,达到窃听、修改通信数据的目的。这种方法是否可行?
答案依旧是否定的。原因是申请证书需要提交各种证明自己身份的资料,公证机构会对这些资料进行审查,若发现申请的域名不是自身持有的则不会颁发数字证书。

3.4 HTTPS安全机制总结

  • 对称加密保证了通信双方在通信过程中的数据安全。
  • 非对称加密保证了客户端生成的对称密钥在网络上的安全分发。
  • 数字证书防止了证书上的服务器公钥被恶意篡改。

以上就是本篇文章的全部内容了,如果这篇文章对你有些许帮助,你的点赞、收藏和评论就是对我最大的支持。
另外,文章可能存在许多不足之处,也希望你可以给我一点小小的建议,我会努力检查并改进。

相关文章:

【计算机网络】应用层——HTTPS协议详解

文章目录 1. HTTPS 协议简介2. 了解“加密”3. HTTPS 保证数据安全传输的三大机制3.1 引入对称加密3.2 引入非对称加密3.3 引入“SSL/TLS证书”(防止中间人攻击)3.4 HTTPS安全机制总结 📄前言: 前面的文章已经对 HTTP 协议 进行了…...

私家侦探如何追踪难以找到的人?

私家侦探如何追踪难以找到的人? 私家侦探经常受雇于无从下手的情况,要在稀缺的信息中寻找蛛丝马迹,追踪那些难以捉摸的目标。在众多情境中,私家侦探或许能挖掘出丰富的信息。然而,若目标人物决心隐匿行踪,逃…...

一文讲透亚马逊云命令行使用

从配置开始 学习使用亚马逊云,自然免不了使用命令行工具,首先我们从下载和配置开始: 现在都使用V2版本的命令行工具,可以从官网下载最新的二进制安装包。1 首先是配置凭证: aws configure 输入之后会提示输入AK/SK…...

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言: 在当今数字化的世界中,网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁,不断地演变和升级,给个人和组织带来了严重的损失和困扰。近期,一种名为.jayy的勒索病毒引起了广…...

一键快速彻底卸载:Mac软件轻松删除,瞬间释放磁盘空间

在接手使用前任员工遗留的Mac电脑时,经常面临的一个问题是内置了大量的非必要软件,这些软件不仅侵占了硬盘资源,还可能影响电脑整体性能。因此,迅速有效地删除这些冗余软件,以达成设备清爽、高效的初始化状态极其重要。…...

(React Hooks)前端八股文修炼Day9

一 对 React Hook 的理解,它的实现原理是什么 React Hooks是React 16.8版本中引入的一个特性,它允许你在不编写类组件的情况下,使用state以及其他的React特性。Hooks的出现主要是为了解决类组件的一些问题,如复杂组件难以理解、难…...

工厂方法模式:灵活的创建对象实例

在软件开发中,我们经常需要创建对象,但直接new一个实例可能会导致代码的耦合性增加,降低了代码的灵活性和可维护性。工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口…...

vue-codeirror编辑器vue3中的使用

vue-codeirror编辑器vue3中的使用 <script lang"ts" setup> import { ref,reactive } from vue; import { Codemirror } from "vue-codemirror"; import { oneDark } from "codemirror/theme-one-dark"; import { json } from codemirror/…...

搭建python编译环境

目录 1.安装依赖包 2.安装失败进行换源 3. 更新系统 通过C 语言调用 Python 代码&#xff0c;需要先安装 libpython3 的 dev 依赖库&#xff08;不同的 ubuntu 版本下&#xff0c; python 版本 可能会有差异&#xff0c; 比如ubuntu 22.04 里是 libpython3.10-dev &#xff09…...

微信小程序登录流程

文章目录 1. 用户触发登录操作2. 获取临时登录凭证3. 发送登录凭证到服务器4. 后端使用 code 获取 session_key 和 openid5. 后端保存 session_key 和 openid 返回token6. 前端保存登录态 1. 用户触发登录操作 用户在小程序内部点击登录按钮或进行需要登录权限的操作&#xff…...

FPGA + 图像处理(三)生成3x3像素矩阵

前言 生成NxN的像素矩阵是对图像进行各类滤波操作的基本前提&#xff0c;本文介绍一种通过bram生成3x3矩阵的方法。 程序 生成bram核 因为本文介绍的是基于bram生成的3x3像素矩阵&#xff0c;所以要先生成两个bram核&#xff0c;用于缓存前两行图像数据 在 IP catalog中选…...

Redis安装说明2

Redis安装说明 1.3.2.指定配置启动 如果要让Redis以后台方式启动&#xff0c;则必须修改Redis配置文件&#xff0c;就在我们之前解压的redis安装包下&#xff08;/usr/local/src/redis-6.2.6&#xff09;&#xff0c;名字叫redis.conf&#xff1a; 我们先将这个配置文件备份一…...

ArcGIS10.8保姆式安装教程

ArcGIS 10.8是一款非常强大的地理信息系统软件&#xff0c;用于创建、管理、分析和可视化地理数据。以下是ArcGIS 10.8的详细安装教程&#xff1a; 确保系统满足安装要求 在开始安装之前&#xff0c;请确保您的计算机满足以下系统要求&#xff1a; 操作系统&#xff1a;Windo…...

设计原则、设计模式、设计模式项目实战

设计原则 封装、继承、多态、抽象分别可以解决哪些编程问题 封装&#xff1a;也叫做信息隐藏或数据保护访问。数据 通过暴露有限的访问接口&#xff0c;授权外部仅能通过类提供接口访问&#xff0c;对内的类private私有化属性&#xff0c;通过封装简化操作&#xff0c;让用户更…...

【Redis】解决List类型的消息可靠性问题

前言 平时做后端开发时&#xff0c;如果需要用到消息队列功能&#xff0c;但公司的IT环境又没有提供专业的队列软件&#xff08;RabitMQ/Kafka…&#xff09;&#xff0c;那么在简单且要求不高的场景下&#xff0c;可以使用 Redis 的List数据类型来做消息队列。 但List类型有…...

挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)

#上一章我们把搜索二叉树的知识给传授完毕&#xff0c;如果认真的看下去并且手打了几遍&#xff0c;基本上内部的逻辑还是可以理解的&#xff0c;那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀&#xff1f;如果用上一次学的层次遍历来求树高&#xff0c;有点小题…...

在虚拟机尝试一次用启动盘重装系统

在虚拟机尝试一次用启动盘重装系统 没有自己重装过系统&#xff0c;也不敢对自己的笔记本下手&#xff0c;用虚拟机重装玩玩试试。 先设置成u盘启动 从boot中选择相应的创建的硬盘即可&#xff08;刚刚突然发现图片不能上传了&#xff0c;经过乱七八糟的尝试后&#xff0c;开一…...

力扣347. 前 K 个高频元素

思路&#xff1a;记录元素出现的次数用map&#xff1b; 要维护前k个元素&#xff0c;不至于把所有元素都排序再取前k个&#xff0c;而是新建一个堆&#xff0c;用小根堆存放前k个最大的数。 为什么是小根堆&#xff1f;因为堆每次出数据时只出堆顶&#xff0c;每次把当前最小的…...

SCP 从Linux快速下载文件到Windows本地

需求&#xff1a;通过mobaxterm将大文件拖动到windows本地速度太慢。 环境&#xff1a;本地是Windows&#xff0c;安装了Git。 操作&#xff1a;进入文件夹内&#xff0c;鼠标右键&#xff0c;点击Git Bash here&#xff0c;然后输入命令即可。这样的话&#xff0c;其实自己本…...

plasmo内容UI组件层级过高导致页面展示错乱

我使用plasmo写了一个行内样式的UI组件&#xff0c;但是放到页面上之后&#xff0c;会和下拉组件出现层级错乱&#xff0c;看了一下样式&#xff0c;吓我一跳&#xff1a;层级竟然设置的如此之高 所以就需要将层级设置低一点&#xff1a; #plasmo-shadow-container {z-index: …...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...

Oracle实用参考(13)——Oracle for Linux物理DG环境搭建(2)

13.2. Oracle for Linux物理DG环境搭建 Oracle 数据库的DataGuard技术方案,业界也称为DG,其在数据库高可用、容灾及负载分离等方面,都有着非常广泛的应用,对此,前面相关章节已做过较为详尽的讲解,此处不再赘述。 需要说明的是, DG方案又分为物理DG和逻辑DG,两者的搭建…...