【图解计算机网络】简单易懂的https原理解析

news2025/1/16 1:52:56

简单易懂的https原理解析

  • https与http的区别
  • 混合加密
    • 对称加密
    • 非对称加密
    • 混合加密解析
    • 混合加密问题
  • 摘要算法
  • 数字证书
    • 数字证书原理
    • 为什么通过CA证书可以解决中间人攻击的问题呢?
  • https握手流程

https与http的区别

http是明文传输的,非常不安全,容易被人窃取和篡改传输的内容。

https通过混合加密、摘要算法、数字证书等技术解决了http传输不安全的问题。

在这里插入图片描述

https其实就是在http与TCP之间多加一层SSL或TLS协议。

在这里插入图片描述

混合加密

要理解混合加密,需要先理解对称加密和非对称加密。

对称加密

对称加密就是加密和解密都使用同一个密钥,这种方式加解密速度快但是不安全,如果密钥被对方窃取到,就可以很简单的解密出数据。

在这里插入图片描述

非对称加密

非对称加密就是加解密使用的密钥不是同一个密钥,而是一对密钥——公钥和私钥。这密钥对是由服务端生成的,私钥一般是服务端自己保存,而公钥则会通过某种途径发放给客户端。非对称加密的特点就是公钥加密的数据只有对应的私钥能解密,私钥加密的数据只有对应公钥能解密。

比如客户端利用服务端发放的公钥对即将传输的数据进行加密,服务端利用私钥对客户端发送过来的数据进行解密。

在这里插入图片描述

但是由于非对称加密的性能较低,所以一般不会直接使用非对称加密传输数据。非对称加密更常用的场景是数字签名,这种场景一般是服务端用自己的私有加密,客户端用服务端的公钥解密。而且加解密的对象不是数据,而是通过hash算法以即将传输的数据作为参数算出的一个hash值,这个hash值经过服务端的私钥进行加密之后,就是数字签名。

在这里插入图片描述

  1. 服务端对要传输的数据通过hash算法算出一个hash值,然后对这个hash值使用私钥进行加密。
  2. 客户端接收到加密后的数字签名和数据后,通过公钥解密得到服务端算出的hash值。
  3. 客户端自己再通过相同的hash算法计算得出hash值。然后两个hash值进行比较,如果相等则说明数据确实是来源于服务端,这个数据是可信的;如果两个hash值比较后发现不相等,那就说明这个数据是被篡改过的,不是来源于服务端的数据。

非对称加密由于使用的是一对密钥而不是同一个密钥,所以安全度相比对称加密要高,但是加解密速度较慢。

混合加密解析

由于对称加密不安全,非对称加密性能又较差,所以就组合它们俩,就有了混合加密。

首先通过非对称加密,客户端使用服务端公钥把数据传输时使用的对称密钥加密传输给服务端,服务端使用私钥解密得到对称密钥。然后后续客户端与服务端之间使用对称密钥进行数据传输。

在这里插入图片描述

  1. 一开始,客户端利用服务端发放的公钥,给对称密钥进行加密,加密后的对称密钥发送给服务端。
  2. 服务端接收到加密后的对称密钥之后,就利用自己的私钥进行解密,得到客户端发来的对称密钥。
  3. 此时客户端和服务端都拥有了同一对称密钥,后续客户端和服务端之间的数据传输都使用该对称密钥进行加密。

混合加密问题

混合加密有一个问题,就是服务端的公钥如何传输给客户端而不被中间者篡改,如果这个问题不解决,单靠混合加密也是不安全的,典型的例子就是中间人攻击。

在这里插入图片描述

所以还需要数字签名和数字证书。数字签名是通过摘要算法算出的hash值再利用服务端私钥加密得到的,而数字证书则是由有公信力的CA机构颁发的CA证书。

摘要算法

摘要算法可以让数据接收方校验接收到的数据是否与数据发送方发送的数据一致。

数据发送方通过一个约定好的hash算法,待传输的数据作为参数,算出一个hash值,把这个hash值与数据一起传输。接收到数据的一方,根据约定好的hash算法,利用接收到的数据作为参数,算法出一个hash值,然后把这个算出来的hash值与接收到的hash值进行比较,如果两hash值相等,则校验通过,否则校验不通过。

在这里插入图片描述

通过摘要算法,数据接收方就可以验证数据发送方发来的数据是否完整,是否与数据发送方发出的数据一致。这种方式可以解决数据在传输的过程中由于一些意外情况导致的数据错乱的问题,但是无法防止他人的恶意攻击。

比如发送的报文被第三者截获,可以修改掉数据,然后用相同的算法重新计算hash值,这样接收数据的一方也无法发现。因此通常这个hash值还要用私钥进行加密,变成一个数字签名。

