计算机网络 —— HTTPS 协议

前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客

目录

·前言

一、HTTPS 协议简介

二、HTTPS 工作过程

1.对称加密

2.非对称加密

3.中间人攻击

4.引入证书

三、HTTPS 常见问题

1.中间人能否篡改证书?

2.中间人能否调包证书?

3.HTTPS 工作完整流程

·总结


·前言

        前一篇文章中对 HTTP 协议整体做了一个基本介绍,在本篇文章里将介绍一下基于 HTTP 协议创造出来的 HTTPS 协议,关于 HTTPS 协议的重点内容就是它的一个工作过程,它是如何保证我们网络中传输数据的安全性呢?这将是本篇文章的要重点介绍的内容,下面就开始本篇文章的内容介绍。

一、HTTPS 协议简介

        HTTPS 协议与 HTTP 协议一样都是应用层协议,HTTPS 协议是在 HTTP 协议的基础上引入了一个加密层,由于 HTTP 协议的内容都是按照文本的方式明文传输,这就导致在使用 HTTP 协议传输数据的过程中会出现一些数据被篡改的情况,比如:“运营商劫持”。

        什么是 “运营商劫持” 呢?不知道有没有小伙伴在网上搜索某个软件点击下载后发现下的不是要下载的软件而是其他软件,这就是 “运营商劫持”,如下图所示:

图1
图2

        如上图所示,当我们下载一个 “天天动听” 时,图1 未被劫持点击下载按钮是可以弹出正确的天天动听的链接,图2 已被劫持时,点击下载按钮,弹窗的是 QQ浏览器的下载链接,这就是 “运营商劫持”,那么它是如何做到的呢?流程如下图所示:

         当然,不止运营商可以劫持,其他的 “黑客” 也可以用类似的手段来进行劫持,窃取用户的隐私信息,或者篡改内容,所以在互联网上,明文传输是比较危险的事情,HTTPS 就是在 HTTP 的基础上进行了加密,进一步来保证用户的信息安全。

        解决安全问题最核心的要点就是 “加密”,什么是加密呢?加密就是把明文(要传输的真实数据)进行一系列变换,生成密文(针对明文加密之后得到的结果,往往不直观,不易理解),解密就是把密文通过一系列变换,还原成明文,在这个加密与解密的过程中,往往需要一个或者多个中间的数据来辅助完成这个过程,这样的数据就被称为 “密钥”。

二、HTTPS 工作过程

        为了保证数据的安全,HTTPS 就在 HTTP 基础上进行 “加密” 操作,这样网络上传输的数据就不再是直接传输明文了,而是加密之后的 “密文”,加密的方式有很多,但是整体可以分为两大类:“对称加密” 和 “非对称加密”,下面我就来介绍一下 HTTPS 的工作过程,及遇到问题的对应解决方法。

1.对称加密

        对称加密其实就是通过同一个 “密钥”,来把明文加密成密文,并且还可以把密文加密成明文,引入对称加密之后,即使数据被截获,由于黑客不知道密钥是什么,也就无法进行解密进一步去获取我们请求的真实内容了,引入对称加密后,此时数据传输过程如下图所示:

        根据上述介绍可以发现对称加密具有以下特点:

  • 使用对称加密,客户端与服务器需要使用同一个密钥;
  • 不同的客户端需要使用不同的密钥(如果密钥都相同,那么黑客就可以获取密钥)。 

        此时,由于不同客户端使用的密钥都不相同,这就意味着服务器需要维护每个客户端和密钥的关联关系会引入很大的额外开销。

        对称加密除了会引入额外的开销还有一个致命的问题,那就是这种加密并不安全,由于对称密钥是要传输给对方的,就意味着传输密钥的过程是明文传输的,那么此时黑客只要获取到传输的密钥,对称加密的操作就毫无意义了,如下图所示:

         造成上图结果就是因为使用明文传输密钥,黑客就会获取到密钥,后续的加密操作就形同虚设了,所以我们需要对传输的密钥进行加密传输,如果我们对密钥仍进行对称加密的方式进行传输就需要确定一个 “密钥的密钥”,此时面临的问题还是 “密钥的密钥” 是明文,黑客仍然可以拿到密钥,所以对密钥进行加密传输使用对称加密的方式就行不通了,这就需要引入非对称加密。

