https 协议

目录

加密方式

对称加密

非对称加密

非对称加密 + 非对称加密

非对称加密 + 对称加密

AC证书

AC证书内容

数据摘要

数据签名


在我们前面学习的http协议里面,我们发送的内容都是明文传输的,所以在安全上并不安全,但是在现在信息发达的时代里,如果还是使用 http 协议,那么就是很危险的,所以目前我们接触到的基本上都是 https 协议。

而https协议上也就是在 http 协议里面加了 TLS/SSL 协议,而这两个协议就是用来加密的。

http协议是明文传输的,所以当有中间人修改数据后,我们也是不能被发现的,或者是明文传输的话,被黑客看到我们的信息,那么也是很不隐私的。

那么解决方案是什么呢?加密!

加密方式

但是我们下面并不是要谈加密,而是谈如何加密!

那么加密有哪些方式呢?

  1. 对称加密

  2. 非对称加密

  3. 非对称 + 对称加密

加密的方式就是这三种,那么这些加密有什么特点呢?

对称加密

对称加密:对称加密相对于非对称加密比较简单,举一个简单的例子,对称加密有,假设现在发送的是数据 那么对这个数据异或另一个数字,然后得到带了一个数据,那么这个数据就是经过加密的数据,当这个数据到达对端主机后,那么将这个数据在异或这个密钥,那么就可以得到原始的数据。

这就是使用对称加密,但是对称加密是有问题的。

如果使用对称加密,那么第一次的密钥怎么让对方主机知道呢?

如果服务器将通信使用的密钥明文发送的话,那么就会被黑客看到,那么第一次的密钥协商就是有问题的?那么此就需要一个密钥的密钥来解决问题,这就是鸡生蛋,蛋生鸡的问题了。

非对称加密

非对称加密就是首先,服务器有公钥和私钥,当客户端第一次给服务器发送的时候,服务器就会将自己的公钥交给客户端,那么客户端就可以拿公钥加密,然后发送给服务器,此时就只有拿私钥的服务器能解密的,后面服务器也就可以拿私钥加密,然后客户端手里有公钥,那么客户端也就可以看到服务器发送的数据了。

非对称加密就是这样,但是非对称加密也是有问题的,因为不仅仅是客户端给服务发送数据,服务器也需要给客户端响应,那么当服务器给客户端响应的时候,黑客也是可以看到服务器的公钥的,那么此时黑客就可以看到服务器到客户端的数据,此时也是不安全的。

那么需要怎么办呢?

非对称加密 + 非对称加密

由于只有一个非对称加密是不够的,那么就需要采用双放都是非对称加密。

第一次,客户端访问服务器,然后服务器给客户端返回自己的公钥,此时公钥是可以被其他人拿到的,然后客户端拿到服务器公钥后,拿服务器公钥对自己的公钥加密,然后发送给服务器,此时黑客是不能拿到的,因为此时被服务器公钥加密的数据,只能由服务器的私钥解密,然后服务器拿到了客户端的数据后,使用自己的私钥解密,然后拿到客户端的公钥,此时服务器就可以给客户端发送数据的时候,就可以拿客户端发送的公钥加密了,此时发送到网络中的数据,只有客户端可以解密。

但是非对称加密是比较复杂的,而且在解密的时候也是比较浪费世间的,所以非对称加密+非对称加密是不好的,其实不光是这样,而且其实也是可以被中间人拿到数据的!

那么中间人要怎么拿到数据呢?我们下面先看一下如何解决非对称加密的速度慢的问题。

非对称加密 + 对称加密

上面由于双方都是非对称,所以比较慢,下面使用非对称和对称一起用,前面使用非对称密钥协商对称密钥,后面就使用对称密钥来通信。

首先客户端访问服务器,服务器将公钥发送给客户端,客户端使用服务器公钥对一格对称密钥加密,然后对称密钥此时是不能被黑客看到的,所以此时数据是安全的,当服务器拿到数据后解密,拿到对称密钥,然后后面就是使用对称密钥加密解密。

这里我们就来说一下前面说的中间人问题,那么中间人怎么攻击呢?

假设现在有一个中间人,mid。

当客户端服务器第一次通信的时候,也就是当服务器给客户端返回公钥M的时候,此时中间人将M替换成自己的公钥H,但是把M保存起来,此时在将数据发送给客户端,此时客户端拿到的公钥就是H,然后客户端会使用H来加密一个对称密钥S,然后发送给服务器,此时中间人拿到该数据,然后使用中间人的私钥H‘来解密,拿到对称的密钥,然后中间人对对称密钥S使用M加密,然后发送给服务器,此时服务器也就拿到了对称密钥S,在此过程中,客户端和服务器都不知道中间人的存在,也并不知道中间人修改过数据,在客户端和服务器协商好密钥S后就使用密钥S通信,但是中间人也是知道S密钥的,所以此时中间人是可以知道客户端和服务器的数据的。

