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.hqwc.cn/news/267020.html

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

相关文章

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

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

ISNAS-DIP: Image-Specific Neural Architecture Search for Deep Image Prior

ISNAS-DIP:用于深度图像先验的图像特定神经架构搜索 论文链接:https://arxiv.org/abs/2111.15362v2 项目链接:https://github.com/ozgurkara99/ISNAS-DIP Abstract 最近的研究表明,卷积神经网络(CNN)架构在频谱上偏向较低频率&…

用23种设计模式打造一个cocos creator的游戏框架----(十三)模板方法模式

1、模式标准 模式名称:模板方法模式 模式分类:行为型 模式意图:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 结构图&#xff1a…

【BI】FineBI功能学习路径-20231211

FineBI功能学习路径 https://help.fanruan.com/finebi/doc-view-1757.html 编辑数据概述 1.1 调整数据结构 1.2 简化数据 2.1上下合并 2.2其他表添加列 2.3左右合并 新增分析指标 函数参考 https://help.fanruan.com/finereport/doc-view-1897.html 数值函数 日期函数 文…

深入探索 Spring Boot:简化开发,加速部署的全方位利器

目录 导言 1. 自动配置(Auto-Configuration) 2. 起步依赖(Starter Dependencies) 3. 嵌入式 Web 服务器 4. Actuator 5. 外部化配置 6. 简化的安全性配置 7. Spring Boot CLI 8. Spring Boot DevTools 导言 在当今软件开…

【JVM从入门到实战】(一) 字节码文件

一、什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。 JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 二、JVM的功能 解释和运行 对字节码文件中的指令,实时的解释成机器码,让计算机…

【LeetCode每日一题】2270.分割数组的方案数

https://leetcode.cn/problems/number-of-ways-to-split-array/description/ 题目: 给定一个数组,从 下标为 index 的地方切开,左边的数大于右边,保证右边至少有一个数。 思路一: 遍历数组,用prefixArr …

论文笔记:A review on multi-label learning

一、介绍 传统的监督学习是单标签学习,但是现实中一个实例可能对应多个标签。这篇文章介绍了多标签分类的定义和评价指标、多标签学习的算法还有其他相关的任务。 二、问题相关定义 2.1 多标签学习任务 假设 X R d X R^d XRd,表示d维的输入空间&am…

接口自动化测试从入门到高级实战!

接口测试背景和必要性 接口测试是测试系统组件间接口(API)的一种测试,主要用于检测内部与外部系统、内部子系统之间的交互质量,其测试重点是检查数据交换、传递的准确性,控制和交互管理过程,以及系统间相互…

23种设计模式之装饰者模式(被装饰者,接口层,装饰抽象层,具体装饰者)

23种设计模式之装饰者模式 文章目录 23种设计模式之装饰者模式设计思想装饰者模式的优点装饰者模式的缺点装饰者模式的优化方法UML 解析预设场景 代码释义总结 设计思想 原文:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能&#xff0…

【S32DS RTD实战】-1.3-S32K3工程生成S19,BIN,Hex文件,以及Post-build steps的妙用

目录 1 方法一:逐个生成Motorola S-record(s19,srec…),Intel HEX,Bin文件 1.1 生成Motorola S-record(s19,srec…)文件 1.2 生成Intel HEX文件 1.3 生成Bin文件 2 …

中文语音标注工具FunASR(语音识别)

全称 A Fundamental End-to-End Speech Recognition Toolkit(一个语音识别工具) 可能大家用过whisper(openAi),它【标注英语的确很完美】,【但中文会出现标注错误】或搞了个没说的词替换上去,所…