HTTPS讲解

前瞻

HTTP与HTTPS的关系
    


HTTPS也是一个在应用层的协议,是在HTTP协议基础上的一个加密解密层

明文 密文 秘钥


明文->秘钥 加密
秘钥->明文 解密

例如:明文为7 秘钥为2 7^2=101=5; 5就是密文
例子:
 因为http的内容是明文传输的,明文数据会经过路由器、wifi热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是 中间人攻击,所以我们才需要对信息进行加密。


常见的加密方式


对称加密:
单秘钥加密,加密和解密所用秘钥相同
DES 3DES AES
特点:加密效率高,加密快,计算小
非对称加密:
双密钥加密 :公开秘钥 私有秘钥
DSA RSA
我们可以将明文使用公开秘钥加密,再用私有秘钥解密
也能加个明文使用私钥加密,公钥解密
特点:算法强度复杂 运算速度非常慢

数据摘要&&数据指纹


对数据采用类如哈希和MD5方法变成散列值
  
  
应用场景: 百度云盘秒传 当我们传入一部电影时,会先形成数据指纹,一旦百度云盘对比指纹成功,就会形成一个指向性文件,指向别人已经上传好的文件    

我们来设计https


提出方案,发现方案问题


方案一:双方只用对称秘钥:


中间人也能拿到公钥,当客户端发送请求时,中间人能直接用公钥解密


  
方案二:双方只用非对称加密:

  
中间人无法拿公钥解密,只有服务器能用私钥解密,貌似是安全的,但是服务端向给客户端回应呢,服务端用私钥加密,但是中间人不也可以用公钥解密,用公钥加密,客户端又无法解密


方案三:双方都用非对称加密


服务器有一对非对称秘钥 公钥S 私钥S*
客户端有一对非对称秘钥 公钥C 私钥C*


双方交换公钥 此时中间人,客户端,服务端都有S C 客户端和服务端额外有自己的 S* C*
当客户端用S加密request 只有服务器能用S*解密,没问题,中间人无法解密


服务端进行响应,用客户端的公钥C加密,只有客户端能用自己的私钥C*解密,中间人也无法解密
看起来无懈可击,但是非对称加密运算速度非常慢,可能导致响应到零点几秒
并且依旧有安全问题
但数据只值10元钱。但是我们用100去破密,此时可以说我们是加密是安全的    
  


方案四:用非对称加密与对称加密
  


服务器拥有S S* ,客户端拥有公钥P,服务端发给客户端S,此时我们得让服务端知道P,但不能让中间人知道P,此时就用S+P发给服务端,只有服务端能用S*解密得到公钥P,此后只用对称秘钥进行通信。
既解决速度问题,又解决了安全问题
即使市面上HTTPS60%都是这种方案,但是还是有问题


我们试着作为攻击这个方案
我们作为中间人一直都是被动处理信息,但是我们是可以主动发起攻击的,假设此时中间人也拥有了非对称私钥M M*


我们可以在客户端向服务端获取公钥S的时候就发起攻击,直接将S换成M,假装无事发生发送给客户端,客户端再用M加密对称秘钥C,此时客户端发送给服务端C+M,此时中间人截获,可以直接用M*截取C,之前,我们中间人客户端服务端都是不知道我们的存在的,我们肯定要一直待在暗处,此时就不能傻乎乎的把C+M发送给服务器,因为一旦发生C+M,服务器解密不出来C,就发现了我们的存在,此时我们就又要假装无事发生的将之前获取S,对C+S发送给服务器,让服务器以为只有自己知道了C。


同理在上面我们提到双方都用非对称加密也是有安全问题的,我们直接将S截获换成M,把服务器骗了,当客户端发送req+M时,中间人就可以解密了
这个问题,在于我们客户端太单纯了,一有坑就跳。

此时我们就得引入证书了

申请https证书-CSDN博客

解决:方案五

浏览器/client内置CA权威机构的公钥+证书(server的公钥)+非对称+对称= 方案5

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

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

相关文章

危险物品图像分割系统:一键训练