2.非对称加密

        使用非对称加密主要目的就是为了对 “对称加密” 的密钥进行加密,来确保对称密钥的安全性,在非对称加密中要用到两个密钥:“公钥” 与 “私钥”,公钥和私钥是配对的(公钥对明文加密变成密文,密文只能使用配对的私钥来进行解密),它们最大的缺点就是加密与解密的运算速度非常慢(消耗 CPU 资源),所以不能完全使用非对称加密来对传输的数据进行加密,而只是对“对称加密”的密钥进行加密。

        引入非对称加密之后,就可以由服务器生成公钥和私钥,公钥可以公开给每个客服端,私钥只有自己知道,这样客户端就可以使用公钥对对称密钥进行加密然后传输给服务器,服务器获取到密文使用私钥解密获取到对称密钥,后面就可以继续使用对称加密来进行数据传输了,具体过程如下图所示:

        下面我来对上述过程做一个梳理:

  1.  客户端在本地生成对称密钥,通过公钥加密,发送给服务器;
  2. 由于黑客没有私钥所以无法对截取的数据进行解密进而无法获取对称密钥;
  3. 服务器使用私钥解密,获取对称密钥,使用对称密钥加密给客户端返回的响应;
  4. 后续客户端与服务器的通信使用对称加密即可,由于该密钥只有客户端与服务器两个主机知道,所以黑客截获数据也无法进行解密。

        上述过程虽然看起来安全,但是还有漏洞,由于公钥是需要客户端从服务器这边获取,那么就存在一个问题:获取的公钥是不是黑客伪造的?这就涉及到中间人攻击了。 

3.中间人攻击

        黑客通过中间人攻击就可以获取到对称密钥,由于非对称加密算法是公开的,所以黑客也可以使用非对称加密算法来得到自己的公钥私钥,此时就可以在客户端向服务器发送获取公钥的请求时进行中间人攻击,具体过程如下图所示:

         下面我来对上述过程做一个梳理:

  1. 服务器使用非对称加密算法生成公钥:pub1,私钥:pri1;
  2. 黑客使用非对称加密算法生成公钥:pub2,私钥:pri2;
  3. 客户端生成对称密钥:key;
  4. 客户端向服务器发送请求询问公钥是什么?
  5. 服务器明文传输公钥 pub1 给客户端;
  6. 黑客截取数据,提取公钥 pub1 并保存,然后将数据中的公钥 pub1 替换成自己的公钥 pub2,并将伪造的数据发给客户端;
  7. 客户端收到数据,提取公钥 pub2(并不清楚公钥已经被换),用公钥 pub2 加密对称密钥 key,形成报文发送给服务器;
  8. 黑客截取数据,直接使用自己的私钥 pri2 进行解密,获取到对称密钥 key,再使用保存的服务端公钥 pub1 加密后,将报文发送给服务器;
  9. 服务器拿到报文后,使用私钥 pri1 进行解密,获取对称密钥 key;
  10. 后续服务器与客户端都使用 key 进行对称加密,进行通信,此时黑客就可以使用对称密钥 key 劫持数据对数据进行窃听或者修改。

        那么如何解决中间人攻击这样的问题呢?最关键的一点就在于客户端拿到公钥的时候要有办法验证这个公钥是真的而不是黑客伪造的,这就需要服务器提供一个 “证书”。 

4.引入证书

       证书是一个结构化的数据,其中包含很多的信息,如:证书发布机构、证书有效期、公钥、证书所有者、签名……,服务器在使用 HTTPS 之前需要向第三方公正机构申请一份数字证书,然后服务器把证书传给浏览器,浏览器从证书中获取公钥就可以了,证书就相当于身份证,证明当前公钥的正确性。

        在证书中,用来验证证书真伪的信息就是 “签名”,对于签名要详细介绍一下,这是通过证书解决中间人攻击问题的关键,签名的形成也是基于非对称加密算法的,当服务端申请证书的时候,公正机构就会对服务端进行审核,并专门为该网站形成数字签名,过程如下:

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

        此时,服务端申请的证书明文与签名 S 就共同形成了证书,这样的证书就颁布给了服务端。这样就可以解决中间人攻击问题,此时数据传输的过程如下图所示:

        图中客户端获取到证书对证书进行校验的过程如下:

  1. 判定证书有效期是否过期;
  2. 判定证书的发布机构是否受信任(操作系统中已经内置了受信任的证书发布机构);
  3. 验证证书是否被篡改:从操作系统中获取证书发布机构的公钥,对签名进行解密,得到 hash 值(数据摘要)设为 hash1,然后计算整个证书的 hash 值设为 hash2,对比 hash1 和 hash2 是否相等,如果相等就说明证书没有被篡改过。 

三、HTTPS 常见问题

1.中间人能否篡改证书?

        中间人无法篡改证书,理由如下:

  • 中间人篡改了证书的明文,由于他没有公正机构的私钥,所以无法在 hash 之后使用私钥形成签名,那么就无法对篡改后的证书形成匹配的签名;
  • 如果中间人强行篡改,客户端收到证书后在验证时就会发现证书明文的 hash 值与签名解密后得到的 hash 值不一样,就会发现证书被篡改,从而终止向服务器传输信息。 

