当前位置: 首页 > news >正文

HTTPS协议中的加密机制分析、证书认证

目录

一、为什么要对数据进行加密?

二、什么是加密和解密?

三、加密方式

对称加密

非对称加密

四、数据摘要(数据指纹)

五、数字签名

六、探究保证双方通信安全的的加密方案

1、只使用对称加密

2、只使用非对称加密

3、双方都是用非对称加密

4、非对称加密+对称加密

CA认证

5、非对称加密+对称加密+证书认证

证书的构成

证书认证过程


HTTPS是应用层协议,它是基于加密解密机制对HTTP协议安全方面的改善。

一、为什么要对数据进行加密?

由于HTTP协议都是按照文本的方式明文传输的,这些数据会经过路由器、wife热点、通信服务运营商等多个物理节点,这就可能导致数据在传输的过程中被中间人窃取、篡改的风险,因此需要对数据进行加密解密以确保用户信息安全。

对应的网络协议栈如下图:

不论是发送方发送数据或者接收方接收数据双方都要经过应用层的SSL加密解密层。

二、什么是加密和解密?

加密就是把明文(要传输的数据)经过转化变为密文解密就是把密文经过转化还原为明文。

在加密和解密的过程中往往需要一个或多个中间数据,这种数据就是密钥,密钥分为对称密钥非对称密钥

三、加密方式

对称加密

信息的发送方和接收方使用同一个密钥对信息进行加密和解密。

加解密速度快,适合对大数据量进行加密解密。

一个简单的对称加密:假定发送端进行一个异或运算:7^5=2,5是就是密钥,7是明文,2是密文;接收端收到密文后利用密钥5对其进行解密,2^5=7,最终得到明文7。

非对称加密

需要两个密钥进行加密和解密,分别是公开密钥(public,简称公钥)和私有密钥(private,简称私钥)。

加密算法复杂安全性高,没有对称密钥加解密速度快,效率低。

非对称加密要用到公钥和私钥两个配对密钥,但是加解密速度非常慢

通过公钥对明文加密变成密文,私钥对密文解密变成明文。

也可以反着来:通过私钥对明文加密变成密文,公钥对明文解密变成明文。

如上图公钥m是作为明文发送给B的,因此有可能被泄漏放入风险,但是私钥m'不可能被泄漏,因此只有A能对B发来的密文解密获取明文!

四、数据摘要(数据指纹)

基本原理是利用MD5算法(Hash函数)对数据进行运算,生成一串固定长度的字符串(具有唯一性),数据指纹不是一种加密机制,用来数据指纹判断数据是否被篡改过。

五、数字签名

数据摘要被加密后就是数据签名。

数字签名是非对称加密技术数字摘要技术的应用。

六、探究保证双方通信安全的的加密方案

1、只使用对称加密

由于对称加密是双方使用同一个密钥进行加密解密,因此在通信双方建立连接时client会将密钥传输给server,此时密钥相当于明文,黑客会窃取该密钥,后面的加密通信就形同虚设了,变得毫无意义,因此这种方案不可取。

2、只使用非对称加密

如果服务器用它的私钥加密数据传给浏览器,那么浏览器用公钥可以解密它,而这个公钥是一开始通过明文传输给浏览器的,若这个公钥被黑客获取到了,那黑客就能用该公钥解密服务器传来的信息了。

3、双方都是用非对称加密

该方案和只使用非对称加密的而结果一样。

4、非对称加密+对称加密

上面的情景叫做中间人攻击(Man In The MiddleAttack,简称 ”MIMT攻击“ )。

由于该加密方案会导致客户端生成的对称密钥被中间人窃取,导致通信双方发送的信息被泄漏,无法保证安全。

这种方案问题的问题是什么?客户端无法确认含有公钥的数据报文(密文)有没有被中间人篡改后发来的,就是上图1,2步骤中间人将服务端的公钥s篡改成了自己的公钥m然后发给客户端。

 

CA认证

CA是一个证书认证机构为公司(服务端)提供证书。服务端在使用HTTPS协议之前,要向CA机构申请一份数字证书。该证书由明文信息(申请方即服务端的公钥,申请方的域名等信息)和数字签名组成。当客户端浏览器与服务端握手协商密钥时,服务端把该证书传输给浏览器,浏览器从该证书里获取服务端公钥,通过证书中的数字签名就可以判断服务端公钥是否被中间人篡改,这样就保证了中间人无法窃取服务端的公钥了,证书就相当一个服务端的身份证。

5、非对称加密+对称加密+证书认证

证书的构成

数字签名+明文信息,最重要的是服务端的公钥。

证书认证过程

这样就可以保证服务端的公钥在通信双方密钥协商时不被中间人替换成自己的公钥。中间人也就无法获取客户端的对称密钥了,因此就无法窃取客户端和服务端通信的数据了,保证通信的安全性。

相关文章:

  • hadoop日志文件
  • Linux环境下的MySQL的卸载、安装与使用[以CentOS7为例说明]
  • Transformer模型 PostionEmbedding的实现
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析
  • WPF ToolkitMVVM IOC IServiceConllection
  • ssrf+redis未授权访问漏洞复现
  • 【SpringCloud应用框架】GateWay网关
  • 【AI绘画】Midjourney前置/imagine与单图指令详解
  • 【递归深搜之记忆化搜索算法】
  • 缓存解决方案。Redis 和 Amazon ElastiCache 比较
  • 力扣top300:3. 无重复字符的最长子串
  • VMware安装中标麒麟操作系统V7.0
  • 无人机之云台的作用
  • 数字化转型升级探索(一)
  • Spring Cloud全解析:网关之GateWay断言
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • FastReport在线报表设计器工作原理
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript DOM 10 - 滚动
  • mac修复ab及siege安装
  • Sublime text 3 3103 注册码
  • vue-router的history模式发布配置
  • vue数据传递--我有特殊的实现技巧
  • 从setTimeout-setInterval看JS线程
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前端面试之CSS3新特性
  • 入手阿里云新服务器的部署NODE
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • kubernetes资源对象--ingress
  • ​iOS安全加固方法及实现
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • (26)4.7 字符函数和字符串函数
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (k8s中)docker netty OOM问题记录
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (面试必看!)锁策略
  • (三十五)大数据实战——Superset可视化平台搭建
  • (算法)Game
  • (原创)可支持最大高度的NestedScrollView
  • (转载)虚函数剖析
  • .“空心村”成因分析及解决对策122344
  • .NET BackgroundWorker
  • .NET CLR Hosting 简介
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .Net 基于MiniExcel的导入功能接口示例
  • .Net--CLS,CTS,CLI,BCL,FCL
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @NestedConfigurationProperty 注解用法
  • [Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解