危险物品图像分割系统源码&数据集分享 [yolov8-seg-GFPN&yolov8-seg-CSwinTransformer等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global…

LabVIEW共享变量通信故障

问题概述: 在LabVIEW项目中,使用IO服务器创建共享变量,并通过LabVIEW作为从站进行数据通信。通讯在最初运行时正常,但在经过一段时间或几个小时后,VI前面板出现错误输出,导致数据传输失败。虽然“分布式系统…

折扣影票接口对接渠道如何选择?

选择折扣影票接口对接渠道需要综合多方面因素考虑,以下是一些建议: 1.合法性和合规性: 确认供应商资质:优先选择具有相关票务经营资质的渠道。比如一些大型的在线票务平台,它们通常经过官方认证和监管,在…

[JAVAEE] 多线程的案例(二) - 阻塞队列 生产者消费者模型

目录 一. 什么是阻塞队列 二. java中的阻塞队列 三. 生产者消费者模型 3.1 生产者消费者模型与阻塞队列密不可分的关系 3.2 阻塞队列在生产者消费者模型的作用 a. 解耦合 b. 削峰填谷 四. 模拟实现阻塞队列 4.1 实现put方法 4.2 实现take方法 4.3 生产者消费者模型​…

了解C# 程序结构

本节我们将学习 C# 编程语言的结构,为了让大家能够对 C# 程序结构有个更好的理解,我们会先演示一个最小的、最简单的 C# 程序结构,以便作为接下来的章节的参考。 C# Hello World 实例 一个 C# 程序主要包括以下部分: 命名空间声明…

08 实战:色彩空间展示(本程序以视频为主)

程序效果如下: 我在这里讲解RGB和YCbCr的原理: 一、RGB颜色空间 1.1 基本概念 RGB颜色空间是一种最基础和常用的颜色表示方式,它基于人眼感知色彩的三原色原理。RGB分别代表: R(Red):红色G(Green):绿色B(Blue):蓝色通过这三种基本颜色的不同组合,可以产生人眼…

Promise、async、await 、异步生成器的错误处理方案

1、Promise.all 的错误处理 Promise.all 方法接受一个 Promise 数组,并返回所有解析 Promise 的结果数组: const promise1 Promise.resolve("one"); const promise2 Promise.resolve("two");Promise.all([promise1, promise2]).…

基于人体姿势博文文章

MATLAB运动目标检测系统应用背景 运动目标的定位跟踪,检测识别,运动分析在图像压缩、运动分析、交通检测,智能监控等方面有主要的应用。 首先,在图像压缩中,运动目标检测技术可以在背景区域中将前景区域提取分割出来…

91.【C语言】数据结构之单向链表的查找,中间插入和删除,销毁

目录 1.链表的查找函数 2.链表的修改函数 3.链表的中间插入函数 1.在pos之前插入:SLTInsertBefore函数 1.借助头指针pphead 示意图 代码示例(写入SList.c) 头文件添加SLTInsertbefore的声明 main.c的部分代码改为 1.测试中间插入 2.测试头部插入 3.测试pos为NULL的…

机器视觉:9点标定的原理与实现

一、什么是标定 标定就是将机器视觉处理得到的像素坐标转换成实际项目中使用到的毫米坐标。简单说即使看看实际单位距离内有几个像素,如下图所示,10mm的距离内有222个像素,那像素坐标和实际的毫米坐标就有个比例关系了。 二、九点标定 9点标…

API网关的作用--为什么微服务需要一个API网关?

微服务网关核心作用就是协议转换、安全隔离和流量控制 微服务架构中,API网关作为系统的入口点,可以统一处理所有客户端请求。 1)协议转换:它能够支持多种通信协议(如HTTP、gRPC等)之间的相互转换&#xff…

如何初始化一个线上的GitHub仓库,在本地已有的仓库中上传到线上

如何初始化一个线上的GitHub仓库,在本地已有的仓库中上传到线上, 首先,先创建一个线上的仓库 本地有一个曾经的仓库,或者本地git init创建一个本地仓库 根据线上仓库的主页给的提示代码进行上传 代码如下: …or cr…

gateway 整合 spring security oauth2

微服务分布式认证授权方案 在分布式授权系统中,授权服务要独立成一个模块做统一授权,无论客户端是浏览器,app或者第三方,都会在授权服务中获取权限,并通过网关访问资源 OAuth2的四种授权模式 授权码模式 授权服务器将授…

(三)行为模式:11、模板模式(Template Pattern)(C++示例)

目录 1、模板模式含义 2、模板模式的UML图学习 3、模板模式的应用场景 4、模板模式的优缺点 5、C实现的实例 1、模板模式含义 模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤…

故障诊断 | CNN-ResNets滚动轴承故障诊断实例代码

故障诊断 | CNN-ResNets滚动轴承故障诊断实例代码 目录 故障诊断 | CNN-ResNets滚动轴承故障诊断实例代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 CNN-ResNets(卷积神经网络-残差网络)在滚动轴承故障诊断中是一种常用的方法。这种方法利用…

Docker 实践与应用举例教程:从入门到精通

Docker 实践与应用举例教程:从入门到精通 引言 在现代软件开发中,Docker 已成为一种不可或缺的工具。它通过容器化技术简化了应用的部署、管理和扩展,极大地提高了开发和运维的效率。本文将详细介绍 Docker 的基本概念、安装步骤、常用命令…

arm ubuntu22.04 安装es7.16.2

1、更新软件包 sudo apt update && sudo apt upgrade -y 2、安装jdk11 sudo apt install openjdk-11-jdk -y 安装查看版本 java -version 输出应该是这样的 openjdk version "11.0.11" 2021-04-20 OpenJDK Runtime Environment (build 11.0.119-Ub…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-22

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-22 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-22目录1. PoisonedRAG: Knowledge corruption attacks to retrieval-augmented generation of large language models摘要创新点…

Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2

目录 1 环境整合配置 2 Swagger2 常⽤注解说明 2.1 Api 2.2 ApiOperation 2.3 ApiImplicitParams 2.4 ApiResponses 2.5 ApiModel 3 用户模块注解配置 3.1 Controller 使用注解 3.2 JavaBean 使用注解 4 Swagger2 接⼝⽂档访问 由于 Spring Boot 能够快速开发、便捷…

duilib的应用 在双屏异分辨率的显示器上 运行显示不出来

背景:win11,duilib应用,双显示器,两台分辨率相同,分别设置不同的缩放以后,应用运行以后,程序闪一下消失或者程序还在,但是UI显示不出来。 原因 窗口风格设置不合理,所以…