2.中间人能否调包证书?

        中间人无法调包整个证书,理由如下:

  • 中间人没有公正机构的私钥,所以无法制作假的证书;
  • 中间人只能向公正机构申请真证书,然后使用自己申请的证书进行掉包;
  • 但是证书中明文包含了域名等服务端认证信息,所以整体调包客户端依旧可以识别。

        我们要知道,中间人没有公正机构的私钥对任何证书都无法进行合法修改,包括自己的。 

3.HTTPS 工作完整流程

        左侧是客户端要做的事,右侧是服务器要做的事,完整流程如下图所示:

·总结

        文章到此就要结束了,本篇文章重点介绍了 HTTPS 的工作过程,在这里涉及到的密钥一共有三组,如下所示:

  • 第一组(非对称加密):用于校验证书是否被篡改,服务器持有私钥(私钥在注册证书时获得),客户端持有公钥(操作系统包含了可信任的认证机构有哪些,同时持有对应的公钥),服务器使⽤这个私钥对证书的签名进行加密,客户端通过这个公钥解密获取到证书的签名,从⽽校验证书内容是否是篡改过;
  • 第二组(非对称加密):用于协商⽣成对称加密的密钥,服务器生成这组 私钥-公钥 对,然后通过证书把公钥传递给客户端,然后客户端用这个公钥给⽣成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密的密钥;
  • 第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

        ⼀切的关键都是围绕这个对称加密的密钥,其他的机制都是辅助这个密钥⼯作的,第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器,第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥,如果你认为读了本篇文章您有所收获,希望给本篇文章点个赞,收藏走一波,后面我会继续与大家分享计算机网络的相关知识,关注博主不迷路~~~您的支持就是我创作最大的动力,我们下一篇文章再见~~~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式 C 编程:const 关键字 —— 打造稳定的常量空间

目录 一、const关键字的基本含义与用法 1.1. 修饰基本数据类型 1.2. 修饰指针 1.3. 修饰数组 1.4. 修饰结构体 二、const关键字在嵌入式编程中的优势 2.1. 提升代码可读性 2.2. 增强代码安全性 2.3. 优化内存使用 2.4. 促进模块化设计 2.5. 支持静态分析和测试 三、…

信创改造 - Redis -》TongRDS 安装方式之单节点模式安装

安装前准备 安装 JDK 参考链接:安装 JDK 8【Linux】 语雀 创建用户 # 用户名可以自己起 useradd rds 上传安装包到服务器 单节点模式是由两个部署单元组成:1 个RDS 服务节点,1 个 RDS 中心节点。 上传到 /home/rds 用户文件夹&#xff0…

【layui】tabs 控件内通过 iframe 加载url 方式渲染tab页面

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>tabs 内部使用 iframe 嵌套 url 页面</title><link rel"stylesheet" href"../../../libs/layui/layui-2.4.5/dist/css/layui.css"><scr…

Tomcat新手成长之路:安装部署优化全解析(上)

文章目录 1.Tomcat简介2.Tomcat原理架构2.1.总体架构2.2.连接器2.2.1.具体功能2.2.2.IO模型2.2.3.逻辑处理流程2.2.4.内部处理流程 2.3.容器2.4.启动过程2.5.请求过程 3.Tomcat适用场景4.Tomcat与其他Web容器对比5.Tomcat安装和启动5.1.Java环境变量5.2.系统服务5.3.启动关闭 6…

Pycharm 安装两种不同版本的解释器

背景 Pycharm使用的解释器是python3.11&#xff0c;python3.9.x之后不支持win7&#xff1b;有同事需要在win7上使用python制作的exe&#xff0c;而了“win7环境下运行python打包exe提示找不到api-ms-win-core-path-l1-1-0.dll”。 过程 查找了一些资料&#xff0c;发现直接将…

【python自动化一】pytest的基础使用

1.pytest简述 pytest‌ 是一个功能强大且灵活的Python测试框架&#xff0c;其主要是用于流程控制&#xff0c;具体用于UI还是接口自动化根据个人需要而定。且其具有丰富插件&#xff0c;使用时较为方便。咱们具体看下方的内容&#xff0c;本文按照使用场景展开&#xff0c;不完…

基于米尔全志T527开发板的FacenetPytorch人脸识别方案

本篇测评由优秀测评者“小火苗”提供。 本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志 T527开发板&#xff09;的FacenetPytorch人脸识别方案测试。 一、facenet_pytorch算法实现人脸识别 深度神经网络 1.简介 Facenet-PyTorch 是一个基于 PyTorch 框架实…

ECharts柱状图-交错正负轴标签,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

