【Linux】图解详谈HTTPS的安全传输

news2024/9/27 15:43:09

文章目录

      • 1.前置知识
      • 2.只使用对称加密
      • 3.只使用非对称加密
    • 因为私钥加密只能公钥解开,公钥加密只能私钥解开
      • 4.双方都是使用非对称加密
      • 5.非对称加密 + 对称加密
      • 6.非对称加密+对称加密+CA认证
        • (一)CA认证
        • (二)https
    • (1)如果中间人像之前的方案那样子伪造假的证书发给对方呢?
    • (2)如果中间人发的就是申请的自己的证书呢?

1.前置知识

在了解https之前,我们需要知道一些概念。

数据指纹:我们简单的将其理解为我们发送的数据的摘要,然后通过特定的哈希算法生成的一个哈希值。它具有唯一性。

数据签名:数据指纹经过加密后边就形成了数据签名。

对称加密:我们可以将其理解为一篇密文, 需要密钥才能解开。
非对称加密:这里也是将其理解为一篇密文,但这里一对密钥,分为公钥和私钥,用公钥加密的密文只能用私钥解开,用私钥加密的密文只能用公钥解开,私钥一般是个人持有,公钥一般是发布出去的。

我们在用http传输数据的时候,通常都是明文传输,这就伴随着我们发送的内容可能会被人截取到,这时候如果有一些不怀好意的人想要获取我们的数据,就很有可能会获取到,造成信息的泄露,所以就有了https的出现。下面我们一个个的思考解决方案。

2.只使用对称加密

如果我们的服务端和客户端都使用对称加密,用密钥加密的内容发送给对方,对方再用密钥来解密,这样子是否可以呢?
在这里插入图片描述
我们这样子一看,我们用密钥加密的内容传输,即使中间有人截到了我们的内容,是不是也无法解密。
在这里插入图片描述
但是,这里有个问题:我们的密钥是不是也要被对方拿到才行?
那么如果我们在交换密钥的过程中,密钥肯定是一个裸露的状态呀。那如果这时候中间人就把密钥劫持到了呢?
这时候假如你要发的信息,中间人只要将拿到的密钥一解,不就可以知道你的信息了吗?
在这里插入图片描述
所以这种方案是不可以的。

———————————————————————————————

3.只使用非对称加密

既然你的对称加密对方会拿到密钥,那我换成非对称加密,在开始的时候,将公钥发给客户端,客户端再用公钥加密发给服务端。

因为私钥加密只能公钥解开,公钥加密只能私钥解开

在这里插入图片描述
从客户端发送信息到服务端是安全的,因为只有服务端的私钥才能解开
但是从服务端发送信息给客户端是不是不安全?因为公钥可能也会被中间人拿到,那样子的话中间人就能拿到信息了。
那现在的问题就是服务端到客户端不安全,那么我们是否可以在客户端也像服务端那样子呢?

4.双方都是使用非对称加密

在这里插入图片描述

  • 首先我们先交换双方的公钥
  • 然后由于只有对方自己才有私钥,也就是说用对方的公钥加密的内容只有对方自己的私钥才能解开。

但是非对称加密会有一个缺点,就是通信效率会变慢,但是这样子真的就安全了吗?

在这里插入图片描述
首先,客户端和服务端不知道对方收到的公钥是不是对方的呀!!!
那么中间人就可以抓住这个特点,

  • 在交换公钥期间,把服务器要发送的公钥换成自己的发送给客户端
  • 客户端要发送给服务端的公钥,中间人就把这个公钥劫持,换成自己的公钥发给对方
  • 这样子是不是就完美的扮演了一个中间人拿到信息了。

5.非对称加密 + 对称加密

由于双方都使用非对称加密效率太慢了,我们只需要让对方安全的拿到对称密钥就可以了,那么我们可以这样子:让服务端使用非对称加密,客户端使用对称加密
在这里插入图片描述

  • 客户端申请通信
  • 服务端发送公钥
  • 客户端将公钥加密对称密钥发给服务端
  • 往后都使用公钥通信