AC证书

我们发现上面的加密都是有问题的,那么我们需要怎么做呢?

AC证书,AC证书是什么呢?AC证书就是一个可以信任的机构,该机构为特定的网站颁发证书,然后每一次通信的时候,网站就将该证书进行hash映射形成摘要,然后通过加密后,形成签名,然后就将该证书与签名一起发送过去,如果中间被修改,那么对签名进行解密后,然后再对证书进行相同的hash映射后,如果形成的摘要和签名解密后的摘要不同,那么说明数据被中间人修改过,所以就是不可以的。

上面就是如何通过AC证书来检测数据是否被修改过,如果修改过,那么该数据就是不可信任的。

下面我们介绍一下什么是AC证书:

AC证书内容

AC证书里面包含了一些内容,其中该内容就包含了对应网站的信息,例如:网站的网址、以及该网站的公钥等...

重要的就是该网站的公钥,主要是为了让客户端看到该公钥。

数据摘要

数据摘要就是对AC证书进行hash有映射,对证书进行hash隐私后,就形成了摘要,然后对摘要再进行AC机构的私钥加密后,然后形成数据签名。

数据签名

数据签名就是再通过数据摘要,然后使用AC机构的私钥加密,只能由AC机构的公钥解密,但是私钥只有AC机构拥有,所以想要形成签名,只能由AC机构来形成。

所以对数据摘要进行加密后就形成了签名。

有了数据签名后,此时网站和客户端通信的时候,就可以将网站的信息和数据签名放在一起了,然后发送给客户端。

那么有了数据签名和证书后,看一下如何加密。

此时当客户端第一次给服务器发送数据的时候,服务器给客户端返回了自己的证书和数据签名放到一起。

如果此时中间人想攻击的时候,那么中间人将AC证书里面的公钥切换为自己的公钥。

那么当该数据到达客户端的时候,客户端就会验证AC证书的真假,客户端就会对AC证书进行相同的hash映射,然后,形成数据摘要,然后在对数据签名进行解密,也形成一个数据摘要,如果AC证书美哟被修改,那么这两个摘要就是相同的,如果被修改了,那么形成的数据摘要就会差别很大,此时客户端就会意识到数据被修改。

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

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

相关文章

Java高级技术:优化性能与扩展性的最佳实践

标题:Java高级技术:优化性能与扩展性的最佳实践 摘要:本文将介绍Java中一些高级技术,以提高性能和代码的扩展性。本文不包括反射和并发编程,旨在帮助开发者进一步提升Java应用程序的质量和可维护性。 优化性能的最佳实…

面试题目总结(三)

1. Spring、Springboot、springMVC、Spring Cloud 的区别: Spring:Spring 是一个开源的、轻量级的Java框架,提供了丰富的功能和组件,用于构建企业级应用程序。Spring框架包含了很多模块,包括核心容器、数据访问、事物…

MATLAB算法实战应用案例精讲-【数模应用】漫谈机器学习(七)

目录 几个高频面试题目 机器学习算法工程师需要掌握哪些编程语言? 1.Python 2. C# 3.JavaScript 4. R 5.Java

Linux之Apache服务器安装及配置

一、Apache服务器简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用。Apache曾经是世界使用排名第一的Web服务器软件&#xf…

VSCODE连接远程服务器

安装ssh插件 根据你的操作系统选择对应的版本进行下载和安装。 安装完成之后,启动vscode,选择左侧Extensions 选项卡,在输入框搜索 remote ,选择安装Remote-SSH插件。 安装完成之后会在左侧新增一个选项卡Remote Explorer&#xf…

肥猫游戏报价器|计价器|王者荣耀代练陪练等游戏报价器软件介绍说明

目录 1. 前言2. 软件著作权3. 软件使用说明3.1 进入软件3.2 用户登录3.3 首页3.4 报价器3.4.1 总体介绍3.4.2 王者报价器3.4.3 LOL手游报价器3.4.4 英雄联盟报价器3.4.5 云顶之弈报价器3.4.7 王者水晶报价器3.4.8 和平精英报价器3.4.9 蛋仔派对报价器3.4.10 穿越火线报价器3.4.…

kafka学习笔记--broker工作流程、重要参数

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…

Linux mc命令教程:如何有效地使用mc命令(附案例详解和注意事项)

