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

[网络]https的概念及加密过程

文章目录

  • 一. HTTPS
  • 二. https加密过程

一. HTTPS

https本质上就是http的基础上增加了一个加密层, 抛开加密之后, 剩下的就是个http是一样的
s => SSL
HTTPS = HTTP + SSL
这个过程, 涉及到密码学的几个核心概念

  1. 明文
    要传输的真正意思是啥
    2)密文
    加密之后得到的数据
    这个密文, 即使被拿到了, 也不知道真正的含义
  2. 密钥
    用来加密和解密的重要的数据

把明文 通过密钥 变成密文 => 加密
把密文 通过密钥 变成明文 => 解密
5) 对称加密
加密和解密, 使用同一个密钥就行了
加密解密的速度比较快
6) 非对称加密
密钥是一对, 分别是公钥和私钥
可以使用公钥加密, 此时就是私钥解密
或者使用私钥加密, 此时就是公钥解密
加密的素的比较慢, 安全性更高

二. https加密过程

  1. 引入对称加密
    首先, 最简单的办法,就是引入对称密钥
    客户端和服务器之间通过密文传输, 然后根据密钥进行破解
    这个密钥, 必须是每个客户端都有一个自己的
    如果每个客户端都是相同的, 那么如果别人拿到这个密钥就可以破解了
    可是, 当客户端告诉服务器密钥时, 可能被黑客截取:
    在这里插入图片描述
    所以, 我们必须给密钥再进行加密
  2. 引入非对称加密
    非对称加密的方式, 针对对称密钥来进行加密

为什么不针对数据加密使用非对称密钥?
非对称加密的系统开销比对称加密高很多, 消耗的时间, 也比对称加密多很多, 所以不太适合使用非对称加密的方式来加密业务数据
在这里插入图片描述

客⼾端在本地⽣成对称密钥, 通过公钥加密, 发送给服务器.
• 由于中间的⽹络设备没有私钥, 即使截获了数据, 也⽆法还原出内部的原⽂, 也就⽆法获取到对称密

• 服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使⽤这个对称密钥加密给客⼾端返回的响
应数据.
• 后续客户端和服务器的通信都只⽤对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其
他主机/设备不知道密钥即使截获数据也没有意义

但是, 客户端怎么拿到公钥呢?

  1. 中间人攻击
    如果使用服务器告知客户端公钥的方法, 同样会被黑客截获数据
    在这里插入图片描述
  2. 引入公证机构
    解决上述问题, 最重要切入点, 就是让客户端能够区分当前的公钥是不是服务器自己的公钥, 是不是被伪造出来的公钥, 所以引入了公证机构

服务器上线自己的网站时, 会向公证机构申请"证书", 服务器需要保存好这个证书
这个证书中会包含一系列消息:
1)发证机构
2)证书的有效期
3)服务器的公钥
4)证书的所有者
5)持有者网站的的主域名
6)数字签名
公正机构, 会生成一对非对称密钥, 分为公钥和私钥, 拿着私钥对证书中的一系列数据的校验和进行加密, 就得到了数字签名

客户端收到证书后, 就会对证书的合法性就行校验:
第一步: 针对证书的字段, 计算校验和1

第二步: 针对数字签名进行解密
数字签名是基于公正机构的私钥来加密的
就需要用公正机构的公钥进行解密
公证机构的公钥, 是操作系统内置的公钥!!!
解密后, 得到校验和2

第三步: 客户端比较 校验和1 == 校验和2
如果相等, 就说明, 证书没有被篡改过, 是有效的, 那么证书中的公钥, 就是可信的服务器公钥了
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SQL,在组内根据相邻行修改取值 null 的列
  • Remote Connection Software,远程连接软件
  • C语言习题~day32
  • floodfill算法(二)
  • Python数据分析实现滚动统计
  • 决策树算法上篇
  • 数据结构——树(终极版)
  • 如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰
  • Mac笔记本上查看/user/目录下的文件的几种方法
  • 搭建VUE前端项目流程——Node.js 、Yarn、npm、Vue、Vite、Webpack
  • 一个有趣的“苦无”测试探针笔的设计
  • Go语言开发im-websocket服务和vue3+ts开发类似微信pc即时通讯
  • jenkins入门
  • Java集合(八股)
  • 沉浸式利用自然语言无代码开发工具生成式AI产品应用(上)
  • Android 架构优化~MVP 架构改造
  • CSS相对定位
  • IndexedDB
  • Theano - 导数
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 面试遇到的一些题
  • 前端
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端面试总结(at, md)
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 数据科学 第 3 章 11 字符串处理
  • 思否第一天
  • 通过几道题目学习二叉搜索树
  • 用简单代码看卷积组块发展
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十二)Flink Table API
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)VirtualBox安装增强功能
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***详解账号泄露:全球约1亿用户已泄露
  • .cn根服务器被攻击之后
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET MVC第三章、三种传值方式
  • .Net Remoting常用部署结构
  • .NET 使用配置文件
  • .net分布式压力测试工具(Beetle.DT)
  • .NET运行机制
  • /*在DataTable中更新、删除数据*/