但是这里也还是存在着一个问题,就是不知道发来的公钥是不是服务端的!
如果中间人像上一个方案那样子,将自己的公钥发过去,客服端也不知道

6.非对称加密+对称加密+CA认证

(一)CA认证

我们归根结底的问题就是不知道公钥是不是对方的,所以我们就引入证书。

CA认证:服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。

CA认证的流程:
在这里插入图片描述
当服务端申请CA证书的时候,CA机构会对该服务端进⾏审核,并专⻔为该⽹站形成数字签名,过程如
下:

  1. CA机构拥有⾮对称加密的私钥A和公钥A’
  2. CA机构对服务端申请的证书明⽂数据进⾏hash,形成数据摘要
  3. 然后对数据摘要⽤CA私钥A’加密,得到数字签名S
    服务端申请的证书明⽂和数字签名S 共同组成了数字证书,这样⼀份数字证书就可以颁发给服务端了

而我们很多的浏览器和设备在出厂时就内置了CA的公钥,是可以解开查看证书内容的

(二)https

在这里插入图片描述
我们来看看接下来的几个问题:

(1)如果中间人像之前的方案那样子伪造假的证书发给对方呢?

这一点我们这时候就不用担心了,因为即使你中间人解开了证书,想伪造一份假证书,证书加密需要我们的私钥才能进行加密,而私钥世界上只有CA机构才有,所以中间人是造不出来假证书的。

(2)如果中间人发的就是申请的自己的证书呢?

在这里插入图片描述
我们也不用太担心,因为我们可以看到证书内容里包含了很多的信息,如果中间人申请了证书,域名肯定是不一样的,况且证书里面还包含了申请者的信息,那么即使追究,也能找到是谁。

像这种中间人攻击的方式,我们将其称为 “MTM攻击”

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

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

相关文章

耳夹式耳机哪个牌子好?主流耳夹式耳机推荐,多维度耳夹式耳机测评

耳夹式耳机哪个牌子好?耳机已经逐渐走进了众多消费者的生活,可以非常便捷地满足人们的对声音的需求,无论是在享受音乐还是接听电话方面都非常方便,极大地提升了生活的便利性。然而,随着耳夹式耳机的热度不断攀升&#…

IDEA插件开发入门

前置条件: Java17、Gradle8 1. 安装插件 Plugin DevKit 2. 新建项目 File → New → Project 3. 项目结构 📢 新建一个XxxAction 4. 插件入口 XxxAction 继承 AnAction ,实现 actionPerformed 方法,这是一个插件的入口 5. 插件配置 …

裸辞后勇闯AI领域:我的AGI产品经理之路

2021 年,我开始接触生成式 AI。2023 年 8 月,我按捺不住内心对 AI 技术浪潮的热情,从外企裸辞投身 AI。2023 年,我们团队先后入围由百度和阿里组织的 AGI 黑客马拉松活动,并在阿里第三季 AI 创客松中获得“从 0 到 1 奖…

远程唤醒局域网主机技术Wake On LAN