Linux mc命令介绍 mc命令是Linux中的一个视觉文件管理器,全称为Midnight Commander。它提供了一个用户友好的界面,使得在Linux环境中的文件和目录管理变得更加直观和方便。mc命令支持鼠标操作和颜色显示,同时也提供了一套菜单接口&#xff0…

TypeScript 常用高级类型

目录 前言: TypeScript 常用高级类型 基本概念 高级类型 1. 交叉类型(Intersection Types) 2. 联合类型(Union Types) 3. 映射类型(Mapped Types) 4. 条件类型(Conditional…

GGML 或GGUF的14种不同量化模式说明

查看 TheBloke/Llama-2–13B-chat-GGML 存储库中的文件,我们可以看到 14 种不同的 GGML 模型,对应于不同类型的量化。它们遵循特定的命名约定:“q” 用于存储权重的位数(精度) 特定变体。以下是所有可能的量化方法及其…

Pytorch-Transformer轴承故障一维信号分类(三)

目录 前言 1 数据集制作与加载 1.1 导入数据 第一步,导入十分类数据 第二步,读取MAT文件驱动端数据 第三步,制作数据集 第四步,制作训练集和标签 1.2 数据加载,训练数据、测试数据分组,数据分batch…

据房间Id是否存在,判断当前房间是否到期且实时更改颜色

重点代码展示&#xff1a; <template><el-col style"width: 100%;height: 100%;"><el-col :span"20"><el-card class"room_info"><avue-data-icons :option"option"></avue-data-icons></el-…

RT-DETR算法优化改进:轻量化自研设计双卷积重新设计backbone和neck,完成涨点且计算量和参数量显著下降

💡💡💡本文自研创新改进:双卷积由组卷积和异构卷积组成,执行 33 和 11 卷积运算代替其他卷积核仅执行 11 卷积,YOLOv8 Conv,从而轻量化RT-DETR,性能如下表,GFLOPs 8.1降低至7.6,参数量6.3MB降低至5.8MB RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_637742…

ubuntu-c++-可执行模块-动态链接库-链接库搜索-基础知识

文章目录 1.动态链接库简介2.动态库搜索路径3.运行时链接及搜索顺序4.查看可运行模块的链接库5.总结 1.动态链接库简介 动态库又叫动态链接库&#xff0c;是程序运行的时候加载的库&#xff0c;当动态链接库正确安装后&#xff0c;所有的程序都可以使用动态库来运行程序。动态…

Android帝国之日志系统--logd、logcat

本文概要 这是Android系统进程系列的第四篇文章&#xff0c;本文以自述的方式来介绍logd进程&#xff0c;通过本文您将了解到logd进程存在的意义&#xff0c;以及日志系统的实现原理。&#xff08;文中的代码是基于android13&#xff09; Android系统进程系列的前三篇文章如下…

C#基础与进阶扩展合集-基础篇(持续更新)

目录 本文分两篇&#xff0c;进阶篇点击&#xff1a;C#基础与进阶扩展合集-进阶篇 一、基础入门 Ⅰ 关键字 Ⅱ 特性 Ⅲ 常见异常 Ⅳ 基础扩展 1、哈希表 2、扩展方法 3、自定义集合与索引器 4、迭代器与分部类 5、yield return 6、注册表 7、不安全代码 8、方法…

MATLAB中cell函数的用法

cell用法 在MATLAB中&#xff0c;cell 是一种特殊的数据类型&#xff0c;用于存储不同大小和类型的数据。cell 数组是一种容器&#xff0c;每个元素可以包含任意类型的数据&#xff0c;包括数值、字符串、矩阵、甚至其他的 cell 数组。 以下是 cell 数组的基本语法和示例&…

gitblit自建git仓库

安装 java sudo apt-get update sudo apt-get install openjdk-8-jdk # 或者其它你喜欢的版本 验证&#xff1a; java -version 下载 gitblit https://github.com/gitblit-org/gitblit/releases 解压/usr/local tar -zxvf gitblit-1.9.3.tar.gz 修改配置文件 nano /usr/local/…

【React】useCallback 使用的说明

文章目录 useCallback的优缺点优点缺点JavaScript 的内联优化 使用场景 用了两年多的react&#xff0c;今天抽空写点小内容 useCallback的优缺点 缓存了每次渲染时候 inline callback的实例 优点 关键点&#xff1a;利用memoize减少无效的re-render&#xff0c;通常配合shouldC…

ElasticSearch之cat trained model API

命令样例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/ml/trained_models?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下&#xff1a; id heap_size …