【Linux】线程池设计 + 策略模式

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 线程池 1-1 ⽇志与策略模式1-2 线程池设计1-3 线程安全的单例模式1-3-1 什么是单例模式1-3-2 单例模式的特点1-3-3 饿汉实现⽅式和懒汉实现⽅式1-3-4 饿汉…

Spring Boot 3 集成 Spring Security + JWT

文章目录 Spring Boot 3 集成 Spring Security JWT准备工作引入依赖设计表结构生成基本代码白名单配置 JWT配置配置参数jwt密码、过期时间等自定义未授权和未登录结果返回创建JWT过滤器 改写SecurityConfig登录验证启动查看接口未登录登录 总结 Spring Boot 3 集成 Spring Sec…

tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录

这些error的坑&#xff0c;肯定是很多人不想看到的&#xff0c;我的开源软件PakePlus是使用tauri开发的&#xff0c;PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序&#xff0c;利用Tauri轻松构建轻量级多端桌面应用和多端手机应用&#xff0c;为了实现发布的时候…

【娱乐项目】竖式算术器

Demo介绍 一个加减法随机数生成器&#xff0c;它能够生成随机的加减法题目&#xff0c;并且支持用户输入答案。系统会根据用户输入的答案判断是否正确&#xff0c;统计正确和错误的次数&#xff0c;并显示历史记录和错题记录。该工具适合用于数学练习&#xff0c;尤其适合练习基…

D86【python 接口自动化学习】- pytest基础用法

day86 pytest配置testpaths 学习日期&#xff1a;20241202 学习目标&#xff1a;pytest基础用法 -- pytest配置testpaths 学习笔记&#xff1a; pytest配置项 主目录创建pytest.ini文件 [pytest] testpaths./testRule 然后Terminal里直接命令&#xff1a;pytest&#xff…

LeetCode1556. 千位分隔数 LeetCode9. 回文数

题目一、1556. 千位分隔数 给你一个整数 n&#xff0c;请你每隔三位添加点&#xff08;即 "." 符号&#xff09;作为千位分隔符&#xff0c;并将结果以字符串格式返回。 示例 1&#xff1a; 输入&#xff1a;n 987 输出&#xff1a;"987"示例 2&#xff…

网络编程(UDP\TCP回显服务器)

目录 套接字socket TCP和UDP特点比较 特点 比较 UDP回显服务器/客户端的编写 UDP的socket api 回显服务器 客户端 TCP回显服务器/客户端的编写 TCP的socket api 回显服务器 客户端 优化服务器 1.关闭服务器创建的socket对象 2.引入线程池&#xff0c;为多个客户…

基于python的某音乐网站热门歌曲的采集与分析,包括聚类和Lda主题分析

一项目背景 在当前竞争激烈的市场环境下&#xff0c;分析酷狗音乐上的热门歌曲及其用户行为趋势&#xff0c;对平台运营、歌曲推荐和音乐创作具有重要意义。尤其是通过对酷狗音乐平台热门歌曲的数据采集与分析&#xff0c;可以深入理解用户偏好、歌曲流行的规律以及市场需求的…

论文阅读之方法: Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris

The Tabula Muris Consortium., Overall coordination., Logistical coordination. et al. Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris. Nature 562, 367–372 (2018). 论文地址&#xff1a;https://doi.org/10.1038/s41586-018-0590-4 代码地址…

国产多点低压差分(M-LVDS)线路驱动器和接收器,可替代DS91D176/SN65MLVD201

MS2111 是多点低压差分 (M-LVDS) 线路驱动器和接收器。经过优化&#xff0c;可运行在高达 200Mbps 的信号速率下。所有部件均符合 MLVDS 标准 TIA / EIA-899 。该驱动器的输出支持负载低至 30Ω 的多点总线。 MS2111 的接收器属于 Type-2 &#xff0c; 可在 -1V 至 …

【推荐算法】推荐系统的评估

这篇文章是笔者阅读《深度学习推荐系统》第五章推荐系统的评估的学习笔记&#xff0c;在原文的基础上增加了自己的理解以及内容的补充&#xff0c;在未来的日子里会不断完善这篇文章的相关工作。 文章目录 离线评估划分数据集方法客观评价指标P-R曲线ROC/AUCmAPNDCG A/B 测试分…

专题1:AI大模型在汽车行业的应用现状与展望

前言&#xff1a; 本文是《大模型在汽车行业的典型应用实践》100w字长文预告的一篇&#xff0c;本文没有泛泛的去做行业应用现状的介绍&#xff0c;而是通过引入行业调研报告的方式&#xff0c;进行详解&#xff0c;用事事和数据来说话&#xff0c;具有很好的参考意义。 一、…