在这里插入图片描述

数字签名的原理上面已经描述过,可以看出有了数字签名,只要不发生中间人攻击,就没啥问题。但是如果服务端颁发的公钥被中间人截获,他自己重新生成一对新的公私钥,再把中间人自己的公钥冒充服务端的发给客户端,那么客户端还是不知道的。于是就需要用到数字证书。

数字证书

数字证书原理

为了解决公钥被伪造的问题,就需要用到数字证书,数字证书使得客户端能够验证他接收到的公钥是否可信。

在这里插入图片描述

  1. 首先,服务端把自己的公钥注册到CA机构。
  2. CA机构利用摘要算法,以服务端的公钥为参数,算出一个hash值,然后利用CA机构自己的私钥对这个hash值进行加密得到一个数字签名。CA机构把数字签名和服务端公钥作为CA证书的一部分,给服务端颁发一个证书。
  3. 客户端请求服务端时,服务端首先给客户端发送CA机构颁发的证书。
  4. 由于有公信力的CA机构的公钥都已经预置到操作系统里面,客户端可以通过操作系统内置的CA机构公钥对证书中的数字签名进行解密,得到hash值,再以证书中的服务端公钥为参数算出另一个hash值,如果两个hash值一致,则校验通过,说明服务端公钥可信,否则就是校验不通过,不会使用该公钥加密传输数据。
  5. 如果校验通过,客户端使用这个公钥进行加密传输。

为什么通过CA证书可以解决中间人攻击的问题呢?

因为CA机构的私钥,中间人是没有的。而CA机构的公钥又是操作系统内置,操作系统内置的都是有公信力的CA机构的公钥。

因此,即使中间人截获了服务器传输给客户端的证书,自己搞一个假证书,里面带上自己的公钥,等这个假证书传到客户端,客户端也是校验不通过的。

https握手流程

如果使用https协议,那么在TCP三次握手完毕后,要进行TLS协议的握手流程。

在这里插入图片描述

  1. 客户端生成一个随机数C并向服务端发送,服务端返回一个ack报文
  2. 服务端生成一个随机数S并向客户端发送,再发送证书,然后再发送一个Done报文,客户端收到Done报文后返回一个ack报文
  3. 客户端验证证书是否有效,如果证书验签通过,则取出里的服务端公钥,然后客户端生成一个随机数pre-master key,使用服务端的公钥加密,发送个服务端
  4. 客户端和服务端双方,使用随机数C、随机数S、随机数pre-master key生成一个对称密钥
  5. 客户端发送报文告知服务端后续使用对称密钥通讯,然后发送Finished报文,服务端返回一个ack报文
  6. 服务端发送报文告知客户端后续使用对称密钥通讯,然后发送Finished报文,客户端返回一个ack报文

可以看到,客户端使用服务端公钥加密传输的并不是对称密钥本身,而是一个随机数。而对称密钥是通过三个随机数计算生成的,这三个随机数分别是客户端生成的随机数C、服务端生成的随机数S、以及客户端生成并使用服务端公钥加密传输的pre-master。

在这里插入图片描述

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

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

相关文章

Java混淆的重要性

在软件开发领域,安全性与代码保护一直是备受关注的问题。特别是在Java这样的跨平台语言中,保护源代码的机密性和完整性显得尤为重要。Java混淆作为一种代码保护技术,其在现代软件开发中的地位日益凸显。本文将详细探讨Java混淆的重要性&#…

Java上传文件并存储到MySQL数据库