WOL用途 如果你在开发一个计算机管理软件(利旧现有主机,实现统一运维管理),例如电脑课开课前老师一键开启电教室的电脑 。 魔法原理 Wake-on-LAN 的原理其实很简单。我们发送一个特殊的网络包(俗称"魔术包&quo…

学生党头戴式蓝牙耳机怎么选?平价学生党头戴式蓝牙耳机排行推荐

在选择适合学生党的头戴式蓝牙耳机时,我们不仅要考虑价格因素,还要兼顾音质、舒适度、降噪效果、续航能力以及是否具备实用的功能等多个方面,那么学生党头戴式蓝牙耳机怎么选?作为学生群体,我们既追求性价比&#xff0…

微软推出GRIN-MoE:开创专家路由新范式

前沿科技速递🚀 在人工智能领域,模型的性能和可扩展性一直是研究的热点。微软最近推出的GRIN-MoE(Gradient-Informed Mixture-of-Experts)模型,以其独特的架构和显著的性能表现,正引领着AI技术的前沿&#…

南沙csp-j/s一对一家教 解一本通题: 1937:【06NOIP普及组】数列

【题目描述】 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k3时,这个序列是: 1,3,4,9,10,12,13&a…

一文读懂Ingress-Nginx以及实践攻略

一文读懂Ingress-Nginx以及实践攻略 目录 1 概念 1.1 什么是Ingress? 1.1.1 主要功能: 1.2 Ingress的组件1.3 什么是ingress-nginx1.4 ingress-nginx优点和限制1.5 版本兼容性矩阵 2 实践: Ingress nginx部署 2.1 使用helm部署ingress-ngin…

cscode搭建vue项目

创建前安装环境 ctrlj弹出终端 window需要管理员运行并且授权 node -v #显示版本号,说明 node 已经装好 npm -v #显示版本号,说明 npm 可以使用 # 安装cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm -v #显示版本号&…

10分钟制作一个简易的word模版

简易word模板制作。 简言 自用的一个word模版,平常套用其他格式的模板,常常将注意力转移到寻找word模版上,这里提供一个简易的word模版制作教程。 格式要求 (1)正文格式字体小四,中文宋体,西…

SpringCloud 2023 Gateway的Predicate配置详解、自定义Route Predicate Factory

目录 1. Predicate Factories介绍2. 常用的内置Route Predicate使用2.1 配置语法说明2.2 配置使用 3. 自定义Route Predicate Factory3.1 实现步骤:3.2 实现代码如下:3.3 application.yml配置3.4 测试 1. Predicate Factories介绍 Spring Cloud Gateway…

数字货币交易所开发与智能合约交易系统

数字货币交易所作为加密经济的重要组成部分,为用户提供了一个安全、便捷的平台来买卖各种数字资产。随着区块链技术的发展,智能合约在交易所的应用日益普及,使得交易过程更加高效和透明。本文将探讨数字货币交易所的开发过程以及智能合约在交…

Spring源码学习:SpringMVC(2)DispatcherServlet初始化【子容器9大组件】

目录 DispatcherServlet类图HttpServletBean#initnew ServletConfigPropertyValues() FrameworkServlet#initServletBeaninitWebApplicationContextcreateWebApplicationContextconfigureAndRefreshWebApplicationContext DispatcherServlet内部9大组件初始化初识9大组件Dispat…

大模型还能产生幻觉?一文讲清楚原理和解决方法

“像我们这样相信物理学的人都知道,过去、现在和未来之间的区别只是一种顽固执着的幻觉。换句话说,时间是一种幻觉。” ——波尔 幻觉,即一种看似真,实为假的感受。最近接触到了一个概念:大模型幻觉。有点好奇&#…

【Qt | QList 】QList<T> 容器详细介绍和例子代码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 2024-09-26 …

python面向对象三大特性

面向对象 面向对象编程,是许多编程语言都支持的一种编程思想。 基于模板(类)去创建实体(对象),使用对象去完成功能开发 面向对象的三大特性 封装继承多态 封装 封装表示:将现实世界事物的属性和行为,封装到类中,描…

打造高质量软件架构 - 9大质量属性

关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,阿里云认…

球体RCS计算 - 金属球的单站RCS【CST软件分析】

用金属球算RCS雷达散射截面可谓RCS的入门案例,本期用T和I两个求解器算单站RCS进行比较。 Step 1. RCS模板,T-solver, 频率0-5GHz,然后建模,半径10.16cm,可以算出来电尺寸在5GHz大概为三个波长,…

ROS理论与实践学习笔记——2 ROS通信机制之常用的命令

4.1 rosnode操作节点 rosnode:是用于获取节点信息的命令。 rosnode ping 测试到节点的连接状态 rosnode list 列出活动节点 rosnode info 打印节点信息 rosnode machine 列出指定设备上节点 rosnode kill 杀死某个节点 rosnode cleanup 清除不…