Java上传文件并存储到MySQL数据库实现过程: 第一步创建接口层 /** *文件接口层 */RestControllerRequestMapping("/file")public class FileController { //引用文件业务层 Resource private FileService fileService; /** *上传文件接…

基于51单片机的智能红外遥控电源电压调节系统设计

基于51单片机的智能红外遥控电源电压调节系统设计 摘要:随着科技的发展,电源电压调节系统在各种电子设备中发挥着越来越重要的作用。本文设计了一种基于51单片机的智能红外遥控电源电压调节系统,该系统能够通过红外遥控器实现对电源电压的快…

网络安全实训Day23

网络空间安全实训-渗透测试 文件上传攻击 定义 将Webshell文件上传到网站服务器上,从而获得网站整台服务器控制权限的攻击方式 Webshell 一种以网页形式存在的命令行执行环境,又称网页木马 分类 一句话木马 只有一行代码,功能强大&#xff…

ssm智能停车场管理系统

视频演示效果: SSMvue智能停车场 摘 要 本论文主要论述了如何使用JAVA语言开发一个智能停车场管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述智能停车…

【匹配】匈牙利匹配算法

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 匈牙利匹配算法 1. 正文 1.1 基础概念 二分图 顶点分为两个集合,集合间顶点相连,集合内点不相连 匹配 一个匹配就是一个边的…

ZYNQ之嵌入式开发04——自定义IP核实现呼吸灯、固化程序

文章目录 自定义IP核——呼吸灯实验固化程序 自定义IP核——呼吸灯实验 Xilinx官方提供了很多IP核,在Vivado的IP Catalog中可以查看这些IP核,在构建自己复杂的系统时,只使用Xilinx官方的免费IP核一般满足不了设计的要求,因此很多…

【Linux进程】守护进程

【Linux进程】守护进程 目录 【Linux进程】守护进程守护进程守护进程概念进程组和会话的概念 系统的守护进程函数 作者:爱写代码的刚子 时间:2024.4.27 前言:本篇博客将会介绍守护进程,以及进程组和会话的概念,如何变成…

我教你如何可翻页电子画册

​电子画册是一种创新的方式,可以将传统的纸质画册转化为数字化的形式,并且具备翻页的功能。它不仅可以提供更好的阅读体验,还可以方便地分享给他人。 1.选择制作工具: 有许多在线平台和软件可以帮助你制作电子画册,比…

Qt6找不到Bluetooth蓝牙组件

图文解释来了!调试了一下午。 错误如图: Failed to find required Qt component "Bluetooth" 解决方法: 找到安装QT安装包下的MaintenanceTool.exe,双击打开 打开后,找到这个Qt Connectivity,…

ChatGPT有记忆了?!持久记忆(Memory)功能详细解读和教程!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

【个人博客搭建】(11)swagger添加jwt信息

这个主要是为了方便使用swagger时,能更好的带入我们的token。 ps:如果使用其他第三方api工具(apipost、postman等)则不需要。 (当然,不用不能没有,是吧) 1、在AddSwaggerGen内添加…

阿里开源截止目前为止参数规模最大的Qwen1.5-110B模型:MMLU评测接近Llama-3-70B,略超Mixtral-8×22B!

本文原文来自DataLearnerAI官方网站:阿里开源截止目前为止参数规模最大的Qwen1.5-110B模型:MMLU评测接近Llama-3-70B,略超Mixtral-822B! | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051714140775766 Qw…

Android使用AlertDialog实现弹出菜单

最近又开始捣鼓APP,许多api , class都忘记怎么用了,楼下使用AlertDialog实现个弹出菜单,结果直接crash,查了半天,终于即将,记录一下…… 1 实现代码 AlertDialog.Builder mBuilder new AlertDialog.Builde…

纯血鸿蒙APP实战开发——主页瀑布流实现

介绍 本示例介绍使用ArkUIWaterFlow组件和LazyForEach实现瀑布流场景。该场景多用于购物、资讯类应用。 效果图预览 使用说明 加载完成后显示整个列表,超过一屏时可以上下滑动。 实现思路 创建WaterFlowDataSource类,实现IDataSource接口的对象&…

SpringBoot 常用注解总结超详细(面试)

目录 一、组件相关🎁 Controller Service Repository Component 二、依赖注入相关🍉 Autowired Resource 根据类型注入(By Type) 根据名称注入(By Name) 区别 Qualifier Resource 和 Qualifie…

通用视觉多模态大模型 一统理解/生成/分割/编辑

这是一款通用视觉多模态大模型,支持从视觉理解到视觉生成、从低层次到高层次的一系列视觉任务,解决了困扰大语言模型产业已久的图像/视频模型割裂问题,提供了一个全面统一静态图像与动态视频内容的理解、生成、分割、编辑等任务的像素级通用视…

如何在Windows 11中安装或删除可选功能?这里提供详细步骤

序言 Windows 11提供了各种各样的功能,其中许多功能,如Linux的Windows子系统(WSL)和语言包,它默认情况下不会安装。你也可以删除默认情况下安装的功能,以下是如何以图形方式或从命令行执行此操作。 关于Windows 11中的可选功能,你需要了解的内容 还有其他添加和删除功…

UVa12313 A Tiny Raytracer

UVa12313 A Tiny Raytracer 题目链接题意分析AC 代码 题目链接 UVA - 12313 A Tiny Raytracer 题意 给出 《训练指南》题意翻译 本题的任务是实现一个小型光线追踪渲染器。场景由若干三角形网格(triangle mesh)组成,有且仅有一个点光源&…

基于Vue3实现的 宫格 图片摆放

一个可以支持无限宫格的 vue3实现 本来要参考微信群头像的规则实现&#xff0c;网上找到一大堆类似的需求&#xff0c;奈何XXX折磨人&#xff0c;九宫格已经不能满足ta了。 当前代码实现了………… 好多东西(可以多宫格).具体的看效果图 code <style scoped langless> .…